00001 #pragma ident "$Id: RinexMetData.hpp 447 2007-03-23 20:05:19Z btolman $" 00002 00008 #ifndef GPSTK_RINEXMETDATA_HPP 00009 #define GPSTK_RINEXMETDATA_HPP 00010 00011 //============================================================================ 00012 // 00013 // This file is part of GPSTk, the GPS Toolkit. 00014 // 00015 // The GPSTk is free software; you can redistribute it and/or modify 00016 // it under the terms of the GNU Lesser General Public License as published 00017 // by the Free Software Foundation; either version 2.1 of the License, or 00018 // any later version. 00019 // 00020 // The GPSTk is distributed in the hope that it will be useful, 00021 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00022 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00023 // GNU Lesser General Public License for more details. 00024 // 00025 // You should have received a copy of the GNU Lesser General Public 00026 // License along with GPSTk; if not, write to the Free Software Foundation, 00027 // Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00028 // 00029 // Copyright 2004, The University of Texas at Austin 00030 // 00031 //============================================================================ 00032 00033 //============================================================================ 00034 // 00035 //This software developed by Applied Research Laboratories at the University of 00036 //Texas at Austin, under contract to an agency or agencies within the U.S. 00037 //Department of Defense. The U.S. Government retains all rights to use, 00038 //duplicate, distribute, disclose, or release this software. 00039 // 00040 //Pursuant to DoD Directive 523024 00041 // 00042 // DISTRIBUTION STATEMENT A: This software has been approved for public 00043 // release, distribution is unlimited. 00044 // 00045 //============================================================================= 00046 00047 #include <map> 00048 00049 #include "DayTime.hpp" 00050 00051 #include "FFStream.hpp" 00052 #include "RinexMetBase.hpp" 00053 #include "RinexMetHeader.hpp" 00054 00055 namespace gpstk 00056 { 00059 00071 class RinexMetData : public RinexMetBase 00072 { 00073 00074 public: 00075 RinexMetData() 00076 : time(gpstk::DayTime::BEGINNING_OF_TIME) 00077 {} 00078 00081 virtual bool isData(void) const {return true;} 00082 00086 virtual void dump(std::ostream& s) const; 00087 00089 bool operator<(const RinexMetData& right) const 00090 { return (time < right.time); } 00091 00094 typedef std::map<RinexMetHeader::RinexMetType, double> RinexMetMap; 00095 00099 DayTime time; 00100 RinexMetMap data; 00101 00102 00104 static const int maxObsPerLine; 00107 static const int maxObsPerContinuationLine; 00108 00109 protected: 00111 void reallyPutRecord(FFStream& s) const 00112 throw(std::exception, FFStreamError, 00113 gpstk::StringUtils::StringException); 00114 00124 virtual void reallyGetRecord(FFStream& s) 00125 throw(std::exception, FFStreamError, 00126 gpstk::StringUtils::StringException); 00127 00128 private: 00130 void processFirstLine(const std::string& line, 00131 const RinexMetHeader& hdr) 00132 throw(FFStreamError); 00133 00135 void processContinuationLine(const std::string& line, 00136 const RinexMetHeader& hdr) 00137 throw(FFStreamError); 00138 00140 DayTime parseTime(const std::string& line) const 00141 throw(FFStreamError); 00142 }; // class RinexMetData 00143 00145 00146 } // namespace 00147 00148 00149 #endif
1.3.9.1