aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/io/Reader.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/io/Reader.java')
-rw-r--r--libjava/java/io/Reader.java87
1 files changed, 87 insertions, 0 deletions
diff --git a/libjava/java/io/Reader.java b/libjava/java/io/Reader.java
new file mode 100644
index 0000000..b547358
--- /dev/null
+++ b/libjava/java/io/Reader.java
@@ -0,0 +1,87 @@
+/* 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 <bothner@cygnus.com>
+ * @date April 21, 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.
+ */
+
+public abstract class Reader
+{
+ protected Object lock;
+
+ protected Reader()
+ {
+ this.lock = this;
+ }
+
+ protected Reader(Object lock)
+ {
+ this.lock = lock;
+ }
+
+ abstract public int read(char buf[], int offset, int count)
+ throws IOException;
+
+ public int read(char buf[]) throws IOException
+ {
+ return read(buf, 0, buf.length);
+ }
+
+ public int read() throws IOException
+ {
+ char[] buf = new char[1];
+ int count = read(buf, 0, 1);
+ return count > 0 ? buf[0] : -1;
+ }
+
+ abstract public void close() throws IOException;
+
+ public boolean markSupported()
+ {
+ return false;
+ }
+
+ public void mark(int readLimit) throws IOException
+ {
+ throw new IOException("mark not supported");
+ }
+
+ public void reset() throws IOException
+ {
+ throw new IOException("reset not supported");
+ }
+
+ public boolean ready() throws IOException
+ {
+ return false;
+ }
+
+ public long skip(long count) throws IOException
+ {
+ if (count <= 0)
+ return 0;
+ int bsize = count > 1024 ? 1024 : (int) count;
+ char[] buffer = new char[bsize];
+ long todo = count;
+ while (todo > 0)
+ {
+ int skipped = read(buffer, 0, bsize > todo ? (int) todo : bsize);
+ if (skipped <= 0)
+ break;
+ todo -= skipped;
+ }
+ return count - todo;
+ }
+}