diff truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleLanguage.java @ 22165:67f75f61c974

Certain languages (like FastR) prefer access to raw byte streams. Offering it. One always has an option to wrap Input and Output Streams into character based Readers and Writers
author Jaroslav Tulach <jaroslav.tulach@oracle.com>
date Mon, 21 Sep 2015 12:36:30 +0200
parents dc83cc1f94f2
children 0bcfe8c6088f 1421041175a7 526de3af756d
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleLanguage.java	Mon Sep 21 11:30:33 2015 +0200
+++ b/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleLanguage.java	Mon Sep 21 12:36:30 2015 +0200
@@ -31,6 +31,10 @@
 import com.oracle.truffle.api.nodes.Node;
 import com.oracle.truffle.api.source.Source;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
 import java.io.Reader;
 import java.io.Writer;
 import java.lang.annotation.ElementType;
@@ -246,11 +250,11 @@
         private final Object vm;
         private final TruffleLanguage<?> lang;
         private final LangCtx<?> langCtx;
-        private final Reader in;
-        private final Writer err;
-        private final Writer out;
+        private final InputStream in;
+        private final OutputStream err;
+        private final OutputStream out;
 
-        Env(Object vm, TruffleLanguage<?> lang, Writer out, Writer err, Reader in) {
+        Env(Object vm, TruffleLanguage<?> lang, OutputStream out, OutputStream err, InputStream in) {
             this.vm = vm;
             this.in = in;
             this.err = err;
@@ -278,8 +282,13 @@
          *
          * @return reader, never <code>null</code>
          */
+        public InputStream in() {
+            return in;
+        }
+
+        @Deprecated
         public Reader stdIn() {
-            return in;
+            return new InputStreamReader(in);
         }
 
         /**
@@ -288,8 +297,13 @@
          *
          * @return writer, never <code>null</code>
          */
+        public OutputStream out() {
+            return out;
+        }
+
+        @Deprecated
         public Writer stdOut() {
-            return out;
+            return new OutputStreamWriter(out);
         }
 
         /**
@@ -298,8 +312,13 @@
          *
          * @return writer, never <code>null</code>
          */
+        public OutputStream err() {
+            return err;
+        }
+
+        @Deprecated
         public Writer stdErr() {
-            return err;
+            return new OutputStreamWriter(err);
         }
     }
 
@@ -308,7 +327,7 @@
     @SuppressWarnings("rawtypes")
     private static final class AccessAPI extends Accessor {
         @Override
-        protected Env attachEnv(Object vm, TruffleLanguage<?> language, Writer stdOut, Writer stdErr, Reader stdIn) {
+        protected Env attachEnv(Object vm, TruffleLanguage<?> language, OutputStream stdOut, OutputStream stdErr, InputStream stdIn) {
             Env env = new Env(vm, language, stdOut, stdErr, stdIn);
             return env;
         }