On Thu, Jul 24, 2014 at 2:07 PM, Robert Bradshaw <rober...@gmail.com> wrote:
> On Fri, Jul 18, 2014 at 12:44 PM, Robert Bradshaw <rober...@gmail.com> > wrote: > > On Fri, Jul 18, 2014 at 12:08 PM, Kurt Smith <kwmsm...@gmail.com> wrote: > >> On Wed, Jul 16, 2014 at 1:02 PM, Robert Bradshaw <rober...@gmail.com> > wrote: > >>> > >>> > >>> Yes, this'd be nice to have. One difficulty with arrays is that they > >>> can't be returned by value, and so the ordinary from_py_function > >>> mechanism (which gets called recursively) would need to be adapted. > >>> (Allowing to_py_function to be optinally be called by reference > >>> instead of by value could be nice as well from a performance > >>> standpoint.) > >> > >> > >> OK, thanks for the pointers. I'll put some time on this over the > weekend. > >> Should I just make a PR when things are ready to review, or should I > put up > >> an issue first? > > > > I think this thread is sufficient; looking forward to a pull request. > > Don't know if you had time to look at this yet, Yes, I've put in some time. Initial focus is getting cdef int a[10] = obj working, and then using that for structs. Took a little while to re-orient myself with the codebase. I'm working on getting the `to_py_function` and `from_py_function` infrastructure to take arguments by reference; right now I'm getting something hacked into place, and I'd appreciate your review to point out the right way (or at least a better way) to do it. Will likely have a PR for you by this weekend. > but another possible > hack would be to use the fact that struct { int x[N]; } is bit > compatible with int[N] and can be passed/assigned by value. E.g. > Yes, this is a good point, although if I can get the pass-by-reference working for fixed-size arrays, ideally we can do the same for structs with array members. > > struct wrapped_array { > int x[3]; > }; > > int main(int argc, char** argv) { > int src[3]; > int dest[3]; > *((struct wrapped_array *) &dest) = *((struct wrapped_array *) &src); > } > > OTOH, it might make sense to simply add array members as a special > case in struct conversion. > > - Robert > _______________________________________________ > cython-devel mailing list > cython-devel@python.org > https://mail.python.org/mailman/listinfo/cython-devel >
_______________________________________________ cython-devel mailing list cython-devel@python.org https://mail.python.org/mailman/listinfo/cython-devel