00001 /* 00002 * Copyright (c) 2004 CSIRO ICT Centre 00003 * 00004 * $Id: FileReader.h 587 2004-12-03 15:06:33Z nch $ 00005 */ 00006 00007 /* 00008 * Reads objects from a file. 00009 * 00010 * The FileObjectReader is used to hide the details of the 00011 * object being read. This allows this same class to be used 00012 * to read different kinds of objects (Object, Datum, ...) from 00013 * different file types (ascii, binary, ...). 00014 * 00015 * The FileObjectReader is owned by this class and is deleted 00016 * by the destructor. 00017 */ 00018 00019 #ifndef FILEREADER_DEFINED 00020 #define FILEREADER_DEFINED 00021 00022 #include "FileObjectReader.h" 00023 #include "ObjectReader.h" 00024 00025 class Object; 00026 00027 00028 class FileReader : public ObjectReader 00029 { 00030 public: 00031 FileReader(FileObjectReader * obj, char const * name, bool isLarge=false); 00032 virtual ~FileReader(); 00033 00034 virtual void open(); 00035 virtual void reopen(); 00036 virtual void close(); 00037 virtual Object * read() { return obj->read(filePtr); }; 00038 00039 protected: 00040 FileObjectReader * obj; 00041 FILE * filePtr; 00042 char const * fileName; 00043 bool isLarge; 00044 00045 FileReader(FileObjectReader * obj, bool isLarge=false); 00046 00047 private: 00048 FileReader(); 00049 FileReader(FileReader const & other); 00050 FileReader & operator=(FileReader const &); 00051 }; 00052 00053 #endif // ifndef FILEREADER_DEFINED 00054