Something went wrong. Try again.
An experiment in static, refcounted, procedural language with ownership
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091#ifndef JINRT_H#define JINRT_H#include <stdbool.h>#include <stdint.h>#include <stdlib.h>
// Macros#define FORCE_INLINE __attribute__((always_inline)) inline
// Builtin typestypedef int8_t i8;typedef int16_t i16;typedef int32_t i32;typedef int64_t i64;typedef intptr_t isize;
typedef uint8_t u8;typedef uint16_t u16;typedef uint32_t u32;typedef uint64_t u64;typedef uintptr_t usize;
typedef float f32;typedef double f64;
typedef struct unit {} unit;
typedef unit never;
typedef struct array { void *data; usize cap; u32 refcnt;} array;
typedef struct slice { array *array; void *start; usize len;} slice;
typedef slice str;
typedef void *jinrt_backtrace;
typedef struct jinrt_stackframe { const char *file; u32 line; const char *in;} jinrt_stackframe;
// Initializationvoid jinrt_init();
// Allocvoid *jinrt_alloc(size_t size);void jinrt_free(jinrt_backtrace *backtrace, void *ptr, u8 *tyname, jinrt_stackframe frame);
// Slicesslice jinrt_slice_alloc(size_t elem_size, usize cap);void jinrt_slice_free(jinrt_backtrace *backtrace, slice s, u8 *tyname, jinrt_stackframe frame);void jinrt_slice_incref(slice s);void jinrt_slice_decref(slice s);usize jinrt_slice_index_boundscheck(jinrt_backtrace *backtrace, slice s, usize index, jinrt_stackframe frame);slice jinrt_slice_slice(jinrt_backtrace *backtrace, slice s, size_t elem_size, usize low, usize high, jinrt_stackframe frame);void jinrt_slice_grow(jinrt_backtrace *backtrace, slice *s, size_t elem_size, usize new_cap, jinrt_stackframe frame);usize jinrt_slice_cap(slice *s);bool jinrt_slice_utf8_validate(slice s);
// Strbool jinrt_str_cmp(str a, str b);
// Panicvoid jinrt_panic_raw(jinrt_backtrace *backtrace, u8 *msg, jinrt_stackframe frame);
void jinrt_panic(jinrt_backtrace *backtrace, str msg, jinrt_stackframe frame);
// Stack tracesjinrt_backtrace *jinrt_backtrace_new();void jinrt_backtrace_free(jinrt_backtrace *backtrace);void jinrt_backtrace_push(jinrt_backtrace *backtrace, jinrt_stackframe frame);void jinrt_backtrace_pop(jinrt_backtrace *backtrace);#endif