diff options
Diffstat (limited to 'std')
| -rw-r--r-- | std/stdio.c | 12 | ||||
| -rw-r--r-- | std/stdio.sloth | 9 | ||||
| -rw-r--r-- | std/stdlib.c | 19 | ||||
| -rw-r--r-- | std/stdlib.sloth | 17 | ||||
| -rw-r--r-- | std/stdmath.c | 9 | ||||
| -rw-r--r-- | std/stdmath.sloth | 69 | 
6 files changed, 135 insertions, 0 deletions
| diff --git a/std/stdio.c b/std/stdio.c new file mode 100644 index 0000000..1a4d98c --- /dev/null +++ b/std/stdio.c @@ -0,0 +1,12 @@ +#include <stdio.h> +#include <stdlib.h> + +char* readln() { +    char* str = malloc(128); +    scanf("%127s", str); +    return str; +} + +void print(char *str) { +   fputs(str, stdout); +} diff --git a/std/stdio.sloth b/std/stdio.sloth new file mode 100644 index 0000000..c28d474 --- /dev/null +++ b/std/stdio.sloth @@ -0,0 +1,9 @@ +foreign fn print(str: String) Void; +foreign fn readln() String; + +fn println(str: String) Void { +	print(str); +	print("\n"); +} + + diff --git a/std/stdlib.c b/std/stdlib.c new file mode 100644 index 0000000..7e77385 --- /dev/null +++ b/std/stdlib.c @@ -0,0 +1,19 @@ +#include <unistd.h> +#include <stdlib.h> +#include <string.h> + +void wait(long long x) { +    sleep(x); +} + +long long slen(char *str) { +    return (long long) strlen(str); +} + +char charAt(char *str, long long x) { +    return str[x]; +} + +long long parse_int(char *str) { +    return (long long) atoi(str); +} diff --git a/std/stdlib.sloth b/std/stdlib.sloth new file mode 100644 index 0000000..d7ddeff --- /dev/null +++ b/std/stdlib.sloth @@ -0,0 +1,17 @@ +foreign fn wait(x: Int) Void; +foreign fn print(str: String) Void; +foreign fn slen(str: String) Int; +foreign fn charAt(str: String) Char; +foreign fn parse_int(str: String) Int; + +fn termpos(x: int, y: int) Void { +    print("\x1b["); +    print(x); +    print(";"); +    print(y); +    print("H"); +} + +fn termclear() Void { +    print("\x1b[2J\x1b[H"); +} diff --git a/std/stdmath.c b/std/stdmath.c new file mode 100644 index 0000000..dad292f --- /dev/null +++ b/std/stdmath.c @@ -0,0 +1,9 @@ +#include <stdio.h> +#include <stdlib.h> +#include <time.h> + + +long long randGen(long long min, long long max) { +   srandom((unsigned) time(NULL));  +   return random() % (max - min + 1) + min; +} diff --git a/std/stdmath.sloth b/std/stdmath.sloth new file mode 100644 index 0000000..7ff5c82 --- /dev/null +++ b/std/stdmath.sloth @@ -0,0 +1,69 @@ +foreign fn randGen(min: Int, max: Int) Int; + +fn abs(x: Int) Int { +    if x < 0 { +        return -x; +    } +    return x; +} + +fn fabs(x: Float) Float { +    if x < 0.0 { +        return -x; +    } +    return x; +} + +fn max(x: Int, y: Int) Int { +    if x > y { +        return x; +    } +    return y; +} + +fn min(x: Int, y: Int) Int { +    if x < y { +        return x; +    } +    return y; +} + +fn fmax(x: Float, y: Float) Float { +    if x > y { +        return x; +    } +    return y; +} + +fn fmin(x: Float, y: Float) Float { +    if x < y { +        return x; +    } +    return y; +} + +fn pow(x: Int, y: Int) Int { +    while y > 1 { +        x = x*x; +	y = y-1; +    } +    return x; +} + +fn floor(x: Float) Float { +    return x - fabs(x % 1.0); +} + +fn ceil(x: Float) Float { +    if x < 0.0 { +        return floor(x) - 1.0; +    } +    return floor(x) + 1.0; +} + +fn round(x: Float) Float { +    if fabs(x % 1.0) >= 0.5 { +        return ceil(x); +    } +    return floor(x); +} | 
