Lines Matching defs:buf
189 expand_encodebuffer(MultibyteEncodeBuffer *buf, Py_ssize_t esize)
193 orgpos = (Py_ssize_t)((char *)buf->outbuf -
194 PyBytes_AS_STRING(buf->outobj));
195 orgsize = PyBytes_GET_SIZE(buf->outobj);
203 if (_PyBytes_Resize(&buf->outobj, orgsize + incsize) == -1)
206 buf->outbuf = (unsigned char *)PyBytes_AS_STRING(buf->outobj) +orgpos;
207 buf->outbuf_end = (unsigned char *)PyBytes_AS_STRING(buf->outobj)
208 + PyBytes_GET_SIZE(buf->outobj);
212 #define REQUIRE_ENCODEBUFFER(buf, s) do { \
213 if ((s) < 0 || (s) > (buf)->outbuf_end - (buf)->outbuf) \
214 if (expand_encodebuffer(buf, s) == -1) \
226 MultibyteEncodeBuffer *buf,
241 REQUIRE_ENCODEBUFFER(buf, -1);
245 esize = (Py_ssize_t)buf->inpos;
273 Py_ssize_t outleft = (Py_ssize_t)(buf->outbuf_end - buf->outbuf);
277 &buf->outbuf, outleft, 0);
279 REQUIRE_ENCODEBUFFER(buf, -1);
289 REQUIRE_ENCODEBUFFER(buf, 1);
290 *buf->outbuf++ = '?';
294 buf->inpos += esize;
298 start = (Py_ssize_t)buf->inpos;
302 if (buf->excobj == NULL) {
303 buf->excobj = PyObject_CallFunction(PyExc_UnicodeEncodeError,
305 codec->encoding, buf->inobj,
307 if (buf->excobj == NULL)
311 if (PyUnicodeEncodeError_SetStart(buf->excobj, start) != 0 ||
312 PyUnicodeEncodeError_SetEnd(buf->excobj, end) != 0 ||
313 PyUnicodeEncodeError_SetReason(buf->excobj, reason) != 0)
317 PyCodec_StrictErrors(buf->excobj);
321 retobj = call_error_callback(errors, buf->excobj);
351 REQUIRE_ENCODEBUFFER(buf, retstrsize);
352 memcpy(buf->outbuf, PyBytes_AS_STRING(retstr), retstrsize);
353 buf->outbuf += retstrsize;
358 newpos += (Py_ssize_t)buf->inlen;
359 if (newpos < 0 || newpos > buf->inlen) {
366 buf->inpos = newpos;
381 MultibyteDecodeBuffer *buf,
399 esize = (Py_ssize_t)(buf->inbuf_end - buf->inbuf);
415 if (_PyUnicodeWriter_WriteChar(&buf->writer,
420 buf->inbuf += esize;
424 start = (Py_ssize_t)(buf->inbuf - buf->inbuf_top);
428 if (buf->excobj == NULL) {
429 buf->excobj = PyUnicodeDecodeError_Create(codec->encoding,
430 (const char *)buf->inbuf_top,
431 (Py_ssize_t)(buf->inbuf_end - buf->inbuf_top),
433 if (buf->excobj == NULL)
437 if (PyUnicodeDecodeError_SetStart(buf->excobj, start) ||
438 PyUnicodeDecodeError_SetEnd(buf->excobj, end) ||
439 PyUnicodeDecodeError_SetReason(buf->excobj, reason))
443 PyCodec_StrictErrors(buf->excobj);
447 retobj = call_error_callback(errors, buf->excobj);
460 if (_PyUnicodeWriter_WriteStr(&buf->writer, retuni) < 0)
465 newpos += (Py_ssize_t)(buf->inbuf_end - buf->inbuf_top);
466 if (newpos < 0 || buf->inbuf_top + newpos > buf->inbuf_end) {
473 buf->inbuf = buf->inbuf_top + newpos;
488 MultibyteEncodeBuffer buf;
501 buf.excobj = NULL;
502 buf.outobj = NULL;
503 buf.inobj = text; /* borrowed reference */
504 buf.inpos = 0;
505 buf.inlen = datalen;
506 kind = PyUnicode_KIND(buf.inobj);
507 data = PyUnicode_DATA(buf.inobj);
514 buf.outobj = PyBytes_FromStringAndSize(NULL, datalen * 2 + 16);
515 if (buf.outobj == NULL)
517 buf.outbuf = (unsigned char *)PyBytes_AS_STRING(buf.outobj);
518 buf.outbuf_end = buf.outbuf + PyBytes_GET_SIZE(buf.outobj);
520 while (buf.inpos < buf.inlen) {
523 Py_ssize_t outleft = (Py_ssize_t)(buf.outbuf_end - buf.outbuf);
527 &buf.inpos, buf.inlen,
528 &buf.outbuf, outleft, flags);
531 else if (multibytecodec_encerror(codec, state, &buf, errors,r))
541 outleft = (Py_ssize_t)(buf.outbuf_end - buf.outbuf);
542 r = codec->encreset(state, codec->config, &buf.outbuf,
547 &buf, errors, r))
551 finalsize = (Py_ssize_t)((char *)buf.outbuf -
552 PyBytes_AS_STRING(buf.outobj));
554 if (finalsize != PyBytes_GET_SIZE(buf.outobj))
555 if (_PyBytes_Resize(&buf.outobj, finalsize) == -1)
559 *inpos_t = buf.inpos;
560 Py_XDECREF(buf.excobj);
561 return buf.outobj;
564 Py_XDECREF(buf.excobj);
565 Py_XDECREF(buf.outobj);
659 MultibyteDecodeBuffer buf;
664 data = input->buf;
677 _PyUnicodeWriter_Init(&buf.writer);
678 buf.writer.min_length = datalen;
679 buf.excobj = NULL;
680 buf.inbuf = buf.inbuf_top = (unsigned char *)data;
681 buf.inbuf_end = buf.inbuf_top + datalen;
687 while (buf.inbuf < buf.inbuf_end) {
690 inleft = (Py_ssize_t)(buf.inbuf_end - buf.inbuf);
693 &buf.inbuf, inleft, &buf.writer);
697 &buf, errorcb, r))
701 res = _PyUnicodeWriter_Finish(&buf.writer);
705 Py_XDECREF(buf.excobj);
711 Py_XDECREF(buf.excobj);
712 _PyUnicodeWriter_Dealloc(&buf.writer);
850 MultibyteDecodeBuffer *buf)
854 npendings = (Py_ssize_t)(buf->inbuf_end - buf->inbuf);
860 memcpy(ctx->pending + ctx->pendingsize, buf->inbuf, npendings);
866 decoder_prepare_buffer(MultibyteDecodeBuffer *buf, const char *data,
869 buf->inbuf = buf->inbuf_top = (const unsigned char *)data;
870 buf->inbuf_end = buf->inbuf_top + size;
871 buf->writer.min_length += size;
877 MultibyteDecodeBuffer *buf)
879 while (buf->inbuf < buf->inbuf_end) {
883 inleft = (Py_ssize_t)(buf->inbuf_end - buf->inbuf);
886 &buf->inbuf, inleft, &buf->writer);
890 buf, ctx->errors, r))
1132 MultibyteDecodeBuffer buf;
1137 data = input->buf;
1140 _PyUnicodeWriter_Init(&buf.writer);
1141 buf.excobj = NULL;
1164 if (decoder_prepare_buffer(&buf, wdata, wsize) != 0)
1167 if (decoder_feed_buffer(STATEFUL_DCTX(self), &buf))
1170 if (final && buf.inbuf < buf.inbuf_end) {
1172 &buf, self->errors, MBERR_TOOFEW)) {
1180 if (buf.inbuf < buf.inbuf_end) { /* pending sequence still exists */
1181 if (decoder_append_pending(STATEFUL_DCTX(self), &buf) != 0)
1185 res = _PyUnicodeWriter_Finish(&buf.writer);
1191 Py_XDECREF(buf.excobj);
1197 Py_XDECREF(buf.excobj);
1198 _PyUnicodeWriter_Dealloc(&buf.writer);
1396 MultibyteDecodeBuffer buf;
1403 _PyUnicodeWriter_Init(&buf.writer);
1404 buf.excobj = NULL;
1452 if (decoder_prepare_buffer(&buf, PyBytes_AS_STRING(cres),
1457 (MultibyteStatefulDecoderContext *)self, &buf))
1461 if (buf.inbuf < buf.inbuf_end &&
1463 &buf, self->errors, MBERR_TOOFEW))
1467 if (buf.inbuf < buf.inbuf_end) { /* pending sequence exists */
1469 &buf) != 0)
1476 if (sizehint < 0 || buf.writer.pos != 0 || rsize == 0)
1482 res = _PyUnicodeWriter_Finish(&buf.writer);
1487 Py_XDECREF(buf.excobj);
1492 Py_XDECREF(buf.excobj);
1493 _PyUnicodeWriter_Dealloc(&buf.writer);