// SGI_FileReader.h ////////////////////////////////////////////////////////////////////////// #ifndef _SGI_FileReader #define _SGI_FileReader #include #include #include "GeneralFunctions.h" typedef struct{ long Date; // date YYYYMMDD float Ap; // Ap float Kp[8]; // Kp every 3 hr float flux10_7; //Solar Flux ( }SGI_Single_Record; typedef std::map SGI_Record_Buffer; class SGI_FileReader { public: SGI_FileReader(); SGI_FileReader(const std::string &filename); //open input file SGI_FileReader(const std::string &filedir, const std::string &filename); //open input file void ReadSingle_SGI_Record(int recordIndex,SGI_Single_Record &record); void Read_SGI_RecordsToBuffer(SGI_Record_Buffer &record_buffer); void Read_SGI_RecordsToBuffer(); void SGI_findRecord(long date, int &recordIndex); void getKpValues(float*); void getKpValues(float*, long, int); double getEndJDN(); double getBegJDN(); virtual ~SGI_FileReader(); SGI_Record_Buffer record_buffer; long date_startdoy; long date_enddoy; void SetUp(const std::string &filename); protected: void BasicInitialize(); private: std::string filename; bool file_is_open; bool setup_attempted; bool setup_succeeded; int ncid; int date_dim_id; size_t date_dim_len; int version; //long date_startdoy; //long date_enddoy; //double date_startjdn; //double date_endjdn; //int date_startcal[7]; //int date_endcal[7]; }; #endif