home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Graphics / Graphics.zip / xfitsvew.zip / XFITSview / fitssubs / dskstore.h < prev    next >
C/C++ Source or Header  |  1998-04-02  |  4KB  |  94 lines

  1. /*  header file for DskStore class */ 
  2. /*  An DskStore is an interface to a disk data file.  The file used is 
  3.     the FITS data file and type conversion is done  when necessary */ 
  4. /*-----------------------------------------------------------------------
  5. *  Copyright (C) 1996,1998
  6. *  Associated Universities, Inc. Washington DC, USA.
  7. *  This program is free software; you can redistribute it and/or
  8. *  modify it under the terms of the GNU General Public License as
  9. *  published by the Free Software Foundation; either version 2 of
  10. *  the License, or (at your option) any later version.
  11. *
  12. *  This program is distributed in the hope that it will be useful,
  13. *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. *  GNU General Public License for more details.
  16. *-----------------------------------------------------------------------*/
  17.   
  18. #include "mydefs.h" 
  19. #include "myutil.h" 
  20. #include "myio.h" 
  21. #include "mystring.h" 
  22. #include "myutil.h" 
  23. #include "fitsio.h" 
  24. #include "fitsmem.h" 
  25. #include "gzipread.h" 
  26. #ifndef DSKSTORE_H
  27. #define DSKSTORE_H 
  28.   
  29. typedef struct DSKSTORE { 
  30.     Integer error;       /*  Current error code 0=OK */ 
  31.     Integer nref;        /*  Number of references, object deleted when this */ 
  32.                          /*  goes to 0; */ 
  33.     Integer header_size; /*  FITS header size in bytes */ 
  34.     Integer bitpix;      /*  number of bits per pixel in FITS convention. */ 
  35.     double  scale;       /*  FITS scaling value */ 
  36.     double  offset;      /*  FITS offset. */ 
  37.     Integer blank;       /*  FITS integer blanking value */ 
  38.     Integer byteword;    /*  no. FITS bytes per internal word. */ 
  39.     Integer byteno;      /*  next byte number in FITS buffer */ 
  40.     Integer size;        /*  Current file size in bytes. */ 
  41.     Logical save_file;   /*  If true file is not destroyed when */ 
  42.                          /*  object dies. */ 
  43.     Logical read_only;   /*  Read only? */ 
  44.     int     hFile;       /*  File Handle */ 
  45.     int     hBuffer;     /*  Buffer handle */ 
  46.     Logical isGzip;      /*  If true, file is gzipped */
  47.     union { 
  48.       cMemPtr  buffer;     /* I/O buffer with aliases */ 
  49.       sMemPtr  sbuffer;    /* Shorts */ 
  50.       lMemPtr  lbuffer;    /* Longs */ 
  51.       fMemPtr  fbuffer;    /* Floats */ 
  52.       dMemPtr  dbuffer;    /* Doubles */ 
  53.     } buff; 
  54.     FITSfile *Ffile;      /* FITS file descriptor */
  55.     FStrng *file_name;    /*  FITS file name. */ 
  56.   } DskStore; 
  57.   
  58.   /* Constructor */ 
  59.   DskStore* MakeDskStore(Integer s, FITSfile *fname, Integer bp, 
  60.              double scl, double off, 
  61.              Integer blnk, Integer h_size); 
  62.     /* fname FITS file; "none" => create temporary. */ 
  63.     /* bp = bitpix */ 
  64.     /* h_size = header size in bytes */ 
  65.     /* scl = FITS scaling */ 
  66.     /* off = FITS offset */ 
  67.     /* blnk = FITS integer blanking value */ 
  68.   
  69.   
  70.   /* Destructor */ 
  71.   void KillDskStore(DskStore *me); 
  72.   
  73.   /* Increment reference count */ 
  74.   void DskStoreInc_ref(DskStore *me); 
  75.   
  76.   /* Decrement reference count, delete if it goes to 0 */ 
  77.   void DskStoreDec_ref(DskStore *me); 
  78.   
  79.   /* Read file. */ 
  80.   /* file position is wrt beginning of data and units are for */ 
  81.   /* internal data (Not external, FITS data). */ 
  82.   void DskStoreRead_file(DskStore *me, Integer nwords, Integer file_pos, 
  83.              fMemPtr memory); 
  84.   
  85.   /*  FITS input routines */ 
  86.   /* Read next buffer from file */ 
  87.   void DskStoreRead_buffer(DskStore *me, Integer nread); 
  88.   
  89.   /* function to return scaled words in local format. */ 
  90.   void get_scl_array(DskStore *me, Integer nwords, fMemPtr words); 
  91.   
  92.   
  93. #endif /* DSKSTORE_H */ 
  94.