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