diff options
Diffstat (limited to 'Build/source/libs/icu/icu-50.1/test/intltest/textfile.h')
-rw-r--r-- | Build/source/libs/icu/icu-50.1/test/intltest/textfile.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-50.1/test/intltest/textfile.h b/Build/source/libs/icu/icu-50.1/test/intltest/textfile.h new file mode 100644 index 00000000000..e51119d4730 --- /dev/null +++ b/Build/source/libs/icu/icu-50.1/test/intltest/textfile.h @@ -0,0 +1,72 @@ +/* +********************************************************************** +* 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 |