Cython doesn't support overloaded functions, but C++ libraries readily use this feature. Cython does provide a very simple way to alias these functions which we illustrate with an example borrowed from the NTL wrapper code.
cdef extern from "ntl_wrap.h":
# really, this is from NTL/ZZ.h
ctypedef struct ZZ_c "struct ZZ":
pass
void ZZ_add "add"( ZZ_c x, ZZ_c a, ZZ_c b)
#### ZZ_p_c
ctypedef struct ZZ_p_c "struct ZZ_p":
pass
void ZZ_p_add "add"( ZZ_p_c x, ZZ_p_c a, ZZ_p_c b)
Notice that NTL supports the add function for all of its many types.
We rename them for use in Cython as <Type>_add where <Type>
is the NTL type name of the objects being added.
Another type of aliasing in that example is the structure ZZ is called
ZZ_c. We did this simply to alleviate confusion with the Sage integer
class commonly known as ZZ. This trick is also useful if you have a
C++ library that uses namespaces. (Actually NTL does use namespaces,
but we were lazy and instead inserted a using namespaces NTL; in
a header file).
See About this document... for information on suggesting changes.