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