X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.pythonlink%2Fsrc%2Forg%2Fsimantics%2Fpythonlink%2FSCLReportingWriter.java;fp=org.simantics.pythonlink%2Fsrc%2Forg%2Fsimantics%2Fpythonlink%2FSCLReportingWriter.java;h=0bab7121fe2ae8dcf997070cf811973191eda4d5;hb=8885425046e0f89893c0e1ee0fe5c27948dcd2be;hp=0000000000000000000000000000000000000000;hpb=1ea9a623d145875880b543e8eea62e801561fba9;p=simantics%2Fpython.git diff --git a/org.simantics.pythonlink/src/org/simantics/pythonlink/SCLReportingWriter.java b/org.simantics.pythonlink/src/org/simantics/pythonlink/SCLReportingWriter.java new file mode 100644 index 0000000..0bab712 --- /dev/null +++ b/org.simantics.pythonlink/src/org/simantics/pythonlink/SCLReportingWriter.java @@ -0,0 +1,46 @@ +package org.simantics.pythonlink; + +import java.io.Writer; + +import org.simantics.scl.runtime.reporting.SCLReporting; + +public class SCLReportingWriter extends Writer { + + StringBuilder builder = null; + + public SCLReportingWriter() { + builder = new StringBuilder(); + } + + @Override + public void close() { + flush(); + } + + @Override + public void flush() { + if (builder.length() > 0) { + SCLReporting.print(builder.toString()); + builder.setLength(0); + } + } + + @Override + public void write(char[] buf, int off, int len) { + if (len == 0) return; + + if (len < 0) throw new IllegalArgumentException("Negative buffer region length"); + if (off < 0) throw new IllegalArgumentException("Negative buffer region offset"); + if (off + len > buf.length) throw new IllegalArgumentException("Buffer region overflow"); + + for (int i = 0; i < len; i++) { + if (buf[off + i] == '\n') { + SCLReporting.print(builder.toString()); + builder.setLength(0); + } + else { + builder.append(buf[off + i]); + } + } + } +}