4jcraft/Minecraft.World/IO/Streams/InputStreamReader.cpp
2026-03-13 17:06:56 -05:00

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;
}