Blame tests/run/cpp_type_inference.pyx

Packit 562c7a
# mode: run
Packit 562c7a
# tag: cpp, werror
Packit 562c7a
Packit 562c7a
cdef extern from "shapes.h" namespace "shapes":
Packit 562c7a
    cdef cppclass Shape:
Packit 562c7a
        float area()
Packit 562c7a
Packit 562c7a
    cdef cppclass Circle(Shape):
Packit 562c7a
        int radius
Packit 562c7a
        Circle(int)
Packit 562c7a
Packit 562c7a
    cdef cppclass Square(Shape):
Packit 562c7a
        Square(int)
Packit 562c7a
Packit 562c7a
from cython cimport typeof
Packit 562c7a
Packit 562c7a
from cython.operator cimport dereference as d
Packit 562c7a
from cython.operator cimport preincrement as incr
Packit 562c7a
from libcpp.vector cimport vector
Packit 562c7a
Packit 562c7a
def test_reversed_vector_iteration(L):
Packit 562c7a
    """
Packit 562c7a
    >>> test_reversed_vector_iteration([1,2,3])
Packit 562c7a
    int: 3
Packit 562c7a
    int: 2
Packit 562c7a
    int: 1
Packit 562c7a
    int
Packit 562c7a
    """
Packit 562c7a
    cdef vector[int] v = L
Packit 562c7a
Packit 562c7a
    it = v.rbegin()
Packit 562c7a
    while it != v.rend():
Packit 562c7a
        a = d(it)
Packit 562c7a
        incr(it)
Packit 562c7a
        print('%s: %s' % (typeof(a), a))
Packit 562c7a
    print(typeof(a))
Packit 562c7a
Packit 562c7a
def test_derived_types(int size, bint round):
Packit 562c7a
    """
Packit 562c7a
    >>> test_derived_types(5, True)
Packit 562c7a
    Shape *
Packit 562c7a
    >>> test_derived_types(5, False)
Packit 562c7a
    Shape *
Packit 562c7a
    """
Packit 562c7a
    if round:
Packit 562c7a
        ptr = new Circle(size)
Packit 562c7a
    else:
Packit 562c7a
        ptr = new Square(size)
Packit 562c7a
    print typeof(ptr)
Packit 562c7a
    del ptr