cdef struct Grail cdef struct Spam: int i char c float *p[42] Grail *g cdef struct Grail: Spam *s cdef Spam spam, ham cdef void eggs_i(Spam s): cdef int j j = s.i s.i = j cdef void eggs_c(Spam s): cdef char c c = s.c s.c = c cdef void eggs_p(Spam s): cdef float *p p = s.p[0] s.p[0] = p cdef void eggs_g(Spam s): cdef float *p p = s.p[0] s.p[0] = p spam = ham def test_i(): """ >>> test_i() """ spam.i = 1 eggs_i(spam) def test_c(): """ >>> test_c() """ spam.c = c'a' eggs_c(spam) def test_p(): """ >>> test_p() """ cdef float f spam.p[0] = &f eggs_p(spam) def test_g(): """ >>> test_g() """ cdef Grail l spam.g = &l eggs_g(spam) cdef struct Ints: int a, b def assign_fields_in_loop(): """ >>> assign_fields_in_loop() 2 """ cdef int i = 0 cdef Ints s for s.a, s.b in enumerate(range(3)): assert s.a == s.b assert s.a == i i += 1 assert s.a == s.b return s.b