Skip to content
Snippets Groups Projects
Commit eda9c3fd authored by Florian Angerer's avatar Florian Angerer
Browse files

Made ConsoleHandler abstract.

parent 1fa328b3
No related branches found
No related tags found
No related merge requests found
Showing with 29 additions and 78 deletions
......@@ -27,7 +27,6 @@ import com.oracle.truffle.r.runtime.RInterfaceCallbacks;
import com.oracle.truffle.r.runtime.RStartParams;
import com.oracle.truffle.r.runtime.context.ConsoleHandler;
import com.oracle.truffle.r.runtime.context.DefaultConsoleHandler;
import com.oracle.truffle.r.runtime.context.RContext;
import com.oracle.truffle.r.runtime.ffi.REmbedRFFI;
import com.oracle.truffle.r.runtime.ffi.RFFIFactory;
......@@ -39,7 +38,7 @@ import com.oracle.truffle.r.runtime.ffi.RFFIFactory;
* have be lazy about that.
*
*/
public class EmbeddedConsoleHandler implements ConsoleHandler {
public class EmbeddedConsoleHandler extends ConsoleHandler {
private final RStartParams startParams;
/**
......@@ -48,7 +47,6 @@ public class EmbeddedConsoleHandler implements ConsoleHandler {
private ConsoleHandler delegate;
private REmbedRFFI rEmbedRFFI;
private String prompt;
private RContext ctx;
EmbeddedConsoleHandler(RStartParams startParams) {
this.startParams = startParams;
......@@ -149,14 +147,4 @@ public class EmbeddedConsoleHandler implements ConsoleHandler {
public String getInputDescription() {
return "<embedded input>";
}
@Override
public void setContext(RContext ctx) {
this.ctx = ctx;
}
@Override
public RContext getContext() {
return ctx;
}
}
......@@ -67,6 +67,7 @@ public class JLineConsoleCompleter implements Completer {
return cursor;
}
@SuppressWarnings("try")
private int completeImpl(String buffer, int cursor, List<CharSequence> candidates) {
if (buffer.isEmpty()) {
return cursor;
......
......@@ -33,18 +33,16 @@ import com.oracle.truffle.r.runtime.RSource;
import com.oracle.truffle.r.runtime.RStartParams;
import com.oracle.truffle.r.runtime.Utils;
import com.oracle.truffle.r.runtime.context.ConsoleHandler;
import com.oracle.truffle.r.runtime.context.RContext;
import jline.console.ConsoleReader;
import jline.console.UserInterruptException;
import jline.console.history.FileHistory;
import jline.console.history.History;
class JLineConsoleHandler implements ConsoleHandler {
class JLineConsoleHandler extends ConsoleHandler {
private final ConsoleReader console;
private final boolean isInteractive;
private final PrintWriter printWriter;
private RContext ctx;
JLineConsoleHandler(RStartParams startParams, InputStream inStream, OutputStream outStream) {
try {
......@@ -142,14 +140,4 @@ class JLineConsoleHandler implements ConsoleHandler {
}
}
}
@Override
public void setContext(RContext ctx) {
this.ctx = ctx;
}
@Override
public RContext getContext() {
return ctx;
}
}
......@@ -30,7 +30,7 @@ import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
import com.oracle.truffle.r.runtime.context.ConsoleHandler;
import com.oracle.truffle.r.runtime.context.RContext;
class StringConsoleHandler implements ConsoleHandler {
class StringConsoleHandler extends ConsoleHandler {
private final PrintStream output;
private final List<String> lines;
private final String inputDescription;
......
......@@ -31,24 +31,27 @@ import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
* implementations for different contexts. Since I/O is involved, all methods are tagged with
* {@link TruffleBoundary} as a hint that so should the associated implementation methods.
*/
public interface ConsoleHandler {
public abstract class ConsoleHandler {
private RContext ctx;
/**
* Normal output with a new line.
*/
@TruffleBoundary
void println(String s);
public abstract void println(String s);
/**
* Normal output without a newline.
*/
@TruffleBoundary
void print(String s);
public abstract void print(String s);
/**
* Formatted output.
*/
@TruffleBoundary
default void printf(String format, Object... args) {
public void printf(String format, Object... args) {
print(String.format(format, args));
}
......@@ -58,20 +61,20 @@ public interface ConsoleHandler {
* @param s
*/
@TruffleBoundary
void printErrorln(String s);
public abstract void printErrorln(String s);
/**
* Error output without a newline.
*/
@TruffleBoundary
void printError(String s);
public abstract void printError(String s);
/**
* Read a line of input, newline is <b>NOT</b> included in result. Returns null if
* {@link #isInteractive() == false}. TODO worry about "\r\n"?
*/
@TruffleBoundary
String readLine();
public abstract String readLine();
/**
* Denote whether the FastR instance is running in 'interactive' mode. This can be set in a
......@@ -79,31 +82,35 @@ public interface ConsoleHandler {
* final once set.
*/
@TruffleBoundary
boolean isInteractive();
public abstract boolean isInteractive();
/**
* Get the current prompt.
*/
@TruffleBoundary
String getPrompt();
public abstract String getPrompt();
/**
* Set the R prompt.
*/
@TruffleBoundary
void setPrompt(String prompt);
public abstract void setPrompt(String prompt);
String getInputDescription();
public abstract String getInputDescription();
void setContext(RContext ctx);
public void setContext(RContext ctx) {
this.ctx = ctx;
}
RContext getContext();
public RContext getContext() {
return ctx;
}
default void setHistoryFrom(@SuppressWarnings("unused") File file) {
public void setHistoryFrom(@SuppressWarnings("unused") File file) {
// by default, do nothing
}
default void flushHistory() {
public void flushHistory() {
// by default, do nothing
}
}
......@@ -29,12 +29,11 @@ import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
public class DefaultConsoleHandler implements ConsoleHandler {
public class DefaultConsoleHandler extends ConsoleHandler {
private final BufferedReader in;
private final PrintStream out;
private String prompt;
private RContext ctx;
public DefaultConsoleHandler(InputStream in, OutputStream out) {
this.in = new BufferedReader(new InputStreamReader(in));
......@@ -92,14 +91,4 @@ public class DefaultConsoleHandler implements ConsoleHandler {
public String getInputDescription() {
return "<PolyglotEngine env input>";
}
@Override
public void setContext(RContext ctx) {
this.ctx = ctx;
}
@Override
public RContext getContext() {
return ctx;
}
}
......@@ -118,8 +118,7 @@ public class TestJLineConsoleCompleter {
}
}
private class DummyConsoleHandler implements ConsoleHandler {
private RContext ctx;
private class DummyConsoleHandler extends ConsoleHandler {
@Override
public void println(String s) {
......@@ -160,15 +159,5 @@ public class TestJLineConsoleCompleter {
public String getInputDescription() {
return "";
}
@Override
public void setContext(RContext ctx) {
this.ctx = ctx;
}
@Override
public RContext getContext() {
return ctx;
}
}
}
......@@ -66,10 +66,9 @@ public final class FastRSession implements RSession {
* A (virtual) console handler that collects the output in a {@link StringBuilder} for
* comparison. It does not separate error output as the test analysis doesn't need it.
*/
public static class TestConsoleHandler implements ConsoleHandler {
public static class TestConsoleHandler extends ConsoleHandler {
private final StringBuilder buffer = new StringBuilder();
private final Deque<String> input = new ArrayDeque<>();
private RContext ctx;
public void setInput(String[] lines) {
input.clear();
......@@ -130,16 +129,6 @@ public final class FastRSession implements RSession {
public String getInputDescription() {
return "<test input>";
}
@Override
public void setContext(RContext ctx) {
this.ctx = ctx;
}
@Override
public RContext getContext() {
return ctx;
}
}
private static FastRSession singleton;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment