00001 //************************************************************************************// 00002 // Module : gbin_stream.hpp 00003 // Date : 10/17/02 (DLR) 00004 // Copyright : 2002, 2003 Copyright University Corporation for Atmospheric 00005 // Research 00006 // Description : Encapsulates the methods and data associated with 00007 // the object that associates a stream to a GASpAR binary data file 00008 // Derived From : GStream. 00009 // Modifications: 00010 //************************************************************************************// 00011 #if !defined(GBIN_STREAM_HPP) 00012 #define GBIN_STREAM_HPP 00013 #include "gtypes.h" 00014 #include "gdd_file.h" 00015 #include "gtbuffer.hpp" 00016 #include <iostream.h> 00017 #include <fstream.h> 00018 #include "gcomm.hpp" 00019 #include "gstream.hpp" 00020 #if defined(MPI_IO_DEFAULT) 00021 #include "mpi.h" 00022 #endif 00023 00024 #define MAX_DATASETS 50000 00025 00026 extern char *identifier_ ; 00027 00028 class GBinStream: public GStream 00029 { 00030 public: 00031 GBinStream(GBOOL isCollective=FALSE, GBOOL isIndependent=TRUE, GSHORT ioTaskID=0); 00032 // GBinStream(const GBinStream &); 00033 ~GBinStream(); 00034 GBOOL Open(const char *, GIOS_MODE omode, GBOOL bDelete=FALSE); 00035 void Close(); 00036 GINT GetNumDataSets(); 00037 GFPOS pOffsetBlk(); // file position of DS offset block 00038 GFPOS pDSNum(); // file position of DS number 00039 GINT GetDSNum(); // get number of datasets in file 00040 GBOOL Check(); 00041 GBOOL EndianSwapped(); 00042 void ResetSizes(GBOOL bReset); // reset datatype sizes ? 00043 00044 00045 protected: 00046 // methods: 00047 00048 // data: 00049 00050 GBOOL bEndianSwapped_; 00051 GBOOL bResetSizes_; 00052 GINT gndatasets_; 00053 GINT ndtypes_; 00054 GFPOS *dsOffset_; 00055 // char *serrmsg; 00056 00057 GINT4BYTE i4sz; 00058 GINT4BYTE isz; 00059 GINT4BYTE sisz; 00060 GINT4BYTE fsz; 00061 GINT4BYTE gfsz; 00062 GINT4BYTE esz; 00063 GINT4BYTE *szkey_; 00064 00065 private: 00066 00067 }; 00068 00069 #endif