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.16';
3              
4 1     1   816 use strict;
  1         6  
  1         30  
5 1     1   5 use Carp;
  1         2  
  1         65  
6 1     1   6 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $AUTOLOAD);
  1         1  
  1         1196  
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             ffmvec => 'fits_modify_vector_len',
543             ffgics => 'fits_read_img_coord',
544             ffgtcs => 'fits_read_tbl_coord',
545             ffgicsa => 'fits_read_img_coord_version',
546             ffwldp => 'fits_pix_to_world',
547             ffxypx => 'fits_world_to_pix',
548             ffgiwcs => 'fits_get_image_wcs_keys',
549             ffgtwcs => 'fits_get_table_wcs_keys',
550             fffrow => 'fits_find_rows',
551             ffffrw => 'fits_find_first_row',
552             fffrwc => 'fits_find_rows_cmp',
553             ffsrow => 'fits_select_rows',
554             ffcrow => 'fits_calc_rows',
555             ffcalc => 'fits_calculator',
556             ffcalc_rng => 'fits_calculator_rng',
557             fftexp => 'fits_test_expr',
558             ffgtcr => 'fits_create_group',
559             ffgtis => 'fits_insert_group',
560             ffgtch => 'fits_change_group',
561             ffgtrm => 'fits_remove_group',
562             ffgtcp => 'fits_copy_group',
563             ffgtmg => 'fits_merge_groups',
564             ffmbyt => 'fits_seek',
565             ffgtcm => 'fits_compact_group',
566             ffgtvf => 'fits_verify_group',
567             ffgtop => 'fits_open_group',
568             ffgtam => 'fits_add_group_member',
569             ffgtnm => 'fits_get_num_members',
570             ffgmng => 'fits_get_num_groups',
571             ffgmop => 'fits_open_member',
572             ffgmcp => 'fits_copy_member',
573             ffgmtf => 'fits_transfer_member',
574             ffgmrm => 'fits_remove_member',
575             );
576              
577             my @__shortnames = keys %__names;
578             my @__longnames = (values(%__names), @__names_no_short);
579             my @__constants = qw(
580             ANGLE_TOO_BIG
581             ANY_HDU
582             ARRAY_TOO_BIG
583             ASCII_TBL
584             BAD_ATABLE_FORMAT
585             BAD_BITPIX
586             BAD_BTABLE_FORMAT
587             BAD_C2D
588             BAD_C2F
589             BAD_C2I
590             BAD_COL_NUM
591             BAD_DATATYPE
592             BAD_DATA_FILL
593             BAD_DATE
594             BAD_DECIM
595             BAD_DIMEN
596             BAD_DOUBLEKEY
597             BAD_ELEM_NUM
598             BAD_F2C
599             BAD_FILEPTR
600             BAD_FLOATKEY
601             BAD_GCOUNT
602             BAD_GROUP_ID
603             BAD_HDU_NUM
604             BAD_HEADER_FILL
605             BAD_I2C
606             BAD_INTKEY
607             BAD_KEYCHAR
608             BAD_LOGICALKEY
609             BAD_NAXES
610             BAD_NAXIS
611             BAD_OPTION
612             BAD_ORDER
613             BAD_PCOUNT
614             BAD_PIX_NUM
615             BAD_ROW_NUM
616             BAD_ROW_WIDTH
617             BAD_SIMPLE
618             BAD_TBCOL
619             BAD_TDIM
620             BAD_TFIELDS
621             BAD_TFORM
622             BAD_TFORM_DTYPE
623             BAD_URL_PREFIX
624             BAD_WCS_PROJ
625             BAD_WCS_VAL
626             BINARY_TBL
627             BYTE_IMG
628             CASEINSEN
629             CASESEN
630             CFITSIO_MAJOR
631             CFITSIO_MINOR
632             COL_NOT_FOUND
633             COL_NOT_UNIQUE
634             COL_TOO_WIDE
635             DOUBLENULLVALUE
636             DOUBLE_IMG
637             DRIVER_INIT_FAILED
638             END_JUNK
639             END_OF_FILE
640             FALSE
641             FILE_NOT_CLOSED
642             FILE_NOT_CREATED
643             FILE_NOT_OPENED
644             FLEN_CARD
645             FLEN_COMMENT
646             FLEN_ERRMSG
647             FLEN_FILENAME
648             FLEN_KEYWORD
649             FLEN_STATUS
650             FLEN_VALUE
651             FLOATNULLVALUE
652             FLOAT_IMG
653             GROUP_NOT_FOUND
654             GT_ID_ALL
655             GT_ID_ALL_URI
656             GT_ID_POS
657             GT_ID_POS_URI
658             GT_ID_REF
659             GT_ID_REF_URI
660             GZIP_1
661             HDU_ALREADY_MEMBER
662             HDU_ALREADY_TRACKED
663             HEADER_NOT_EMPTY
664             IDENTICAL_POINTERS
665             IMAGE_HDU
666             InputCol
667             InputOutputCol
668             KEY_NO_EXIST
669             KEY_OUT_BOUNDS
670             LONG_IMG
671             LONGLONG_IMG
672             MAXHDU
673             MEMBER_NOT_FOUND
674             MEMORY_ALLOCATION
675             NEG_AXIS
676             NEG_BYTES
677             NEG_FILE_POS
678             NEG_ROWS
679             NEG_WIDTH
680             NOT_ASCII_COL
681             NOT_ATABLE
682             NOT_BTABLE
683             NOT_GROUP_TABLE
684             NOT_IMAGE
685             NOT_LOGICAL_COL
686             NOT_POS_INT
687             NOT_TABLE
688             NOT_VARI_LEN
689             NO_BITPIX
690             NO_END
691             NO_GCOUNT
692             NO_MATCHING_DRIVER
693             NO_NAXES
694             NO_NAXIS
695             NO_NULL
696             NO_PCOUNT
697             NO_QUOTE
698             NO_SIMPLE
699             NO_TBCOL
700             NO_TFIELDS
701             NO_TFORM
702             NO_WCS_KEY
703             NO_XTENSION
704             NULL_INPUT_PTR
705             NUM_OVERFLOW
706             OPT_CMT_MBR
707             OPT_CMT_MBR_DEL
708             OPT_GCP_ALL
709             OPT_GCP_GPT
710             OPT_GCP_MBR
711             OPT_MCP_ADD
712             OPT_MCP_MOV
713             OPT_MCP_NADD
714             OPT_MCP_REPL
715             OPT_MRG_COPY
716             OPT_MRG_MOV
717             OPT_RM_ALL
718             OPT_RM_ENTRY
719             OPT_RM_GPT
720             OPT_RM_MBR
721             OVERFLOW_ERR
722             OutputCol
723             PARSE_BAD_COL
724             PARSE_BAD_OUTPUT
725             PARSE_BAD_TYPE
726             PARSE_LRG_VECTOR
727             PARSE_NO_OUTPUT
728             PARSE_SYNTAX_ERR
729             PLIO_1
730             READONLY
731             READONLY_FILE
732             READWRITE
733             READ_ERROR
734             RICE_1
735             SAME_FILE
736             SEEK_ERROR
737             SHORT_IMG
738             TBIT
739             TBYTE
740             TSBYTE
741             TCOMPLEX
742             TDBLCOMPLEX
743             TDOUBLE
744             TFLOAT
745             TINT
746             TLOGICAL
747             TLONG
748             TLONGLONG
749             TOO_MANY_DRIVERS
750             TOO_MANY_FILES
751             TOO_MANY_HDUS_TRACKED
752             TRUE
753             TSHORT
754             TSTRING
755             TUINT
756             TULONG
757             TUSHORT
758             ULONG_IMG
759             UNKNOWN_EXT
760             UNKNOWN_REC
761             URL_PARSE_ERROR
762             USE_MEM_BUFF
763             USHORT_IMG
764             VALIDSTRUC
765             VALUE_UNDEFINED
766             WCS_ERROR
767             WRITE_ERROR
768             ZERO_SCALE
769             TYP_STRUC_KEY
770             TYP_CMPRS_KEY
771             TYP_SCAL_KEY
772             TYP_NULL_KEY
773             TYP_DIM_KEY
774             TYP_RANG_KEY
775             TYP_UNIT_KEY
776             TYP_DISP_KEY
777             TYP_HDUID_KEY
778             TYP_CKSUM_KEY
779             TYP_WCS_KEY
780             TYP_REFSYS_KEY
781             TYP_COMM_KEY
782             TYP_CONT_KEY
783             TYP_USER_KEY
784             ); ### @__constants
785              
786             @EXPORT = qw( );
787              
788             %EXPORT_TAGS = (
789             'shortnames' => \@__shortnames,
790             'longnames' => \@__longnames,
791             'constants' => \@__constants,
792             );
793              
794             @EXPORT_OK = (
795             'PerlyUnpacking',
796             @__shortnames,
797             @__longnames,
798             @__constants,
799             );
800              
801             sub AUTOLOAD {
802 1     1   7 no strict;
  1         1  
  1         498  
803              
804             # This AUTOLOAD is used to 'autoload' constants from the constant()
805             # XS function. If a constant is not found then control is passed
806             # to the AUTOLOAD in AutoLoader.
807              
808 12     12   2065 my $constname;
809 12         62 ($constname = $AUTOLOAD) =~ s/.*:://;
810 12 50       34 croak "& not defined" if $constname eq 'constant';
811 12 50       53 my $val = constant($constname, @_ ? $_[0] : 0);
812 12 50       36 if ($! != 0) {
813 0 0       0 if ($! =~ /Invalid/) {
814 0         0 $AutoLoader::AUTOLOAD = $AUTOLOAD;
815 0         0 goto &AutoLoader::AUTOLOAD;
816             }
817             else {
818 0         0 croak "Your vendor has not defined Astro::FITS::CFITSIO macro $constname";
819             }
820             }
821 12     126   108 *$AUTOLOAD = sub { $val };
  126         5884  
822             #eval "sub $AUTOLOAD { $val }";
823 12         33 goto &$AUTOLOAD;
824             }
825              
826             bootstrap Astro::FITS::CFITSIO $VERSION;
827              
828             # Preloaded methods go here.
829              
830             # Compound routines -- useful routines that combine lower level
831             # Astro::FITS::CFITSIO commands
832             # This routine takes an argument (either a fitsfilePtr object
833             # or a string containing a FITS file name) and returns the header
834             # into a hash along with the exit status of the routine.
835             # If it is called in a scalar context then only the hash reference
836             # is returned
837              
838             # $hashref = fits_read_header("test.fits");
839             # ($hashref, $status) = $fitsfile->read_header;
840              
841             # The comments are stored in a hash in $hashref->{COMMENTS}.
842              
843             sub fits_read_header {
844              
845 0 0   0 1   croak 'Usage: fits_read_header(file|fitsfilePtr)'
846             unless @_;
847              
848 0           my ($fitsfile, $status);
849 0           my ($n, $left, %header, $key, $value, $comment);
850              
851             # Read the argument
852 0           my $file = shift;
853              
854 0           my $obj_passed = 0; # were we passed a fitsfilePtr?
855              
856 0           $status = 0;
857 0 0         if (UNIVERSAL::isa($file,'fitsfilePtr')) {
858 0           $fitsfile = $file;
859 0           $obj_passed = 1;
860             } else {
861             # Open the file.
862 0           fits_open_file($fitsfile, $file, READONLY(), $status);
863             }
864              
865             # Now we have an open file -- check that status is good before
866             # proceeding
867 0 0         unless ($status) {
868              
869             # Get the number of fits keywords in primary header
870 0           $fitsfile->get_hdrspace($n, $left, $status);
871              
872             # Loop over the keys
873 0           for my $i (1..$n) {
874 0 0         last unless $status == 0;
875              
876 0           $fitsfile->read_keyn($i, $key, $value, $comment, $status);
877              
878             # Store the key/value in a hash
879 0           $header{$key} = $value;
880              
881             # Store the comments.
882 0 0         if (! exists $header{COMMENTS}{$key}) {
883 0           $header{COMMENTS}{$key} = $comment;
884             }
885             # HISTORY keywords, for instance, can be numerous
886             else {
887 0 0         if (! ref $header{COMMENTS}{$key}) {
888 0           $header{COMMENTS}{$key} = [ $header{COMMENTS}{$key} ];
889             }
890 0           push @{$header{COMMENTS}{$key}}, $comment;
  0            
891             }
892              
893             }
894              
895             # Close the file if we opened it
896 0 0         $fitsfile->close_file($status) unless $obj_passed;
897             }
898              
899             # Report an error - may not always want to write to STDERR...
900 0           fits_report_error(*STDERR, $status);
901              
902              
903 0 0         return (\%header, $status) if wantarray;
904 0           return \%header;
905              
906             }
907              
908             # This section provides perl aliases for the OO interface
909             # This is a bit of a kluge since the actual command is in the
910             # Astro::FITS::CFITSIO namespace. Did not open a new namespace with the package
911             # command since AUTOSPLIT gets confused
912              
913             sub fitsfilePtr::read_header {
914 0     0     my $self = shift;
915 0           my ($href, $status) = Astro::FITS::CFITSIO::fits_read_header($self);
916 0 0         return ($href, $status) if wantarray;
917 0           return $href;
918             }
919              
920              
921            
922             # Autoload methods go after =cut, and are processed by the autosplit program.
923              
924             1;
925              
926             __END__