Blame tests/run/cpp_nested_templates.pyx

Packit 562c7a
# mode: run
Packit 562c7a
# tag: cpp, werror
Packit 562c7a
Packit 562c7a
from cython.operator cimport dereference as deref
Packit 562c7a
Packit 562c7a
cdef extern from "cpp_templates_helper.h":
Packit 562c7a
    cdef cppclass Wrap[T]:
Packit 562c7a
        Wrap(T)
Packit 562c7a
        void set(T)
Packit 562c7a
        T get()
Packit 562c7a
        bint operator==(Wrap[T])
Packit 562c7a
Packit 562c7a
    cdef cppclass Pair[T1,T2]:
Packit 562c7a
        Pair(T1,T2)
Packit 562c7a
        T1 first()
Packit 562c7a
        T2 second()
Packit 562c7a
        bint operator==(Pair[T1,T2])
Packit 562c7a
        bint operator!=(Pair[T1,T2])
Packit 562c7a
Packit 562c7a
def test_wrap_pair(int i, double x):
Packit 562c7a
    """
Packit 562c7a
    >>> test_wrap_pair(1, 1.5)
Packit 562c7a
    (1, 1.5, True)
Packit 562c7a
    >>> test_wrap_pair(2, 2.25)
Packit 562c7a
    (2, 2.25, True)
Packit 562c7a
    """
Packit 562c7a
    try:
Packit 562c7a
        wrap = new Wrap[Pair[int, double]](Pair[int, double](i, x))
Packit 562c7a
        return wrap.get().first(), wrap.get().second(), deref(wrap) == deref(wrap)
Packit 562c7a
    finally:
Packit 562c7a
        del wrap
Packit 562c7a
Packit 562c7a
def test_wrap_pair_pair(int i, int j, double x):
Packit 562c7a
    """
Packit 562c7a
    >>> test_wrap_pair_pair(1, 3, 1.5)
Packit 562c7a
    (1, 3, 1.5, True)
Packit 562c7a
    >>> test_wrap_pair_pair(2, 5, 2.25)
Packit 562c7a
    (2, 5, 2.25, True)
Packit 562c7a
    """
Packit 562c7a
    try:
Packit 562c7a
        wrap = new Wrap[Pair[int, Pair[int, double]]](
Packit 562c7a
                        Pair[int, Pair[int, double]](i,Pair[int, double](j, x)))
Packit 562c7a
        return (wrap.get().first(),
Packit 562c7a
                wrap.get().second().first(),
Packit 562c7a
                wrap.get().second().second(),
Packit 562c7a
                deref(wrap) == deref(wrap))
Packit 562c7a
    finally:
Packit 562c7a
        del wrap