Source

cy-cxxfwk / cy / cyfwk.pyx

Full commit
Sebastien Binet feb1a80 




Sebastien Binet 146ca48 









Sebastien Binet feb1a80 




Sebastien Binet 146ca48 
Sebastien Binet feb1a80 

Sebastien Binet 146ca48 
Sebastien Binet feb1a80 


Sebastien Binet 146ca48 
Sebastien Binet feb1a80 
Sebastien Binet 146ca48 
Sebastien Binet feb1a80 


Sebastien Binet 146ca48 

Sebastien Binet feb1a80 




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

cdef class AlgBase:
    cdef CyAlgBase* alg
    def __init__(self):
        print("--> AlgBase.init")
        self.alg = new CyAlgBase(
            <cpy_ref.PyObject*>self,
            <RunFct>cy_run_fct)
    def run(self):
        self.alg.run()
        pass
    def run_impl(self):
        pass

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

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

cdef public api IAlg* cy_create_alg():
    cdef AlgBase cyalg = MyAlg(42)
    return <IAlg*>(cyalg.alg)

print("==> cyfwk module imported")