]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/reporting/SCLReportingWriter.java
Merge branch 'feature/funcwrite'
[simantics/platform.git] / bundles / org.simantics.scl.runtime / src / org / simantics / scl / runtime / reporting / SCLReportingWriter.java
1 package org.simantics.scl.runtime.reporting;
2
3 import java.io.Writer;
4
5 public class SCLReportingWriter extends Writer {
6         
7         StringBuilder builder = null;
8         
9         public SCLReportingWriter() {
10                 builder = new StringBuilder();
11         }
12         
13         @Override
14         public void close() {
15                 flush();
16         }
17
18         @Override
19         public void flush() {
20                 if (builder.length() > 0) {
21                         SCLReporting.print(builder.toString());
22                         builder.setLength(0);
23                 }
24         }
25
26         @Override
27         public void write(char[] buf, int off, int len) {
28                 if (len == 0) return;
29                 
30                 if (len < 0) throw new IllegalArgumentException("Negative buffer region length");
31                 if (off < 0) throw new IllegalArgumentException("Negative buffer region offset");
32                 if (off + len > buf.length) throw new IllegalArgumentException("Buffer region overflow");
33                 
34                 for (int i = 0; i < len; i++) {
35                         if (buf[off + i] == '\n') {
36                                 SCLReporting.print(builder.toString());
37                                 builder.setLength(0);
38                         }
39                         else {
40                                 builder.append(buf[off + i]);
41                         }
42                 }
43         }
44 }