Obsolete %CLASS% encoder.
"""
cdef %PREFIX%_ctx ctx
- def __cinit__(me, *hunoz, **hukairz):
+ def __cinit__(me):
_%PREFIX%_init(&me.ctx)
me.ctx.indent = NULL
+ def __dealloc__(me):
+ if me.ctx.indent:
+ xfree(<void *>me.ctx.indent)
def __init__(me, indent = '\n', maxline = 72):
if me.ctx.indent:
xfree(<void *>me.ctx.indent)
- me.ctx.indent = xstrdup(indent)
+ me.ctx.indent = xstrdup(TEXT_PTR(indent))
me.ctx.maxline = maxline
- def __dealloc__(me):
+ @property
+ def indent(me):
+ """E.indent -> INT: indent level for new lines"""
+ return me.ctx.indent
+ @indent.setter
+ def indent(me, indent):
if me.ctx.indent:
xfree(<void *>me.ctx.indent)
- property indent:
- """E.indent -> INT: indent level for new lines"""
- def __get__(me):
- return me.ctx.indent
- def __set__(me, indent):
- if me.ctx.indent:
- xfree(<void *>me.ctx.indent)
- me.ctx.indent = xstrdup(indent)
- property maxline:
+ if indent is None:
+ me.ctx.indent = NULL
+ else:
+ me.ctx.indent = xstrdup(TEXT_PTR(indent))
+ @property
+ def maxline(me):
"""E.maxline -> INT: maximum length of line, or 0 to prevent splitting"""
- def __get__(me):
- return me.ctx.maxline
- def __set__(me, maxline):
+ return me.ctx.maxline
+ @maxline.setter
+ def maxline(me, maxline):
me.ctx.maxline = maxline
- def encode(me, text):
+ def encode(me, input):
"""E.encode(IN) -> OUT: continue encoding"""
- cdef void *p
- cdef Py_ssize_t len
+ cdef const void *p
+ cdef Py_ssize_t sz
cdef dstr d
DCREATE(&d)
try:
- PyObject_AsReadBuffer(text, <cvp *>&p, &len)
- _%PREFIX%_encode(&me.ctx, p, len, &d)
- rc = PyString_FromStringAndSize(d.buf, d.len)
+ PyObject_AsReadBuffer(input, &p, &sz)
+ _%PREFIX%_encode(&me.ctx, p, sz, &d)
+ return TEXT_FROMSTRLEN(d.buf, d.len)
finally:
dstr_destroy(&d)
- return rc
def done(me):
"""E.done() -> OUT: finish encoding, returning final output"""
cdef dstr d
DCREATE(&d)
try:
_%PREFIX%_encode(&me.ctx, NULL, 0, &d)
- rc = PyString_FromStringAndSize(d.buf, d.len)
+ return TEXT_FROMSTRLEN(d.buf, d.len)
finally:
dstr_destroy(&d)
- return rc
-def %PREFIX%_encode(text, *arg, **kw):
+def %PREFIX%_encode(input, *arg, **kw):
"""%PREFIX%_encode(IN, [ARGS...]) -> OUT: %CLASS%-encode the string IN"""
e = %CLASS%Encode(*arg, **kw)
- return e.encode(text) + e.done()
+ return e.encode(input) + e.done()
cdef class %CLASS%Decode:
"""
Obsolete %CLASS% decoder.
"""
cdef %PREFIX%_ctx ctx
- def __cinit__(me, *hunoz, **hukairz):
+ def __cinit__(me):
_%PREFIX%_init(&me.ctx)
me.ctx.indent = NULL
- def decode(me, text):
+ def decode(me, input):
"""D.encode(IN) -> OUT: continue decoding"""
- cdef void *p
- cdef Py_ssize_t len
+ cdef const char *p
+ cdef Py_ssize_t sz
cdef dstr d
DCREATE(&d)
try:
- PyObject_AsReadBuffer(text, <cvp *>&p, &len)
- _%PREFIX%_decode(&me.ctx, p, len, &d)
- rc = PyString_FromStringAndSize(d.buf, d.len)
+ TEXT_PTRLEN(input, &p, &sz)
+ _%PREFIX%_decode(&me.ctx, p, sz, &d)
+ return BIN_FROMSTRLEN(d.buf, d.len)
finally:
dstr_destroy(&d)
- return rc
def done(me):
"""D.done() -> OUT: finish decoding, returning final output"""
cdef dstr d
DCREATE(&d)
try:
_%PREFIX%_decode(&me.ctx, NULL, 0, &d)
- rc = PyString_FromStringAndSize(d.buf, d.len)
+ return BIN_FROMSTRLEN(d.buf, d.len)
finally:
dstr_destroy(&d)
- return rc
-def %PREFIX%_decode(text, *arg, **kw):
+def %PREFIX%_decode(input, *arg, **kw):
"""%PREFIX%_decode(IN) -> OUT: %CLASS%-decode the string IN"""
d = %CLASS%Decode(*arg, **kw)
- return d.decode(text) + d.done()
+ return d.decode(input) + d.done()
###----- That's all, folks --------------------------------------------------