|  | /* | 
|  | ********************************************************************** | 
|  | * 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 |