Lines Matching refs:state

100 fill(State_t* state)
104 state->bp = state->buf;
105 if ((r = sfrd(state->codex->sp, state->bp, sizeof(state->buf), &state->codex->sfdisc)) <= 0)
107 state->be = state->bp;
110 state->be = state->bp + r;
111 return *state->bp++;
115 flush(register State_t* state)
122 if (state->c1 >= 0)
124 c3 = state->data->fill;
126 if (state->c2 < 0)
128 state->c2 = c3;
131 b = (state->c1 << 16) | (state->c2 << 8) | c3;
132 *state->bp++ = state->data->map[b >> 18];
133 *state->bp++ = state->data->map[(b >> 12) & 077];
134 *state->bp++ = x == 3 && state->data->pad ? state->data->pad : state->data->map[(b >> 6) & 077];
135 *state->bp++ = state->data->pad ? state->data->pad : state->data->map[b & 077];
136 state->c1 = state->c2 = -1;
138 if ((state->bl - state->bp) < UUOUT * UUCHUNK || state->bp > state->buf + !!state->bb)
140 if (state->bb)
141 *state->bb = state->data->map[((state->bp - state->bb - x) / UUOUT) * UUIN + 1];
142 if (state->string)
144 if (*(state->bp - 1) == '\n')
145 state->bp--;
149 if (*(state->bp - 1) != '\n')
150 *state->bp++ = '\n';
152 x = state->bp - state->buf;
153 state->bp = state->buf;
154 state->bl = state->bp + UUOUT * UUCHUNK;
155 if (sfwr(state->codex->sp, state->buf, x, &state->codex->sfdisc) != x)
164 register State_t* state;
203 if (!(state = newof(0, State_t, 1, 0)))
209 state->data = data;
210 state->string = string;
211 state->text = text;
215 q = state->mapbuf;
216 memset(q, n, sizeof(state->mapbuf));
217 state->map = ++q;
224 p->data = state;
225 state->codex = p;
232 register State_t* state = (State_t*)p->data;
235 state->bp = state->buf;
238 n = UUOUT * UUCHUNK + state->data->length + 1;
239 state->be = state->bp + (sizeof(state->buf) / n) * n;
240 if (state->data->length)
242 state->bb = state->bp;
243 *state->bp++ = state->data->map[UUIN * UUCHUNK];
245 state->bl = state->bp + UUOUT * UUCHUNK;
246 state->c1 = state->c2 = -1;
250 state->be = state->bp;
251 state->pb = state->pp = state->peek;
252 if (state->data->length)
253 state->nl = -1;
254 state->c1 = state->c2 = -1;
262 register State_t* state = (State_t*)CODEX(disc)->data;
269 if (state->pb < state->pp)
271 while (s < e && state->pb < state->pp)
272 *s++ = *state->pb++;
273 if (state->pb == state->pp)
274 state->pb = state->pp = state->peek;
276 if (state->data->length)
279 switch (c = GETCHAR(state))
284 state->nl = -1;
287 if (state->nl < 0)
288 state->nl = state->map[c];
289 else if (state->nl > 0)
291 b = state->map[c];
292 if ((c = GETCHAR(state)) == EOF)
295 c = state->map[c];
297 if ((c = GETCHAR(state)) == EOF)
300 c = state->map[c];
302 if ((c = GETCHAR(state)) == EOF)
305 c = state->map[c];
307 if (state->text)
310 PUTCHAR(state, s, e, c);
312 PUTCHAR(state, s, e, c);
314 PUTCHAR(state, s, e, c);
318 PUTCHAR(state, s, e, (b >> 16));
319 PUTCHAR(state, s, e, (b >> 8));
320 PUTCHAR(state, s, e, b);
322 if ((state->nl -= 3) < 0)
323 while (state->nl++ < 0)
330 while ((c = state->map[GETCHAR(state)]) >= 64)
334 while ((c = state->map[GETCHAR(state)]) >= 64)
337 if (state->codex->disc->errorf)
338 (*state->codex->disc->errorf)(NiL, state->codex->disc, 1, "%c: extra input character ignored", c);
342 while ((c = state->map[GETCHAR(state)]) >= 64)
345 if (state->text)
348 PUTCHAR(state, s, e, x);
351 PUTCHAR(state, s, e, (b >> 4));
355 while ((c = state->map[GETCHAR(state)]) >= 64)
358 if (state->text)
361 PUTCHAR(state, s, e, x);
363 PUTCHAR(state, s, e, x);
367 PUTCHAR(state, s, e, (b >> 10));
368 PUTCHAR(state, s, e, (b >> 2));
373 if (state->text)
376 PUTCHAR(state, s, e, x);
378 PUTCHAR(state, s, e, x);
380 PUTCHAR(state, s, e, x);
384 PUTCHAR(state, s, e, (b >> 16));
385 PUTCHAR(state, s, e, (b >> 8));
386 PUTCHAR(state, s, e, b);
396 register State_t* state = (State_t*)CODEX(disc)->data;
406 if ((c1 = state->c1) >= 0)
408 state->c1 = -1;
409 if ((c2 = state->c2) >= 0)
411 state->c2 = -1;
420 if (state->nl)
422 state->nl = 0;
429 if (state->text && c1 == '\n')
438 state->c1 = c1;
442 if (state->text && c2 == '\n')
451 state->c1 = c1;
452 state->c2 = c2;
456 if (state->text && c3 == '\n')
458 state->nl = 1;
463 *state->bp++ = state->data->map[b >> 18];
464 *state->bp++ = state->data->map[(b >> 12) & 077];
465 *state->bp++ = state->data->map[(b >> 6) & 077];
466 *state->bp++ = state->data->map[b & 077];
467 } while (state->bp < state->bl);
468 if (!state->string)
469 *state->bp++ = '\n';
470 if (state->bp >= state->be)
472 if (sfwr(sp, state->buf, state->bp - state->buf, disc) != (state->bp - state->buf))
474 state->bp = state->buf;
476 if (state->bb)
478 state->bb = state->bp;
479 *state->bp++ = state->data->map[UUIN * UUCHUNK];
481 state->bl = state->bp + UUOUT * UUCHUNK;