00001 /* 00002 * Copyright (c) 2004 CSIRO ICT Centre 00003 * 00004 * $Id: SplitFileReader.h 587 2004-12-03 15:06:33Z nch $ 00005 */ 00006 00007 /* 00008 * Reads objects from a collection of files. 00009 * 00010 * The file names are provided as a vector of Strings 00011 * and each file is opened in turn. 00012 * 00013 * Assumes the files are in order of increasing declination 00014 * within and BETWEEN subsequent files. 00015 */ 00016 00017 #ifndef SPLITFILEREADER_DEFINED 00018 #define SPLITFILEREADER_DEFINED 00019 00020 #include <stdio.h> 00021 #include "String.h" 00022 #include <vector> 00023 00024 #include "FileReader.h" 00025 00026 class FileObjectReader; 00027 00028 00029 class SplitFileReader : public FileReader 00030 { 00031 public: 00032 SplitFileReader(FileObjectReader * obj, 00033 std::vector<String> const & fileNames, 00034 bool areLargeFiles=false); 00035 virtual ~SplitFileReader(); 00036 virtual void open(); 00037 virtual void reopen(); 00038 virtual Object * read(); 00039 00040 protected: 00041 std::vector<String> m_fileNames; 00042 unsigned int m_fileNum; 00043 bool m_finished; 00044 00045 private: 00046 SplitFileReader(); 00047 SplitFileReader(SplitFileReader const &); 00048 SplitFileReader & operator=(SplitFileReader const &); 00049 }; 00050 00051 #endif // ifndef SPLITFILEREADER_DEFINED