45 #ifndef GNSSTK_FILEFILTERFRAMEWITHHEADER_HPP
46 #define GNSSTK_FILEFILTERFRAMEWITHHEADER_HPP
73 template <
class FileStream,
class FileData,
class FileHeader>
96 std::vector<std::string>::const_iterator itr = fileList.
begin();
97 while (itr != fileList.end())
173 typename std::vector<std::string>::const_iterator itr;
174 for (itr = fileList.begin(); itr != fileList.end(); itr++)
192 bool writeFile(
const std::string& outputFile,
193 const FileHeader& fh)
const;
196 template <
class BinaryPredicate>
202 long double epsilon = 1 / std::pow((
long double)10,precision);
203 std::list<FileData> toReturn;
205 typename std::list<FileData>::const_iterator dvIt = this->
dataVec.begin();
206 typename std::list<FileData>::const_iterator rdvIt = r.
dataVec.begin();
207 while(dvIt != this->
dataVec.end())
209 if (rdvIt == r.
dataVec.end() ||
214 toReturn.push_back(*dvIt);
218 *dvIt, this->headerList.front(),
233 template <
class Operation>
236 typename std::list<FileHeader>::iterator itr =
headerList.begin();
260 typename std::list<FileHeader>::const_iterator
beginHeader()
const;
265 typename std::list<FileHeader>::const_iterator
endHeader()
const;
270 typename std::list<FileHeader>::iterator
beginHeader();
275 typename std::list<FileHeader>::iterator
endHeader();
310 inline void chl(
const std::string& req)
312 gnsstk::InvalidRequest exc(
"Header list is empty attempting to"
313 " satisfy "+req+
" request.");
326 template <
class FileStream,
class FileData,
class FileHeader>
329 const FileHeader& fh)
const
332 std::string::size_type
pos = outputFile.rfind(
'/');
334 if (
pos != std::string::npos)
337 FileStream stream(outputFile.c_str(), std::ios::out|std::ios::trunc);
338 stream.exceptions(std::ios::failbit);
342 typename std::list<FileData>::const_iterator index;
343 for(index = this->dataVec.begin(); index != this->dataVec.end(); index++)
348 template <
class FileStream,
class FileData,
class FileHeader>
349 typename std::list<FileHeader>::const_iterator
353 try { chl(
"beginHeader"); }
354 catch(gnsstk::InvalidRequest exc)
356 return headerList.begin();
359 template <
class FileStream,
class FileData,
class FileHeader>
360 typename std::list<FileHeader>::const_iterator
364 try { chl(
"endHeader"); }
365 catch(gnsstk::InvalidRequest exc)
367 return headerList.end();
370 template <
class FileStream,
class FileData,
class FileHeader>
371 typename std::list<FileHeader>::iterator
374 try { chl(
"beginHeader"); }
375 catch(gnsstk::InvalidRequest exc)
377 return headerList.begin();
381 template <
class FileStream,
class FileData,
class FileHeader>
382 typename std::list<FileHeader>::iterator
385 try { chl(
"endHeader"); }
386 catch(gnsstk::InvalidRequest exc)
388 return headerList.end();
391 template <
class FileStream,
class FileData,
class FileHeader>
395 try { chl(
"frontHeader"); }
396 catch(gnsstk::InvalidRequest exc)
398 return headerList.front();
402 template <
class FileStream,
class FileData,
class FileHeader>
407 try { chl(
"frontHeader"); }
408 catch(gnsstk::InvalidRequest exc)
410 return headerList.front();
414 template <
class FileStream,
class FileData,
class FileHeader>
418 try { chl(
"backHeader"); }
419 catch(gnsstk::InvalidRequest exc)
421 return headerList.back();
425 template <
class FileStream,
class FileData,
class FileHeader>
430 try { chl(
"backHeader"); }
431 catch(gnsstk::InvalidRequest exc)
433 return headerList.back();
436 template <
class FileStream,
class FileData,
class FileHeader>
442 std::list<std::string> listOfFiles =
446 for (
const auto& i : listOfFiles)
448 FileStream s(i.c_str());
452 s.exceptions(std::ios::failbit);
456 headerList.push_back(
header);
463 #endif //GNSSTK_FILEFILTERFRAMEWITHHEADER_HPP