mirror of
https://github.com/msgpack/msgpack-python.git
synced 2026-02-07 02:09:59 +00:00
Add use_tuple option that returns tuple for array object to Unpacker.
This commit is contained in:
parent
4d33bd456c
commit
f4c5b15cc6
2 changed files with 21 additions and 3 deletions
|
|
@ -151,7 +151,11 @@ def packb(object o):
|
|||
packs = packb
|
||||
|
||||
cdef extern from "unpack.h":
|
||||
ctypedef struct msgpack_user:
|
||||
int use_tuple
|
||||
|
||||
ctypedef struct template_context:
|
||||
msgpack_user user
|
||||
PyObject* obj
|
||||
size_t count
|
||||
unsigned int ct
|
||||
|
|
@ -170,6 +174,7 @@ def unpackb(object packed_bytes):
|
|||
cdef size_t off = 0
|
||||
cdef int ret
|
||||
template_init(&ctx)
|
||||
ctx.user.use_tuple = 0
|
||||
ret = template_execute(&ctx, p, len(packed_bytes), &off)
|
||||
if ret == 1:
|
||||
return template_data(&ctx)
|
||||
|
|
@ -225,6 +230,7 @@ cdef class Unpacker(object):
|
|||
cdef object file_like
|
||||
cdef int read_size
|
||||
cdef object waiting_bytes
|
||||
cdef int use_tuple
|
||||
|
||||
def __cinit__(self):
|
||||
self.buf = NULL
|
||||
|
|
@ -233,9 +239,10 @@ cdef class Unpacker(object):
|
|||
if self.buf:
|
||||
free(self.buf);
|
||||
|
||||
def __init__(self, file_like=None, int read_size=0):
|
||||
def __init__(self, file_like=None, int read_size=0, use_tuple=0):
|
||||
if read_size == 0:
|
||||
read_size = 1024*1024
|
||||
self.use_tuple = use_tuple
|
||||
self.file_like = file_like
|
||||
self.read_size = read_size
|
||||
self.waiting_bytes = []
|
||||
|
|
@ -244,6 +251,7 @@ cdef class Unpacker(object):
|
|||
self.buf_head = 0
|
||||
self.buf_tail = 0
|
||||
template_init(&self.ctx)
|
||||
self.ctx.user.use_tuple = use_tuple
|
||||
|
||||
def feed(self, next_bytes):
|
||||
if not isinstance(next_bytes, str):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue