<html>
<font face="Courier New, Courier">Hi,<br><br>
I have a problem with pyrex array management. <br>
I define a type <br>
ctypedef char machaine[10]<br>
And I try to pass an array of this type to a C function with no
success.<br>
Below is my C code and pyrex code.<br>
Please help me or I'm gonna be crazy...<br><br>
Thanks<br><br>
Eric Colleu<br><br>
--- apienc.c --- Begin<br><br>
#include &lt;stdio.h&gt;<br>
#include &quot;apienc.h&quot;<br><br>
void testDeTableauDeString(machaine *montableau, int nbelt)<br>
{<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>int i,
j;<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>printf(&quot;testDeTableauDeString
%d\n&quot;, nbelt);<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>for(i=0;i&lt;nbelt;i++)
{<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>printf(&quot;%d
&quot;, i);<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>for(j=0;j&lt;10;j++)
{<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>printf(&quot;%2.2x
&quot;, montableau[i][j]);<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>}<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>printf(&quot;\n--
%s --\n&quot;, montableau[i]);<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>}<br>
}<br>
--- apienc.c --- End<br>
--- apienc.h --- Begin<br><br>
typedef char machaine[10];<br><br>
void testDeTableauDeString(machaine *montableau, int nbelt);<br><br>
--- apienc.h --- End<br>
--- pywrap.pyx --- Begin<br><br>
import array<br>
cdef extern from &quot;stdlib.h&quot;:<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>void*
malloc(size_t)<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>void
free(void*)<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><br>
cdef extern from &quot;string.h&quot;:<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>void*
memcpy(void*, void*, size_t)<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>void*
memset (void*, int, size_t)<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><br>
cdef extern from &quot;Python.h&quot;:<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>char
*PyString_AsString(object)<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>int
PyObject_AsReadBuffer(object obj, void **buffer, int *buffer_len)<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>object
PyString_FromStringAndSize(char *, int)<br><br>
cdef extern from &quot;apienc.h&quot;:<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>ctypedef
char machaine[10]<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>void
testDeTableauDeString(machaine *montableau, int nbelt)<br><br>
def testapi(stringlist):<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>cdef
machaine *myarray<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>cdef
machaine *p[10]<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>cdef int
buflen<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>for i, s
in enumerate(stringlist):<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>print
&quot;Value of s : &quot; +&nbsp; s<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>PyObject_AsReadBuffer(s,
&lt;void **&gt;&amp;myarray, &amp;buflen)<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>p[i]
= myarray<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>print
&quot;buflen =&quot;, buflen<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>print
&quot;Value of myarray : %s&quot; % PyString_FromStringAndSize(&lt;char
*&gt;myarray, buflen)<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>print
&quot;Value of p : %s&quot; % PyString_FromStringAndSize(&lt;char
*&gt;p[i], buflen)<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>testDeTableauDeString(p[0],
len(stringlist))<br><br>
--- pywrap.pyx --- End<br>
--- test.py --- Begin<br>
import pywrap<br>
pywrap.testapi([&quot;polop&quot;, &quot;pilip&quot;])<br><br>
--- test.py --- End<br>
--- RESULT ---<br>
Value of s : polop<br>
buflen = 5<br>
Value of myarray : polop<br>
Value of p : polop<br>
Value of s : pilip<br>
buflen = 5<br>
Value of myarray : pilip<br>
Value of p : pilip<br>
testDeTableauDeString 2<br>
0 70 6f 6c 6f 70 00 00 00 00 00<br>
-- polop --<br>
1 00 00 03 00 00 00 38 ffffff84 1a 1e<br>
--&nbsp; --<br>
--------------<br>
</font></html>