1 /* Generated by re2c */
2 #line 1 "cvsignore_w.re"
3 // re2c $INPUT -o $OUTPUT -w
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_w.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_w.c"
44 {
45 	YYCTYPE yych;
46 	if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
47 	yych = *YYCURSOR;
48 	if (yych == '$') goto yy4;
49 	++YYCURSOR;
50 yy3:
51 #line 54 "cvsignore_w.re"
52 	{ output[outsize++] = cursor[-1]; if (cursor >= limit) break; goto loop; }
53 #line 54 "cvsignore_w.c"
54 yy4:
55 	yych = *(YYMARKER = ++YYCURSOR);
56 	switch (yych) {
57 	case 'D':	goto yy5;
58 	case 'I':	goto yy7;
59 	case 'L':	goto yy8;
60 	case 'R':	goto yy9;
61 	case 'S':	goto yy10;
62 	default:	goto yy3;
63 	}
64 yy5:
65 	yych = *++YYCURSOR;
66 	if (yych == 'a') goto yy11;
67 yy6:
68 	YYCURSOR = YYMARKER;
69 	goto yy3;
70 yy7:
71 	yych = *++YYCURSOR;
72 	if (yych == 'd') goto yy12;
73 	goto yy6;
74 yy8:
75 	yych = *++YYCURSOR;
76 	if (yych == 'o') goto yy13;
77 	goto yy6;
78 yy9:
79 	yych = *++YYCURSOR;
80 	if (yych == 'e') goto yy14;
81 	goto yy6;
82 yy10:
83 	yych = *++YYCURSOR;
84 	if (yych == 'o') goto yy15;
85 	goto yy6;
86 yy11:
87 	yych = *++YYCURSOR;
88 	if (yych == 't') goto yy16;
89 	goto yy6;
90 yy12:
91 	yych = *++YYCURSOR;
92 	if (yych == '$') goto yy17;
93 	if (yych == ':') goto yy19;
94 	goto yy6;
95 yy13:
96 	yych = *++YYCURSOR;
97 	if (yych == 'g') goto yy20;
98 	goto yy6;
99 yy14:
100 	yych = *++YYCURSOR;
101 	if (yych == 'v') goto yy21;
102 	goto yy6;
103 yy15:
104 	yych = *++YYCURSOR;
105 	if (yych == 'u') goto yy22;
106 	goto yy6;
107 yy16:
108 	yych = *++YYCURSOR;
109 	if (yych == 'e') goto yy23;
110 	goto yy6;
111 yy17:
112 	++YYCURSOR;
113 #line 50 "cvsignore_w.re"
114 	{ APPEND(L"$" L"Id$"); goto loop; }
115 #line 116 "cvsignore_w.c"
116 yy19:
117 	yych = *++YYCURSOR;
118 	if (yych == '$') goto yy6;
119 	goto yy25;
120 yy20:
121 	yych = *++YYCURSOR;
122 	if (yych == '$') goto yy26;
123 	if (yych == ':') goto yy28;
124 	goto yy6;
125 yy21:
126 	yych = *++YYCURSOR;
127 	if (yych == 'i') goto yy29;
128 	goto yy6;
129 yy22:
130 	yych = *++YYCURSOR;
131 	if (yych == 'r') goto yy30;
132 	goto yy6;
133 yy23:
134 	yych = *++YYCURSOR;
135 	if (yych == '$') goto yy31;
136 	if (yych == ':') goto yy33;
137 	goto yy6;
138 yy24:
139 	++YYCURSOR;
140 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
141 	yych = *YYCURSOR;
142 yy25:
143 	if (yych == '\n') goto yy6;
144 	if (yych == '$') goto yy17;
145 	goto yy24;
146 yy26:
147 	++YYCURSOR;
148 #line 51 "cvsignore_w.re"
149 	{ APPEND(L"$" L"Log$"); goto loop; }
150 #line 151 "cvsignore_w.c"
151 yy28:
152 	yych = *++YYCURSOR;
153 	if (yych == '$') goto yy6;
154 	goto yy35;
155 yy29:
156 	yych = *++YYCURSOR;
157 	if (yych == 's') goto yy36;
158 	goto yy6;
159 yy30:
160 	yych = *++YYCURSOR;
161 	if (yych == 'c') goto yy37;
162 	goto yy6;
163 yy31:
164 	++YYCURSOR;
165 #line 49 "cvsignore_w.re"
166 	{ APPEND(L"$" L"Date$"); goto loop; }
167 #line 168 "cvsignore_w.c"
168 yy33:
169 	yych = *++YYCURSOR;
170 	if (yych == '$') goto yy6;
171 	goto yy39;
172 yy34:
173 	++YYCURSOR;
174 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
175 	yych = *YYCURSOR;
176 yy35:
177 	if (yych == '\n') goto yy6;
178 	if (yych == '$') goto yy26;
179 	goto yy34;
180 yy36:
181 	yych = *++YYCURSOR;
182 	if (yych == 'i') goto yy40;
183 	goto yy6;
184 yy37:
185 	yych = *++YYCURSOR;
186 	if (yych == 'e') goto yy41;
187 	goto yy6;
188 yy38:
189 	++YYCURSOR;
190 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
191 	yych = *YYCURSOR;
192 yy39:
193 	if (yych == '\n') goto yy6;
194 	if (yych == '$') goto yy31;
195 	goto yy38;
196 yy40:
197 	yych = *++YYCURSOR;
198 	if (yych == 'o') goto yy42;
199 	goto yy6;
200 yy41:
201 	yych = *++YYCURSOR;
202 	if (yych == '$') goto yy43;
203 	if (yych == ':') goto yy45;
204 	goto yy6;
205 yy42:
206 	yych = *++YYCURSOR;
207 	if (yych == 'n') goto yy46;
208 	goto yy6;
209 yy43:
210 	++YYCURSOR;
211 #line 53 "cvsignore_w.re"
212 	{ APPEND(L"$" L"Source$"); goto loop; }
213 #line 214 "cvsignore_w.c"
214 yy45:
215 	yych = *++YYCURSOR;
216 	if (yych == '$') goto yy6;
217 	goto yy48;
218 yy46:
219 	yych = *++YYCURSOR;
220 	if (yych == '$') goto yy49;
221 	if (yych == ':') goto yy51;
222 	goto yy6;
223 yy47:
224 	++YYCURSOR;
225 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
226 	yych = *YYCURSOR;
227 yy48:
228 	if (yych == '\n') goto yy6;
229 	if (yych == '$') goto yy43;
230 	goto yy47;
231 yy49:
232 	++YYCURSOR;
233 #line 52 "cvsignore_w.re"
234 	{ APPEND(L"$" L"Revision$"); goto loop; }
235 #line 236 "cvsignore_w.c"
236 yy51:
237 	yych = *++YYCURSOR;
238 	if (yych == '$') goto yy6;
239 	goto yy53;
240 yy52:
241 	++YYCURSOR;
242 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
243 	yych = *YYCURSOR;
244 yy53:
245 	if (yych == '\n') goto yy6;
246 	if (yych == '$') goto yy49;
247 	goto yy52;
248 }
249 #line 56 "cvsignore_w.re"
250 
251 	}
252 	output[outsize] = '\0';
253 
254 	// set the new size
255 	*pSize = outsize;
256 
257 	*pbChanged = (insize == outsize) ? 0 : 1;
258 }
259