OLD | NEW |
(Empty) | |
| 1 /* |
| 2 ********************************************************************** |
| 3 * Copyright (c) 2004-2006, International Business Machines |
| 4 * Corporation and others. All Rights Reserved. |
| 5 ********************************************************************** |
| 6 * Author: Alan Liu |
| 7 * Created: March 19 2004 |
| 8 * Since: ICU 3.0 |
| 9 ********************************************************************** |
| 10 */ |
| 11 #ifndef __ICU_INTLTEST_TEXTFILE__ |
| 12 #define __ICU_INTLTEST_TEXTFILE__ |
| 13 |
| 14 #include "intltest.h" |
| 15 #include "filestrm.h" |
| 16 |
| 17 /** |
| 18 * This class implements access to a text data file located in the |
| 19 * icu/source/test/testdata/ directory. |
| 20 */ |
| 21 class TextFile { |
| 22 public: |
| 23 /** |
| 24 * Open a file with the given name, in the given encoding, in the |
| 25 * ICU testdata directory. See textfile.cpp to determine if the |
| 26 * 'name' and 'encoding' parameters are aliased or copied. |
| 27 */ |
| 28 TextFile(const char* name, const char* encoding, UErrorCode& ec); |
| 29 |
| 30 virtual ~TextFile(); |
| 31 |
| 32 /** |
| 33 * Read a line terminated by ^J or ^M or ^M^J, and convert it from |
| 34 * this file's encoding to Unicode. The EOL character(s) are not |
| 35 * included in 'line'. |
| 36 * @return TRUE if a line was read, or FALSE if the EOF |
| 37 * was reached or an error occurred |
| 38 */ |
| 39 UBool readLine(UnicodeString& line, UErrorCode& ec); |
| 40 |
| 41 /** |
| 42 * Read a line, ignoring blank lines and lines that start with |
| 43 * '#'. Trim leading white space. |
| 44 * @param trim if TRUE then remove leading rule white space |
| 45 * @return TRUE if a line was read, or FALSE if the EOF |
| 46 * was reached or an error occurred |
| 47 */ |
| 48 UBool readLineSkippingComments(UnicodeString& line, UErrorCode& ec, |
| 49 UBool trim = FALSE); |
| 50 |
| 51 /** |
| 52 * Return the line number of the last line returned by readLine(). |
| 53 */ |
| 54 inline int32_t getLineNumber() const; |
| 55 |
| 56 private: |
| 57 UBool ensureCapacity(int32_t capacity); |
| 58 UBool setBuffer(int32_t index, char c, UErrorCode& ec); |
| 59 |
| 60 FileStream* file; |
| 61 char* name; |
| 62 char* encoding; |
| 63 char* buffer; |
| 64 int32_t capacity; |
| 65 int32_t lineNo; |
| 66 }; |
| 67 |
| 68 inline int32_t TextFile::getLineNumber() const { |
| 69 return lineNo; |
| 70 } |
| 71 |
| 72 #endif |
OLD | NEW |