chiark / gitweb /
General reorganization.
[mLib-python] / codec.pyx.in
index 60d9714..ebbb38e 100644 (file)
 
 #----- External dependencies ------------------------------------------------
 
-cdef extern from 'stddef.h':
-  ctypedef int size_t
-
-cdef extern from 'mLib/dstr.h':
-  ctypedef struct dstr:
-    char *buf
-    int len
-  void DCREATE(dstr *d)
-  void dstr_destroy(dstr *d)
-
-cdef extern from 'mLib/alloc.h':
-  char *xstrdup(char *p)
-  void xfree(void *p)
-
 cdef extern from 'mLib/%PREFIX%.h':
   ctypedef struct %PREFIX%_ctx:
     char *indent
     int maxline
-  void %PREFIX%_init(%PREFIX%_ctx *b)
-  void %PREFIX%_encode(%PREFIX%_ctx *b, void *p, size_t sz, dstr *d)
-  void %PREFIX%_decode(%PREFIX%_ctx *b, void *p, size_t sz, dstr *d)
-
-cdef extern from 'Python.h':
-  int PyObject_AsReadBuffer(obj, void **buf, int *len) except -1
-  object PyString_FromStringAndSize(char *p, int len)
+  void _%PREFIX%_init "%PREFIX%_init"(%PREFIX%_ctx *b)
+  void _%PREFIX%_encode "%PREFIX%_encode"(%PREFIX%_ctx *b,
+                                          void *p, size_t sz, dstr *d)
+  void _%PREFIX%_decode"%PREFIX%_decode"(%PREFIX%_ctx *b,
+                                         void *p, size_t sz, dstr *d)
 
-cdef class Encode:
+cdef class %CLASS%Encode:
   cdef %PREFIX%_ctx ctx
   def __new__(me, *hunoz, **hukairz):
-    %PREFIX%_init(&me.ctx)
+    _%PREFIX%_init(&me.ctx)
     me.ctx.indent = NULL
   def __init__(me, indent = '\n', maxline = 72):
     if me.ctx.indent:
@@ -85,7 +69,7 @@ cdef class Encode:
     DCREATE(&d)
     try:
       PyObject_AsReadBuffer(text, &p, &len)
-      %PREFIX%_encode(&me.ctx, p, len, &d)
+      _%PREFIX%_encode(&me.ctx, p, len, &d)
       rc = PyString_FromStringAndSize(d.buf, d.len)
     finally:
       dstr_destroy(&d)
@@ -94,20 +78,20 @@ cdef class Encode:
     cdef dstr d
     DCREATE(&d)
     try:
-      %PREFIX%_encode(&me.ctx, NULL, 0, &d)
+      _%PREFIX%_encode(&me.ctx, NULL, 0, &d)
       rc = PyString_FromStringAndSize(d.buf, d.len)
     finally:
       dstr_destroy(&d)
     return rc
 
-def encode(text, *arg, **kw):
-  e = Encode(*arg, **kw)
+def %PREFIX%_encode(text, *arg, **kw):
+  e = %CLASS%Encode(*arg, **kw)
   return e.encode(text) + e.done()
 
-cdef class Decode:
+cdef class %CLASS%Decode:
   cdef %PREFIX%_ctx ctx
   def __new__(me, *hunoz, **hukairz):
-    %PREFIX%_init(&me.ctx)
+    _%PREFIX%_init(&me.ctx)
     me.ctx.indent = NULL
   def decode(me, text):
     cdef void *p
@@ -116,7 +100,7 @@ cdef class Decode:
     DCREATE(&d)
     try:
       PyObject_AsReadBuffer(text, &p, &len)
-      %PREFIX%_decode(&me.ctx, p, len, &d)
+      _%PREFIX%_decode(&me.ctx, p, len, &d)
       rc = PyString_FromStringAndSize(d.buf, d.len)
     finally:
       dstr_destroy(&d)
@@ -125,14 +109,14 @@ cdef class Decode:
     cdef dstr d
     DCREATE(&d)
     try:
-      %PREFIX%_decode(&me.ctx, NULL, 0, &d)
+      _%PREFIX%_decode(&me.ctx, NULL, 0, &d)
       rc = PyString_FromStringAndSize(d.buf, d.len)
     finally:
       dstr_destroy(&d)
     return rc  
 
-def decode(text, *arg, **kw):
-  d = Decode(*arg, **kw)
+def %PREFIX%_decode(text, *arg, **kw):
+  d = %CLASS%Decode(*arg, **kw)
   return e.decode(text) + d.done()
 
 #----- That's all, folks ----------------------------------------------------