31 __closeDestroy =
false;
35 __begin = __end =
NULL;
46 __closeDestroy =
true;
50 __begin = __end =
NULL;
54BufferedInputStream::~BufferedInputStream()
70void BufferedInputStream::close()
79 __begin = __end =
NULL;
83 InputStream* reader = __input;
92 catch (Exception* cause)
102size_t BufferedInputStream::read(
void* _buf,
size_t _n)
113 if (*__begin ==
'\r')
115 if (*__begin ==
'\n')
124 size_t nCopy =
__MIN(__end - __begin, _n);
125 memcpy(_buf, __begin, nCopy *
sizeof(
char));
133 size_t nRead = __input->read((
char*)_buf +
n, _n);
143bool BufferedInputStream::readLine(ByteString&
_r)
148 ByteStringBuilder sb((
size_t) 0);
149 bool assigned =
false;
154 if (*__begin ==
'\r')
156 if (*__begin ==
'\n')
160 if (__begin < __end) {
161 for (
const char* cur = __begin; cur < __end; cur++) {
162 if (*cur ==
'\r' || *cur ==
'\n') {
164 sb.assign(__begin, cur - __begin);
171 sb.assign(__begin, __end - __begin);
177 __buf = (
char*)malloc(__bufSize *
sizeof(
char));
179 throw new IOException(className(), IOException::NOMEM);
185 while ((nRead = __input->read(__buf, __bufSize)) > 0) {
187 __end = __buf + nRead;
188 for (
const char* cur = __begin; cur < __end; cur++) {
189 if (*cur ==
'\r' || *cur ==
'\n') {
192 sb.append(__begin, cur - __begin);
194 sb.assign(__begin, cur - __begin);
205 sb.append(__begin, __end - __begin);
207 sb.assign(__begin, __end - __begin);
214 _r = sb.toByteString();
#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)