У меня есть массив значений с плавающей запятой, созданный в обычном Python, который я хочу передать функции cython, которая выступает за базовую функцию C. Функция C требует, чтобы массив передавался в виде плавающего указателя, как в :
void setOverlays(const float * verts);
. обертка cython выглядит так:
def set_overlays(verts):
setOverlays(verts)
Как я могу превратить верты в массив cython? Я подумал, что это может сработать:
cdef float * cVerts = [v for v in verts]
но, к сожалению, сгенерированное значение является объектом Python, и в этом случае автоматическое преобразование не работает.
Эквивалентное выражение (, которое работает )в ctypes::
cVerts = (c_float * len(verts))()
for i in range(len(verts)):
cVerts[i] = verts[i]
setOverlays(cast(byteref(cVerts), POINTER(c_float)))
Я пытаюсь добиться того же, но в cython
Заранее спасибо!