chiark / gitweb /
Fix qualified names for types supplied by C.
[mLib-python] / codec.pyx.in
index 60d971473785ed380af6fc7a3d160671a59a5911..e68323327b12201a316a7da982a9a98d010a8291 100644 (file)
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; either version 2 of the License, or
 # (at your option) any later version.
-# 
+#
 # mLib/Python is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
-# 
+#
 # You should have received a copy of the GNU General Public License
 # along with mLib/Python; if not, write to the Free Software Foundation,
 # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 #----- 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:
@@ -65,7 +49,7 @@ cdef class Encode:
     me.ctx.maxline = maxline
   def __dealloc__(me):
     if me.ctx.indent:
-      xfree(me.ctx.indent)    
+      xfree(me.ctx.indent)
   property indent:
     def __get__(me):
       return 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,15 +109,15 @@ 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  
+    return rc
 
-def decode(text, *arg, **kw):
-  d = Decode(*arg, **kw)
-  return e.decode(text) + d.done()
+def %PREFIX%_decode(text, *arg, **kw):
+  d = %CLASS%Decode(*arg, **kw)
+  return d.decode(text) + d.done()
 
 #----- That's all, folks ----------------------------------------------------