Add use_list option to unpack and unpackb

This commit is contained in:
INADA Naoki 2011-01-28 18:59:05 +09:00
parent fe26df5355
commit e89cd81022

View File

@ -167,7 +167,7 @@ cdef extern from "unpack.h":
object template_data(template_context* ctx) object template_data(template_context* ctx)
def unpackb(object packed, object object_hook=None, object list_hook=None): def unpackb(object packed, object object_hook=None, object list_hook=None, bint use_list=0):
"""Unpack packed_bytes to object. Returns an unpacked object.""" """Unpack packed_bytes to object. Returns an unpacked object."""
cdef template_context ctx cdef template_context ctx
cdef size_t off = 0 cdef size_t off = 0
@ -178,7 +178,7 @@ def unpackb(object packed, object object_hook=None, object list_hook=None):
PyObject_AsReadBuffer(packed, <const_void_ptr*>&buf, &buf_len) PyObject_AsReadBuffer(packed, <const_void_ptr*>&buf, &buf_len)
template_init(&ctx) template_init(&ctx)
ctx.user.use_list = 0 ctx.user.use_list = use_list
ctx.user.object_hook = ctx.user.list_hook = NULL ctx.user.object_hook = ctx.user.list_hook = NULL
if object_hook is not None: if object_hook is not None:
if not PyCallable_Check(object_hook): if not PyCallable_Check(object_hook):
@ -196,9 +196,9 @@ def unpackb(object packed, object object_hook=None, object list_hook=None):
loads = unpacks = unpackb loads = unpacks = unpackb
def unpack(object stream, object object_hook=None, object list_hook=None): def unpack(object stream, object object_hook=None, object list_hook=None, bint use_list=0):
"""unpack an object from stream.""" """unpack an object from stream."""
return unpackb(stream.read(), return unpackb(stream.read(), use_list=use_list,
object_hook=object_hook, list_hook=list_hook) object_hook=object_hook, list_hook=list_hook)
cdef class UnpackIterator(object): cdef class UnpackIterator(object):