having new variable 'inter' in-between "reorder/antialias" and "hybrid" in order...
[IRC.git] / Robust / src / Util / CodePrinter.java
1 package Util;
2 import java.io.PrintWriter;
3 import java.io.Writer;
4 import java.io.OutputStream;
5 import java.io.File;
6
7 public class CodePrinter extends PrintWriter {
8   int braceCount=0;
9   boolean seenChar=false;
10   StringBuffer sb=new StringBuffer();
11   public CodePrinter(Writer w) {
12     super(w);
13   }
14
15   public CodePrinter(Writer w, boolean af) {
16     super(w,af);
17   }
18
19   public CodePrinter(File w) throws java.io.FileNotFoundException {
20     super(w);
21   }
22
23   public CodePrinter(OutputStream w) {
24     super(w);
25   }
26
27   public CodePrinter(OutputStream w, boolean af) {
28     super(w,af);
29   }
30
31   StringBuffer genSpacing() {
32     StringBuffer sb=new StringBuffer();
33     for(int i=0; i<braceCount; i++)
34       sb.append("  ");
35     return sb;
36   }
37
38   public void println() {
39     addString("\n");
40   }
41
42   public void println(boolean x) {
43     addString(x+"\n");
44   }
45
46   public void println(char x) {
47     addString(x+"\n");
48   }
49
50   public void println(char[] x) {
51     addString(x+"\n");
52   }
53
54   public void println(double x) {
55     addString(x+"\n");
56   }
57
58   public void println(float x) {
59     addString(x+"\n");
60   }
61
62   public void println(int x) {
63     addString(x+"\n");
64   }
65
66   public void println(Object x) {
67     addString(x+"\n");
68   }
69
70   public void println(String x) {
71     addString(x+"\n");
72   }
73
74   public void print(boolean x) {
75     addString(x+"\n");
76   }
77
78   public void print(char x) {
79     addString(String.valueOf(x));
80   }
81
82   public void print(char[] x) {
83     addString(String.valueOf(x));
84   }
85
86   public void print(double x) {
87     addString(String.valueOf(x));
88   }
89
90   public void print(float x) {
91     addString(String.valueOf(x));
92   }
93
94   public void print(int x) {
95     addString(String.valueOf(x));
96   }
97
98   public void print(Object x) {
99     addString(String.valueOf(x));
100   }
101
102   public void print(String x) {
103     addString(x);
104   }
105
106   public void write(String x) {
107     addString(x);
108   }
109
110   public void write(char[] x) {
111     addString(new String(x));
112   }
113
114   public void addString(String str) {
115     char[] string = str.toCharArray();
116     int lastcr = 0;
117
118     for (int i = 0; i < string.length; i++) {
119       char c = string[i];
120
121       switch (c) {
122       case '\n': {
123         // get the cr
124         sb.append(string, lastcr, (i - lastcr) + 1);
125         super.write(sb.toString());
126         sb = genSpacing();
127         lastcr = i + 1; // skip carriage return
128         seenChar = false;
129         break;
130       }
131
132       case '{':
133         braceCount++;
134         seenChar = true;
135         break;
136
137       case '}':
138         braceCount--;
139         // fix up close brace...
140         if (!seenChar)
141           sb = genSpacing();
142         seenChar = true;
143         break;
144
145       case ' ':
146         // skip leading whitespace
147         if (!seenChar)
148           lastcr = i + 1;
149         break;
150
151       default:
152         seenChar = true;
153       }
154     }
155     if (lastcr < string.length) {
156       // dump string
157       sb.append(string, lastcr, string.length - lastcr);
158     }
159   }
160
161   public void flush() {
162     super.write(sb.toString());
163     sb=genSpacing();
164     super.flush();
165   }
166
167   public void close() {
168     super.write(sb.toString());
169     super.close();
170   }
171 }