From b87b92f47cbf7750426f3e6995a9706d18305f83 Mon Sep 17 00:00:00 2001 From: Reuben Thomas Date: Wed, 17 Jan 2018 14:34:15 +0000 Subject: [PATCH] Recode.pyx: expose RECODE_TASK Minimal interface for just what we need right now! --- tests/Recode.pyx | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tests/Recode.pyx b/tests/Recode.pyx index 9c559f4..208d3e9 100644 --- a/tests/Recode.pyx +++ b/tests/Recode.pyx @@ -675,3 +675,32 @@ cdef class Request: #bool recode_file_to_buffer( # RECODE_CONST_REQUEST, FILE *, char **, size_t *, size_t *) #bool recode_file_to_file(RECODE_CONST_REQUEST, FILE *, FILE *) + +# Recode library at TASK level. + +cdef class Task: + cdef RECODE_TASK task + + def __init__(self, Request request): + self.task = recode_new_task(request.request) + + def __dealloc__(self): + recode_delete_task(self.task) + + def set_byte_order_mark(self, flag): + previous = self.task.byte_order_mark != 0 + self.task.byte_order_mark = int(flag) + return previous + + def set_input(self, text): + cdef char *input = text + cdef size_t input_len = len(text) + self.task.input.buffer = input + self.task.input.cursor = input + self.task.input.limit = input + input_len + + def get_output(self): + return self.task.output.buffer[:self.task.output.cursor - self.task.output.buffer] + + def perform(self): + return recode_perform_task(self.task) -- 2.40.0