80_c.py 754 B

1234567891011121314151617181920212223242526272829303132333435
  1. import c
  2. c_int = c.refl("int")
  3. assert c_int.size() == c.sizeof("int")
  4. array = c.malloc(c.sizeof("int") * 10)
  5. array.set_base_offset("int")
  6. assert array.get_base_offset() == c_int.size()
  7. for i in range(10):
  8. array.offset(i).write_int(i)
  9. x = c_int()
  10. x.addr().write_int(0)
  11. for i in range(10):
  12. i = array.offset(i).read_int()
  13. x.addr().write_int(
  14. x.addr().read_int() + i
  15. )
  16. assert x.addr().read_int() == (0+9)*10//2
  17. c.memset(array, 0, c.sizeof("int") * 10)
  18. for i in range(10):
  19. assert array.offset(i).read_char() == 0
  20. array2 = c.malloc(c.sizeof("int") * 10)
  21. array2.set_base_offset("int")
  22. c.memcpy(array2, array, c.sizeof("int") * 10)
  23. for i in range(10):
  24. assert array2.offset(i).read_char() == 0
  25. c.free(array)
  26. c.free(array2)