00001 #ifndef _WINC_MOSUFILE
00002 #define _WINC_MOSUFILE
00003
00004 #include <WXP/Date.h>
00005 #include <WXP/Filename.h>
00006 #include <WXP/MosUData.h>
00007 #include <WXP/Parse.h>
00008
00009 namespace WXP {
00010 class MosUFile {
00011 int type;
00012 int model;
00013 Parse parse;
00014 Date date;
00015 Date pdate;
00016 bool opened;
00017 int pos;
00018 int off;
00019 int line;
00020
00021 public:
00022 MosUFile();
00023 MosUFile( const char *filename, int type );
00024 MosUFile( const char *filename );
00025 MosUFile( Filename &filename, int type );
00026 MosUFile( Filename &filename );
00027 ~MosUFile();
00028 int init();
00029 int setModel( int mod );
00030 int setModel( const char *str );
00031 const char*getModel();
00032 int open( const char *filename, int type );
00033 int open( const char *filename );
00034 int open( Filename &filename, int type );
00035 int open( Filename &filename );
00036 int rewind( );
00037 int close( );
00038 inline bool isOpen(){ return opened; };
00039 int getDate( Date &rdate );
00040 int read( MosUData &data );
00041 int decodeNGM( const char *str, MosUData &data );
00042 int decodeETA( const char *str, MosUData &data );
00043 inline int decodeNAM( const char *str, MosUData &data ){
00044 return decodeETA( str, data ); };
00045 inline const char *getWmo(){
00046 return parse.getHeader(); };
00047
00048 static const char*getModel( int mod );
00049
00050
00051
00052 enum Model {
00053 NONE,
00054 NGM,
00055 ETA,
00056 NAM,
00057 };
00058 enum Type {
00059 UNK,
00060 WMO,
00061 BUFR,
00062 CDF
00063 };
00064 };
00065 }
00066 #endif