Hi folks, Since the original question, I've created a pull request with a failing test and tried to get some discussion going, but so far no answer. I'm a tad discouraged, since obviously there's movement on mail list and with pull requests. Is a pull request a proper way to do this? I completely understand if you guys don't have enough available time to deal with it right now, however at least some acknowledgement and feedback would be much appreciated.
Thanks, Dimitri. On Sun, Dec 18, 2011 at 8:17 PM, Dimitri Tcaciuc <dtcac...@gmail.com> wrote: > Hello everyone, > > Here's a small test case I'm trying to compile. I'm trying to pass a > STL set reference to a method in a template class. > > x.pyx: > > from libcpp.set cimport set as cpp_set > > cdef extern from "x.hh": > > cdef cppclass Foo [T]: > Foo() > void set_x(cpp_set[size_t] & x) > > cpdef func(): > cdef Foo[int] foo > > cdef cpp_set[size_t] x > cdef cpp_set[size_t] & xref = x > > foo.set_x(xref) > > x.hh: > > #include <set> > > template <typename T> > struct Foo { > void set_x(const std::set<size_t> & x) { /* do nothing */ } > }; > > To compile, > > bash $ cython --cplus x.pyx > > Which results in > > foo.set_x(xref) > ^ > ------------------------------------------------------------ > x.pyx:15:18: Cannot assign type 'set<size_t> &' to 'set<size_t>' > > > However, if I remove the template parameter from Foo, everything works. > > > y.pyx: > > from libcpp.set cimport set as cpp_set > > cdef extern from "y.hh": > > cdef cppclass Foo: > Foo() > void set_x(cpp_set[size_t] & x) > > cpdef func(): > cdef Foo foo > > cdef cpp_set[size_t] x > cdef cpp_set[size_t] & xref = x > > foo.set_x(xref) > > y.hh: > > #include <set> > > struct Foo { > void set_x(const std::set<size_t> & x) { /* do nothing */ } > }; > > > From what I can tell, the CppClassType instance the CReferenceType is > pointing to has the correct name "set<size_t>", however it's a > different class instance. The particular failing expression is in > `ExprNode.coerce_to` > > if not (str(src.type) == str(dst_type) or > dst_type.assignable_from(src_type)) > > > I wish I could suggest a patch, but unfortunately I'm a complete > newbie to Cython internals. Perhaps someone could give a few pointers > as to what should be done to fix this? > > Thanks, > > > Dimitri _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel