API Reference
Auto-generated by wyn run scripts/generate_api_ref.wyn
282 public functions found.
Args
3 functions
char* Args_get(const char* name) {bool Args_has(const char* name) {WynArray Args_positional() {
Base64
2 functions
char* Base64_encode(const char* data) { return Encoding_base64_encode(data); }char* Base64_decode(const char* data) { return Encoding_base64_decode(data); }
Crypto
8 functions
unsigned int Crypto_hash32(const char* data);unsigned long long Crypto_hash64(const char* data);char* Crypto_sha1(const char* data);char* Crypto_sha1_base64(const char* data);char* Crypto_sha256(const char* data) {char* Crypto_md5(const char* data) {char* Crypto_hmac_sha256(const char* key, const char* data) {char* Crypto_random_bytes(long long n) {
Csv
8 functions
long long Csv_parse(const char* text) {long long Csv_row_count(long long handle) {const char* Csv_get(long long handle, long long row, long long col) {const char* Csv_get_field(long long handle, long long row, const char* header) {long long Csv_col_count(long long handle, long long row) {const char* Csv_header(long long handle, long long col) {long long Csv_header_count(long long handle) {void Csv_write(const char* path, WynArray rows) {
Data
4 functions
void Data_save(const char* path, WynHashMap* map);WynHashMap* Data_load(const char* path);void Data_save(const char* path, WynHashMap* map) {WynHashMap* Data_load(const char* path) {
DateTime
18 functions
long long DateTime_now() { return (long long)time(NULL); }long long DateTime_millis() { FILETIME ft; GetSystemTimeAsFileTime(&ft); ULARGE_INTEGER ul; ul.LowPart=ft.dwLowDateTime; ul.HighPart=ft.dwHighDateTime; return (long long)((ul.QuadPart - 116444736000000000ULL) / 10000); }long long DateTime_micros() { FILETIME ft; GetSystemTimeAsFileTime(&ft); ULARGE_INTEGER ul; ul.LowPart=ft.dwLowDateTime; ul.HighPart=ft.dwHighDateTime; return (long long)((ul.QuadPart - 116444736000000000ULL) / 10); }long long DateTime_millis() { struct timeval tv; gettimeofday(&tv, NULL); return (long long)(tv.tv_sec * 1000LL + tv.tv_usec / 1000); }long long DateTime_micros() { struct timeval tv; gettimeofday(&tv, NULL); return (long long)(tv.tv_sec * 1000000LL + tv.tv_usec); }char* DateTime_format(int timestamp, const char* fmt) {void DateTime_sleep(int seconds) { sleep(seconds); }long long DateTime_diff(long long a, long long b) { return a - b; }long long DateTime_add_seconds(long long t, long long n) { return t + n; }char* DateTime_to_iso(long long timestamp) {char* DateTime_format_duration(long long ms) {long long DateTime_day_of_week(long long timestamp) {long long DateTime_year(long long timestamp) { time_t t = (time_t)timestamp; struct tm* tm = localtime(&t); return tm ? tm->tm_year + 1900 : 0; }long long DateTime_month(long long timestamp) { time_t t = (time_t)timestamp; struct tm* tm = localtime(&t); return tm ? tm->tm_mon + 1 : 0; }long long DateTime_day(long long timestamp) { time_t t = (time_t)timestamp; struct tm* tm = localtime(&t); return tm ? tm->tm_mday : 0; }long long DateTime_hour(long long timestamp) { time_t t = (time_t)timestamp; struct tm* tm = localtime(&t); return tm ? tm->tm_hour : 0; }long long DateTime_minute(long long timestamp) { time_t t = (time_t)timestamp; struct tm* tm = localtime(&t); return tm ? tm->tm_min : 0; }long long DateTime_second(long long timestamp) { time_t t = (time_t)timestamp; struct tm* tm = localtime(&t); return tm ? tm->tm_sec : 0; }
Db
20 functions
long long Db_open(const char* path) {int Db_exec(long long handle, const char* sql) {char* Db_query(long long handle, const char* sql) {char* Db_query_one(long long handle, const char* sql) {int Db_exec_p(long long handle, const char* sql, WynArray params) {char* Db_query_p(long long handle, const char* sql, WynArray params) {long long Db_last_insert_id(long long handle) {char* Db_error(long long handle) {void Db_close(long long handle) {long long Db_open(const char* path) { fprintf(stderr, "Error: SQLite not available. Install libsqlite3-dev.\n"); return -1; }int Db_exec(long long h, const char* sql) { return -1; }char* Db_query(long long h, const char* sql) { return ""; }char* Db_query_one(long long h, const char* sql) { return ""; }long long Db_last_insert_id(long long h) { return 0; }char* Db_error(long long h) { return "sqlite not available"; }void Db_close(long long h) {}char* Db_escape(const char* str) {long long Db_table_exists(long long handle, const char* table_name) {char* result = Db_query_one(handle, sql);long long Db_table_exists(long long h, const char* t) { return 0; }
Encoding
7 functions
char* Encoding_base64_encode(const char* data) {char* Encoding_base64_decode(const char* data) {char* Encoding_hex_encode(const char* data) {char* Base64_encode(const char* data) { return Encoding_base64_encode(data); }char* Base64_decode(const char* data) { return Encoding_base64_decode(data); }char* Encoding_hex_decode(const char* hex) {char* Encoding_csv_parse(const char* csv) {
Env
3 functions
char* Env_get(const char* name) {int Env_set(const char* name, const char* value) {WynArray Env_all() {
File
23 functions
char* File_read(const char* p) { return file_read(p); }char* File_read_lines(const char* p) { return file_read(p); }int File_write(const char* p, const char* d) { return file_write(p, d); }int File_exists(const char* p) { return file_exists(p); }int File_delete(const char* p) { return file_delete(p); }int File_copy(const char* s, const char* d) { return file_copy(s, d); }int File_move(const char* s, const char* d) { return file_move(s, d); }long long File_size(const char* p) { return file_size(p); }int File_is_dir(const char* p) { return file_is_dir(p); }int File_is_file(const char* p) { return file_is_file(p); }int File_mkdir(const char* p) { return file_mkdir(p); }char* File_list_dir(const char* p) {int File_append(const char* p, const char* d) {char* File_cwd() { return file_get_cwd(); }long long File_open(const char* path, const char* mode) {char* File_read_line(long long handle) {int File_write_line(long long handle, const char* data) {int File_eof(long long handle) {void File_close(long long handle) {int File_rename(const char* old_path, const char* new_path) { return rename(old_path, new_path) == 0; }char* File_glob(const char* pattern) {char* File_walk_dir(const char* path) {char* File_temp_file() {
HashMap
7 functions
void HashMap_insert(int map, const char* key, int value);int HashMap_get(int map, const char* key);int HashMap_contains(int map, const char* key);int HashMap_len(int map);int HashMap_remove(int map, const char* key);void HashMap_clear(int map);void HashMap_free(int map);
HashSet
1 functions
WynHashSet* HashSet_new() { return hashset_new(); }
Http
18 functions
HttpResponse* Http_post(const char* url, const char* body, const char* content_type);int Http_status(HttpResponse* resp);const char* Http_body(HttpResponse* resp);const char* Http_header(HttpResponse* resp, const char* name);void Http_free(HttpResponse* resp);void Http_respond(long long client_fd, long long status, const char* content_type, const char* body) {int Http_route_match(const char* pattern, const char* path, WynHashMap* params) {WynHashMap* Http_parse_request(const char* raw) {int Http_ctx_fd(WynHashMap* ctx) {void Http_respond_json(int fd, int status, const char* json) {void Http_respond_html(int fd, int status, const char* html) {int Http_serve(int port) {char* Http_accept(int server_fd) {void Http_close_server(int fd) { if (fd >= 0) close(fd); }long long Http_get_json(const char* url) {long long Http_post_json(const char* url, const char* data) {void Http_set_timeout(long long seconds) { _wyn_http_timeout = (int)seconds; }long long Http_timeout() { return _wyn_http_timeout; }
Json
20 functions
WynJson* Json_new() { return json_new(); }void Json_set(WynJson* j, const char* k, const char* v) { json_set_string(j, k, v); }void Json_set_string(WynJson* j, const char* k, const char* v) { json_set_string(j, k, v); }void Json_set_int(WynJson* j, const char* k, int v) { json_set_int(j, k, v); }void Json_set_bool(WynJson* j, const char* k, int v) { json_set_int(j, k, v ? 1 : 0); }char* Json_stringify(WynJson* j) { return json_stringify(j); }long long Json_parse(const char* text) {char* Json_get(long long root, const char* key) {long long Json_get_int(long long root, const char* key) {long long Json_has(long long root, const char* key) {long long Json_array_len(long long node) {long long Json_array_get(long long node, long long index) {char* Json_node_str(long long node) {char* Json_keys(long long root) {return Json_parse(body);return Json_parse(body);double Json_get_float(long long root, const char* key) {long long Json_get_bool(long long root, const char* key) {long long Json_get_array(long long root, const char* key) {long long Json_get_object(long long root, const char* key) {char* Json_to_pretty_string(WynJson* j) {
Log
5 functions
void Log_set_level(long long level) { log_level = (int)level; }void Log_debug(const char* msg) { if (log_level <= 0) log_with_timestamp("DEBUG", "\x1b[90m", msg); }void Log_info(const char* msg) { if (log_level <= 1) log_with_timestamp("INFO", "\x1b[32m", msg); }void Log_warn(const char* msg) { if (log_level <= 2) log_with_timestamp("WARN", "\x1b[33m", msg); }void Log_error(const char* msg) { if (log_level <= 3) log_with_timestamp("ERROR", "\x1b[31m", msg); }
Math
26 functions
float Math_sin(float x) { return sinf(x); }float Math_cos(float x) { return cosf(x); }float Math_tan(float x) { return tanf(x); }float Math_sqrt(float x) { return sqrtf(x); }float Math_pow(float base, float exp) { return powf(base, exp); }float Math_floor(float x) { return floorf(x); }float Math_ceil(float x) { return ceilf(x); }float Math_round_to(float x, long long places) { float m = powf(10, places); return roundf(x * m) / m; }float Math_atan2(float y, float x) { return atan2f(y, x); }float Math_pi() { return 3.14159265358979323846f; }float Math_e() { return 2.71828182845904523536f; }float Math_round(float x) { return roundf(x); }long long Math_abs(long long x) { return x < 0 ? -x : x; }float Math_max(float a, float b) { return a > b ? a : b; }float Math_min(float a, float b) { return a < b ? a : b; }long long Math_checked_add(long long a, long long b) {long long Math_checked_sub(long long a, long long b) {long long Math_checked_mul(long long a, long long b) {float Math_random() {double Math_log(double x) { return log(x); }double Math_log10(double x) { return log10(x); }double Math_exp(double x) { return exp(x); }long long Math_clamp(long long x, long long lo, long long hi) { return x < lo ? lo : (x > hi ? hi : x); }long long Math_sign(long long x) { return x > 0 ? 1 : (x < 0 ? -1 : 0); }double Math_lerp(double a, double b, double t) { return a + (b - a) * t; }double Math_map_range(double x, double in_min, double in_max, double out_min, double out_max) {
Net
6 functions
int Net_listen(int port) {int Net_connect(const char* host, int port) {int Net_send(int sockfd, const char* data) {char* Net_recv(int sockfd) {int Net_close(int sockfd) {char* Net_resolve(const char* hostname) {
Os
8 functions
char* Os_platform() {char* Os_arch() {char* Os_hostname() { static char buf[256]; gethostname(buf, sizeof(buf)); return buf; }long long Os_pid() {char* Os_temp_dir() { char* t = getenv("TEMP"); return t ? t : "C:\\Temp"; }char* Os_home_dir() { char* h = getenv("USERPROFILE"); return h ? h : "C:\\"; }char* Os_temp_dir() { return "/tmp"; }char* Os_home_dir() { char* h = getenv("HOME"); return h ? h : "/tmp"; }
Path
4 functions
char* Path_basename(const char* p) { return file_basename(p); }char* Path_dirname(const char* p) { return file_dirname(p); }char* Path_extension(const char* p) { return file_extension(p); }char* Path_join(const char* a, const char* b) { return file_path_join(a, b); }
Process
2 functions
char* Process_exec_capture(const char* cmd) {long long Process_exec_status(const char* cmd) {
Regex
8 functions
bool Regex_match(const char* s, const char* p) { return false; }char* Regex_replace(const char* s, const char* p, const char* r) { (void)p; (void)r; return wyn_strdup(s); }int Regex_find(const char* s, const char* p) { (void)s; (void)p; return -1; }bool Regex_match(const char* s, const char* p) { return regex_match(s, p); }char* Regex_replace(const char* s, const char* p, const char* r) { return regex_replace(s, p, r); }int Regex_find(const char* s, const char* p) { regex_t re; if (regcomp(&re, p, REG_EXTENDED) != 0) return -1; regmatch_t m; int r2 = regexec(&re, s, 1, &m, 0) == 0 ? m.rm_so : -1; regfree(&re); return r2; }char* Regex_find_all(const char* s, const char* p) { return regex_find_all(s, p); }char* Regex_split(const char* s, const char* p) { return regex_split(s, p); }
Socket
8 functions
int Socket_connect(const char* host, int port);int Socket_send(int sock, const char* data, int len);char* Socket_recv(int sock, int max_len);void Socket_close(int sock);int Socket_set_timeout(int sock, int seconds);int Socket_set_nonblocking(int sock);int Socket_poll_read(int sock, int timeout_ms);char* Socket_read_line(int sock);
StringBuilder
11 functions
long long StringBuilder_new() {void StringBuilder_append(long long handle, const char* s) {char* StringBuilder_to_string(long long handle) {long long StringBuilder_len(long long handle) {void StringBuilder_clear(long long handle) {void StringBuilder_free(long long handle) {void StringBuilder_append_int(long long handle, long long val) {StringBuilder_append(handle, buf);void StringBuilder_append_line(long long handle, const char* s) {StringBuilder_append(handle, s);StringBuilder_append(handle, "\n");
System
9 functions
char* System_shell_escape(const char* s) {char* System_exec(const char* cmd) {int System_exec_code(const char* cmd) {void System_exit(int code) { exit(code); }char* System_env(const char* key) {int System_set_env(const char* key, const char* value) {WynArray System_args() {void System_gc() { wyn_arena_reset(); }void System_load_env(const char* path) {
Task
12 functions
long long Task_value(long long initial) {long long Task_get(long long handle) {void Task_set(long long handle, long long value) {void Task_add(long long handle, long long amount) {void Task_free_value(long long handle) {long long Task_channel(long long capacity) {void Task_send(long long handle, long long value) {long long Task_recv(long long handle) {void Task_close(long long handle) {long long Task_try_recv(long long handle, long long* out_value) {long long Task_select_2(long long ch1, long long ch2) {long long Task_select_3(long long ch1, long long ch2, long long ch3) {
Toml
4 functions
long long Toml_parse(const char* text) {char* Toml_get(long long handle, const char* key) {long long Toml_parse_file(const char* path) {return Toml_parse(content);
Url
2 functions
char* Url_encode(const char* str);char* Url_decode(const char* str);
Uuid
2 functions
char* Uuid_generate() {char* Uuid_v4() { return Uuid_generate(); }
Ws
4 functions
int Ws_connect(const char* url);int Ws_send(int sock, const char* msg);char* Ws_recv(int sock);void Ws_close(int sock);