c++ - Cython wrapping operator<< from multiple namespaces -


how can wrap operator >> overload in cython?

//lib.h namespace lib {     class point     {         friend std::istream &operator >> (std::istream &in, point &pt)         bool operator == (const point &pos) const         ...     } } 

there namespace declared namespace "lib":, how deal std:: namespace?

#lib.pxd cdef extern "lib.h" namespace "lib":     cdef cppclass point:         #friend std::istream &operator >> (std::istream &in, point &pt)         bint operator == (const point &pos) const         ... 

here explains multiple cdef extern blocks possible, don't see how work since cannot redefine class.

i think easiest solution pretend cython operator<< method of std::istream forgetting friend stuff. c++ compiler sort out pieces. here seems working solution (it compiles didn't went way test it):

here lib.h wrapped file:

#include <iostream> namespace lib {     class point {         friend std::istream &operator << (std::istream &in, point);     }; } 

and cython wrapper should follows:

cdef extern "lib.h" namespace "lib":     cdef cppclass point:         pass  cdef extern "<iostream>" namespace "std":     cdef cppclass istream:         istream &operator << (point)      istream cin 

then following file accepted compiler:

cimport lib  def foo():     cdef lib.point bla      lib.cin << bla 

fyi, compiled with:

cython --cplus bla.pyx                   g++ `python-config --cflags` bla.cpp -c 

Comments

Popular posts from this blog

java - WrongTypeOfReturnValue exception thrown when unit testing using mockito -

php - Magento - Deleted Base url key -

android - How to disable Button if EditText is empty ? -