Init new repository
This commit is contained in:
13
pkgs/libc/assert.lc
Normal file
13
pkgs/libc/assert.lc
Normal file
@@ -0,0 +1,13 @@
|
||||
#`#include <assert.h>`;
|
||||
@foreign assert :: proc(b: bool); @foreign
|
||||
|
||||
#`
|
||||
#if defined(_MSC_VER)
|
||||
#define lc_assertion_debug_break() (__debugbreak(), 0)
|
||||
#else
|
||||
#define lc_assertion_debug_break() (__builtin_trap(), 0)
|
||||
#endif
|
||||
`;
|
||||
|
||||
|
||||
debug_break :: proc(): int; @foreign(lc_assertion_debug_break)
|
||||
17
pkgs/libc/ctype.lc
Normal file
17
pkgs/libc/ctype.lc
Normal file
@@ -0,0 +1,17 @@
|
||||
#`#include<ctype.h>`;
|
||||
|
||||
isalnum :: proc(c: int): int; @foreign
|
||||
isalpha :: proc(c: int): int; @foreign
|
||||
isblank :: proc(c: int): int; @foreign
|
||||
iscntrl :: proc(c: int): int; @foreign
|
||||
isdigit :: proc(c: int): int; @foreign
|
||||
isgraph :: proc(c: int): int; @foreign
|
||||
islower :: proc(c: int): int; @foreign
|
||||
isprint :: proc(c: int): int; @foreign
|
||||
ispunct :: proc(c: int): int; @foreign
|
||||
isspace :: proc(c: int): int; @foreign
|
||||
isupper :: proc(c: int): int; @foreign
|
||||
isxdigit :: proc(c: int): int; @foreign
|
||||
|
||||
tolower :: proc(c: int): int; @foreign
|
||||
toupper :: proc(c: int): int; @foreign
|
||||
2
pkgs/libc/errno.lc
Normal file
2
pkgs/libc/errno.lc
Normal file
@@ -0,0 +1,2 @@
|
||||
#`#include<errno.h>`;
|
||||
errno: int; @foreign
|
||||
122
pkgs/libc/math.lc
Normal file
122
pkgs/libc/math.lc
Normal file
@@ -0,0 +1,122 @@
|
||||
#`#include <math.h>`;
|
||||
|
||||
acos :: proc(x: double): double; @foreign
|
||||
acosf :: proc(x: float): float; @foreign
|
||||
asin :: proc(x: double): double; @foreign
|
||||
asinf :: proc(x: float): float; @foreign
|
||||
atan :: proc(x: double): double; @foreign
|
||||
atanf :: proc(x: float): float; @foreign
|
||||
atan2 :: proc(y: double, x: double): double; @foreign
|
||||
atan2f :: proc(y: float, x: float): float; @foreign
|
||||
cos :: proc(x: double): double; @foreign
|
||||
cosf :: proc(x: float): float; @foreign
|
||||
sin :: proc(x: double): double; @foreign
|
||||
sinf :: proc(x: float): float; @foreign
|
||||
tan :: proc(x: double): double; @foreign
|
||||
tanf :: proc(x: float): float; @foreign
|
||||
|
||||
acosh :: proc(x: double): double; @foreign
|
||||
acoshf :: proc(x: float): float; @foreign
|
||||
asinh :: proc(x: double): double; @foreign
|
||||
asinhf :: proc(x: float): float; @foreign
|
||||
atanh :: proc(x: double): double; @foreign
|
||||
atanhf :: proc(x: float): float; @foreign
|
||||
cosh :: proc(x: double): double; @foreign
|
||||
coshf :: proc(x: float): float; @foreign
|
||||
sinh :: proc(x: double): double; @foreign
|
||||
sinhf :: proc(x: float): float; @foreign
|
||||
tanh :: proc(x: double): double; @foreign
|
||||
tanhf :: proc(x: float): float; @foreign
|
||||
|
||||
exp :: proc(x: double): double; @foreign
|
||||
expf :: proc(x: float): float; @foreign
|
||||
exp2 :: proc(x: double): double; @foreign
|
||||
exp2f :: proc(x: float): float; @foreign
|
||||
expm1 :: proc(x: double): double; @foreign
|
||||
expm1f :: proc(x: float): float; @foreign
|
||||
frexp :: proc(value: double, exp: *int): double; @foreign
|
||||
frexpf :: proc(value: float, exp: *int): float; @foreign
|
||||
ilogb :: proc(x: double): int; @foreign
|
||||
ilogbf :: proc(x: float): int; @foreign
|
||||
ldexp :: proc(x: double, exp: int): double; @foreign
|
||||
ldexpf :: proc(x: float, exp: int): float; @foreign
|
||||
log :: proc(x: double): double; @foreign
|
||||
logf :: proc(x: float): float; @foreign
|
||||
log10 :: proc(x: double): double; @foreign
|
||||
log10f :: proc(x: float): float; @foreign
|
||||
log1p :: proc(x: double): double; @foreign
|
||||
log1pf :: proc(x: float): float; @foreign
|
||||
log2 :: proc(x: double): double; @foreign
|
||||
log2f :: proc(x: float): float; @foreign
|
||||
logb :: proc(x: double): double; @foreign
|
||||
logbf :: proc(x: float): float; @foreign
|
||||
modf :: proc(value: double, iptr: *double): double; @foreign
|
||||
modff :: proc(value: float, iptr: *float): float; @foreign
|
||||
scalbn :: proc(x: double, n: int): double; @foreign
|
||||
scalbnf :: proc(x: float, n: int): float; @foreign
|
||||
scalbln :: proc(x: double, n: long): double; @foreign
|
||||
scalblnf :: proc(x: float, n: long): float; @foreign
|
||||
|
||||
cbrt :: proc(x: double): double; @foreign
|
||||
cbrtf :: proc(x: float): float; @foreign
|
||||
fabs :: proc(x: double): double; @foreign
|
||||
fabsf :: proc(x: float): float; @foreign
|
||||
hypot :: proc(x: double, y: double): double; @foreign
|
||||
hypotf :: proc(x: float, y: float): float; @foreign
|
||||
pow :: proc(x: double, y: double): double; @foreign
|
||||
powf :: proc(x: float, y: float): float; @foreign
|
||||
sqrt :: proc(x: double): double; @foreign
|
||||
sqrtf :: proc(x: float): float; @foreign
|
||||
|
||||
erf :: proc(x: double): double; @foreign
|
||||
erff :: proc(x: float): float; @foreign
|
||||
erfc :: proc(x: double): double; @foreign
|
||||
erfcf :: proc(x: float): float; @foreign
|
||||
lgamma :: proc(x: double): double; @foreign
|
||||
lgammaf :: proc(x: float): float; @foreign
|
||||
tgamma :: proc(x: double): double; @foreign
|
||||
tgammaf :: proc(x: float): float; @foreign
|
||||
|
||||
ceil :: proc(x: double): double; @foreign
|
||||
ceilf :: proc(x: float): float; @foreign
|
||||
floor :: proc(x: double): double; @foreign
|
||||
floorf :: proc(x: float): float; @foreign
|
||||
nearbyint :: proc(x: double): double; @foreign
|
||||
nearbyintf :: proc(x: float): float; @foreign
|
||||
rint :: proc(x: double): double; @foreign
|
||||
rintf :: proc(x: float): float; @foreign
|
||||
lrint :: proc(x: double): long; @foreign
|
||||
lrintf :: proc(x: float): long; @foreign
|
||||
llrint :: proc(x: double): llong; @foreign
|
||||
llrintf :: proc(x: float): llong; @foreign
|
||||
round :: proc(x: double): double; @foreign
|
||||
roundf :: proc(x: float): float; @foreign
|
||||
lround :: proc(x: double): long; @foreign
|
||||
lroundf :: proc(x: float): long; @foreign
|
||||
llround :: proc(x: double): llong; @foreign
|
||||
llroundf :: proc(x: float): llong; @foreign
|
||||
trunc :: proc(x: double): double; @foreign
|
||||
truncf :: proc(x: float): float; @foreign
|
||||
|
||||
fmod :: proc(x: double, y: double): double; @foreign
|
||||
fmodf :: proc(x: float, y: float): float; @foreign
|
||||
remainder :: proc(x: double, y: double): double; @foreign
|
||||
remainderf :: proc(x: float, y: float): float; @foreign
|
||||
remquo :: proc(x: double, y: double, quo: *int): double; @foreign
|
||||
remquof :: proc(x: float, y: float, quo: *int): float; @foreign
|
||||
|
||||
copysign :: proc(x: double, y: double): double; @foreign
|
||||
copysignf :: proc(x: float, y: float): float; @foreign
|
||||
nan :: proc(tagp: *char): double; @foreign
|
||||
nanf :: proc(tagp: *char): float; @foreign
|
||||
nextafter :: proc(x: double, y: double): double; @foreign
|
||||
nextafterf :: proc(x: float, y: float): float; @foreign
|
||||
|
||||
fdim :: proc(x: double, y: double): double; @foreign
|
||||
fdimf :: proc(x: float, y: float): float; @foreign
|
||||
fmax :: proc(x: double, y: double): double; @foreign
|
||||
fmaxf :: proc(x: float, y: float): float; @foreign
|
||||
fmin :: proc(x: double, y: double): double; @foreign
|
||||
fminf :: proc(x: float, y: float): float; @foreign
|
||||
fma :: proc(x: double, y: double, z: double): double; @foreign
|
||||
fmaf :: proc(x: float, y: float, z: float): float; @foreign
|
||||
3
pkgs/libc/size_t.lc
Normal file
3
pkgs/libc/size_t.lc
Normal file
@@ -0,0 +1,3 @@
|
||||
import std_types "std_types";
|
||||
|
||||
size_t :: typedef std_types.usize; @foreign @weak
|
||||
12
pkgs/libc/stdarg.lc
Normal file
12
pkgs/libc/stdarg.lc
Normal file
@@ -0,0 +1,12 @@
|
||||
#`
|
||||
#include <stdarg.h>
|
||||
#define lc_va_arg_any(va) va_arg(va, LC_Any)
|
||||
`;
|
||||
|
||||
va_list :: struct { a: ullong; } @foreign
|
||||
va_start :: proc(args: va_list, arg: *void); @foreign
|
||||
va_end :: proc(args: va_list); @foreign
|
||||
va_copy :: proc(args: va_list, src: va_list); @foreign
|
||||
// va_arg :: proc(args: va_list, arg: *void); @foreign
|
||||
|
||||
va_arg_any :: proc(args: va_list): Any; @foreign(lc_va_arg_any)
|
||||
61
pkgs/libc/stdio.lc
Normal file
61
pkgs/libc/stdio.lc
Normal file
@@ -0,0 +1,61 @@
|
||||
#`#include<stdio.h>`;
|
||||
|
||||
SEEK_SET :: 0;
|
||||
SEEK_CUR :: 1;
|
||||
SEEK_END :: 2;
|
||||
|
||||
FILE :: struct {a: int;} @foreign
|
||||
fpos_t :: typedef long; @foreign
|
||||
|
||||
stderr: *FILE; @foreign
|
||||
stdin: *FILE; @foreign
|
||||
stdout: *FILE; @foreign
|
||||
|
||||
remove :: proc(filename: *char): int; @foreign
|
||||
rename :: proc(old: *char, new: *char): int; @foreign
|
||||
tmpfile :: proc(): *FILE; @foreign
|
||||
tmpnam :: proc(s: *char): *char; @foreign
|
||||
|
||||
fclose :: proc(stream: *FILE): int; @foreign
|
||||
fflush :: proc(stream: *FILE): int; @foreign
|
||||
fopen :: proc(filename: *char, mode: *char): *FILE; @foreign
|
||||
freopen :: proc(filename: *char, mode: *char, stream: *FILE): *FILE; @foreign
|
||||
setbuf :: proc(stream: *FILE, buf: *char); @foreign
|
||||
setvbuf :: proc(stream: *FILE, buf: *char, mode: int, size: size_t): int; @foreign
|
||||
|
||||
fprintf :: proc(stream: *FILE, format: *char, ...): int; @foreign
|
||||
fscanf :: proc(stream: *FILE, format: *char, ...): int; @foreign
|
||||
printf :: proc(format: *char, ...): int; @foreign
|
||||
scanf :: proc(format: *char, ...): int; @foreign
|
||||
snprintf :: proc(s: *char, n: size_t, format: *char, ...): int; @foreign
|
||||
sscanf :: proc(s: *char, format: *char, ...): int; @foreign
|
||||
vfprintf :: proc(stream: *FILE, format: *char, arg: *va_list): int; @foreign
|
||||
vfscanf :: proc(stream: *FILE, format: *char, arg: *va_list): int; @foreign
|
||||
vprintf :: proc(format: *char, arg: *va_list): int; @foreign
|
||||
vscanf :: proc(format: *char, arg: *va_list): int; @foreign
|
||||
vsnprintf :: proc(s: *char, n: size_t, format: *char, arg: *va_list): int; @foreign
|
||||
vsprintf :: proc(s: *char, format: *char, arg: *va_list): int; @foreign
|
||||
vsscanf :: proc(s: *char, format: *char, arg: *va_list): int; @foreign
|
||||
|
||||
fgetc :: proc(stream: *FILE): int; @foreign
|
||||
fgets :: proc(s: *char, n: int, stream: *FILE): *char; @foreign
|
||||
fputc :: proc(s: *char, stream: *FILE): int; @foreign
|
||||
getc :: proc(stream: *FILE): int; @foreign
|
||||
getchar :: proc(): int; @foreign
|
||||
putc :: proc(c: int, stream: *FILE): int; @foreign
|
||||
putchar :: proc(c: int): int; @foreign
|
||||
puts :: proc(s: *char): int; @foreign
|
||||
ungetc :: proc(c: int, stream: *FILE): int; @foreign
|
||||
fread :: proc(ptr: *void, size: size_t, nmemb: size_t, stream: *FILE): size_t; @foreign
|
||||
fwrite :: proc(ptr: *void, size: size_t, nmemb: size_t, stream: *FILE): size_t; @foreign
|
||||
|
||||
fgetpos :: proc(stream: *FILE, pos: *fpos_t): int; @foreign
|
||||
fseek :: proc(stream: *FILE, offset: long, whence: int): int; @foreign
|
||||
fsetpos :: proc(stream: *FILE, pos: *fpos_t): int; @foreign
|
||||
ftell :: proc(stream: *FILE): long; @foreign
|
||||
rewind :: proc(stream: *FILE); @foreign
|
||||
|
||||
clearerr :: proc(stream: *FILE); @foreign
|
||||
feof :: proc(stream: *FILE): int; @foreign
|
||||
ferror :: proc(stream: *FILE): int; @foreign
|
||||
perror :: proc(s: *char); @foreign
|
||||
48
pkgs/libc/stdlib.lc
Normal file
48
pkgs/libc/stdlib.lc
Normal file
@@ -0,0 +1,48 @@
|
||||
#`#include<stdlib.h>`;
|
||||
|
||||
wchar_t :: typedef std_types.u16; @foreign
|
||||
div_t :: struct { quot: int; rem: int; } @foreign
|
||||
ldiv_t :: struct { quot: long; rem: long; } @foreign
|
||||
lldiv_t :: struct { quot: llong; rem: llong; } @foreign
|
||||
|
||||
atof :: proc(nptr: *char): double; @foreign
|
||||
atoi :: proc(nptr: *char): int; @foreign
|
||||
atol :: proc(nptr: *char): long; @foreign
|
||||
atoll :: proc(nptr: *char): llong; @foreign
|
||||
strtod :: proc(nptr: *char, endptr: **char): double; @foreign
|
||||
strtof :: proc(nptr: *char, endptr: **char): float; @foreign
|
||||
strtol :: proc(nptr: *char, endptr: **char, base: int): long; @foreign
|
||||
strtoll :: proc(nptr: *char, endptr: **char, base: int): llong; @foreign
|
||||
strtoul :: proc(nptr: *char, endptr: **char, base: int): ulong; @foreign
|
||||
strtoull :: proc(nptr: *char, endptr: **char, base: int): ullong; @foreign
|
||||
|
||||
rand :: proc(): int; @foreign
|
||||
srand :: proc(seed: uint); @foreign
|
||||
|
||||
calloc :: proc(nmemb: size_t, size: size_t): *void; @foreign
|
||||
free :: proc(ptr: *void); @foreign
|
||||
malloc :: proc(size: size_t): *void; @foreign
|
||||
realloc :: proc(ptr: *void, size: size_t): *void; @foreign
|
||||
|
||||
abort :: proc(); @foreign
|
||||
atexit :: proc(func: proc()): int; @foreign
|
||||
at_quick_exit :: proc(func: proc()): int; @foreign
|
||||
exit :: proc(status: int); @foreign
|
||||
_Exit :: proc(status: int); @foreign
|
||||
getenv :: proc(name: *char): *char; @foreign
|
||||
quick_exit :: proc(status: int); @foreign
|
||||
system :: proc(cmd: *char): int; @foreign
|
||||
|
||||
abs :: proc(j: int): int; @foreign
|
||||
labs :: proc(j: long): long; @foreign
|
||||
llabs :: proc(j: llong): llong; @foreign
|
||||
div :: proc(numer: int, denom: int): div_t; @foreign
|
||||
ldiv :: proc(numer: long, denom: long): ldiv_t; @foreign
|
||||
lldiv :: proc(numer: llong, denom: llong): lldiv_t; @foreign
|
||||
|
||||
mblen :: proc(s: *char, n: size_t): int; @foreign
|
||||
mbtowc :: proc(pwc: *wchar_t, s: *char, n: size_t): int; @foreign
|
||||
wctomb :: proc(s: *char, wc: wchar_t): int; @foreign
|
||||
|
||||
mbstowcs :: proc(pwcs: *wchar_t, s: *char, n: size_t): size_t; @foreign
|
||||
wcstombs :: proc(s: *char, pwcs: *wchar_t, n: size_t): size_t; @foreign
|
||||
28
pkgs/libc/string.lc
Normal file
28
pkgs/libc/string.lc
Normal file
@@ -0,0 +1,28 @@
|
||||
#`#include<string.h>`;
|
||||
|
||||
|
||||
memset :: proc(s: *void, value: int, n: size_t): *void; @foreign
|
||||
memcpy :: proc(s1: *void, s2: *void, n: size_t): *void; @foreign
|
||||
memmove :: proc(s1: *void, s2: *void, n: size_t): *void; @foreign
|
||||
strcpy :: proc(s1: *char, s2: *char): *char; @foreign
|
||||
strncpy :: proc(s1: *char, s2: *char, n: size_t): *char; @foreign
|
||||
|
||||
strcat :: proc(s1: *char, s2: *char): *char; @foreign
|
||||
strncat :: proc(s1: *char, s2: *char, n: size_t): *char; @foreign
|
||||
|
||||
memcmp :: proc(s1: *void, s2: *void, n: size_t): int; @foreign
|
||||
strcmp :: proc(s1: *char, s2: *char): int; @foreign
|
||||
strcoll :: proc(s1: *char, s2: *char): int; @foreign
|
||||
strncmp :: proc(s1: *char, s2: *char, n: size_t): int; @foreign
|
||||
strxfrm :: proc(s1: *char, s2: *char, n: size_t): size_t; @foreign
|
||||
|
||||
memchr :: proc(s : *void, c: int, n: size_t): *void; @foreign
|
||||
strchr :: proc(s : *char, c: int): *char; @foreign
|
||||
strcspn :: proc(s1: *char, s2: *char): size_t; @foreign
|
||||
strpbrk :: proc(s1: *char, s2: *char): *char; @foreign
|
||||
strrchr :: proc(s : *char, c: int): *char; @foreign
|
||||
strcpn :: proc(s1: *char, s2: *char): *char; @foreign
|
||||
strtok :: proc(s1: *char, s2: *char): *char; @foreign
|
||||
|
||||
strerror :: proc(errnum: int): *char; @foreign
|
||||
strlen :: proc(s: *char): size_t; @foreign
|
||||
Reference in New Issue
Block a user