00001 /* 00002 * Copyright (c) 2004 CSIRO ICT Centre 00003 * 00004 * $Id: SplitMergePairFileReader.h 587 2004-12-03 15:06:33Z nch $ 00005 */ 00006 00007 /* 00008 * Reads objects from a collection of files, the same 00009 * as a SplitFileReader, except allows for overlaps in 00010 * declination order between adjacent files. Note only 00011 * between adjacent files. 00012 * 00013 * Specifically written to support the 2MASS collection 00014 * of files. 00015 */ 00016 00017 #ifndef SPLITMERGEPAIRFILEREADER_DEFINED 00018 #define SPLITMERGEPAIRFILEREADER_DEFINED 00019 00020 #include <stdio.h> 00021 #include "String.h" 00022 #include <vector> 00023 00024 #include "FileHeader.h" 00025 #include "SplitFileReader.h" 00026 00027 class Object; 00028 class FileObjectReader; 00029 00030 00031 class SplitMergePairFileReader : public SplitFileReader 00032 { 00033 public: 00034 SplitMergePairFileReader(FileObjectReader * obj, 00035 std::vector<String> const & fileNames, 00036 bool areLargeFiles=false); 00037 virtual ~SplitMergePairFileReader(); 00038 virtual void open(); 00039 virtual void reopen(); 00040 virtual Object * read(); 00041 00042 protected: 00043 FILE * m_next_fp; 00044 Object * m_current; 00045 Object * m_next; 00046 char const * m_nextFileName; 00047 00048 private: 00049 SplitMergePairFileReader(); 00050 SplitMergePairFileReader(SplitMergePairFileReader const &); 00051 SplitMergePairFileReader & operator=(SplitMergePairFileReader const &); 00052 00053 void readyNext(); 00054 void clear(); 00055 }; 00056 00057 #endif // ifndef SPLITMERGEPAIRFILEREADER_DEFINED