// -*- Mode: Java; indent-tabs-mode: t; tab-width: 4 -*-
// ---------------------------------------------------------------------------
// Multi-Phasic Applications: SquirrelJME
// Copyright (C) Stephanie Gawroriski <xer@multiphasicapps.net>
// Copyright (C) Multi-Phasic Applications <multiphasicapps.net>
// ---------------------------------------------------------------------------
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------
package java.io;
import cc.squirreljme.runtime.cldc.annotation.ImplementationNote;
/**
* This class buffers characters into an internal buffer so that they can be
* written in bulk to the underlying stream. This increases performance and
* is a more optimal operation because it writes multiple characters at once
* instead of writing them one at a time.
*
* The default buffer size in SquirrelJME is very small due to potential memory
* limitations.
*
* @since 2018/09/18
*/
@ImplementationNote("The buffer size is undefined in the class library, " +
"therefor due to potential memory limitations the buffer size should " +
"be kept small.")
public class BufferedWriter
extends Writer
{
/**
* This buffer size is kept small by default since having a large buffer
* for a memory contrained system is not really that important and will
* pretty much only be used by console output. So as such to prevent
* wasting memory with streams that will not likely be used for most
* programs (MIDlets) or they will be outputting characters anyway.
*
* It should be noted that Java SE uses a buffer size of 8KiB.
*/
private static final int _DEFAULT_BUFFER_SIZE =
128;
/** The writer to buffer at. */
private final Writer _out;
/**
* Initializes the buffered writer to the target writer using the default
* buffer size.
*
* @param __out The writer to buffer to.
* @throws NullPointerException On null arguments.
* @since 2018/09/18
*/
public BufferedWriter(Writer __out)
throws NullPointerException
{
this(__out, BufferedWriter._DEFAULT_BUFFER_SIZE);
}
/**
* Initializes the buffered writer to the target writer using the given
* buffer size.
*
* @param __out The writer to buffer to.
* @param __bs The number of characters to store in the buffer before
* flushing.
* @throws IllegalArgumentException If the buffer size is less than or
* equal to zero.
* @throws NullPointerException On null arguments.
* @since 2018/09/18
*/
public BufferedWriter(Writer __out, int __bs)
throws IllegalArgumentException, NullPointerException
{
if (__out == null)
throw new NullPointerException("NARG");
// {@squirreljme.error ZZ0h Requested a buffer size that is zero or
// negative. (The requested buffer size)}
if (__bs <= 0)
throw new IllegalArgumentException(String.format("ZZ0h %d", __bs));
throw new todo.TODO();
}
/**
* Closes the stream, it is flushed first.
*
* @throws IOException On write errors.
* @since 2018/09/18
*/
@Override
public void close()
throws IOException
{
throw new todo.TODO();
}
/**
* {@inheritDoc}
* @since 2018/09/18
*/
@Override
public void flush()
throws IOException
{
throw new todo.TODO();
}
/**
* Writes the value of {@code System.getProperty("line.separator")} to the
* stream.
*
* @throws IOException On write errors.
* @since 2018/09/18
*/
public void newLine()
throws IOException
{
throw new todo.TODO();
}
/**
* {@inheritDoc}
* @since 2018/09/18
*/
@Override
public void write(int __c)
throws IOException
{
if (false)
throw new IOException();
throw new todo.TODO();
}
/**
* This normally stores characters into the internal buffer, however if
* the length of the output is at least the size of the buffer then it
* will flush the buffer then write all the input characters.
*
* {@inheritDoc}
* @since 2018/09/18
*/
@Override
public void write(char[] __b, int __o, int __l)
throws IOException
{
if (false)
throw new IOException();
throw new todo.TODO();
}
/**
* {@inheritDoc}
* @since 2018/09/18
*/
@Override
public void write(String __s, int __o, int __l)
throws IOException
{
if (false)
throw new IOException();
throw new todo.TODO();
}
}