| /* |
| ********************************************************************** |
| * Copyright (c) 2004-2011, International Business Machines |
| * Corporation and others. All Rights Reserved. |
| ********************************************************************** |
| * Author: Alan Liu |
| * Created: March 19 2004 |
| * Since: ICU 3.0 |
| ********************************************************************** |
| */ |
| #ifndef __ICU_INTLTEST_TEXTFILE__ |
| #define __ICU_INTLTEST_TEXTFILE__ |
| |
| #include "intltest.h" |
| #include "filestrm.h" |
| |
| /** |
| * This class implements access to a text data file located in the |
| * icu/source/test/testdata/ directory. |
| */ |
| class TextFile { |
| public: |
| /** |
| * Open a file with the given name, in the given encoding, in the |
| * ICU testdata directory. See textfile.cpp to determine if the |
| * 'name' and 'encoding' parameters are aliased or copied. |
| */ |
| TextFile(const char* name, const char* encoding, UErrorCode& ec); |
| |
| virtual ~TextFile(); |
| |
| /** |
| * Read a line terminated by ^J or ^M or ^M^J, and convert it from |
| * this file's encoding to Unicode. The EOL character(s) are not |
| * included in 'line'. |
| * @return TRUE if a line was read, or FALSE if the EOF |
| * was reached or an error occurred |
| */ |
| UBool readLine(UnicodeString& line, UErrorCode& ec); |
| |
| /** |
| * Read a line, ignoring blank lines and lines that start with |
| * '#'. Trim leading white space. |
| * @param trim if TRUE then remove leading Pattern_White_Space |
| * @return TRUE if a line was read, or FALSE if the EOF |
| * was reached or an error occurred |
| */ |
| UBool readLineSkippingComments(UnicodeString& line, UErrorCode& ec, |
| UBool trim = FALSE); |
| |
| /** |
| * Return the line number of the last line returned by readLine(). |
| */ |
| inline int32_t getLineNumber() const; |
| |
| private: |
| UBool ensureCapacity(int32_t capacity); |
| UBool setBuffer(int32_t index, char c, UErrorCode& ec); |
| |
| FileStream* file; |
| char* name; |
| char* encoding; |
| char* buffer; |
| int32_t capacity; |
| int32_t lineNo; |
| }; |
| |
| inline int32_t TextFile::getLineNumber() const { |
| return lineNo; |
| } |
| |
| #endif |