add malloc stubs
[m6w6/ext-psi] / psi.d / stdlib.psi
1 function psi\abs(int $i) : int {
2 let n = intval($i);
3 return to_int(abs);
4 }
5
6 function psi\div(int $numerator, int $denominator) : array {
7 let numerator = intval($numerator);
8 let denominator = intval($denominator);
9 pre_assert denominator != 0;
10 return to_array(div, to_int(quot), to_int(rem));
11 }
12
13 function psi\ldiv(int $numerator, int $denominator) : array {
14 let numerator = intval($numerator);
15 let denominator = intval($denominator);
16 pre_assert denominator != 0;
17 return to_array(ldiv, to_int(quot), to_int(rem));
18 }
19
20 function psi\lldiv(int $numerator, int $denominator) : array {
21 let numerator = intval($numerator);
22 let denominator = intval($denominator);
23 pre_assert denominator != 0;
24 return to_array(lldiv, to_int(quot), to_int(rem));
25 }
26
27 function psi\strtold(string $str, string &$end = null) : float {
28 let nptr = strval($str);
29 let endptr = &NULL;
30 return to_float(strtold);
31 set $end = to_string(*endptr);
32 }
33
34 function psi\free(object $memory) : void {
35 let ptr = objval($memory);
36 return void(free);
37 }
38
39 function psi\malloc(int $size) : object {
40 let size = intval($size);
41 pre_assert size >= 0;
42 return to_object(malloc);
43 }
44
45 function psi\calloc(int $nmemb, int $size) : object {
46 let nmemb = intval($nmemb);
47 let size = intval($size);
48 pre_assert size >= 0;
49 return to_object(calloc);
50 }
51
52 function psi\realloc(object $obj, int $size) : object {
53 let ptr = objval($obj);
54 let size = intval($size);
55 pre_assert size >= 0;
56 return to_object(realloc);
57 }