mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-22 04:20:17 +00:00
...
This commit is contained in:
parent
d23401f77b
commit
577f7b4d0e
@ -447,9 +447,7 @@ inline void add_module_c(VM* vm){
|
|||||||
|
|
||||||
vm->bind_func<3>(mod, "memset", [](VM* vm, ArgsView args){
|
vm->bind_func<3>(mod, "memset", [](VM* vm, ArgsView args){
|
||||||
void* p = CAST(void*, args[0]);
|
void* p = CAST(void*, args[0]);
|
||||||
i64 c = CAST(i64, args[1]);
|
memset(p, CAST(int, args[1]), CAST(size_t, args[2]));
|
||||||
i64 size = CAST(i64, args[2]);
|
|
||||||
memset(p, c, size);
|
|
||||||
return vm->None;
|
return vm->None;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
35
tests/80_c.py
Normal file
35
tests/80_c.py
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
import c
|
||||||
|
|
||||||
|
c_int = c.refl("int")
|
||||||
|
assert c_int.size() == c.sizeof("int")
|
||||||
|
array = c.malloc(c.sizeof("int") * 10)
|
||||||
|
array.set_base_offset("int")
|
||||||
|
|
||||||
|
assert array.get_base_offset() == c_int.size()
|
||||||
|
|
||||||
|
for i in range(10):
|
||||||
|
array.offset(i).write_int(i)
|
||||||
|
|
||||||
|
x = c_int()
|
||||||
|
x.addr().write_int(0)
|
||||||
|
for i in range(10):
|
||||||
|
i = array.offset(i).read_int()
|
||||||
|
x.addr().write_int(
|
||||||
|
x.addr().read_int() + i
|
||||||
|
)
|
||||||
|
|
||||||
|
assert x.addr().read_int() == (0+9)*10//2
|
||||||
|
|
||||||
|
c.memset(array, 0, c.sizeof("int") * 10)
|
||||||
|
|
||||||
|
for i in range(10):
|
||||||
|
assert array.offset(i).read_char() == 0
|
||||||
|
|
||||||
|
array2 = c.malloc(c.sizeof("int") * 10)
|
||||||
|
array2.set_base_offset("int")
|
||||||
|
c.memcpy(array2, array, c.sizeof("int") * 10)
|
||||||
|
for i in range(10):
|
||||||
|
assert array2.offset(i).read_char() == 0
|
||||||
|
|
||||||
|
c.free(array)
|
||||||
|
c.free(array2)
|
Loading…
x
Reference in New Issue
Block a user