Как сделать ctypedef с слитым dtype - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть следующий typedef

ctypedef fused sa_t:
    np.int32_t
    np.int64_t

В функции с аргументом sa_t у меня есть следующее объявление

cdef vector[pair[sa_t, sa_t]] count

Я хотел бы сделать pair[sa_t, sa_t] больше доступный.

Однако я не могу выполнить ctypedef в этой функции, и мои попытки сделать это снаружи не работают.

1 Ответ

0 голосов
/ 13 апреля 2020

Следующая демка работает нормально (Cython версия 0.29.13), даёт ли она какие-нибудь подсказки?

from libcpp.vector cimport vector
from libcpp.pair cimport pair
cimport numpy as np

ctypedef fused sa_t:
    np.int32_t
    np.int64_t


ctypedef pair[sa_t, sa_t] sa_pair_t
ctypedef vector[sa_pair_t] sa_pairs_t

cdef void func(sa_t value):
    cdef sa_pairs_t sa_pairs
    sa_pairs.push_back(pair[sa_t, sa_t](value, value))
    print(sa_pairs)


func[np.int32_t](1)  # print [(1, 1)]
...