This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
Re: Patch: java.io.PrintStream
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Am Donnerstag, 19. Juni 2003 15:26 schrieb Mark Wielaard:
> Hi,
>
> On Tue, 2003-06-17 at 17:12, Michael Koch wrote:
>
> + * java/io/PrintStream.java
> + (lineSeparator): New static member variable.
>
> BufferedWriter always requests System.getProperty("line.separator")
> when needed. But since PrintWriter also already has such a static
> field so I guess that caching this value is OK. If so, then maybe
> BufferedWriter, PrintWriter and PrintStream could share a package
> private static field to store this value?
>
> + (print): Call print(String) instead of direct print
> method of the + Writer Object.
> + (println): Call println(String) instead of direct
> println method of the + Writer Object.
>
> This seems to be slow in the case when you already have a char[].
> In that case you first create a new String object (that makes a
> copy of the whole char[]) and then you finally end up in
> Writer.write(String) that (see comment) turns the String into a new
> copy of the char array. That seems a bit much overhead.
I've revise the patch. Here is the second revision. The subclass
testcase still does not work as expected.
Michael
- --
Homepage: http://www.worldforge.org/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)
iD8DBQE+8cfyWSOgCCdjSDsRAs48AJ9/9mhUEO6WbVX+1cxroGOyONoqoACfdE3T
UONakYGSsu426GMcLOe1NKI=
=fbW1
-----END PGP SIGNATURE-----
Index: ChangeLog
===================================================================
RCS file: /cvs/gcc/gcc/libjava/ChangeLog,v
retrieving revision 1.1965
diff -u -b -B -r1.1965 ChangeLog
--- ChangeLog 19 Jun 2003 10:48:40 -0000 1.1965
+++ ChangeLog 19 Jun 2003 14:22:13 -0000
@@ -1,5 +1,16 @@
2003-06-19 Michael Koch <konqueror@gmx.de>
+ * java/io/PrintStream.java
+ (checkError): Call flush() instead of direct flushing of the Writer
+ object.
+ (print): Call print(String) instead of direct print method of the
+ Writer Object.
+ (println): Call println(String) instead of direct println method of the
+ Writer Object.
+ (write): Simplified.
+
+2003-06-19 Michael Koch <konqueror@gmx.de>
+
* java/awt/Font.java
javax/swing/UIManager.java
javax/swing/border/AbstractBorder.java
Index: java/io/PrintStream.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/io/PrintStream.java,v
retrieving revision 1.20
diff -u -b -B -r1.20 PrintStream.java
--- java/io/PrintStream.java 12 Jun 2003 03:13:14 -0000 1.20
+++ java/io/PrintStream.java 19 Jun 2003 14:22:13 -0000
@@ -58,17 +58,6 @@
*/
public class PrintStream extends FilterOutputStream
{
- /*
- * This class could easily have been extended to support character
- * encodings. In fact, PrintWriter is basically a superset of this
- * except for the write() methods. So let's do something tricky
- * here and just redirect calls in this class to a hidden
- * PrintWriter instance. All the functionality goes there since
- * that is the 'real' class. The big win of doing this way is that
- * the default character encoding is done automagicially by the
- * PrintWriter tree!
- */
-
/**
* This boolean indicates whether or not an error has ever occurred
* on this stream.
@@ -155,7 +144,7 @@
public boolean checkError ()
{
if (!closed)
- pw.flush ();
+ flush ();
return error_occurred | pw.checkError ();
}
@@ -196,7 +185,7 @@
*/
public void print (boolean bool)
{
- pw.print (bool);
+ print (String.valueOf (bool));
}
/**
@@ -207,7 +196,7 @@
*/
public void print (int inum)
{
- pw.print (inum);
+ print (String.valueOf (inum));
}
/**
@@ -218,7 +207,7 @@
*/
public void print (long lnum)
{
- pw.print (lnum);
+ print (String.valueOf (lnum));
}
/**
@@ -229,7 +218,7 @@
*/
public void print (float fnum)
{
- pw.print (fnum);
+ print (String.valueOf (fnum));
}
/**
@@ -240,7 +229,7 @@
*/
public void print (double dnum)
{
- pw.print (dnum);
+ print (String.valueOf (dnum));
}
/**
@@ -281,12 +270,7 @@
*/
public void print (char ch)
{
- pw.print (ch);
-
- if (auto_flush)
- if ((ch == '\r')
- || (ch == '\n'))
- flush ();
+ print (String.valueOf (ch));
}
/**
@@ -298,15 +282,6 @@
public void print (char[] charArray)
{
pw.print (charArray);
-
- if (auto_flush)
- for (int i = 0; i < charArray.length; i++)
- if ((charArray [i] == '\r')
- || (charArray [i] == '\n'))
- {
- flush ();
- break;
- }
}
/**
@@ -316,7 +291,7 @@
*/
public void println ()
{
- pw.println ();
+ pw.println();
}
/**
@@ -330,7 +305,7 @@
*/
public void println (boolean bool)
{
- pw.println (bool);
+ println (String.valueOf (bool));
}
/**
@@ -343,7 +318,7 @@
*/
public void println (int inum)
{
- pw.println (inum);
+ println (String.valueOf (inum));
}
/**
@@ -356,7 +331,7 @@
*/
public void println (long lnum)
{
- pw.println (lnum);
+ println (String.valueOf (lnum));
}
/**
@@ -369,7 +344,7 @@
*/
public void println (float fnum)
{
- pw.println (fnum);
+ println (String.valueOf (fnum));
}
/**
@@ -382,7 +357,7 @@
*/
public void println (double dnum)
{
- pw.println (dnum);
+ println (String.valueOf (dnum));
}
/**
@@ -396,7 +371,7 @@
*/
public void println (Object obj)
{
- pw.println (obj);
+ println (String.valueOf (obj));
}
/**
@@ -422,7 +397,7 @@
*/
public void println (char ch)
{
- pw.println (ch);
+ println (String.valueOf (ch));
}
/**
@@ -447,21 +422,9 @@
*/
public void write (int oneByte)
{
- // Sigh, we actually have to implement this method. Flush first so that
- // things get written in the right order.
- flush ();
-
- try
- {
- out.write (oneByte);
-
- if (auto_flush && oneByte == '\n')
- flush ();
- }
- catch (IOException e)
- {
- setError ();
- }
+ byte[] data = new byte [1];
+ data [0] = (byte) (oneByte & 0xff);
+ write (data, 0, 1);
}
/**