-
Notifications
You must be signed in to change notification settings - Fork 167
/
Copy pathsizeof_01.py
45 lines (37 loc) · 977 Bytes
/
sizeof_01.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
from lpython import sizeof, i64, i32, f32, f64, c32, c64, i16, ccall, CPtr
@ccall
def cmalloc(bytes: i64) -> CPtr:
pass
@ccall
def cfree(x: CPtr) -> bool:
pass
@ccall
def fill_carray(arr: CPtr, size: i32):
pass
@ccall
def sum_carray(arr: CPtr, size: i32) -> i64:
pass
def test_sizeof():
xi16: i16 = i16(0)
xi: i32 = 0
yi: i64 = i64(0)
xf: f32 = f32(0.0)
yf: f64 = 0.0
xz: c32 = c32(complex(0, 0))
yz: c64 = complex(0, 0)
assert sizeof(xi16) == sizeof(i16)
assert sizeof(xi) == sizeof(i32)
assert sizeof(yi) == sizeof(i64)
assert sizeof(xf) == sizeof(f32)
assert sizeof(yf) == sizeof(f64)
assert sizeof(xz) == sizeof(c32)
assert sizeof(yz) == sizeof(c64)
def test_c_array():
summed_up: i64
carray: CPtr = cmalloc(sizeof(i64) * i64(100))
fill_carray(carray, 100)
summed_up = sum_carray(carray, 100)
print(summed_up)
assert summed_up == int(5050)
test_sizeof()
test_c_array()