Lines Matching refs:data
10 bl_getc(struct byteloader_fdata *data)
13 if (SvCUR(data->datasv) <= (STRLEN)data->next_out) {
15 /* Run out of buffered data, so attempt to read some more */
16 *(SvPV_nolen (data->datasv)) = '\0';
17 SvCUR_set (data->datasv, 0);
18 data->next_out = 0;
19 result = FILTER_READ (data->idx + 1, data->datasv, BYTELOADER_BUFFER);
21 /* Filter returned error, or we got EOF and no data, then return EOF.
22 Not sure if filter is allowed to return EOF and add data simultaneously
24 if (result < 0 || SvCUR(data->datasv) == 0)
29 return *((U8 *) SvPV_nolen (data->datasv) + data->next_out++);
33 bl_read(struct byteloader_fdata *data, char *buf, size_t size, size_t n)
40 start = SvPV (data->datasv, len);
41 if (len < (data->next_out + wanted)) {
44 /* Shuffle data to start of buffer */
45 len -= data->next_out;
47 memmove (start, start + data->next_out, len + 1);
48 SvCUR_set (data->datasv, len);
51 SvCUR_set (data->datasv, 0);
53 data->next_out = 0;
55 /* Attempt to read more data. */
57 result = FILTER_READ (data->idx + 1, data->datasv, BYTELOADER_BUFFER);
59 start = SvPV (data->datasv, len);
63 /* If not enough data read, truncate copy */
69 memcpy (buf, start + data->next_out, wanted);
70 data->next_out += wanted;
82 struct byteloader_fdata data;
85 data.next_out = 0;
86 data.datasv = FILTER_DATA(idx);
87 data.idx = idx;
89 bstate.bs_fdata = &data;
97 && (len = SvCUR(data.datasv) - (STRLEN)data.next_out))