X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=psi.d%2Fstdlib.psi;h=0b4a5067b30608adcd877a2435dbcfb53a37113b;hp=1229c9e2d53d1e718cf1cf884ec925cfd1ca8124;hb=5e9f9b2206d2dfdc532aa869c2e49866f3d7fb73;hpb=b0a8b273be0744ed445fbe6c935a04ee7a749f14 diff --git a/psi.d/stdlib.psi b/psi.d/stdlib.psi index 1229c9e..0b4a506 100644 --- a/psi.d/stdlib.psi +++ b/psi.d/stdlib.psi @@ -6,5 +6,32 @@ function psi\abs(int $i) : int { function psi\div(int $numerator, int $denominator) : array { let numerator = intval($numerator); let denominator = intval($denominator); + pre_assert denominator != 0; return to_array(div, to_int(quot), to_int(rem)); -} \ No newline at end of file +} + +function psi\ldiv(int $numerator, int $denominator) : array { + let numerator = intval($numerator); + let denominator = intval($denominator); + pre_assert denominator != 0; + return to_array(ldiv, to_int(quot), to_int(rem)); +} + +function psi\lldiv(int $numerator, int $denominator) : array { + let numerator = intval($numerator); + let denominator = intval($denominator); + pre_assert denominator != 0; + return to_array(lldiv, to_int(quot), to_int(rem)); +} + +function psi\strtold(string $str, string &$end = null) : float { + let nptr = strval($str); + let endptr = &NULL; + return to_float(strtold); + set $end = to_string(*endptr); +} + +function psi\free(object $memory) : void { + let ptr = objval($memory); + return void(free); +}