00001 // Copyright (C) 2001, Compaq Computer Corporation 00002 // 00003 // This file is part of Vesta. 00004 // 00005 // Vesta is free software; you can redistribute it and/or 00006 // modify it under the terms of the GNU Lesser General Public 00007 // License as published by the Free Software Foundation; either 00008 // version 2.1 of the License, or (at your option) any later version. 00009 // 00010 // Vesta is distributed in the hope that it will be useful, 00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 // Lesser General Public License for more details. 00014 // 00015 // You should have received a copy of the GNU Lesser General Public 00016 // License along with Vesta; if not, write to the Free Software 00017 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00018 00019 // Created on Thu Aug 21 22:45:34 PDT 1997 by heydon 00020 // Last modified on Mon Aug 9 18:03:02 EDT 2004 by ken@xorian.net 00021 // modified on Thu Aug 21 23:35:29 PDT 1997 by heydon 00022 00023 // HexReader.H -- class for reading files containing ShortIds, one per line 00024 00025 #ifndef _HEX_READER_H 00026 #define _HEX_READER_H 00027 00028 #include <Basics.H> 00029 #include <FS.H> 00030 #include <SourceOrDerived.H> 00031 00032 class HexReader { 00033 public: 00034 // exception class 00035 class BadValue { 00036 public: 00037 int lineNum; 00038 Text str; 00039 BadValue(int lineNum, char *str) throw () 00040 : lineNum(lineNum), str(str) { /*SKIP*/ } 00041 }; 00042 00043 HexReader(char *path) throw (FS::DoesNotExist, FS::Failure); 00044 /* Open a new HexReader on the file named by "path". */ 00045 00046 ~HexReader() throw (FS::Failure); 00047 /* Close this HexReader. */ 00048 00049 ShortId Next() throw (FS::Failure, BadValue); 00050 /* Read and return the next hex value in the file. A return value of 0 00051 indicates end-of-file. Throw "BadValue" if the line is not a hex 00052 value. */ 00053 private: 00054 std::ifstream ifs; 00055 int lineNum; 00056 }; 00057 00058 #endif // _HEX_READER_H