aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2011-06-17 10:40:47 -0700
committerShawn O. Pearce <sop@google.com>2011-06-17 12:40:28 -0700
commitaadaf842c27da6ba948a48a0b76fb3e6aeb47dfe (patch)
tree86f96b56c578b707b7035b93909fdbaa6f3c588e
parent82df66f59d071d963c2e15a1c3a0798ca43cfce2 (diff)
downloadprolog-cafe-aadaf842c27da6ba948a48a0b76fb3e6aeb47dfe.tar.gz
Make the disabled user IO streams constants
These don't change, ever.
-rw-r--r--src/lang/Prolog.java53
1 files changed, 28 insertions, 25 deletions
diff --git a/src/lang/Prolog.java b/src/lang/Prolog.java
index cccb2f8..222e37a 100644
--- a/src/lang/Prolog.java
+++ b/src/lang/Prolog.java
@@ -125,6 +125,32 @@ public final class Prolog {
static final SymbolTerm SYM_USEROUTPUT = SymbolTerm.intern("user_output");
static final SymbolTerm SYM_USERERROR = SymbolTerm.intern("user_error");
+ private static final PrintWriter NO_OUTPUT = new PrintWriter(new Writer() {
+ @Override
+ public void write(char[] cbuf, int off, int len) throws IOException {
+ throw new IOException("Prolog.Feature.IO disabled");
+ }
+
+ @Override
+ public void flush() throws IOException {
+ }
+
+ @Override
+ public void close() throws IOException {
+ }
+ });
+
+ private static final PushbackReader NO_INPUT = new PushbackReader(new Reader() {
+ @Override
+ public int read(char[] cbuf, int off, int len) throws IOException {
+ return -1;
+ }
+
+ @Override
+ public void close() throws IOException {
+ }
+ });
+
public static enum Feature {
/** Enable the {@code java_*} predicates, supporting reflection in Prolog. */
JAVA_REFLECTION,
@@ -194,31 +220,8 @@ public final class Prolog {
streamManager.put(new JavaObjectTerm(userError),
makeStreamProperty(SYM_APPEND, SYM_OUTPUT, SYM_USERERROR, SYM_TEXT));
} else {
- userInput = new PushbackReader(new Reader() {
- @Override
- public int read(char[] cbuf, int off, int len) throws IOException {
- return -1;
- }
-
- @Override
- public void close() throws IOException {
- }
- });
-
- userOutput = new PrintWriter(new Writer() {
- @Override
- public void write(char[] cbuf, int off, int len) throws IOException {
- throw new IOException("Prolog.Feature.IO disabled");
- }
-
- @Override
- public void flush() throws IOException {
- }
-
- @Override
- public void close() throws IOException {
- }
- });
+ userInput = NO_INPUT;
+ userOutput = NO_OUTPUT;
userError = userOutput;
}
}