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