Robert Bradshaw, 08.02.2010 20:20:
> On Feb 8, 2010, at 10:57 AM, Robert Bradshaw wrote:
>
>> On Feb 8, 2010, at 7:33 AM, Stefan Behnel wrote:
>>
>>> The exact error depends on the order in which I declare the two
>>> methods. It
>>> seems that the last declaration wins. And Cython also doesn't
>>> complain
>>> about the constructor call right two methods above, so that seems to
>>> have
>>> worked.
>>>
>>> Is this supposed to work for regular C++ methods?
>> Yes, this should have worked. I'm surprised there aren't any tests for
>> this...
>
> OK, pushed a quick fix: http://hg.cython.org/cython-devel/rev/94c13764ba4a
Ok, that got me past this problem. The next one was that I was using
self.multiplier = testapi.Multiplier()
by habit, instead of
self.multiplier = new testapi.Multiplier()
This lead to an "<error>" being generated in the code, but no error shown
on the output.
After figuring that out, I got this:
Error converting Pyrex file to C:
------------------------------------------------------------
...
cdef class Multiplier:
cdef testapi.Multiplier* multiplier
def __cinit__(self, factor=None):
if factor is None:
self.multiplier = new testapi.Multiplier()
^
------------------------------------------------------------
.../pytestapi.pyx:9:54: Expected ')'
Totally weird kind of error, given that it points to the closing
parenthesis already.
The second error I got says: "Invalid conversion from 'Python object' to
'double'", which is something that should *always* work. I get the same
error for other numeric types in other tests. Looks like Python object
conversion is broken in cython-devel.
It seems to me that the new C++ support is lacking a lot of important
tests. I added a naming convention to the test runner that finds related
".c" and ".cpp" source files in the same test directory if they start with
the module name plus an underscore, i.e. a set of files like this:
cppwrap_lib.cpp
cppwrap_lib.h
cppwrap_lib.pxd
cppwrap.pyx
will create a module based on the source files "cppwrap.cpp" and
"cppwrap_lib.cpp". That should make it easy enough to write tests for
wrapper code.
I also added a new directory "tests/wrappers" to keep the multi-file
wrapper tests somewhat separated from the single-source-file tests in
"tests/run". I added two tests similar (but not legally related) to the
PyBindGen benchmark (which is LGPLed), one with overloaded methods, the
other one without. Both are currently failing (and disabled in bugs.txt).
Stefan
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev