File Coverage

blib/lib/Astro/FITS/CFITSIO.pm
Criterion Covered Total %
statement 20 54 37.0
branch 3 26 11.5
condition n/a
subroutine 6 8 75.0
pod 1 1 100.0
total 30 89 33.7


line stmt bran cond sub pod time code
1             package Astro::FITS::CFITSIO;
2             $VERSION = '1.18';
3              
4 4     4   948919 use strict;
  4         37  
  4         119  
5 4     4   21 use Carp;
  4         7  
  4         225  
6 4     4   21 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $AUTOLOAD);
  4         8  
  4         5367  
7              
8             require Exporter;
9             require DynaLoader;
10             require AutoLoader;
11              
12             @ISA = qw(Exporter DynaLoader);
13              
14             my @__names_no_short = qw(
15             fits_get_compression_type
16             fits_set_compression_type
17             fits_get_noise_bits
18             fits_set_noise_bits
19             fits_get_tile_dim
20             fits_set_tile_dim
21             fits_translate_keyword
22             fits_translate_keywords
23             fits_copy_cell2image
24             fits_copy_image2cell
25             fits_copy_pixlist2image
26             fits_write_keys_histo
27             fits_rebin_wcs
28             fits_rebin_wcsd
29             fits_make_hist
30             fits_make_histd
31             fits_make_histde
32             );
33              
34             # perl -nle "next unless /^\s*#define\s+fits_/; (undef,\$l,\$s) = split ' '; print \"\$s => '\$l',\"" /usr/local/cfitsio/longnam.h
35              
36             my %__names = (
37             ffiurl => 'fits_parse_input_url',
38             ffifile => 'fits_parse_input_filename',
39             ffrtnm => 'fits_parse_rootname',
40             ffrwrg => 'fits_parse_range',
41             ffrwrgll => 'fits_parse_rangell',
42             ffourl => 'fits_parse_output_url',
43             ffexts => 'fits_parse_extspec',
44             ffextn => 'fits_parse_extnum',
45             ffbins => 'fits_parse_binspec',
46             ffbinr => 'fits_parse_binrange',
47             ffdopn => 'fits_open_data',
48             fftopn => 'fits_open_table',
49             ffeopn => 'fits_open_extlist',
50             ffiopn => 'fits_open_image',
51             ffomem => 'fits_open_memfile',
52             ffopen => 'fits_open_file',
53             ffdkopn => 'fits_open_diskfile',
54             ffreopen => 'fits_reopen_file',
55             ffinit => 'fits_create_file',
56             ffdkinit => 'fits_create_diskfile',
57             ffimem => 'fits_create_memfile',
58             fftplt => 'fits_create_template',
59             ffflus => 'fits_flush_file',
60             ffflsh => 'fits_flush_buffer',
61             ffihtps => 'fits_init_https',
62             ffchtps => 'fits_cleanup_https',
63             ffvhtps => 'fits_verbose_https',
64             ffshdwn => 'fits_show_download_progress',
65             ffgtmo => 'fits_get_timeout',
66             ffstmo => 'fits_set_timeout',
67             ffclos => 'fits_close_file',
68             ffdelt => 'fits_delete_file',
69             ffexist => 'fits_file_exists',
70             ffflnm => 'fits_file_name',
71             ffflmd => 'fits_file_mode',
72             ffurlt => 'fits_url_type',
73             ffvers => 'fits_get_version',
74             ffupch => 'fits_uppercase',
75             ffgerr => 'fits_get_errstatus',
76             ffpmsg => 'fits_write_errmsg',
77             ffgmsg => 'fits_read_errmsg',
78             ffcmsg => 'fits_clear_errmsg',
79             ffrprt => 'fits_report_error',
80             ffpmrk => 'fits_write_errmark',
81             ffcmrk => 'fits_clear_errmark',
82             ffcmsg => 'fits_clear_errmsg',
83             ffcmps => 'fits_compare_str',
84             fftkey => 'fits_test_keyword',
85             fftrec => 'fits_test_record',
86             ffnchk => 'fits_null_check',
87             ffkeyn => 'fits_make_keyn',
88             ffnkey => 'fits_make_nkey',
89             ffmkky => 'fits_make_key',
90             ffgkcl => 'fits_get_keyclass',
91             ffdtyp => 'fits_get_keytype',
92             ffpsvc => 'fits_parse_value',
93             ffgknm => 'fits_get_keyname',
94             ffgthd => 'fits_parse_template',
95             ffasfm => 'fits_ascii_tform',
96             ffbnfm => 'fits_binary_tform',
97             ffbnfmll => 'fits_binary_tformll',
98             ffgabc => 'fits_get_tbcol',
99             ffgrsz => 'fits_get_rowsize',
100             ffgcdw => 'fits_get_col_display_width',
101             ffprec => 'fits_write_record',
102             ffpky => 'fits_write_key',
103             ffpunt => 'fits_write_key_unit',
104             ffpcom => 'fits_write_comment',
105             ffphis => 'fits_write_history',
106             ffpdat => 'fits_write_date',
107             ffgstm => 'fits_get_system_time',
108             ffgsdt => 'fits_get_system_date',
109             ffdt2s => 'fits_date2str',
110             fftm2s => 'fits_time2str',
111             ffs2dt => 'fits_str2date',
112             ffs2tm => 'fits_str2time',
113             ffpkls => 'fits_write_key_longstr',
114             ffplsw => 'fits_write_key_longwarn',
115             ffpkyu => 'fits_write_key_null',
116             ffpkys => 'fits_write_key_str',
117             ffpkyl => 'fits_write_key_log',
118             ffpkyj => 'fits_write_key_lng',
119             ffpkyf => 'fits_write_key_fixflt',
120             ffpkye => 'fits_write_key_flt',
121             ffpkyg => 'fits_write_key_fixdbl',
122             ffpkyd => 'fits_write_key_dbl',
123             ffpkfc => 'fits_write_key_fixcmp',
124             ffpkyc => 'fits_write_key_cmp',
125             ffpkfm => 'fits_write_key_fixdblcmp',
126             ffpkym => 'fits_write_key_dblcmp',
127             ffpkyt => 'fits_write_key_triple',
128             ffptdm => 'fits_write_tdim',
129             ffptdmll => 'fits_write_tdimll',
130             ffpkns => 'fits_write_keys_str',
131             ffpknl => 'fits_write_keys_log',
132             ffpknj => 'fits_write_keys_lng',
133             ffpknjj => 'fits_write_keys_lnglng',
134             ffpknf => 'fits_write_keys_fixflt',
135             ffpkne => 'fits_write_keys_flt',
136             ffpkng => 'fits_write_keys_fixdbl',
137             ffpknd => 'fits_write_keys_dbl',
138             ffcpky => 'fits_copy_key',
139             ffphps => 'fits_write_imghdr',
140             ffphpsll => 'fits_write_imghdrll',
141             ffphpr => 'fits_write_grphdr',
142             ffphprll => 'fits_write_grphdrll',
143             ffphtb => 'fits_write_atblhdr',
144             ffphbn => 'fits_write_btblhdr',
145             ffphext => 'fits_write_exthdr',
146             ffpktp => 'fits_write_key_template',
147             ffghsp => 'fits_get_hdrspace',
148             ffghps => 'fits_get_hdrpos',
149             ffmaky => 'fits_movabs_key',
150             ffmrky => 'fits_movrel_key',
151             ffgnxk => 'fits_find_nextkey',
152             ffgrec => 'fits_read_record',
153             ffgcrd => 'fits_read_card',
154             ffgunt => 'fits_read_key_unit',
155             ffgkyn => 'fits_read_keyn',
156             ffgstr => 'fits_read_str',
157             ffgksl => 'fits_read_key_strlen',
158             ffgsky => 'fits_read_string_key',
159             ffdstr => 'fits_delete_str',
160             ffgky => 'fits_read_key',
161             ffgkey => 'fits_read_keyword',
162             ffgkys => 'fits_read_key_str',
163             ffgkyl => 'fits_read_key_log',
164             ffgkyj => 'fits_read_key_lng',
165             ffgkye => 'fits_read_key_flt',
166             ffgkyd => 'fits_read_key_dbl',
167             ffgkyc => 'fits_read_key_cmp',
168             ffgkym => 'fits_read_key_dblcmp',
169             ffgkyt => 'fits_read_key_triple',
170             ffgkcsl => 'fits_get_key_com_strlen',
171             ffgkls => 'fits_read_key_longstr',
172             ffgskyc => 'fits_read_string_key_com',
173             fffree => 'fits_free_memory',
174             ffhdr2str => 'fits_hdr2str',
175             ffcnvthdr2str => 'fits_convert_hdr2str',
176             ffgtdm => 'fits_read_tdim',
177             ffgtdmll => 'fits_read_tdimll',
178             ffdtdm => 'fits_decode_tdim',
179             ffdtdmll => 'fits_decode_tdimll',
180             ffgkns => 'fits_read_keys_str',
181             ffgknl => 'fits_read_keys_log',
182             ffgknj => 'fits_read_keys_lng',
183             ffgknjj => 'fits_read_keys_lnglng',
184             ffgkne => 'fits_read_keys_flt',
185             ffgknd => 'fits_read_keys_dbl',
186             ffghpr => 'fits_read_imghdr',
187             ffghprll => 'fits_read_imghdrll',
188             ffghtb => 'fits_read_atblhdr',
189             ffghtbll => 'fits_read_atblhdrll',
190             ffghbn => 'fits_read_btblhdr',
191             ffghbnll => 'fits_read_btblhdrll',
192             ffh2st => 'fits_header2str',
193             ffucrd => 'fits_update_card',
194             ffuky => 'fits_update_key',
195             ffukyu => 'fits_update_key_null',
196             ffukys => 'fits_update_key_str',
197             ffukls => 'fits_update_key_longstr',
198             ffukyl => 'fits_update_key_log',
199             ffukyj => 'fits_update_key_lng',
200             ffukyf => 'fits_update_key_fixflt',
201             ffukye => 'fits_update_key_flt',
202             ffukyg => 'fits_update_key_fixdbl',
203             ffukyd => 'fits_update_key_dbl',
204             ffukfc => 'fits_update_key_fixcmp',
205             ffukyc => 'fits_update_key_cmp',
206             ffukfm => 'fits_update_key_fixdblcmp',
207             ffukym => 'fits_update_key_dblcmp',
208             ffmrec => 'fits_modify_record',
209             ffmcrd => 'fits_modify_card',
210             ffmnam => 'fits_modify_name',
211             ffmcom => 'fits_modify_comment',
212             ffmkyu => 'fits_modify_key_null',
213             ffmkys => 'fits_modify_key_str',
214             ffmkls => 'fits_modify_key_longstr',
215             ffmkyl => 'fits_modify_key_log',
216             ffmkyj => 'fits_modify_key_lng',
217             ffmkyf => 'fits_modify_key_fixflt',
218             ffmkye => 'fits_modify_key_flt',
219             ffmkyg => 'fits_modify_key_fixdbl',
220             ffmkyd => 'fits_modify_key_dbl',
221             ffmkfc => 'fits_modify_key_fixcmp',
222             ffmkyc => 'fits_modify_key_cmp',
223             ffmkfm => 'fits_modify_key_fixdblcmp',
224             ffmkym => 'fits_modify_key_dblcmp',
225             ffikey => 'fits_insert_card',
226             ffirec => 'fits_insert_record',
227             ffikyu => 'fits_insert_key_null',
228             ffikys => 'fits_insert_key_str',
229             ffikls => 'fits_insert_key_longstr',
230             ffikyl => 'fits_insert_key_log',
231             ffikyj => 'fits_insert_key_lng',
232             ffikyf => 'fits_insert_key_fixflt',
233             ffikye => 'fits_insert_key_flt',
234             ffikyg => 'fits_insert_key_fixdbl',
235             ffikyd => 'fits_insert_key_dbl',
236             ffikfc => 'fits_insert_key_fixcmp',
237             ffikyc => 'fits_insert_key_cmp',
238             ffikfm => 'fits_insert_key_fixdblcmp',
239             ffikym => 'fits_insert_key_dblcmp',
240             ffdkey => 'fits_delete_key',
241             ffdrec => 'fits_delete_record',
242             ffghdn => 'fits_get_hdu_num',
243             ffghdt => 'fits_get_hdu_type',
244             ffghad => 'fits_get_hduaddr',
245             ffghadll => 'fits_get_hduaddrll',
246             ffghof => 'fits_get_hduoff',
247             ffgipr => 'fits_get_img_param',
248             ffgiprll => 'fits_get_img_paramll',
249             ffgidt => 'fits_get_img_type',
250             ffinttyp => 'fits_get_inttype',
251             ffgiet => 'fits_get_img_equivtype',
252             ffgidm => 'fits_get_img_dim',
253             ffgisz => 'fits_get_img_size',
254             ffgiszll => 'fits_get_img_sizell',
255             ffmahd => 'fits_movabs_hdu',
256             ffmrhd => 'fits_movrel_hdu',
257             ffmnhd => 'fits_movnam_hdu',
258             ffthdu => 'fits_get_num_hdus',
259             ffcrim => 'fits_create_img',
260             ffcrimll => 'fits_create_imgll',
261             ffcrtb => 'fits_create_tbl',
262             ffcpht => 'fits_copy_hdutab',
263             ffcrhd => 'fits_create_hdu',
264             ffiimg => 'fits_insert_img',
265             ffiimgll => 'fits_insert_imgll',
266             ffitab => 'fits_insert_atbl',
267             ffibin => 'fits_insert_btbl',
268             ffrsim => 'fits_resize_img',
269             ffrsimll => 'fits_resize_imgll',
270             ffdhdu => 'fits_delete_hdu',
271             ffcpfl => 'fits_copy_file',
272             ffcopy => 'fits_copy_hdu',
273             ffcphd => 'fits_copy_header',
274             ffcpdt => 'fits_copy_data',
275             ffwrhdu => 'fits_write_hdu',
276             ffrdef => 'fits_set_hdustruc',
277             ffhdef => 'fits_set_hdrsize',
278             ffpthp => 'fits_write_theap',
279             ffesum => 'fits_encode_chksum',
280             ffdsum => 'fits_decode_chksum',
281             ffpcks => 'fits_write_chksum',
282             ffupck => 'fits_update_chksum',
283             ffvcks => 'fits_verify_chksum',
284             ffgcks => 'fits_get_chksum',
285             ffpscl => 'fits_set_bscale',
286             fftscl => 'fits_set_tscale',
287             ffpnul => 'fits_set_imgnull',
288             fftnul => 'fits_set_btblnull',
289             ffsnul => 'fits_set_atblnull',
290             ffgcno => 'fits_get_colnum',
291             ffgcnn => 'fits_get_colname',
292             ffgtcl => 'fits_get_coltype',
293             ffgtclll => 'fits_get_coltypell',
294             ffeqty => 'fits_get_eqcoltype',
295             ffeqtyll => 'fits_get_eqcoltypell',
296             ffgnrw => 'fits_get_num_rows',
297             ffgnrwll => 'fits_get_num_rowsll',
298             ffgncl => 'fits_get_num_cols',
299             ffgacl => 'fits_get_acolparms',
300             ffgbcl => 'fits_get_bcolparms',
301             ffgbclll => 'fits_get_bcolparmsll',
302             ffiter => 'fits_iterate_data',
303             ffggpb => 'fits_read_grppar_byt',
304             ffggpb => 'fits_read_grppar_sbyt',
305             ffggpui => 'fits_read_grppar_usht',
306             ffggpuj => 'fits_read_grppar_ulng',
307             ffggpi => 'fits_read_grppar_sht',
308             ffggpj => 'fits_read_grppar_lng',
309             ffggpjj => 'fits_read_grppar_lnglng',
310             ffggpk => 'fits_read_grppar_int',
311             ffggpuk => 'fits_read_grppar_uint',
312             ffggpe => 'fits_read_grppar_flt',
313             ffggpd => 'fits_read_grppar_dbl',
314             ffgpxv => 'fits_read_pix',
315             ffgpxvll => 'fits_read_pixll',
316             ffgpxf => 'fits_read_pixnull',
317             ffgpxfll => 'fits_read_pixnullll',
318             ffgpv => 'fits_read_img',
319             ffgpf => 'fits_read_imgnull',
320             ffgpvb => 'fits_read_img_byt',
321             ffgpvsb => 'fits_read_img_sbyt',
322             ffgpvui => 'fits_read_img_usht',
323             ffgpvuj => 'fits_read_img_ulng',
324             ffgpvi => 'fits_read_img_sht',
325             ffgpvj => 'fits_read_img_lng',
326             ffgpvjj => 'fits_read_img_lnglng',
327             ffgpvuk => 'fits_read_img_uint',
328             ffgpvk => 'fits_read_img_int',
329             ffgpve => 'fits_read_img_flt',
330             ffgpvd => 'fits_read_img_dbl',
331             ffgpfb => 'fits_read_imgnull_byt',
332             ffgpfsb => 'fits_read_imgnull_sbyt',
333             ffgpfui => 'fits_read_imgnull_usht',
334             ffgpfuj => 'fits_read_imgnull_ulng',
335             ffgpfi => 'fits_read_imgnull_sht',
336             ffgpfj => 'fits_read_imgnull_lng',
337             ffgpfjj => 'fits_read_imgnull_lnglng',
338             ffgpfuk => 'fits_read_imgnull_uint',
339             ffgpfk => 'fits_read_imgnull_int',
340             ffgpfe => 'fits_read_imgnull_flt',
341             ffgpfd => 'fits_read_imgnull_dbl',
342             ffg2db => 'fits_read_2d_byt',
343             ffg2dsb => 'fits_read_2d_sbyt',
344             ffg2dui => 'fits_read_2d_usht',
345             ffg2duj => 'fits_read_2d_ulng',
346             ffg2di => 'fits_read_2d_sht',
347             ffg2dj => 'fits_read_2d_lng',
348             ffg2djj => 'fits_read_2d_lnglng',
349             ffg2duk => 'fits_read_2d_uint',
350             ffg2dk => 'fits_read_2d_int',
351             ffg2de => 'fits_read_2d_flt',
352             ffg2dd => 'fits_read_2d_dbl',
353             ffg3db => 'fits_read_3d_byt',
354             ffg3dsb => 'fits_read_3d_sbyt',
355             ffg3dui => 'fits_read_3d_usht',
356             ffg3duj => 'fits_read_3d_ulng',
357             ffg3di => 'fits_read_3d_sht',
358             ffg3dj => 'fits_read_3d_lng',
359             ffg3dj => 'fits_read_3d_lnglng',
360             ffg3duk => 'fits_read_3d_uint',
361             ffg3dk => 'fits_read_3d_int',
362             ffg3de => 'fits_read_3d_flt',
363             ffg3dd => 'fits_read_3d_dbl',
364             ffgsv => 'fits_read_subset',
365             ffgsvb => 'fits_read_subset_byt',
366             ffgsvsb => 'fits_read_subset_sbyt',
367             ffgsvui => 'fits_read_subset_usht',
368             ffgsvuj => 'fits_read_subset_ulng',
369             ffgsvi => 'fits_read_subset_sht',
370             ffgsvj => 'fits_read_subset_lng',
371             ffgsvjj => 'fits_read_subset_lnglng',
372             ffgsvuk => 'fits_read_subset_uint',
373             ffgsvk => 'fits_read_subset_int',
374             ffgsve => 'fits_read_subset_flt',
375             ffgsvd => 'fits_read_subset_dbl',
376             ffgsfb => 'fits_read_subsetnull_byt',
377             ffgsfsb => 'fits_read_subsetnull_sbyt',
378             ffgsfui => 'fits_read_subsetnull_usht',
379             ffgsfuj => 'fits_read_subsetnull_ulng',
380             ffgsfi => 'fits_read_subsetnull_sht',
381             ffgsfj => 'fits_read_subsetnull_lng',
382             ffgsfjj => 'fits_read_subsetnull_lnglng',
383             ffgsfuk => 'fits_read_subsetnull_uint',
384             ffgsfk => 'fits_read_subsetnull_int',
385             ffgsfe => 'fits_read_subsetnull_flt',
386             ffgsfd => 'fits_read_subsetnull_dbl',
387             fits_decomp_img => 'fits_decompress_img',
388             ffgcv => 'fits_read_col',
389             ffgcf => 'fits_read_colnull',
390             ffgcvs => 'fits_read_col_str',
391             ffgcvl => 'fits_read_col_log',
392             ffgcvb => 'fits_read_col_byt',
393             ffgcvsb => 'fits_read_col_sbyt',
394             ffgcvui => 'fits_read_col_usht',
395             ffgcvuj => 'fits_read_col_ulng',
396             ffgcvi => 'fits_read_col_sht',
397             ffgcvj => 'fits_read_col_lng',
398             ffgcvjj => 'fits_read_col_lnglng',
399             ffgcvuk => 'fits_read_col_uint',
400             ffgcvk => 'fits_read_col_int',
401             ffgcve => 'fits_read_col_flt',
402             ffgcvd => 'fits_read_col_dbl',
403             ffgcvc => 'fits_read_col_cmp',
404             ffgcvm => 'fits_read_col_dblcmp',
405             ffgcx => 'fits_read_col_bit',
406             ffgcxui => 'fits_read_col_bit_usht',
407             ffgcxuk => 'fits_read_col_bit_uint',
408             ffgcfs => 'fits_read_colnull_str',
409             ffgcfl => 'fits_read_colnull_log',
410             ffgcfb => 'fits_read_colnull_byt',
411             ffgcfsb => 'fits_read_colnull_sbyt',
412             ffgcfui => 'fits_read_colnull_usht',
413             ffgcfuj => 'fits_read_colnull_ulng',
414             ffgcfi => 'fits_read_colnull_sht',
415             ffgcfj => 'fits_read_colnull_lng',
416             ffgcfjj => 'fits_read_colnull_lnglng',
417             ffgcfuk => 'fits_read_colnull_uint',
418             ffgcfk => 'fits_read_colnull_int',
419             ffgcfe => 'fits_read_colnull_flt',
420             ffgcfd => 'fits_read_colnull_dbl',
421             ffgcfc => 'fits_read_colnull_cmp',
422             ffgcfm => 'fits_read_colnull_dblcmp',
423             ffgdes => 'fits_read_descript',
424             ffgdesll => 'fits_read_descriptll',
425             ffgdess => 'fits_read_descripts',
426             ffgdessll => 'fits_read_descriptsll',
427             ffgtbb => 'fits_read_tblbytes',
428             ffpgpb => 'fits_write_grppar_byt',
429             ffpgpsb => 'fits_write_grppar_sbyt',
430             ffpgpui => 'fits_write_grppar_usht',
431             ffpgpuj => 'fits_write_grppar_ulng',
432             ffpgpi => 'fits_write_grppar_sht',
433             ffpgpj => 'fits_write_grppar_lng',
434             ffpgpjj => 'fits_write_grppar_lngj',
435             ffpgpuk => 'fits_write_grppar_uint',
436             ffpgpk => 'fits_write_grppar_int',
437             ffpgpe => 'fits_write_grppar_flt',
438             ffpgpd => 'fits_write_grppar_dbl',
439             ffppx => 'fits_write_pix',
440             ffppxll => 'fits_write_pixll',
441             ffppxn => 'fits_write_pixnull',
442             ffppxnll => 'fits_write_pixnullll',
443             ffppr => 'fits_write_img',
444             ffpprb => 'fits_write_img_byt',
445             ffpprsb => 'fits_write_img_sbyt',
446             ffpprui => 'fits_write_img_usht',
447             ffppruj => 'fits_write_img_ulng',
448             ffppri => 'fits_write_img_sht',
449             ffpprj => 'fits_write_img_lng',
450             ffpprjj => 'fits_write_img_lnglng',
451             ffppruk => 'fits_write_img_uint',
452             ffpprk => 'fits_write_img_int',
453             ffppre => 'fits_write_img_flt',
454             ffpprd => 'fits_write_img_dbl',
455             ffppn => 'fits_write_imgnull',
456             ffppnb => 'fits_write_imgnull_byt',
457             ffppnsb => 'fits_write_imgnull_sbyt',
458             ffppnui => 'fits_write_imgnull_usht',
459             ffppnuj => 'fits_write_imgnull_ulng',
460             ffppni => 'fits_write_imgnull_sht',
461             ffppnj => 'fits_write_imgnull_lng',
462             ffppnjj => 'fits_write_imgnull_lnglng',
463             ffppnuk => 'fits_write_imgnull_uint',
464             ffppnk => 'fits_write_imgnull_int',
465             ffppne => 'fits_write_imgnull_flt',
466             ffppnd => 'fits_write_imgnull_dbl',
467             ffppru => 'fits_write_img_null',
468             ffpprn => 'fits_write_null_img',
469             ffp2db => 'fits_write_2d_byt',
470             ffp2dsb => 'fits_write_2d_sbyt',
471             ffp2dui => 'fits_write_2d_usht',
472             ffp2duj => 'fits_write_2d_ulng',
473             ffp2di => 'fits_write_2d_sht',
474             ffp2dj => 'fits_write_2d_lng',
475             ffp2djj => 'fits_write_2d_lnglng',
476             ffp2duk => 'fits_write_2d_uint',
477             ffp2dk => 'fits_write_2d_int',
478             ffp2de => 'fits_write_2d_flt',
479             ffp2dd => 'fits_write_2d_dbl',
480             ffp3db => 'fits_write_3d_byt',
481             ffp3dsb => 'fits_write_3d_sbyt',
482             ffp3dui => 'fits_write_3d_usht',
483             ffp3duj => 'fits_write_3d_ulng',
484             ffp3di => 'fits_write_3d_sht',
485             ffp3dj => 'fits_write_3d_lng',
486             ffp3djj => 'fits_write_3d_lnglng',
487             ffp3duk => 'fits_write_3d_uint',
488             ffp3dk => 'fits_write_3d_int',
489             ffp3de => 'fits_write_3d_flt',
490             ffp3dd => 'fits_write_3d_dbl',
491             ffpss => 'fits_write_subset',
492             ffpssb => 'fits_write_subset_byt',
493             ffpsssb => 'fits_write_subset_sbyt',
494             ffpssui => 'fits_write_subset_usht',
495             ffpssuj => 'fits_write_subset_ulng',
496             ffpssi => 'fits_write_subset_sht',
497             ffpssj => 'fits_write_subset_lng',
498             ffpssjj => 'fits_write_subset_lnglng',
499             ffpssuk => 'fits_write_subset_uint',
500             ffpssk => 'fits_write_subset_int',
501             ffpsse => 'fits_write_subset_flt',
502             ffpssd => 'fits_write_subset_dbl',
503             ffprwu => 'fits_write_nullrows',
504             ffpcl => 'fits_write_col',
505             ffpcls => 'fits_write_col_str',
506             ffpcll => 'fits_write_col_log',
507             ffpclb => 'fits_write_col_byt',
508             ffpclsb => 'fits_write_col_sbyt',
509             ffpclui => 'fits_write_col_usht',
510             ffpcluj => 'fits_write_col_ulng',
511             ffpcli => 'fits_write_col_sht',
512             ffpclj => 'fits_write_col_lng',
513             ffpcljj => 'fits_write_col_lnglng',
514             ffpcluk => 'fits_write_col_uint',
515             ffpclk => 'fits_write_col_int',
516             ffpcle => 'fits_write_col_flt',
517             ffpcld => 'fits_write_col_dbl',
518             ffpclc => 'fits_write_col_cmp',
519             ffpclm => 'fits_write_col_dblcmp',
520             ffpclu => 'fits_write_col_null',
521             ffpclx => 'fits_write_col_bit',
522             ffpcn => 'fits_write_colnull',
523             ffpcns => 'fits_write_colnull_str',
524             ffpcnl => 'fits_write_colnull_log',
525             ffpcnb => 'fits_write_colnull_byt',
526             ffpcnsb => 'fits_write_colnull_sbyt',
527             ffpcnui => 'fits_write_colnull_usht',
528             ffpcnuj => 'fits_write_colnull_ulng',
529             ffpcni => 'fits_write_colnull_sht',
530             ffpcnj => 'fits_write_colnull_lng',
531             ffpcnjj => 'fits_write_colnull_lnglng',
532             ffpcnuk => 'fits_write_colnull_uint',
533             ffpcnk => 'fits_write_colnull_int',
534             ffpcne => 'fits_write_colnull_flt',
535             ffpcnd => 'fits_write_colnull_dbl',
536             ffpdes => 'fits_write_descript',
537             ffcmph => 'fits_compress_heap',
538             fftheap => 'fits_test_heap',
539             ffptbb => 'fits_write_tblbytes',
540             ffirow => 'fits_insert_rows',
541             ffdrrg => 'fits_delete_rowrange',
542             ffdrow => 'fits_delete_rows',
543             ffdrws => 'fits_delete_rowlist',
544             ffdrwsll => 'fits_delete_rowlistll',
545             fficol => 'fits_insert_col',
546             fficls => 'fits_insert_cols',
547             ffdcol => 'fits_delete_col',
548             ffcpcl => 'fits_copy_col',
549             ffccls => 'fits_copy_cols',
550             ffcprw => 'fits_copy_rows',
551             ffcpsr => 'fits_copy_selrows',
552             ffmvec => 'fits_modify_vector_len',
553             ffgics => 'fits_read_img_coord',
554             ffgtcs => 'fits_read_tbl_coord',
555             ffgicsa => 'fits_read_img_coord_version',
556             ffwldp => 'fits_pix_to_world',
557             ffxypx => 'fits_world_to_pix',
558             ffgiwcs => 'fits_get_image_wcs_keys',
559             ffgtwcs => 'fits_get_table_wcs_keys',
560             fffrow => 'fits_find_rows',
561             ffffrw => 'fits_find_first_row',
562             fffrwc => 'fits_find_rows_cmp',
563             ffsrow => 'fits_select_rows',
564             ffcrow => 'fits_calc_rows',
565             ffcalc => 'fits_calculator',
566             ffcalc_rng => 'fits_calculator_rng',
567             fftexp => 'fits_test_expr',
568             ffgtcr => 'fits_create_group',
569             ffgtis => 'fits_insert_group',
570             ffgtch => 'fits_change_group',
571             ffgtrm => 'fits_remove_group',
572             ffgtcp => 'fits_copy_group',
573             ffgtmg => 'fits_merge_groups',
574             ffmbyt => 'fits_seek',
575             ffgtcm => 'fits_compact_group',
576             ffgtvf => 'fits_verify_group',
577             ffgtop => 'fits_open_group',
578             ffgtam => 'fits_add_group_member',
579             ffgtnm => 'fits_get_num_members',
580             ffgmng => 'fits_get_num_groups',
581             ffgmop => 'fits_open_member',
582             ffgmcp => 'fits_copy_member',
583             ffgmtf => 'fits_transfer_member',
584             ffgmrm => 'fits_remove_member',
585             );
586              
587             my @__shortnames = keys %__names;
588             my @__longnames = (values(%__names), @__names_no_short);
589             my @__constants = qw(
590             ANGLE_TOO_BIG
591             ANY_HDU
592             ARRAY_TOO_BIG
593             ASCII_TBL
594             BAD_ATABLE_FORMAT
595             BAD_BITPIX
596             BAD_BTABLE_FORMAT
597             BAD_C2D
598             BAD_C2F
599             BAD_C2I
600             BAD_COL_NUM
601             BAD_DATATYPE
602             BAD_DATA_FILL
603             BAD_DATE
604             BAD_DECIM
605             BAD_DIMEN
606             BAD_DOUBLEKEY
607             BAD_ELEM_NUM
608             BAD_F2C
609             BAD_FILEPTR
610             BAD_FLOATKEY
611             BAD_GCOUNT
612             BAD_GROUP_ID
613             BAD_HDU_NUM
614             BAD_HEADER_FILL
615             BAD_I2C
616             BAD_INTKEY
617             BAD_KEYCHAR
618             BAD_LOGICALKEY
619             BAD_NAXES
620             BAD_NAXIS
621             BAD_OPTION
622             BAD_ORDER
623             BAD_PCOUNT
624             BAD_PIX_NUM
625             BAD_ROW_NUM
626             BAD_ROW_WIDTH
627             BAD_SIMPLE
628             BAD_TBCOL
629             BAD_TDIM
630             BAD_TFIELDS
631             BAD_TFORM
632             BAD_TFORM_DTYPE
633             BAD_URL_PREFIX
634             BAD_WCS_PROJ
635             BAD_WCS_VAL
636             BINARY_TBL
637             BYTE_IMG
638             CASEINSEN
639             CASESEN
640             CFITSIO_MAJOR
641             CFITSIO_MINOR
642             COL_NOT_FOUND
643             COL_NOT_UNIQUE
644             COL_TOO_WIDE
645             DOUBLENULLVALUE
646             DOUBLE_IMG
647             DRIVER_INIT_FAILED
648             END_JUNK
649             END_OF_FILE
650             FALSE
651             FILE_NOT_CLOSED
652             FILE_NOT_CREATED
653             FILE_NOT_OPENED
654             FLEN_CARD
655             FLEN_COMMENT
656             FLEN_ERRMSG
657             FLEN_FILENAME
658             FLEN_KEYWORD
659             FLEN_STATUS
660             FLEN_VALUE
661             FLOATNULLVALUE
662             FLOAT_IMG
663             GROUP_NOT_FOUND
664             GT_ID_ALL
665             GT_ID_ALL_URI
666             GT_ID_POS
667             GT_ID_POS_URI
668             GT_ID_REF
669             GT_ID_REF_URI
670             GZIP_1
671             HDU_ALREADY_MEMBER
672             HDU_ALREADY_TRACKED
673             HEADER_NOT_EMPTY
674             IDENTICAL_POINTERS
675             IMAGE_HDU
676             InputCol
677             InputOutputCol
678             KEY_NO_EXIST
679             KEY_OUT_BOUNDS
680             LONG_IMG
681             LONGLONG_IMG
682             MAXHDU
683             MEMBER_NOT_FOUND
684             MEMORY_ALLOCATION
685             NEG_AXIS
686             NEG_BYTES
687             NEG_FILE_POS
688             NEG_ROWS
689             NEG_WIDTH
690             NOT_ASCII_COL
691             NOT_ATABLE
692             NOT_BTABLE
693             NOT_GROUP_TABLE
694             NOT_IMAGE
695             NOT_LOGICAL_COL
696             NOT_POS_INT
697             NOT_TABLE
698             NOT_VARI_LEN
699             NO_BITPIX
700             NO_END
701             NO_GCOUNT
702             NO_MATCHING_DRIVER
703             NO_NAXES
704             NO_NAXIS
705             NO_NULL
706             NO_PCOUNT
707             NO_QUOTE
708             NO_SIMPLE
709             NO_TBCOL
710             NO_TFIELDS
711             NO_TFORM
712             NO_WCS_KEY
713             NO_XTENSION
714             NULL_INPUT_PTR
715             NUM_OVERFLOW
716             OPT_CMT_MBR
717             OPT_CMT_MBR_DEL
718             OPT_GCP_ALL
719             OPT_GCP_GPT
720             OPT_GCP_MBR
721             OPT_MCP_ADD
722             OPT_MCP_MOV
723             OPT_MCP_NADD
724             OPT_MCP_REPL
725             OPT_MRG_COPY
726             OPT_MRG_MOV
727             OPT_RM_ALL
728             OPT_RM_ENTRY
729             OPT_RM_GPT
730             OPT_RM_MBR
731             OVERFLOW_ERR
732             OutputCol
733             PARSE_BAD_COL
734             PARSE_BAD_OUTPUT
735             PARSE_BAD_TYPE
736             PARSE_LRG_VECTOR
737             PARSE_NO_OUTPUT
738             PARSE_SYNTAX_ERR
739             PLIO_1
740             READONLY
741             READONLY_FILE
742             READWRITE
743             READ_ERROR
744             RICE_1
745             SAME_FILE
746             SEEK_ERROR
747             SHORT_IMG
748             TBIT
749             TBYTE
750             TSBYTE
751             TCOMPLEX
752             TDBLCOMPLEX
753             TDOUBLE
754             TFLOAT
755             TINT
756             TLOGICAL
757             TLONG
758             TLONGLONG
759             TOO_MANY_DRIVERS
760             TOO_MANY_FILES
761             TOO_MANY_HDUS_TRACKED
762             TRUE
763             TSHORT
764             TSTRING
765             TUINT
766             TULONG
767             TUSHORT
768             ULONG_IMG
769             UNKNOWN_EXT
770             UNKNOWN_REC
771             URL_PARSE_ERROR
772             USE_MEM_BUFF
773             USHORT_IMG
774             VALIDSTRUC
775             VALUE_UNDEFINED
776             WCS_ERROR
777             WRITE_ERROR
778             ZERO_SCALE
779             TYP_STRUC_KEY
780             TYP_CMPRS_KEY
781             TYP_SCAL_KEY
782             TYP_NULL_KEY
783             TYP_DIM_KEY
784             TYP_RANG_KEY
785             TYP_UNIT_KEY
786             TYP_DISP_KEY
787             TYP_HDUID_KEY
788             TYP_CKSUM_KEY
789             TYP_WCS_KEY
790             TYP_REFSYS_KEY
791             TYP_COMM_KEY
792             TYP_CONT_KEY
793             TYP_USER_KEY
794             ); ### @__constants
795              
796             @EXPORT = qw( );
797              
798             %EXPORT_TAGS = (
799             'shortnames' => \@__shortnames,
800             'longnames' => \@__longnames,
801             'constants' => \@__constants,
802             );
803              
804             @EXPORT_OK = (
805             'PerlyUnpacking',
806             @__shortnames,
807             @__longnames,
808             @__constants,
809             );
810              
811             sub AUTOLOAD {
812 4     4   33 no strict;
  4         12  
  4         2487  
813              
814             # This AUTOLOAD is used to 'autoload' constants from the constant()
815             # XS function. If a constant is not found then control is passed
816             # to the AUTOLOAD in AutoLoader.
817              
818 2     2   12250 my $constname;
819 2         17 ($constname = $AUTOLOAD) =~ s/.*:://;
820 2 50       15 croak "& not defined" if $constname eq 'constant';
821 2 50       50 my $val = constant($constname, @_ ? $_[0] : 0);
822 2 50       15 if ($! != 0) {
823 0 0       0 if ($! =~ /Invalid/) {
824 0         0 $AutoLoader::AUTOLOAD = $AUTOLOAD;
825 0         0 goto &AutoLoader::AUTOLOAD;
826             }
827             else {
828 0         0 croak "Your vendor has not defined Astro::FITS::CFITSIO macro $constname";
829             }
830             }
831 2     6   27 *$AUTOLOAD = sub { $val };
  6         36099  
832             #eval "sub $AUTOLOAD { $val }";
833 2         11 goto &$AUTOLOAD;
834             }
835              
836             bootstrap Astro::FITS::CFITSIO $VERSION;
837              
838             # Preloaded methods go here.
839              
840             # Compound routines -- useful routines that combine lower level
841             # Astro::FITS::CFITSIO commands
842             # This routine takes an argument (either a fitsfilePtr object
843             # or a string containing a FITS file name) and returns the header
844             # into a hash along with the exit status of the routine.
845             # If it is called in a scalar context then only the hash reference
846             # is returned
847              
848             # $hashref = fits_read_header("test.fits");
849             # ($hashref, $status) = $fitsfile->read_header;
850              
851             # The comments are stored in a hash in $hashref->{COMMENTS}.
852              
853             sub fits_read_header {
854              
855 0 0   0 1   croak 'Usage: fits_read_header(file|fitsfilePtr)'
856             unless @_;
857              
858 0           my ($fitsfile, $status);
859 0           my ($n, $left, %header, $key, $value, $comment);
860              
861             # Read the argument
862 0           my $file = shift;
863              
864 0           my $obj_passed = 0; # were we passed a fitsfilePtr?
865              
866 0           $status = 0;
867 0 0         if (UNIVERSAL::isa($file,'fitsfilePtr')) {
868 0           $fitsfile = $file;
869 0           $obj_passed = 1;
870             } else {
871             # Open the file.
872 0           fits_open_file($fitsfile, $file, READONLY(), $status);
873             }
874              
875             # Now we have an open file -- check that status is good before
876             # proceeding
877 0 0         unless ($status) {
878              
879             # Get the number of fits keywords in primary header
880 0           $fitsfile->get_hdrspace($n, $left, $status);
881              
882             # Loop over the keys
883 0           for my $i (1..$n) {
884 0 0         last unless $status == 0;
885              
886 0           $fitsfile->read_keyn($i, $key, $value, $comment, $status);
887              
888             # Store the key/value in a hash
889 0           $header{$key} = $value;
890              
891             # Store the comments.
892 0 0         if (! exists $header{COMMENTS}{$key}) {
893 0           $header{COMMENTS}{$key} = $comment;
894             }
895             # HISTORY keywords, for instance, can be numerous
896             else {
897 0 0         if (! ref $header{COMMENTS}{$key}) {
898 0           $header{COMMENTS}{$key} = [ $header{COMMENTS}{$key} ];
899             }
900 0           push @{$header{COMMENTS}{$key}}, $comment;
  0            
901             }
902              
903             }
904              
905             # Close the file if we opened it
906 0 0         $fitsfile->close_file($status) unless $obj_passed;
907             }
908              
909             # Report an error - may not always want to write to STDERR...
910 0           fits_report_error(*STDERR, $status);
911              
912              
913 0 0         return (\%header, $status) if wantarray;
914 0           return \%header;
915              
916             }
917              
918             # This section provides perl aliases for the OO interface
919             # This is a bit of a kluge since the actual command is in the
920             # Astro::FITS::CFITSIO namespace. Did not open a new namespace with the package
921             # command since AUTOSPLIT gets confused
922              
923             sub fitsfilePtr::read_header {
924 0     0     my $self = shift;
925 0           my ($href, $status) = Astro::FITS::CFITSIO::fits_read_header($self);
926 0 0         return ($href, $status) if wantarray;
927 0           return $href;
928             }
929              
930              
931            
932             # Autoload methods go after =cut, and are processed by the autosplit program.
933              
934             1;
935              
936             __END__