31 __closeDestroy =
false;
35 __begin = __end =
NULL;
46 __closeDestroy =
true;
50 __begin = __end =
NULL;
54BufferedReader::~BufferedReader()
70void BufferedReader::close()
79 __begin = __end =
NULL;
83 Reader* reader = __reader;
92 catch (Exception* cause)
102size_t BufferedReader::read(
wchar_t* _buf,
size_t _n)
113 if (*__begin == L
'\r')
115 if (*__begin == L
'\n')
124 size_t nCopy =
__MIN(__end - __begin, _n);
125 memcpy(_buf, __begin, nCopy *
sizeof(
wchar_t));
133 size_t nRead = __reader->read(_buf +
n, _n);
143bool BufferedReader::readLine(String&
_r)
148 StringBuilder sb((
size_t) 0);
149 bool assigned =
false;
154 if (*__begin == L
'\r')
156 if (*__begin == L
'\n')
160 if (__begin < __end) {
161 for (
const wchar_t* cur = __begin; cur < __end; cur++) {
162 if (*cur == L
'\r' || *cur == L
'\n') {
164 sb.assign(__begin, cur - __begin);
171 sb.assign(__begin, __end - __begin);
177 __buf = (
wchar_t*)malloc(__bufSize *
sizeof(
wchar_t));
179 throw new IOException(className(), IOException::NOMEM);
185 while ((nRead = __reader->read(__buf, __bufSize)) > 0) {
187 __end = __buf + nRead;
188 for (
const wchar_t* cur = __begin; cur < __end; cur++) {
189 if (*cur == L
'\r' || *cur == L
'\n') {
192 sb.append(__begin, cur - __begin);
195 sb.assign(__begin, cur - __begin);
206 sb.append(__begin, __end - __begin);
208 sb.assign(__begin, __end - __begin);
#define __DCL_TRACE1(fmt, arg1)
#define __DCL_ASSERT_PARAM(expr)
#define __DCL_ASSERT(expr)
#define IMPLEMENT_CLASSINFO(class_name, base_class_name)
#define __DCL_ASSERT_HANDLE(expr)
void CharsetConvertException *size_t n
virtual String toString() const
virtual String toString() const
size_t __MIN(size_t x, size_t y)