74 lines
2.1 KiB
C
74 lines
2.1 KiB
C
|
/*
|
||
|
**********************************************************************
|
||
|
* Copyright (c) 2004, 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 "unicode/utypes.h"
|
||
|
#include "unicode/unistr.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 rule 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);
|
||
|
|
||
|
char* name;
|
||
|
char* encoding;
|
||
|
int32_t lineNo;
|
||
|
char* buffer;
|
||
|
int32_t capacity;
|
||
|
FileStream* file;
|
||
|
};
|
||
|
|
||
|
inline int32_t TextFile::getLineNumber() const {
|
||
|
return lineNo;
|
||
|
}
|
||
|
|
||
|
#endif
|