2013-08-21 163 views
1

我有一個用Cython功能,我想在一個序列化功能,作爲參數傳遞:傳遞用Cython功能用Cython功能

cdef my_serializer(serialization_func, data): 
    return serialization_func(data) 

所有我將要處理與串行器(msgpack,ujson )也是C/cython函數。聲明serialization_func的正確方法是什麼,以便Cython可以進行早期綁定?

+0

如果'serialization_func'是一個函數,你爲什麼調用一個方法來做序列化? – user2357112

+0

你是完全正確的,那dumps()不應該在那裏。編輯 –

回答

1

這個工作,是合理的可讀性:

ctypedef void (*SERIALIZATION_FUNC)(char *data) 

cdef void my_serializer(SERIALIZATION_FUNC func, char *data): 
    func(data) 

或者,如果你真的想使用Python對象作爲參數和返回值

ctypedef object (*SERIALIZATION_FUNC)(object data) 

cdef my_serializer(SERIALIZATION_FUNC func, data): 
    return func(data)