1 /* Generated by re2c */
2 #line 1 "cvsignore_wb.re"
3 // re2c $INPUT -o $OUTPUT -wb
4 
5 #define YYFILL(n) if (cursor >= limit) break;
6 #define YYCTYPE unsigned short
7 #define YYCURSOR cursor
8 #define YYLIMIT limit
9 #define YYMARKER marker
10 
11 #line 17 "cvsignore_wb.re"
12 
13 
14 #define APPEND(text) \
15 	append(output, outsize, text, sizeof(text) - sizeof(YYCTYPE))
16 
append(YYCTYPE * output,size_t & outsize,const YYCTYPE * text,size_t len)17 inline void append(YYCTYPE *output, size_t & outsize, const YYCTYPE * text, size_t len)
18 {
19 	memcpy(output + outsize, text, len);
20 	outsize += (len / sizeof(YYCTYPE));
21 }
22 
scan(YYCTYPE * pText,size_t * pSize,int * pbChanged)23 void scan(YYCTYPE *pText, size_t *pSize, int *pbChanged)
24 {
25 	// rule
26 	// scan lines
27 	// find $ in lines
28 	//   compact $<keyword>: .. $ to $<keyword>$
29 
30 	YYCTYPE *output;
31 	const YYCTYPE *cursor, *limit, *marker;
32 
33 	cursor = marker = output = *pText;
34 
35 	size_t insize = *pSize;
36 	size_t outsize = 0;
37 
38 	limit = cursor + insize;
39 
40 	while(1) {
41 loop:
42 
43 #line 44 "cvsignore_wb.c"
44 {
45 	YYCTYPE yych;
46 	static const unsigned char yybm[] = {
47 		128, 128, 128, 128, 128, 128, 128, 128,
48 		128, 128,   0, 128, 128, 128, 128, 128,
49 		128, 128, 128, 128, 128, 128, 128, 128,
50 		128, 128, 128, 128, 128, 128, 128, 128,
51 		128, 128, 128, 128,   0, 128, 128, 128,
52 		128, 128, 128, 128, 128, 128, 128, 128,
53 		128, 128, 128, 128, 128, 128, 128, 128,
54 		128, 128, 128, 128, 128, 128, 128, 128,
55 		128, 128, 128, 128, 128, 128, 128, 128,
56 		128, 128, 128, 128, 128, 128, 128, 128,
57 		128, 128, 128, 128, 128, 128, 128, 128,
58 		128, 128, 128, 128, 128, 128, 128, 128,
59 		128, 128, 128, 128, 128, 128, 128, 128,
60 		128, 128, 128, 128, 128, 128, 128, 128,
61 		128, 128, 128, 128, 128, 128, 128, 128,
62 		128, 128, 128, 128, 128, 128, 128, 128,
63 		128, 128, 128, 128, 128, 128, 128, 128,
64 		128, 128, 128, 128, 128, 128, 128, 128,
65 		128, 128, 128, 128, 128, 128, 128, 128,
66 		128, 128, 128, 128, 128, 128, 128, 128,
67 		128, 128, 128, 128, 128, 128, 128, 128,
68 		128, 128, 128, 128, 128, 128, 128, 128,
69 		128, 128, 128, 128, 128, 128, 128, 128,
70 		128, 128, 128, 128, 128, 128, 128, 128,
71 		128, 128, 128, 128, 128, 128, 128, 128,
72 		128, 128, 128, 128, 128, 128, 128, 128,
73 		128, 128, 128, 128, 128, 128, 128, 128,
74 		128, 128, 128, 128, 128, 128, 128, 128,
75 		128, 128, 128, 128, 128, 128, 128, 128,
76 		128, 128, 128, 128, 128, 128, 128, 128,
77 		128, 128, 128, 128, 128, 128, 128, 128,
78 		128, 128, 128, 128, 128, 128, 128, 128,
79 	};
80 	if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
81 	yych = *YYCURSOR;
82 	if (yych == '$') goto yy4;
83 	++YYCURSOR;
84 yy3:
85 #line 54 "cvsignore_wb.re"
86 	{ output[outsize++] = cursor[-1]; if (cursor >= limit) break; goto loop; }
87 #line 88 "cvsignore_wb.c"
88 yy4:
89 	yych = *(YYMARKER = ++YYCURSOR);
90 	switch (yych) {
91 	case 'D':	goto yy5;
92 	case 'I':	goto yy7;
93 	case 'L':	goto yy8;
94 	case 'R':	goto yy9;
95 	case 'S':	goto yy10;
96 	default:	goto yy3;
97 	}
98 yy5:
99 	yych = *++YYCURSOR;
100 	if (yych == 'a') goto yy11;
101 yy6:
102 	YYCURSOR = YYMARKER;
103 	goto yy3;
104 yy7:
105 	yych = *++YYCURSOR;
106 	if (yych == 'd') goto yy12;
107 	goto yy6;
108 yy8:
109 	yych = *++YYCURSOR;
110 	if (yych == 'o') goto yy13;
111 	goto yy6;
112 yy9:
113 	yych = *++YYCURSOR;
114 	if (yych == 'e') goto yy14;
115 	goto yy6;
116 yy10:
117 	yych = *++YYCURSOR;
118 	if (yych == 'o') goto yy15;
119 	goto yy6;
120 yy11:
121 	yych = *++YYCURSOR;
122 	if (yych == 't') goto yy16;
123 	goto yy6;
124 yy12:
125 	yych = *++YYCURSOR;
126 	if (yych == '$') goto yy17;
127 	if (yych == ':') goto yy19;
128 	goto yy6;
129 yy13:
130 	yych = *++YYCURSOR;
131 	if (yych == 'g') goto yy20;
132 	goto yy6;
133 yy14:
134 	yych = *++YYCURSOR;
135 	if (yych == 'v') goto yy21;
136 	goto yy6;
137 yy15:
138 	yych = *++YYCURSOR;
139 	if (yych == 'u') goto yy22;
140 	goto yy6;
141 yy16:
142 	yych = *++YYCURSOR;
143 	if (yych == 'e') goto yy23;
144 	goto yy6;
145 yy17:
146 	++YYCURSOR;
147 #line 50 "cvsignore_wb.re"
148 	{ APPEND(L"$" L"Id$"); goto loop; }
149 #line 150 "cvsignore_wb.c"
150 yy19:
151 	yych = *++YYCURSOR;
152 	if (yych == '$') goto yy6;
153 	goto yy25;
154 yy20:
155 	yych = *++YYCURSOR;
156 	if (yych == '$') goto yy26;
157 	if (yych == ':') goto yy28;
158 	goto yy6;
159 yy21:
160 	yych = *++YYCURSOR;
161 	if (yych == 'i') goto yy29;
162 	goto yy6;
163 yy22:
164 	yych = *++YYCURSOR;
165 	if (yych == 'r') goto yy30;
166 	goto yy6;
167 yy23:
168 	yych = *++YYCURSOR;
169 	if (yych == '$') goto yy31;
170 	if (yych == ':') goto yy33;
171 	goto yy6;
172 yy24:
173 	++YYCURSOR;
174 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
175 	yych = *YYCURSOR;
176 yy25:
177 	if (yych & ~0xFF) {
178 		goto yy24;
179 	} else if (yybm[0+yych] & 128) {
180 		goto yy24;
181 	}
182 	if (yych <= '\n') goto yy6;
183 	goto yy17;
184 yy26:
185 	++YYCURSOR;
186 #line 51 "cvsignore_wb.re"
187 	{ APPEND(L"$" L"Log$"); goto loop; }
188 #line 189 "cvsignore_wb.c"
189 yy28:
190 	yych = *++YYCURSOR;
191 	if (yych == '$') goto yy6;
192 	goto yy35;
193 yy29:
194 	yych = *++YYCURSOR;
195 	if (yych == 's') goto yy36;
196 	goto yy6;
197 yy30:
198 	yych = *++YYCURSOR;
199 	if (yych == 'c') goto yy37;
200 	goto yy6;
201 yy31:
202 	++YYCURSOR;
203 #line 49 "cvsignore_wb.re"
204 	{ APPEND(L"$" L"Date$"); goto loop; }
205 #line 206 "cvsignore_wb.c"
206 yy33:
207 	yych = *++YYCURSOR;
208 	if (yych == '$') goto yy6;
209 	goto yy39;
210 yy34:
211 	++YYCURSOR;
212 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
213 	yych = *YYCURSOR;
214 yy35:
215 	if (yych == '\n') goto yy6;
216 	if (yych == '$') goto yy26;
217 	goto yy34;
218 yy36:
219 	yych = *++YYCURSOR;
220 	if (yych == 'i') goto yy40;
221 	goto yy6;
222 yy37:
223 	yych = *++YYCURSOR;
224 	if (yych == 'e') goto yy41;
225 	goto yy6;
226 yy38:
227 	++YYCURSOR;
228 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
229 	yych = *YYCURSOR;
230 yy39:
231 	if (yych == '\n') goto yy6;
232 	if (yych == '$') goto yy31;
233 	goto yy38;
234 yy40:
235 	yych = *++YYCURSOR;
236 	if (yych == 'o') goto yy42;
237 	goto yy6;
238 yy41:
239 	yych = *++YYCURSOR;
240 	if (yych == '$') goto yy43;
241 	if (yych == ':') goto yy45;
242 	goto yy6;
243 yy42:
244 	yych = *++YYCURSOR;
245 	if (yych == 'n') goto yy46;
246 	goto yy6;
247 yy43:
248 	++YYCURSOR;
249 #line 53 "cvsignore_wb.re"
250 	{ APPEND(L"$" L"Source$"); goto loop; }
251 #line 252 "cvsignore_wb.c"
252 yy45:
253 	yych = *++YYCURSOR;
254 	if (yych == '$') goto yy6;
255 	goto yy48;
256 yy46:
257 	yych = *++YYCURSOR;
258 	if (yych == '$') goto yy49;
259 	if (yych == ':') goto yy51;
260 	goto yy6;
261 yy47:
262 	++YYCURSOR;
263 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
264 	yych = *YYCURSOR;
265 yy48:
266 	if (yych == '\n') goto yy6;
267 	if (yych == '$') goto yy43;
268 	goto yy47;
269 yy49:
270 	++YYCURSOR;
271 #line 52 "cvsignore_wb.re"
272 	{ APPEND(L"$" L"Revision$"); goto loop; }
273 #line 274 "cvsignore_wb.c"
274 yy51:
275 	yych = *++YYCURSOR;
276 	if (yych == '$') goto yy6;
277 	goto yy53;
278 yy52:
279 	++YYCURSOR;
280 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
281 	yych = *YYCURSOR;
282 yy53:
283 	if (yych == '\n') goto yy6;
284 	if (yych == '$') goto yy49;
285 	goto yy52;
286 }
287 #line 56 "cvsignore_wb.re"
288 
289 	}
290 	output[outsize] = '\0';
291 
292 	// set the new size
293 	*pSize = outsize;
294 
295 	*pbChanged = (insize == outsize) ? 0 : 1;
296 }
297