<?xml version="1.0" ?><html>
<head>
<title></title>
</head>
<body>
<div align="left"><font face="Arial"><span style="font-size:10pt">On 14 Apr 2005 at 11:33, Alain Pointdexter wrote:</span></font></div>
<div align="left"><br/></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">> This is a follow-up for the post from Lenard</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">> Lindstrom. I experimented with his code and it indeed</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">> works. However, when i tried to elaborate on it and</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">> import a Pyrex module from the main function, i get a</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">> segmentation fault. </span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">A quick test importing zlib and one of my Pyrex modules</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">from within main() caused no problems for me ( Pyrex 0.9.3,</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">VC6 and Python 2.3).</span></font></div>
<div align="left"><br/></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">> There seems to be no way to cimport modules except for</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">> including them verbatim, which of course is unfeasible</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">> for any serious project.</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">></span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">This simple example taken from the Pyrex docs ran for me:</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">============ dishes.pxd =================</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">cdef enum otherstuff:</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">    sausage, eggs, lettuce</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">cdef struct spamdish:</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">    int oz_of_spam</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">    otherstuff filler</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">============ restaurant.pyx ===============</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">include "main.pxi"</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">cimport dishes</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">from dishes cimport spamdish</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">cdef void prepare(spamdish *d):</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">    d.oz_of_spam = 42</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">    d.filler = dishes.sausage</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">def serve():</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">    cdef spamdish d</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">    prepare(&d)</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">    print "%d oz spam, filler no. %d." % \</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">          (d.oz_of_spam, d.filler)</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">def main(arglist):</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">    serve()</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">    return 0</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">=========================================</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">dishes.pxd and restaurant.pyx were in the same directory.</span></font></div>
<div align="left"><br/></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">> PS: I forgot to mention. The post i am talking about</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">> is from October 2004. </span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">></span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">This is just a guess but how are you defining the C macro</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">__pymoduleinit__? In the above restaurant.pyx example</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">__pymoduleinit__ must be defined as initrestaurant, the name</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">of the module initialization function that Pyrex generates. If</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">this function is not called then any module level stuff will not</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">work. The macro can be defined with a command line option</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">to the C compiler. Of course without it the code would probably</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">not compile.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">I must admit though I did post the code without any real testing</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">so there could be serious limitations. It was to show that Pyrex</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">could be more than just a language for writing Python extension</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">modules. I apologize if this has wasted anyone's time.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">Lenard Lindstrom</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt"><</span></font><font face="Arial" color="#008000"><span style="font-size:10pt"><u>len-l@telus.net</u></span></font><font
face="Arial"><span style="font-size:10pt">></span></font></div>
<div align="left"><br/></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">P.S. Sorry Alain for accidently sending the first copy of this</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">directly to your mailbox. My current e-mail client does not</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">handle mailing lists as automatically as an earlier one I used.</span></font></div>
<div align="left"></div>
</body>
</html>