Source

cy-cxxfwk / cy / cyfwk.pyx

cimport cyfwk
cimport cpython.ref as cpy_ref
#cimport cpython.cobject as cpy_cobj

cdef class AlgBase:
    cdef void run(self):
        pass

cdef void cy_run_fct(void *ptr):
    cdef AlgBase alg = <AlgBase>(ptr)
    print("--> cy_run_fct...")
    alg.run()
    print("--> cy_run_fct...[done]")

cdef class myalg(AlgBase):
    cdef int i
    def __init__(self, i=-1):
        self.i = i
        print("--- self.i: %i" % self.i)
    cdef void run(self):
        print("--- myalg.run => %i" % self.i)

cdef public api IAlg* cy_create_alg():
    cdef AlgBase cyalg = myalg(42)
    cdef CyAlgBase* alg = new CyAlgBase(
        <cpy_ref.PyObject*>cyalg,
        <RunFct>cy_run_fct)
    return <IAlg*>(alg)

def create_alg():
    print "==="
    cy_create_alg()
    print "==="

print("==> cyfwk module imported")