[Cython] Fused Types
Pauli Virtanen
pav at iki.fi
Fri Apr 29 11:03:57 CEST 2011
Fri, 29 Apr 2011 10:23:55 +0200, mark florisson wrote:
[clip]
> Ok, branching on the type sounds fine to me. It brings one problem
> though: because you cannot declare the variables of your variable type
> (the type of say, mystruct.attrib), you will need to do multiple
> declarations outside of your branches. So in my example:
>
> cdef func(struct_t mystruct, int i):
> cdef string_t string_var
> cdef int int_var
>
> if typeof(mystruct) is typeof(int):
> int_var = mystruct.attrib + i
> ...
> else:
> string_var = mystruct.attrib + i
> ...
>
> But this is probably not a common case, so likely not an issue.
Are you planning to special-case the "real_t complex" syntax? Shooting
from the sidelines, one more generic solution might be, e.g.,
ctypedef cython.fused_type(A, B) struct_t
ctypedef cython.fused_type(float, double, paired=struct_t) real_t
ctypedef cython.fused_type(int_t, string_t, paired=struct_t) var_t
and just restrict the specialization to cases that make sense.
--
Pauli Virtanen
More information about the cython-devel
mailing list