IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jun 12, 2015, 6:18:23 PM (11 years ago)
Author:
eugene
Message:

merge changes from EAM dev branch ohana.20150429

Location:
trunk/Ohana
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana

  • trunk/Ohana/src/libfits/include/gfitsio.h

    r38255 r38441  
    7373  off_t                   datasize; // size of the buffer (including block padding at the end)
    7474  off_t                   validsize;  // size of the valid portion of the table (< validsize if file is short)
     75  off_t                   heap_start; // byte offset to start of HEAP
    7576} FTable;
    7677
     
    8586} VTable;
    8687
    87 typedef struct {
    88   int   maxlen;               // max size of all table rows
    89   int   nbytes;               // number of bytes per column element
    90   int   Nstart;               // byte offset of this column relative to first column
    91   off_t heap_start;           // byte offset to start of HEAP
    92   char  format;               // data format character (one of: XLABIJEDCM)
    93   char  mode;                 // access data pointer type (one of P or Q)
     88// description / metadata needed for a single varlength column.  A varlength column has a
     89// 2-element array giving the (length,offset) of data in the heap.  Below, 'real data' are
     90// the values in the heap; 'metadata' are the values in the main table.
     91typedef struct {
     92  int   column;               // field number (of the metadata)
     93  char  format;               // format character for real data (one of: XLABIJKEDCM)
     94  char  mode;                 // format character for metadata (one of P [float] or Q [double])
     95  int   maxlen;               // max size of all table rows for this column
     96  int   nbytes;               // number of bytes per real data column element
     97  int   offset;               // byte offset of the metadata column relative to first column
    9498} VarLengthColumn;
     99
     100typedef struct {
     101  char ttype[16];             // TTYPE field of original table
     102  char ttype_cmt[80];         // comment associated with TTYPE
     103  char tunit[16];             // TUNIT field of original table
     104  char tunit_cmt[80];         // comment associated with TUNIT
     105  char tformat[16];           // TFORM field of original table
     106  char tformat_cmt[80];       // comment associated with TFORM
     107  char zctype[80];            // compression type for this field
     108  VarLengthColumn zdef;       // description of the output variable length column
     109
     110  char datatype[80];          // named data type associated with ttype (eg, 18J -> int, 18D -> double)
     111  int Nvalues;                // number of values per row (eg 18J -> 18 int values)
     112  int pixsize;                // number of bytes per value of this row (eg, 18J -> 4 bytes)
     113  int rowsize;                // number of bytes for a full row (Nvalues * pixsize)
     114  int offset;                 // byte offset of the real data column relative to first column
     115} TableField;
    95116
    96117# ifndef PROTO
     
    106127char   *gfits_keyword_end              PROTO((char *line));
    107128int     gfits_copy_header              PROTO((Header *in, Header *out));
     129int     gfits_copy_header_ptr          PROTO((Header *in, Header *out));
    108130int     gfits_create_header            PROTO((Header *header));
    109131int     gfits_delete                   PROTO((Header *header, char *field, int N));
     
    117139int     gfits_modify                   PROTO((Header *header, char *field, char *mode, int N,...)) OHANA_FORMAT(printf, 3, 5);
    118140int     gfits_print                    PROTO((Header *header, char *field, char *mode, int N,...)) OHANA_FORMAT(printf, 3, 5);
    119 int     gfits_modify_alt               PROTO((Header *header, char *field, char *mode, int N,...));
    120 int     gfits_print_alt                PROTO((Header *header, char *field, char *mode, int N,...));
     141int     gfits_modify_alt               PROTO((Header *header, char *field, char *mode, int N,...)); // do not use a FORMAT: non-standard fmt chars
     142int     gfits_print_alt                PROTO((Header *header, char *field, char *mode, int N,...)); // do not use a FORMAT: non-standard fmt chars
    121143int     gfits_find_Xheader             PROTO((FILE *f, Header *header, char *extname));
    122144int     gfits_read_Xheader             PROTO((char *filename, Header *header, int N));
     
    124146int     gfits_save_header              PROTO((FILE *f, Header *header));
    125147int     gfits_scan                     PROTO((Header *header, char *field, char *mode, int N,...)) OHANA_FORMAT(scanf, 3, 5);
    126 int     gfits_scan_alt                 PROTO((Header *header, char *field, char *mode, int N,...));
     148int     gfits_scan_alt                 PROTO((Header *header, char *field, char *mode, int N,...)); // do not use a FORMAT: non-standard fmt chars
    127149int     gfits_set_unsign_mode          PROTO((int mode));
    128150int     gfits_stripwhite               PROTO((char *string));
     
    133155off_t   gfits_data_min_size            PROTO((Header *header));
    134156off_t   gfits_data_pad_size            PROTO((off_t rawsize));
     157off_t   gfits_heap_start               PROTO((Header *header));
    135158int     gfits_extended_to_primary      PROTO((Header *header, int simple, char *comment));
    136159int     gfits_primary_to_extended      PROTO((Header *header, char *exttype, char *comment));
     
    166189void    gfits_set_matrix_value         PROTO((Matrix *matrix, off_t x, off_t y, double value));
    167190int     gfits_write_matrix             PROTO((char *filename, Matrix *matrix));
     191
    168192int     gfits_uncompress_image         PROTO((Header *header, Matrix *matrix, FTable *ftable));
    169 int     gfits_uncompress_data          PROTO((char *zdata, int Nzdata, char *cmptype, char **optname, char **optvalue, int Nopt, char *outdata, int *Nout, int out_pixsize));
    170 int     gfits_distribute_data          PROTO((Matrix *matrix, int bitpix, char *data, int Ndata, int *otile, int oblank, int *ztile, int zblank, float zscale, float zzero));
    171 int     gfits_byteswap_zdata           PROTO((char *zdata, int Nzdata, int bitpix));
     193int     gfits_uncompress_data          PROTO((char *zdata, int Nzdata, char *cmptype, char **optname, char **optvalue, int Nopt, char *outdata, int *Nout, int Nout_alloc, int out_pixsize));
     194int     gfits_distribute_data          PROTO((Matrix *matrix, char *data, int Ndata, int bitpix, int *otile, int oblank, int *ztile, int zblank, float zscale, float zzero));
     195
     196int     gfits_compress_data            PROTO((char *zdata, int *Nzdata, char *cmptype, char **optname, char **optvalue, int Nopt, char *rawdata, int Nraw, int raw_pixsize, int Nx, int Ny));
     197int     gfits_compress_image           PROTO((Header *header, Matrix *matrix, FTable *ftable, int *Ztile, char *zcmptype));
     198int     gfits_collect_data             PROTO((Matrix *matrix, char *raw, int Nraw, int raw_pixsize, int *otile, int oblank, int *ztile, int zblank, float zscale, float zzero));
     199
     200int     gfits_copy_keywords_compress   PROTO((Header *srchead, Header *tgthead));
    172201int     gfits_swap_raw                 PROTO((Matrix *matrix));
    173 int     gfits_extension_is_compressed  PROTO((Header *header));
     202
    174203off_t   gfits_tile_size                PROTO((Matrix *matrix, int *otile, int *ztile));
     204int     gfits_imtile_maxsize           PROTO((Matrix *matrix, int *ztile));
     205int     gfits_imtile_count             PROTO((Matrix *matrix, int *ztile, int *ntile));
     206int     gfits_imtile_start             PROTO((Matrix *matrix, int *otile));
     207int     gfits_imtile_next              PROTO((Matrix *matrix, int *ztile, int *ntile, int *otile));
     208
     209int     gfits_extension_is_compressed_image  PROTO((Header *header));
     210int     gfits_extension_is_compressed_table  PROTO((Header *header));
     211int     gfits_byteswap_zdata            PROTO((char *zdata, int Nzdata, int pixsize));
     212int     gfits_compressed_data_pixsize   PROTO((char *cmptype, int out_bitpix, char **optname, char **optvalue, int Noptions));
    175213int     gfits_uncompressed_data_pixsize PROTO((char *cmptype, int out_bitpix, char **optname, char **optvalue, int Noptions));
    176 int     gfits_vartable_heap_pixsize    PROTO((char format));
     214int     gfits_uncompressed_data_bitpix  PROTO((char *cmptype, int out_bitpix, char **optname, char **optvalue, int Noptions));
     215int     gfits_vartable_heap_pixsize     PROTO((char format));
     216int     gfits_cmptype_valid             PROTO((char *cmptype));
     217
     218int     gfits_varlength_column_add_data PROTO((FTable *table, char *data, off_t Ndata, int row, VarLengthColumn *column));
     219void   *gfits_varlength_column_pointer  PROTO((FTable *ftable, VarLengthColumn *column, off_t row, off_t *length));
     220int     gfits_varlength_column_define   PROTO((FTable *ftable, VarLengthColumn *def, int column));
     221int     gfits_varlength_column_finish   PROTO((FTable *ftable, VarLengthColumn *def));
     222int     gfits_byteswap_varlength_column PROTO((FTable *ftable, int column));
    177223
    178224/******************************* Table functions *************/
     
    183229char   *gfits_table_print              PROTO((FTable *ftable,...));
    184230int     gfits_add_rows                 PROTO((FTable *ftable, char *data, off_t Nrow, off_t Nbytes));
     231int     gfits_set_table_rows           PROTO((Header *header, FTable *table, off_t Nrows));
    185232int     gfits_bintable_format          PROTO((char *format, char *type, int *Nval, int *Nbytes));
    186233int     gfits_create_table             PROTO((Header *header, FTable *ftable));
     
    199246int     gfits_fwrite_ftable_range      PROTO((FILE *f, FTable *table, off_t start, off_t Nrows, off_t Ndisk, off_t Ntotal));
    200247int     gfits_get_bintable_column      PROTO((Header *header, FTable *table, char *label, void **data));
     248int     gfits_get_bintable_column_raw  PROTO((Header *header, FTable *table, char *label, void **data, char nativeOrder));
    201249int     gfits_get_bintable_column_type PROTO((Header *header, char *label, char *type, int *Nval));
     250void   *gfits_get_bintable_column_data PROTO((Header *header, FTable *table, char *label, char *type, off_t *Nrow, int *Ncol));
    202251int     gfits_get_bintable_column_type_by_N  PROTO((Header *header, int N, char *type, int *Nval));
    203 void   *gfits_get_bintable_column_data PROTO((Header *header, FTable *table, char *label, char *type, off_t *Nrow, int *Ncol));
     252void   *gfits_get_bintable_column_data_raw   PROTO((Header *header, FTable *table, char *label, char *type, off_t *Nrow, int *Ncol, char nativeOrder));
    204253int     gfits_get_table_column         PROTO((Header *header, FTable *table, char *label, void **data));
    205254int     gfits_get_table_column_type    PROTO((Header *header, char *label, char *type));
     
    207256int     gfits_read_table               PROTO((char *filename, FTable *ftable));
    208257int     gfits_set_bintable_column      PROTO((Header *header, FTable *table, char *label, void *data, off_t Nrow));
    209 int     gfits_set_bintable_column_reformat PROTO((Header *header, FTable *table, char *label, char *intype, void *data, off_t Nrow));
     258int     gfits_set_bintable_column_reformat PROTO((Header *header, FTable *table, char *label, char *intype, void *data, off_t Nrow, char nativeOrder));
    210259int     gfits_set_table_column         PROTO((Header *header, FTable *table, char *label, void *data, off_t Nrow));
    211260int     gfits_table_column             PROTO((FTable *ftable, char *field, char *mode,...)) OHANA_FORMAT(printf, 3, 4);
     
    219268int     gfits_copy_ftable              PROTO((FTable *in, FTable *out));
    220269int     gfits_copy_vtable              PROTO((VTable *in, VTable *out));
     270int     gfits_copy_ftable_ptr          PROTO((FTable *in, FTable *out));
    221271
    222272int     gfits_create_Theader           PROTO((Header *header, char *type));
     
    227277int     gfits_write_Theader            PROTO((char *filename, Header *header));
    228278
    229 int     gfits_varlength_column_define  PROTO((FTable *ftable, VarLengthColumn *def, int column));
    230 void   *gfits_varlength_column_pointer PROTO((FTable *ftable, VarLengthColumn *column, off_t row, off_t *length));
     279int     gfits_compress_table           PROTO((FTable *srctable, FTable *tgttable, int ztilelen, char *zcmptype));
     280int     gfits_uncompress_table         PROTO((FTable *srctable, FTable *tgttable));
     281
     282// XXX EAM for testing
     283int gfits_dump_raw_table (FTable *table, char *message);
     284int gfits_dump_cmp_table (FTable *table, char *message);
     285
    231286
    232287#endif /* FITSIO */
Note: See TracChangeset for help on using the changeset viewer.