00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef __DATAIO_H
00029 #define __DATAIO_H
00030
00031 #include <netcdf.hh>
00032
00033 typedef enum {
00034 FIO_OK,
00035 FIO_OPEN_ERR, FIO_WRITE_ERR, FIO_READ_ERR,
00036 FIO_NO_NAME,
00037 FIO_NO_MEM,
00038 FIO_DISK_FULL,
00039 FIO_NO_DATFILE,
00040 FIO_NO_GNUFILE,
00041 FIO_NO_NETCDFFILE,
00042 FIO_NO_NETCDFXSMFILE,
00043 FIO_NSC_ERR,
00044 FIO_NOT_RESPONSIBLE_FOR_THAT_FILE,
00045 FIO_INVALID_FILE,
00046 FIO_UNKNOWN_ERR
00047 } FIO_STATUS;
00048
00049 class Dataio{
00050 public:
00051 Dataio(Scan *s, const char *n){ scan=s; name=strdup(n); status=FIO_OK; };
00052 virtual ~Dataio(){ free(name); };
00053 void SetName(const char *n){ free(name); name=strdup(n); }
00054
00055 virtual FIO_STATUS Read()=0;
00056 virtual FIO_STATUS Write()=0;
00057 void SetScan(Scan *sc){ scan = sc; };
00058
00059 const char* ioStatus();
00060 char *name;
00061
00062 protected:
00063 FIO_STATUS status;
00064 Scan *scan;
00065 };
00066
00067 class NetCDF : public Dataio{
00068 public:
00069 NetCDF(Scan *s, const char *n) : Dataio(s,n){ };
00070 virtual FIO_STATUS Read();
00071 virtual FIO_STATUS Write();
00072 };
00073
00074
00075 #endif