📄 filefilterframewithheader.hpp
字号:
/// Returns the contents of the header data list, const. std::list<FileHeader> getHeaderData(void) const {return headerList;} /// Returns the number of data items in the header list. typename std::list<FileHeader>::size_type getHeaderCount(void) const { return headerList.size(); } typename std::list<FileHeader>::const_iterator beginHeader() const throw(gpstk::InvalidRequest); typename std::list<FileHeader>::const_iterator endHeader() const throw(gpstk::InvalidRequest); typename std::list<FileHeader>::iterator beginHeader() throw(gpstk::InvalidRequest); typename std::list<FileHeader>::iterator endHeader() throw(gpstk::InvalidRequest); bool emptyHeader() const { return headerList.empty(); } typename std::list<FileHeader>::size_type sizeHeader() { return headerList.size(); } FileHeader& frontHeader() throw(gpstk::InvalidRequest); const FileHeader& frontHeader() const throw(gpstk::InvalidRequest); FileHeader& backHeader() throw(gpstk::InvalidRequest); const FileHeader& backHeader() const throw(gpstk::InvalidRequest); protected: /// Run init() to load the data into the filter. void init(const std::vector<FileHunter::FilterPair>& filter= std::vector<FileHunter::FilterPair>()) throw(gpstk::Exception); /// Check to make sure headerList is empty /// @throw InvalidRequest if headerList is empty inline void chl(const std::string& req) throw(gpstk::InvalidRequest) { gpstk::InvalidRequest exc("Header list is empty attempting to" " satisfy "+req+" request."); if (headerList.empty()) { GPSTK_THROW(exc); } } protected: std::list<FileHeader> headerList; }; //@} template <class FileStream, class FileData, class FileHeader> bool FileFilterFrameWithHeader<FileStream,FileData,FileHeader>:: writeFile(const std::string& outputFile, const FileHeader& fh) const throw(gpstk::Exception) { // make the directory (if needed) std::string::size_type pos = outputFile.rfind('/'); if (pos != std::string::npos) gpstk::FileUtils::makeDir(outputFile.substr(0,pos).c_str(), 0755); FileStream stream(outputFile.c_str(), std::ios::out|std::ios::trunc); stream.exceptions(std::ios::failbit); stream << fh; typename std::list<FileData>::const_iterator index; for(index = this->dataVec.begin(); index != this->dataVec.end(); index++) stream << (*index); return true; } template <class FileStream, class FileData, class FileHeader> typename std::list<FileHeader>::const_iterator FileFilterFrameWithHeader<FileStream,FileData,FileHeader>::beginHeader() const throw(gpstk::InvalidRequest) { try { chl("beginHeader"); } catch(gpstk::InvalidRequest exc) { GPSTK_RETHROW(exc); } return headerList.begin(); } template <class FileStream, class FileData, class FileHeader> typename std::list<FileHeader>::const_iterator FileFilterFrameWithHeader<FileStream,FileData,FileHeader>::endHeader() const throw(gpstk::InvalidRequest) { try { chl("endHeader"); } catch(gpstk::InvalidRequest exc) { GPSTK_RETHROW(exc); } return headerList.end(); } template <class FileStream, class FileData, class FileHeader> typename std::list<FileHeader>::iterator FileFilterFrameWithHeader<FileStream,FileData,FileHeader>::beginHeader() throw(gpstk::InvalidRequest) { try { chl("beginHeader"); } catch(gpstk::InvalidRequest exc) { GPSTK_RETHROW(exc); } return headerList.begin(); } template <class FileStream, class FileData, class FileHeader> typename std::list<FileHeader>::iterator FileFilterFrameWithHeader<FileStream,FileData,FileHeader>::endHeader() throw(gpstk::InvalidRequest) { try { chl("endHeader"); } catch(gpstk::InvalidRequest exc) { GPSTK_RETHROW(exc); } return headerList.end(); } template <class FileStream, class FileData, class FileHeader> FileHeader& FileFilterFrameWithHeader<FileStream,FileData,FileHeader>::frontHeader() throw(gpstk::InvalidRequest) { try { chl("frontHeader"); } catch(gpstk::InvalidRequest exc) { GPSTK_RETHROW(exc); } return headerList.front(); } template <class FileStream, class FileData, class FileHeader> const FileHeader& FileFilterFrameWithHeader<FileStream,FileData,FileHeader>::frontHeader() const throw(gpstk::InvalidRequest) { try { chl("frontHeader"); } catch(gpstk::InvalidRequest exc) { GPSTK_RETHROW(exc); } return headerList.front(); } template <class FileStream, class FileData, class FileHeader> FileHeader& FileFilterFrameWithHeader<FileStream,FileData,FileHeader>::backHeader() throw(gpstk::InvalidRequest) { try { chl("backHeader"); } catch(gpstk::InvalidRequest exc) { GPSTK_RETHROW(exc); } return headerList.back(); } template <class FileStream, class FileData, class FileHeader> const FileHeader& FileFilterFrameWithHeader<FileStream,FileData,FileHeader>::backHeader() const throw(gpstk::InvalidRequest) { try { chl("backHeader"); } catch(gpstk::InvalidRequest exc) { GPSTK_RETHROW(exc); } return headerList.back(); } template <class FileStream, class FileData, class FileHeader> void FileFilterFrameWithHeader<FileStream,FileData,FileHeader> :: init(const std::vector<FileHunter::FilterPair>& filter) throw(gpstk::Exception) { // find the files FileHunter fh(this->fs); typename std::vector<FileHunter::FilterPair>::const_iterator itr = filter.begin(); while (itr != filter.end()) { fh.setFilter((*itr).first, (*itr).second); itr++; } std::vector<std::string> listOfFiles = fh.find(this->startTime, this->endTime, FileSpec::ascending); // for each file, just read the header typename std::vector<std::string>::iterator i; for(i = listOfFiles.begin(); i != listOfFiles.end(); i++) { FileStream s((*i).c_str()); if (s.good()) { s.exceptions(std::ios::failbit); FileHeader header; s >> header; headerList.push_back(header); } } } } // namespace gpstk#endif //GPSTK_FILEFILTERFRAMEWITHHEADER_HPP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -