2
# tag: cpp, werror, no-cpp-locals
3
# cython: experimental_cpp_class_def=True
5
from libcpp.vector cimport vector
7
cdef cppclass Wrapper[T]:
17
def test_const_get(int x):
19
>>> test_const_get(10)
22
cdef const Wrapper[int] *wrapper = new Wrapper[int](x)
24
return const_get(wrapper[0])
28
cdef int const_get(const Wrapper[int] wrapper):
31
def test_const_ref_get(int x):
33
>>> test_const_ref_get(100)
36
cdef const Wrapper[int] *wrapper = new Wrapper[int](x)
38
return const_ref_get(wrapper[0])
42
cdef int const_ref_get(const Wrapper[int] &wrapper):
45
def test_const_pointer_get(int x):
47
>>> test_const_pointer_get(1000)
50
cdef Wrapper[int] *wrapper = new Wrapper[int](x)
51
cdef const Wrapper[int] *const_wrapper = wrapper
53
return const_wrapper.get()
58
# TODO: parse vector[Wrapper[int]*]
59
ctypedef Wrapper[int] wrapInt
61
def test_vector_members(py_a, py_b):
63
>>> test_vector_members([1, 2, 3], [4,5, 6])
66
cdef Wrapper[int] *value
67
cdef const Wrapper[int] *const_value
68
cdef vector[const Wrapper[int]*] a
69
cdef vector[wrapInt*] b
71
a.push_back(new Wrapper[int](x))
73
b.push_back(new Wrapper[int](x))
75
return vector_members(a, b)
82
cdef vector_members(vector[const Wrapper[int]*] a, const vector[wrapInt*] b):
83
# TODO: Cython-level error.
86
# TODO: const_iterator
87
return [x.get() for x in a], b[0].get()