1cdef struct Grail 2 3cdef struct Spam: 4 int i 5 char c 6 float *p[42] 7 Grail *g 8 9cdef struct Grail: 10 Spam *s 11 12cdef Spam spam, ham 13 14cdef void eggs_i(Spam s): 15 cdef int j 16 j = s.i 17 s.i = j 18 19cdef void eggs_c(Spam s): 20 cdef char c 21 c = s.c 22 s.c = c 23 24cdef void eggs_p(Spam s): 25 cdef float *p 26 p = s.p[0] 27 s.p[0] = p 28 29cdef void eggs_g(Spam s): 30 cdef float *p 31 p = s.p[0] 32 s.p[0] = p 33 34spam = ham 35 36def test_i(): 37 """ 38 >>> test_i() 39 """ 40 spam.i = 1 41 eggs_i(spam) 42 43def test_c(): 44 """ 45 >>> test_c() 46 """ 47 spam.c = c'a' 48 eggs_c(spam) 49 50def test_p(): 51 """ 52 >>> test_p() 53 """ 54 cdef float f 55 spam.p[0] = &f 56 eggs_p(spam) 57 58def test_g(): 59 """ 60 >>> test_g() 61 """ 62 cdef Grail l 63 spam.g = &l 64 eggs_g(spam) 65 66 67cdef struct Ints: 68 int a, b 69 70def assign_fields_in_loop(): 71 """ 72 >>> assign_fields_in_loop() 73 2 74 """ 75 cdef int i = 0 76 cdef Ints s 77 for s.a, s.b in enumerate(range(3)): 78 assert s.a == s.b 79 assert s.a == i 80 i += 1 81 82 assert s.a == s.b 83 return s.b 84