Lines Matching refs:stream
34 SEQ_stream stream;
35 stream.state = 0;
36 XXH64_reset(&stream.xxh, 0);
37 stream.seed = seed;
38 return stream;
44 static size_t SEQ_gen_matchLength(SEQ_stream* stream, unsigned value,
56 switch ((ml_state)stream->state) {
60 stream->bytesLeft = 1;
63 *op = SEQ_randByte(&stream->seed) & 0xFF;
65 stream->saved = SEQ_randByte(&stream->seed) & 0xFF;
66 } while (*op == stream->saved);
69 stream->state = ml_match_bytes;
70 stream->bytesLeft = value + 1;
74 size_t const setLength = MIN(stream->bytesLeft, (size_t)(oend - op));
76 memset(op, stream->saved, setLength);
78 stream->bytesLeft -= setLength;
80 if (stream->bytesLeft > 0)
83 stream->state = ml_last_byte;
89 stream->bytesLeft = 1;
93 *op = SEQ_randByte(&stream->seed) & 0xFF;
94 } while (*op == stream->saved);
99 stream->state = 0;
100 stream->bytesLeft = 0;
103 XXH64_update(&stream->xxh, ostart + out->pos, (op - ostart) - out->pos);
105 return stream->bytesLeft;
113 static size_t SEQ_gen_litLength(SEQ_stream* stream, unsigned value, SEQ_outBuffer* out)
125 switch ((ll_state)stream->state) {
127 stream->state = ll_run_bytes;
128 stream->saved = stream->seed;
129 stream->bytesLeft = MIN(kMatchBytes, value);
132 while (stream->bytesLeft > 0 && op < oend) {
133 *op++ = SEQ_randByte(&stream->seed) | 0x80;
134 --stream->bytesLeft;
136 if (stream->bytesLeft > 0)
139 stream->state = ll_literals;
140 stream->bytesLeft = value - MIN(kMatchBytes, value);
143 while (stream->bytesLeft > 0 && op < oend) {
144 *op++ = SEQ_randByte(&stream->seed) & 0x7F;
145 --stream->bytesLeft;
147 if (stream->bytesLeft > 0)
150 stream->state = ll_run_match;
151 stream->bytesLeft = MIN(kMatchBytes, value);
154 while (stream->bytesLeft > 0 && op < oend) {
155 *op++ = SEQ_randByte(&stream->saved) | 0x80;
156 --stream->bytesLeft;
158 if (stream->bytesLeft > 0)
163 stream->state = 0;
164 stream->bytesLeft = 0;
167 XXH64_update(&stream->xxh, ostart + out->pos, (op - ostart) - out->pos);
169 return stream->bytesLeft;
178 static size_t SEQ_gen_offset(SEQ_stream* stream, unsigned value, SEQ_outBuffer* out)
190 switch ((of_state)stream->state) {
192 stream->state = of_run_bytes;
193 stream->saved = stream->seed;
194 stream->bytesLeft = MIN(value, kMatchBytes);
197 while (stream->bytesLeft > 0 && op < oend) {
198 *op++ = SEQ_randByte(&stream->seed) | 0x80;
199 --stream->bytesLeft;
201 if (stream->bytesLeft > 0)
204 stream->state = of_offset;
205 stream->bytesLeft = value - MIN(value, kMatchBytes);
210 size_t const setLength = MIN(stream->bytesLeft, (size_t)(oend - op));
214 stream->bytesLeft -= setLength;
216 if (stream->bytesLeft > 0)
219 stream->state = of_run_match;
220 stream->bytesLeft = MIN(value, kMatchBytes);
224 while (stream->bytesLeft > 0 && op < oend) {
225 *op++ = SEQ_randByte(&stream->saved) | 0x80;
226 --stream->bytesLeft;
228 if (stream->bytesLeft > 0)
233 stream->state = 0;
234 stream->bytesLeft = 0;
237 XXH64_update(&stream->xxh, ostart + out->pos, (op - ostart) - out->pos);
239 return stream->bytesLeft;
245 size_t SEQ_gen(SEQ_stream* stream, SEQ_gen_type type, unsigned value, SEQ_outBuffer* out)
248 case SEQ_gen_ml: return SEQ_gen_matchLength(stream, value, out);
249 case SEQ_gen_ll: return SEQ_gen_litLength(stream, value, out);
250 case SEQ_gen_of: return SEQ_gen_offset(stream, value, out);
257 XXH64_hash_t SEQ_digest(SEQ_stream const* stream)
259 return XXH64_digest(&stream->xxh);