/* Copyright (C) 1998, 1999 Cygnus Solutions This file is part of libgcj. This software is copyrighted work licensed under the terms of the Libgcj License. Please consult the file "LIBGCJ_LICENSE" for details. */ package java.io; /** * @author Per Bothner * @date April 17, 1998. */ /* Written using "Java Class Libraries", 2nd edition, plus online * API docs for JDK 1.2 beta from http://www.javasoft.com. * Status: Believed complete and correct. * However, should use native methods for conversion. */ public class PrintWriter extends Writer { private boolean autoflush; private boolean error; Writer out; public PrintWriter(Writer wr) { super(wr); this.out = wr; } public PrintWriter(Writer wr, boolean autoflush) { super(wr); this.out = wr; this.autoflush = autoflush; } public PrintWriter(OutputStream out) { super(); this.out = new OutputStreamWriter(out); this.lock = this.out; } public PrintWriter(OutputStream out, boolean autoflush) { this(out); this.autoflush = autoflush; } protected void setError() { error = true; } public boolean checkError() { flush(); return error; } public void flush() { try { out.flush(); } catch (IOException ex) { error = true; } } public void close() { try { out.close(); } catch (IOException ex) { error = true; } } public void print(String str) { try { out.write(str == null ? "null" : str); } catch (IOException ex) { error = true; } } public void print(char ch) { write((int) ch); } public void print(char[] charArray) { write(charArray, 0, charArray.length); } public void print(boolean bool) { print(bool ? "true" : "false"); } public void print(int inum) { print(Integer.toString(inum)); } public void print(long lnum) { print(Long.toString(lnum)); } public void print(float fnum) { print(Float.toString(fnum)); } public void print(double dnum) { print(Double.toString(dnum)); } public void print(Object obj) { print(obj == null ? "null" : obj.toString()); } private static final char[] line_separator = System.getProperty("line.separator").toCharArray(); public void println() { synchronized (lock) { printlnUnsynchronized(); } } private void printlnUnsynchronized() { try { write(line_separator, 0, line_separator.length); if (autoflush) out.flush(); } catch (IOException ex) { error = true; } } public void println(boolean bool) { synchronized (lock) { print(bool); printlnUnsynchronized(); } } public void println(int inum) { synchronized (lock) { print(inum); printlnUnsynchronized(); } } public void println(long lnum) { synchronized (lock) { print(lnum); printlnUnsynchronized(); } } public void println(float fnum) { synchronized (lock) { print(fnum); printlnUnsynchronized(); } } public void println(double dnum) { synchronized (lock) { print(dnum); printlnUnsynchronized(); } } public void println(Object obj) { synchronized (lock) { print(obj); printlnUnsynchronized(); } } public void println(String str) { synchronized (lock) { print(str); printlnUnsynchronized(); } } public void println(char ch) { synchronized (lock) { print(ch); printlnUnsynchronized(); } } public void println(char[] charArray) { synchronized (lock) { print(charArray); printlnUnsynchronized(); } } public void write(int ch) { try { out.write(ch); } catch (IOException ex) { error = true; } } public void write(char[] charArray, int offset, int count) { try { out.write(charArray, offset, count); } catch (IOException ex) { error = true; } } public void write(String str, int offset, int count) { try { out.write(str, offset, count); } catch (IOException ex) { error = true; } } public void write(char[] charArray) { write(charArray, 0, charArray.length); } public void write(String str) { write(str, 0, str.length()); } }