You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
2.3 KiB
102 lines
2.3 KiB
#ifndef _DEV_TEXTFILE_H |
|
#define _DEV_TEXTFILE_H |
|
|
|
|
|
namespace dev |
|
{ |
|
|
|
|
|
/** |
|
* ASCII-7 text file parser. Doesnt throw exceptions. |
|
*/ |
|
class TextFile |
|
{ |
|
public: |
|
/** Error code. */ |
|
enum ErrorType |
|
{ |
|
/** No error. */ |
|
ERROR_NONE, |
|
/** File open failed. */ |
|
ERROR_OPEN, |
|
/** File reading failed. */ |
|
ERROR_READ, |
|
/** Syntax error. */ |
|
ERROR_PARSE |
|
}; |
|
|
|
/** Opens a file. */ |
|
explicit TextFile( const char* filename ); |
|
|
|
/// |
|
~TextFile(); |
|
|
|
/** |
|
* Reads a single character. |
|
* @return true if read ok. |
|
*/ |
|
bool readChar( char* ch ); |
|
|
|
/** |
|
* Peeks a single character. |
|
* @return true if peek ok. |
|
*/ |
|
bool peekChar( char* ch ); |
|
|
|
/** |
|
* Reads whitespace delimited string. |
|
* If the string doesnt fit to the buffer then |
|
* the rest of the string is skipped. Buffer |
|
* is always 0-terminated. |
|
* @param buf [out] Pointer to string buffer. |
|
* @param size String buffer size. Must be larger than 0. |
|
* @return false if end-of-file reached before any characters was read. |
|
*/ |
|
bool readString( char* buf, int size ); |
|
|
|
/** Skips the rest of the line. */ |
|
void skipLine(); |
|
|
|
/** Reads hex integer. Skips preceding whitespace. */ |
|
long readHex(); |
|
|
|
/** |
|
* Skips whitespace characters. |
|
* @return false if end-of-file reached. |
|
*/ |
|
bool skipWhitespace(); |
|
|
|
/** Returns true if end-of-file have been reached. */ |
|
bool eof() const; |
|
|
|
/** Returns error code or 0 (ERROR_NONE) if no error. */ |
|
ErrorType error() const; |
|
|
|
/** Returns line number of last successful read character. */ |
|
int line() const; |
|
|
|
private: |
|
class TextFileImpl; |
|
TextFileImpl* m_this; |
|
|
|
TextFile( const TextFile& ); |
|
TextFile& operator=( const TextFile& ); |
|
}; |
|
|
|
|
|
} // dev |
|
|
|
|
|
#endif // _DEV_TEXTFILE_H |
|
/* |
|
* Copyright (c) 2001 Jani Kajala |
|
* |
|
* Permission to use, copy, modify, distribute and sell this |
|
* software and its documentation for any purpose is hereby |
|
* granted without fee, provided that the above copyright notice |
|
* appear in all copies and that both that copyright notice and |
|
* this permission notice appear in supporting documentation. |
|
* Jani Kajala makes no representations about the suitability |
|
* of this software for any purpose. It is provided "as is" |
|
* without express or implied warranty. |
|
*/
|
|
|