IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jun 4, 2015, 5:42:47 PM (11 years ago)
Author:
eugene
Message:

libfits compressed I/O seems to be generally working

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ohana.20150429/src/libfits/table/F_get_column.c

    r38325 r38366  
    1717
    1818void *gfits_get_bintable_column_data (Header *header, FTable *table, char *label, char *type, off_t *Nrow, int *Ncol) {
     19  void *data = gfits_get_bintable_column_data_raw (header, table, label, type, Nrow, Ncol, FALSE);
     20  return data;
     21}
     22
     23void *gfits_get_bintable_column_data_raw (Header *header, FTable *table, char *label, char *type, off_t *Nrow, int *Ncol, char nativeOrder) {
    1924
    2025  off_t Nx, Ny;
     
    8792    for (i = 0; i < Nval*Ny; i++, Pin+=Nbytes, Pout+=Nbytes) {
    8893# ifdef BYTE_SWAP
    89       SWAP_BYTE;
     94      if (!nativeOrder) { SWAP_BYTE; }
    9095# endif
    9196      *(short *)Pout = *(short *)Pin*Bscale + Bzero;
     
    95100    for (i = 0; i < Nval*Ny; i++, Pin+=Nbytes, Pout+=Nbytes) {
    96101# ifdef BYTE_SWAP
    97       SWAP_WORD;
     102      if (!nativeOrder) { SWAP_WORD; }
    98103# endif
    99104      *(int *)Pout = *(int *)Pin*Bscale + Bzero;
     
    104109      for (i = 0; i < Nval*Ny; i++, Pin+=Nbytes, Pout+=Nbytes) {
    105110# ifdef BYTE_SWAP
    106         SWAP_DBLE;
     111        if (!nativeOrder) { SWAP_DBLE; }
    107112# endif
    108113        *(int64_t *)Pout = *(int64_t *)Pin;
     
    111116      for (i = 0; i < Nval*Ny; i++, Pin+=Nbytes, Pout+=Nbytes) {
    112117# ifdef BYTE_SWAP
    113         SWAP_DBLE;
     118        if (!nativeOrder) { SWAP_DBLE; }
    114119# endif
    115120        *(int64_t *)Pout = *(int64_t *)Pin*Bscale + Bzero;
     
    120125    for (i = 0; i < Nval*Ny; i++, Pin+=Nbytes, Pout+=Nbytes) {
    121126# ifdef BYTE_SWAP
    122       SWAP_WORD;
     127      if (!nativeOrder) { SWAP_WORD; }
    123128# endif
    124129      *(float *)Pout = *(float *)Pin*Bscale + Bzero;
     
    128133    for (i = 0; i < Nval*Ny; i++, Pin+=Nbytes, Pout+=Nbytes) {
    129134# ifdef BYTE_SWAP
    130       SWAP_DBLE;
     135      if (!nativeOrder) { SWAP_DBLE; }
    131136# endif
    132137      *(double *)Pout = *(double *)Pin*Bscale + Bzero;
     
    176181  if (!gfits_get_bintable_column_type_by_N (header, N, type, Nval)) return FALSE;
    177182  return (TRUE);
     183}
     184
     185/***********************/
     186int gfits_get_bintable_column_raw (Header *header, FTable *table, char *label, void **data, char nativeOrder) {
     187
     188  char type[16];
     189  off_t Nrow;
     190  int Ncol;
     191
     192  char *array = gfits_get_bintable_column_data_raw (header, table, label, type, &Nrow, &Ncol, nativeOrder);
     193  if (array == NULL) return (FALSE);
     194
     195  *data = array;
     196  return TRUE;
    178197}
    179198
Note: See TracChangeset for help on using the changeset viewer.