1# tag: cpp
2
3from libcpp.vector cimport vector
4
5__doc__ = u"""
6   >>> test_lvalue_ref_assignment()
7"""
8
9ctypedef double*  dp
10ctypedef double** dpp
11
12cdef void foo(vector[dpp] &bar, vector[vector[dp]] &baz) nogil:
13    bar[0] = &baz[0][0]
14
15def test_lvalue_ref_assignment():
16    cdef vector[dpp]        bar
17    cdef vector[vector[dp]] baz
18    cdef vector[double]     data = [0.0]
19    cdef dp                 bongle = &data[0]
20
21    bar.resize(1)
22    bar[0] = NULL
23    baz.resize(1)
24    baz[0].resize(1)
25    baz[0][0] = bongle
26
27    foo(bar, baz)
28
29    assert bar[0] == &baz[0][0]
30    assert bar[0][0] == bongle
31