Index: source/test/intltest/textfile.cpp |
diff --git a/source/test/intltest/textfile.cpp b/source/test/intltest/textfile.cpp |
deleted file mode 100644 |
index e55169dc56dc7c95aa4fa2b28c56878240d102ee..0000000000000000000000000000000000000000 |
--- a/source/test/intltest/textfile.cpp |
+++ /dev/null |
@@ -1,180 +0,0 @@ |
-/* |
-********************************************************************** |
-* Copyright (c) 2004,2011 International Business Machines |
-* Corporation and others. All Rights Reserved. |
-********************************************************************** |
-* Author: Alan Liu |
-* Created: March 19 2004 |
-* Since: ICU 3.0 |
-********************************************************************** |
-*/ |
-#include "textfile.h" |
-#include "cmemory.h" |
-#include "cstring.h" |
-#include "intltest.h" |
-#include "util.h" |
- |
-// If the symbol CCP is defined, then the 'name' and 'encoding' |
-// constructor parameters are copied. Otherwise they are aliased. |
-// #define CCP |
- |
-TextFile::TextFile(const char* _name, const char* _encoding, UErrorCode& ec) : |
- file(0), |
- name(0), encoding(0), |
- buffer(0), |
- capacity(0), |
- lineNo(0) |
-{ |
- if (U_FAILURE(ec) || _name == 0 || _encoding == 0) { |
- if (U_SUCCESS(ec)) { |
- ec = U_ILLEGAL_ARGUMENT_ERROR; |
- } |
- return; |
- } |
- |
-#ifdef CCP |
- name = uprv_malloc(uprv_strlen(_name) + 1); |
- encoding = uprv_malloc(uprv_strlen(_encoding) + 1); |
- if (name == 0 || encoding == 0) { |
- ec = U_MEMORY_ALLOCATION_ERROR; |
- return; |
- } |
- uprv_strcpy(name, _name); |
- uprv_strcpy(encoding, _encoding); |
-#else |
- name = (char*) _name; |
- encoding = (char*) _encoding; |
-#endif |
- |
- const char* testDir = IntlTest::getSourceTestData(ec); |
- if (U_FAILURE(ec)) { |
- return; |
- } |
- if (!ensureCapacity((int32_t)(uprv_strlen(testDir) + uprv_strlen(name) + 1))) { |
- ec = U_MEMORY_ALLOCATION_ERROR; |
- return; |
- } |
- uprv_strcpy(buffer, testDir); |
- uprv_strcat(buffer, name); |
- |
- file = T_FileStream_open(buffer, "rb"); |
- if (file == 0) { |
- ec = U_ILLEGAL_ARGUMENT_ERROR; |
- return; |
- } |
-} |
- |
-TextFile::~TextFile() { |
- if (file != 0) T_FileStream_close(file); |
- if (buffer != 0) uprv_free(buffer); |
-#ifdef CCP |
- uprv_free(name); |
- uprv_free(encoding); |
-#endif |
-} |
- |
-UBool TextFile::readLine(UnicodeString& line, UErrorCode& ec) { |
- if (T_FileStream_eof(file)) { |
- return FALSE; |
- } |
- // Note: 'buffer' may change after ensureCapacity() is called, |
- // so don't use |
- // p=buffer; *p++=c; |
- // but rather |
- // i=; buffer[i++]=c; |
- int32_t n = 0; |
- for (;;) { |
- int c = T_FileStream_getc(file); // sic: int, not int32_t |
- if (c < 0 || c == 0xD || c == 0xA) { |
- // consume 0xA following 0xD |
- if (c == 0xD) { |
- c = T_FileStream_getc(file); |
- if (c != 0xA && c >= 0) { |
- T_FileStream_ungetc(c, file); |
- } |
- } |
- break; |
- } |
- if (!setBuffer(n++, c, ec)) return FALSE; |
- } |
- if (!setBuffer(n++, 0, ec)) return FALSE; |
- UnicodeString str(buffer, encoding); |
- // Remove BOM in first line, if present |
- if (lineNo == 0 && str[0] == 0xFEFF) { |
- str.remove(0, 1); |
- } |
- ++lineNo; |
- line = str.unescape(); |
- return TRUE; |
-} |
- |
-UBool TextFile::readLineSkippingComments(UnicodeString& line, UErrorCode& ec, |
- UBool trim) { |
- for (;;) { |
- if (!readLine(line, ec)) return FALSE; |
- // Skip over white space |
- int32_t pos = 0; |
- ICU_Utility::skipWhitespace(line, pos, TRUE); |
- // Ignore blank lines and comment lines |
- if (pos == line.length() || line.charAt(pos) == 0x23/*'#'*/) { |
- continue; |
- } |
- // Process line |
- if (trim) line.remove(0, pos); |
- return TRUE; |
- } |
-} |
- |
-/** |
- * Set buffer[index] to c, growing buffer if necessary. Return TRUE if |
- * successful. |
- */ |
-UBool TextFile::setBuffer(int32_t index, char c, UErrorCode& ec) { |
- if (capacity <= index) { |
- if (!ensureCapacity(index+1)) { |
- ec = U_MEMORY_ALLOCATION_ERROR; |
- return FALSE; |
- } |
- } |
- buffer[index] = c; |
- return TRUE; |
-} |
- |
-/** |
- * Make sure that 'buffer' has at least 'mincapacity' bytes. |
- * Return TRUE upon success. Upon return, 'buffer' may change |
- * value. In any case, previous contents are preserved. |
- */ |
- #define LOWEST_MIN_CAPACITY 64 |
-UBool TextFile::ensureCapacity(int32_t mincapacity) { |
- if (capacity >= mincapacity) { |
- return TRUE; |
- } |
- |
- // Grow by factor of 2 to prevent frequent allocation |
- // Note: 'capacity' may be 0 |
- int32_t i = (capacity < LOWEST_MIN_CAPACITY)? LOWEST_MIN_CAPACITY: capacity; |
- while (i < mincapacity) { |
- i <<= 1; |
- if (i < 0) { |
- i = 0x7FFFFFFF; |
- break; |
- } |
- } |
- mincapacity = i; |
- |
- // Simple realloc() no good; contents not preserved |
- // Note: 'buffer' may be 0 |
- char* newbuffer = (char*) uprv_malloc(mincapacity); |
- if (newbuffer == 0) { |
- return FALSE; |
- } |
- if (buffer != 0) { |
- uprv_strncpy(newbuffer, buffer, capacity); |
- uprv_free(buffer); |
- } |
- buffer = newbuffer; |
- capacity = mincapacity; |
- return TRUE; |
-} |
- |