mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-24 05:03:40 +00:00
47 lines
1.6 KiB
C++
47 lines
1.6 KiB
C++
#include "../../Platform/stdafx.h"
|
|
|
|
#include "InputStream.h"
|
|
#include "DataInputStream.h"
|
|
#include "InputStreamReader.h"
|
|
|
|
// Creates an InputStreamReader that uses the default charset.
|
|
// Parameters:
|
|
// in - An InputStream
|
|
InputStreamReader::InputStreamReader(InputStream* in)
|
|
: stream(new DataInputStream(in)) {}
|
|
|
|
// Closes the stream and releases any system resources associated with it.
|
|
// Once the stream has been closed, further read(), ready(), mark(), reset(), or
|
|
// skip() invocations will throw an IOException. Closing a previously closed
|
|
// stream has no effect.
|
|
void InputStreamReader::close() { stream->close(); }
|
|
|
|
// Reads a single character.
|
|
// Returns:
|
|
// The character read, or -1 if the end of the stream has been reached
|
|
int InputStreamReader::read() { return stream->readUTFChar(); }
|
|
|
|
// Reads characters into a portion of an array.
|
|
// Parameters:
|
|
// cbuf - Destination buffer
|
|
// offset - Offset at which to start storing characters
|
|
// length - Maximum number of characters to read
|
|
// Returns:
|
|
// The number of characters read, or -1 if the end of the stream has been
|
|
// reached
|
|
int InputStreamReader::read(wchar_t cbuf[], unsigned int offset,
|
|
unsigned int length) {
|
|
unsigned int charsRead = 0;
|
|
for (unsigned int i = offset; i < offset + length; i++) {
|
|
wchar_t value = (wchar_t)stream->readUTFChar();
|
|
if (value != -1) {
|
|
cbuf[i] = value;
|
|
charsRead++;
|
|
}
|
|
// TODO 4J Stu - The read might throw an exception? In which case we
|
|
// should return -1
|
|
else
|
|
break;
|
|
}
|
|
return charsRead;
|
|
} |