/****************************************************************************
 *   rasterio.h : 
 *   		header file for raster file-based i/o.
 *   Change Log :
 *		  July-28 1997 Initial version,  Liujian Qian
 *
 *   $Id: grasterio.h,v 1.3 1998/12/10 00:11:44 qian Exp $
 ***************************************************************************/
#ifndef _RASTERIO_H_
#define _RASTERIO_H_

#include <stdio.h>
#include "gdatapipe.h"
#include "gslab.h"


struct GRasterHdr;


/**
 * @internal
 * Internal class used only by GRaster file-based raster data access.

DESCRIPTION
       This class maintains the file-based I/O facility
       for raster class. ONly used by GRaster.  This class for now
       directs all the read/write to a unix file; however a particular
       user of the GRaster class (such as Tempest) can choose to 
       derive a class from it and let an instance of GRaster be hooked with
       this derived RasterIO object, which can read/write raster data in a
       way defined differently from the default. 

*/
class GRasterIO
{
    friend class GRaster;
    
    static int  next_temp_fid;	//for generating temporary file name
    FILE* 	ras_fp;		//desc for the open file
    long  	offset;
    char  	slab_id[8];	//for slab id (holds the slab offset in a file)
    int 	total_compact_sz, 
	        total_sz, original_sz;
    DataPipe 	ph, ps;	//used for loading/storing header/slab
    char 	file_name[384];
    
public:
    NOP		  GRasterIO();

    virtual NOP	  ~GRasterIO() {};
    
    virtual void  init();
    
    virtual bool  exists(const char* path);
    virtual char* slabID(void) {return slab_id; }
    virtual void  stats();
    
    virtual void  setName(const char* name);
    virtual void  setNewTempName();
    
    virtual Result openRead(); // defaults to GRaster::binary
    virtual Result openWrite();
    virtual Result openAppend();
    virtual Result openReadWrite();
    
    virtual Result readHeader();
    virtual Result writeHeader(GRasterHdr& hdr);	
    
    virtual Result readSlab(GSlab& slab, char* id);
    virtual char*  writeSlab(GSlab& slab, bool zipit);	
    
    virtual Result closeFile();
    virtual Result deleteFile();
    
    virtual Result copySlabsTo(GRasterHdr& hdr, const char* file);
    
};


#endif

Documentation generated by lqian@lqian-sun on Wed Jul 14 09:36:10 EDT 1999