txlyre 2 days ago
parent
commit
c75089bf20
5 changed files with 90 additions and 87 deletions
  1. 1 1
      buildshared.sh
  2. 58 58
      qirt.c
  3. 28 26
      qirt.h
  4. 2 1
      qistd.c
  5. 1 1
      std.qi

+ 1 - 1
buildshared.sh

@@ -1,2 +1,2 @@
-cc -fPIC -c qirt.c
+cc -std=c99 -fPIC -c qirt.c
 cc -shared -o libqirt.so -lgc -lm qirt.o

+ 58 - 58
qirt.c

@@ -6,7 +6,7 @@
 #include <gc.h>
 #include <pthread.h>
 
-static bool __debug_enabled = false;
+static qi_bool __debug_enabled = false;
 static pthread_t __main_tid;
 
 void *qi_malloc(qi_size_t size) {
@@ -100,7 +100,7 @@ qi_list_t *qi_list_push(qi_list_t *list, void *value) {
   return list;
 }
 
-bool qi_list_insert(qi_list_t *list, qi_ssize_t index, void *value) {
+qi_bool qi_list_insert(qi_list_t *list, qi_ssize_t index, void *value) {
   if (index == -1) {
     qi_list_push(list, value);
 
@@ -123,7 +123,7 @@ bool qi_list_insert(qi_list_t *list, qi_ssize_t index, void *value) {
   return true;
 }
 
-bool qi_list_delete(qi_list_t *list, qi_ssize_t index) {
+qi_bool qi_list_delete(qi_list_t *list, qi_ssize_t index) {
   if (qi_list_empty(list))
     return false;
 
@@ -149,7 +149,7 @@ bool qi_list_delete(qi_list_t *list, qi_ssize_t index) {
   return true;
 }
 
-bool qi_list_set(qi_list_t *list, qi_ssize_t index, void *value) {
+qi_bool qi_list_set(qi_list_t *list, qi_ssize_t index, void *value) {
   qi_size_t length = qi_list_length(list);
 
   if (index < 0)
@@ -180,7 +180,7 @@ void *qi_list_pop(qi_list_t *list) {
   return value;
 }
 
-bool qi_list_contains(qi_list_t *list, void *value) {
+qi_bool qi_list_contains(qi_list_t *list, void *value) {
   if (qi_list_empty(list))
     return false;
 
@@ -370,7 +370,7 @@ void *qi_table_get(qi_table_t *table, char *key) {
   return NULL;
 }
 
-bool qi_table_has(qi_table_t *table, char *key) {
+qi_bool qi_table_has(qi_table_t *table, char *key) {
   if (qi_table_empty(table))
     return false;
 
@@ -467,7 +467,7 @@ qi_list_t *qi_table_keys(qi_table_t *table) {
   return list;
 }
 
-bool qi_table_delete(qi_table_t *table, char *key) {
+qi_bool qi_table_delete(qi_table_t *table, char *key) {
   uint64_t hash = MM86128(key, strlen(key), QI_HASH_SEED);
   qi_size_t index = hash % table->capacity;
 
@@ -610,7 +610,7 @@ static void qi_scope_run_defers(qi_state_t *state, qi_scope_t *scope) {
   }
 }
 
-static bool _qi_old_scope(qi_state_t *state, bool ignore_barriers) {
+static qi_bool _qi_old_scope(qi_state_t *state, qi_bool ignore_barriers) {
   qi_scope_t *scope;
 
   if (qi_list_empty(state->scopes))
@@ -627,11 +627,11 @@ static bool _qi_old_scope(qi_state_t *state, bool ignore_barriers) {
   return true;
 }
 
-bool qi_old_scope(qi_state_t *state) {
+qi_bool qi_old_scope(qi_state_t *state) {
   return _qi_old_scope(state, false);
 }
 
-qi_value_t *qi_call_meta(qi_state_t *state, bool *fail_flag, qi_value_t *value,
+qi_value_t *qi_call_meta(qi_state_t *state, qi_bool *fail_flag, qi_value_t *value,
                          char *name, qi_size_t count, ...);
 
 void qi_value_finalizer(GC_PTR _value, GC_PTR _state) {
@@ -879,7 +879,7 @@ qi_value_t *qi_get_method(qi_state_t *state, qi_value_t *value, char *name) {
   return method;
 }
 
-qi_value_t *qi_call_meta(qi_state_t *state, bool *fail_flag, qi_value_t *value,
+qi_value_t *qi_call_meta(qi_state_t *state, qi_bool *fail_flag, qi_value_t *value,
                          char *name, qi_size_t count, ...) {
   qi_value_t *meta = qi_get_method(state, value, name);
   if (!meta)
@@ -949,10 +949,10 @@ char *_qi_type(qi_state_t *state, qi_value_t *value) {
 }
 
 char *_qi_repr(qi_state_t *state, qi_list_t *tempstack, qi_value_t *value,
-               bool quote) {
+               qi_bool quote) {
   char string[128];
   qi_buffer_t *buffer;
-  bool flag;
+  qi_bool flag;
 
   qi_value_t *meta;
   if ((meta = qi_call_meta(state, NULL, value, quote ? "__repr" : "__str", 1,
@@ -1397,7 +1397,7 @@ qi_value_t *qi_get(qi_state_t *state, char *name) {
 }
 
 static void _qi_decl(qi_state_t *state, char *name, qi_value_t *value,
-                     bool is_constant) {
+                     qi_bool is_constant) {
   qi_scope_t *scope = qi_list_last(state->scopes);
   qi_symbol_t *symbol;
 
@@ -1432,7 +1432,7 @@ void qi_decl(qi_state_t *state, char *name, qi_value_t *value) {
   _qi_decl(state, name, value, false);
 }
 
-qi_value_t *_qi_set(qi_state_t *state, bool is_pf, bool is_constant,
+qi_value_t *_qi_set(qi_state_t *state, qi_bool is_pf, qi_bool is_constant,
                     char *name, qi_value_t *value) {
   qi_ssize_t scopes_count = qi_list_length(state->scopes);
 
@@ -1483,7 +1483,7 @@ qi_value_t *_qi_set(qi_state_t *state, bool is_pf, bool is_constant,
 
 size_t _qi_length(qi_state_t *state, qi_value_t *value) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
 
   if ((meta = qi_call_meta(state, &fail, value, "__len", 1, value))) {
     if (meta->type != QI_NUMBER)
@@ -1538,7 +1538,7 @@ leave:
 
 qi_value_t *qi_del(qi_state_t *state, qi_value_t *value, qi_value_t *index) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
   if ((meta = qi_call_meta(state, &fail, value, "__del", 2, value, index)))
     return meta;
 
@@ -1548,7 +1548,7 @@ qi_value_t *qi_del(qi_state_t *state, qi_value_t *value, qi_value_t *index) {
   switch (value->type) {
   case QI_LIST:
     if (index->type == QI_NUMBER) {
-      bool res;
+      qi_bool res;
 
       LOCKED(value, {
         res = qi_list_delete(value->value.list, index->value.number);
@@ -1564,7 +1564,7 @@ qi_value_t *qi_del(qi_state_t *state, qi_value_t *value, qi_value_t *index) {
 
   case QI_TABLE:
     if (index->type == QI_STRING) {
-      bool res;
+      qi_bool res;
 
       LOCKED(value, {
         res = qi_table_delete(value->value.table.table, index->value.string);
@@ -1588,11 +1588,11 @@ leave:
   return NULL;
 }
 
-bool _qi_truthy(qi_state_t *state, qi_value_t *value) {
+qi_bool _qi_truthy(qi_state_t *state, qi_value_t *value) {
   qi_value_t *meta;
   if ((meta = qi_call_meta(state, NULL, value, "__bool", 1, value))) {
     if (meta->type != QI_BOOLEAN)
-      qi_throw_format(state, "__bool returned non-boolean value (%s)",
+      qi_throw_format(state, "__qi_bool returned non-boolean value (%s)",
                       _qi_type(state, meta));
 
     return meta->value.boolean;
@@ -1626,7 +1626,7 @@ qi_value_t *qi_cast(qi_state_t *state, qi_type_t type, qi_value_t *value) {
   if (value->type == type)
     return value;
 
-  bool fail = false;
+  qi_bool fail = false;
 
   switch (type) {
   case QI_BOOLEAN:
@@ -1909,7 +1909,7 @@ leave:
 
 qi_value_t *qi_iter(qi_state_t *state, qi_value_t *value) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
   if ((meta = qi_call_meta(state, &fail, value, "__iter", 1, value)))
     return qi_iter(state, meta);
 
@@ -1921,7 +1921,7 @@ qi_value_t *qi_iter(qi_state_t *state, qi_value_t *value) {
 
 qi_value_t *qi_index(qi_state_t *state, qi_value_t *value, qi_value_t *index) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
   if (index->type == QI_STRING &&
       (meta = qi_get_method(state, value, index->value.string))) {
     if (meta->type == QI_FUNCTION && !meta->value.function.is_builtin) {
@@ -2035,10 +2035,10 @@ leave:
   return NULL;
 }
 
-qi_value_t *qi_index_set(qi_state_t *state, bool is_pf, qi_value_t *value,
+qi_value_t *qi_index_set(qi_state_t *state, qi_bool is_pf, qi_value_t *value,
                          qi_value_t *index, qi_value_t *newvalue) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
 
   if ((meta = qi_call_meta(state, &fail, value, "__index_set", 3, value, index,
                            newvalue)))
@@ -2170,7 +2170,7 @@ qi_value_t *qi_call_debug(qi_state_t *state, qi_value_t *value,
   return _qi_call(state, value, pargs, debug_data);
 }
 
-bool _qi_equals(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
+qi_bool _qi_equals(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
   qi_value_t *meta;
   if ((meta = qi_call_meta(state, NULL, a, "__equals", 2, a, b))) {
     if (meta->type != QI_BOOLEAN)
@@ -2318,9 +2318,9 @@ bool _qi_equals(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
   return true;
 }
 
-bool _qi_in(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
+qi_bool _qi_in(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
 
   if ((meta = qi_call_meta(state, &fail, b, "__in", 2, b, a))) {
     if (meta->type != QI_BOOLEAN)
@@ -2372,7 +2372,7 @@ bool _qi_in(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
 
     return false;
   } else if (a->type == QI_STRING && b->type == QI_TABLE) {
-    bool res = false;
+    qi_bool res = false;
 
     LOCKED(b, {
       qi_table_t *table = b->value.table.table;
@@ -2393,7 +2393,7 @@ leave:
 
 qi_value_t *qi_add(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
 
   if ((meta = qi_call_meta(state, &fail, a, "__add", 2, a, b)))
     return meta;
@@ -2496,7 +2496,7 @@ leave:
 
 qi_value_t *qi_sub(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
 
   if ((meta = qi_call_meta(state, &fail, a, "__sub", 2, a, b)))
     return meta;
@@ -2516,7 +2516,7 @@ leave:
 
 qi_value_t *qi_mul(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
 
   if ((meta = qi_call_meta(state, &fail, a, "__mul", 2, a, b)))
     return meta;
@@ -2540,7 +2540,7 @@ leave:
 
 qi_value_t *qi_div(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
 
   if ((meta = qi_call_meta(state, &fail, a, "__div", 2, a, b)))
     return meta;
@@ -2568,7 +2568,7 @@ leave:
 
 qi_value_t *qi_idiv(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
 
   if ((meta = qi_call_meta(state, &fail, a, "__idiv", 2, a, b)))
     return meta;
@@ -2596,7 +2596,7 @@ leave:
 
 qi_value_t *qi_mod(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
   if ((meta = qi_call_meta(state, &fail, a, "__mod", 2, a, b)))
     return meta;
 
@@ -2623,7 +2623,7 @@ leave:
 
 qi_value_t *qi_pow(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
   if ((meta = qi_call_meta(state, &fail, a, "__pow", 2, a, b)))
     return meta;
 
@@ -2642,7 +2642,7 @@ leave:
 
 qi_value_t *qi_band(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
 
   if ((meta = qi_call_meta(state, &fail, a, "__band", 2, a, b)))
     return meta;
@@ -2667,7 +2667,7 @@ leave:
 
 qi_value_t *qi_bor(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
 
   if ((meta = qi_call_meta(state, &fail, a, "__bor", 2, a, b)))
     return meta;
@@ -2692,7 +2692,7 @@ leave:
 
 qi_value_t *qi_xor(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
 
   if ((meta = qi_call_meta(state, &fail, a, "__xor", 2, a, b)))
     return meta;
@@ -2717,7 +2717,7 @@ leave:
 
 qi_value_t *qi_shl(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
   if ((meta = qi_call_meta(state, &fail, a, "__shl", 2, a, b)))
     return meta;
 
@@ -2737,7 +2737,7 @@ leave:
 
 qi_value_t *qi_shr(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
   if ((meta = qi_call_meta(state, &fail, a, "__shr", 2, a, b)))
     return meta;
 
@@ -2755,9 +2755,9 @@ leave:
   return NULL;
 }
 
-bool _qi_lt(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
+qi_bool _qi_lt(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
   if ((meta = qi_call_meta(state, &fail, a, "__lt", 2, a, b))) {
     if (meta->type != QI_BOOLEAN)
       qi_throw_format(state, "__lt returned non-boolean value (%s)",
@@ -2782,9 +2782,9 @@ leave:
   return false;
 }
 
-bool _qi_gt(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
+qi_bool _qi_gt(qi_state_t *state, qi_value_t *a, qi_value_t *b) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
   if ((meta = qi_call_meta(state, &fail, a, "__gt", 2, a, b))) {
     if (meta->type != QI_BOOLEAN)
       qi_throw_format(state, "__gt returned non-boolean value (%s)",
@@ -2811,7 +2811,7 @@ leave:
 
 qi_value_t *qi_negate(qi_state_t *state, qi_value_t *a) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
   if ((meta = qi_call_meta(state, &fail, a, "__negate", 1, a)))
     return meta;
 
@@ -2830,7 +2830,7 @@ leave:
 
 qi_value_t *qi_unary_plus(qi_state_t *state, qi_value_t *a) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
   if ((meta = qi_call_meta(state, &fail, a, "__unary_plus", 1, a)))
     return meta;
 
@@ -2849,7 +2849,7 @@ leave:
 
 qi_value_t *qi_bnot(qi_state_t *state, qi_value_t *a) {
   qi_value_t *meta;
-  bool fail = false;
+  qi_bool fail = false;
   if ((meta = qi_call_meta(state, &fail, a, "__bnot", 1, a)))
     return meta;
 
@@ -2937,7 +2937,7 @@ void qi_thread_exit(qi_state_t *state, qi_value_t *value) {
     pthread_exit(NULL);
 }
 
-bool qi_thread_main(void) { return pthread_self() == __main_tid; }
+qi_bool qi_thread_main(void) { return pthread_self() == __main_tid; }
 
 qi_value_t *qi_thread_join(qi_state_t *state, void *_td) {
   pthread_t *td = (pthread_t *)_td;
@@ -2969,7 +2969,7 @@ void qi_mutex_lock(void *mutex) {
   pthread_mutex_lock((pthread_mutex_t *)mutex);
 }
 
-bool qi_mutex_trylock(void *mutex) {
+qi_bool qi_mutex_trylock(void *mutex) {
   if (pthread_mutex_trylock((pthread_mutex_t *)mutex) == 0)
     return true;
 
@@ -3007,7 +3007,7 @@ void qi_cond_broadcast(void *cond) {
 
 qi_value_t *qi_builtin_print(qi_state_t *state, qi_size_t pargc,
                              qi_list_t *pargs) {
-  bool first = true;
+  qi_bool first = true;
 
   for (int i = 0; i < pargc; i++) {
     qi_value_t *a = qi_list_data(pargs, i);
@@ -3073,7 +3073,7 @@ qi_value_t *qi_builtin_has_meta_table(qi_state_t *state, qi_size_t pargc,
     qi_throw_format(state, "expected first argument to be: table, but got: %s",
                     _qi_type(state, a));
 
-  bool res = false;
+  qi_bool res = false;
 
   LOCKED(a, { res = qi_has_metatable(a); });
 
@@ -3108,7 +3108,7 @@ qi_value_t *qi_builtin_has_method(qi_state_t *state, qi_size_t pargc,
                     _qi_type(state, b));
 
   qi_value_t *value;
-  bool res = false;
+  qi_bool res = false;
 
   LOCKED(a, {
     res =
@@ -3183,7 +3183,7 @@ qi_value_t *qi_builtin_has_pseudomethod(qi_state_t *state, qi_size_t pargc,
 
   qi_mutex_lock(state->pseudomethods_mutex);
 
-  bool res = qi_table_has(state->pseudomethods, a->value.string);
+  qi_bool res = qi_table_has(state->pseudomethods, a->value.string);
 
   qi_mutex_unlock(state->pseudomethods_mutex);
 
@@ -3200,7 +3200,7 @@ qi_value_t *qi_builtin_unset_pseudomethod(qi_state_t *state, qi_size_t pargc,
 
   qi_mutex_lock(state->pseudomethods_mutex);
 
-  bool res = qi_table_delete(state->pseudomethods, a->value.string);
+  qi_bool res = qi_table_delete(state->pseudomethods, a->value.string);
 
   qi_mutex_unlock(state->pseudomethods_mutex);
 
@@ -3708,7 +3708,7 @@ qi_value_t *qi_builtin_list_insert(qi_state_t *state, qi_size_t pargc,
                     "expected second argument to be: number, but got: %s",
                     _qi_type(state, b));
 
-  bool res = false;
+  qi_bool res = false;
 
   LOCKED(a,
          { res = qi_list_insert(a->value.list, b->value.number, c); });
@@ -4146,7 +4146,7 @@ static void qi_state_setup(qi_state_t *state) {
   qi_init_std(state);
 }
 
-static void _qi_state_init(qi_state_t **state, bool enable_debug) {
+static void _qi_state_init(qi_state_t **state, qi_bool enable_debug) {
   GC_INIT();
   GC_set_java_finalization(1);
   *state = qi_malloc(sizeof(qi_state_t));

+ 28 - 26
qirt.h

@@ -11,9 +11,11 @@
 #include <string.h>
 #include <time.h>
 
+int fileno(FILE *stream);
+
 static const char *LIBQIRT_INFO = "libqirt v01 " __DATE__;
 
-typedef int bool;
+typedef int qi_bool;
 #define true 1
 #define false 0
 
@@ -42,7 +44,7 @@ struct _qi_table_entry_t {
   char *key;
   void *value;
 
-  bool is_deleted;
+  qi_bool is_deleted;
 };
 
 struct _qi_table_t {
@@ -114,14 +116,14 @@ struct _qi_value_t {
   void *mutex;
 
   union {
-    bool boolean;
+    qi_bool boolean;
     double number;
     char *string;
     qi_bytes_t *bytes;
     struct qi_file_t {
       FILE *fd;
       char mode[4];
-      bool is_open;
+      qi_bool is_open;
     } file;
     qi_list_t *list;
     struct {
@@ -138,8 +140,8 @@ struct _qi_value_t {
 
       qi_value_t *_this;
 
-      bool is_builtin;
-      bool is_pm;
+      qi_bool is_builtin;
+      qi_bool is_pm;
     } function;
     struct {
       unsigned int tag;
@@ -185,7 +187,7 @@ struct _qi_scope_t {
   qi_table_t *scope;
   qi_list_t *defers;
 
-  bool is_barrier;
+  qi_bool is_barrier;
 
   void *mutex;
 };
@@ -245,7 +247,7 @@ typedef struct _qi_symbol_t qi_symbol_t;
 struct _qi_symbol_t {
   qi_value_t *value;
 
-  bool is_constant;
+  qi_bool is_constant;
 };
 
 #define qi_set(state, is_pf, name, value)                                     \
@@ -349,23 +351,23 @@ qi_list_t *qi_list_make(void);
 qi_list_t *qi_list_resize(qi_list_t *list, qi_size_t size);
 void *qi_list_index(qi_list_t *list, qi_ssize_t index);
 qi_list_t *qi_list_push(qi_list_t *list, void *value);
-bool qi_list_insert(qi_list_t *list, qi_ssize_t index, void *value);
-bool qi_list_delete(qi_list_t *list, qi_ssize_t index);
-bool qi_list_set(qi_list_t *list, qi_ssize_t index, void *value);
+qi_bool qi_list_insert(qi_list_t *list, qi_ssize_t index, void *value);
+qi_bool qi_list_delete(qi_list_t *list, qi_ssize_t index);
+qi_bool qi_list_set(qi_list_t *list, qi_ssize_t index, void *value);
 void *qi_list_pop(qi_list_t *list);
-bool qi_list_contains(qi_list_t *list, void *value);
+qi_bool qi_list_contains(qi_list_t *list, void *value);
 qi_list_t *qi_list_copy(qi_list_t *list);
 qi_table_t *qi_table_make(void);
 void *qi_table_get(qi_table_t *table, char *key);
-bool qi_table_has(qi_table_t *table, char *key);
+qi_bool qi_table_has(qi_table_t *table, char *key);
 qi_table_t *qi_table_set(qi_table_t *table, char *key, void *value);
 qi_list_t *qi_table_keys(qi_table_t *table);
-bool qi_table_delete(qi_table_t *table, char *key);
+qi_bool qi_table_delete(qi_table_t *table, char *key);
 qi_table_t *qi_table_copy(qi_table_t *table);
 void qi_add_defer(qi_state_t *state, qi_ssize_t index, qi_defer_t defer);
 qi_defer_t qi_pop_defer(qi_state_t *state, qi_ssize_t index);
 void qi_new_scope(qi_state_t *state);
-bool qi_old_scope(qi_state_t *state);
+qi_bool qi_old_scope(qi_state_t *state);
 qi_value_t *qi_make_value(qi_type_t type);
 #define qi_make_boolean(state, x) ((x) ? (state)->_true : (state)->_false)
 qi_value_t *qi_make_number(qi_state_t *state, double number);
@@ -386,11 +388,11 @@ qi_value_t *qi_make_data(qi_state_t *state, unsigned int tag, void *data);
 qi_value_t *qi_add_pseudomethod(qi_state_t *state, char *name, qi_size_t pargc,
                                 qi_handle_t handle);
 qi_value_t *qi_get_method(qi_state_t *state, qi_value_t *value, char *name);
-qi_value_t *qi_call_meta(qi_state_t *state, bool *fail_flag, qi_value_t *value,
+qi_value_t *qi_call_meta(qi_state_t *state, qi_bool *fail_flag, qi_value_t *value,
                          char *name, qi_size_t count, ...);
 char *_qi_type(qi_state_t *state, qi_value_t *value);
 char *_qi_repr(qi_state_t *state, qi_list_t *tempstack, qi_value_t *value,
-               bool quote);
+               qi_bool quote);
 void qi_finalize(void);
 void qi_fatal(qi_state_t *state, char *format, ...);
 qi_trap_t *qi_set_trap(qi_state_t *state, qi_defer_t finally);
@@ -401,21 +403,21 @@ qi_value_t *qi_find(qi_state_t *state, char *name);
 qi_value_t *qi_get(qi_state_t *state, char *name);
 void qi_decl_const(qi_state_t *state, char *name, qi_value_t *value);
 void qi_decl(qi_state_t *state, char *name, qi_value_t *value);
-qi_value_t *_qi_set(qi_state_t *state, bool is_pf, bool is_constant,
+qi_value_t *_qi_set(qi_state_t *state, qi_bool is_pf, qi_bool is_constant,
                     char *name, qi_value_t *value);
 size_t _qi_length(qi_state_t *state, qi_value_t *value);
 qi_value_t *qi_del(qi_state_t *state, qi_value_t *value, qi_value_t *index);
-bool _qi_truthy(qi_state_t *state, qi_value_t *value);
+qi_bool _qi_truthy(qi_state_t *state, qi_value_t *value);
 qi_value_t *qi_cast(qi_state_t *state, qi_type_t type, qi_value_t *value);
 qi_value_t *qi_iter(qi_state_t *state, qi_value_t *value);
 qi_value_t *qi_index(qi_state_t *state, qi_value_t *value, qi_value_t *index);
-qi_value_t *qi_index_set(qi_state_t *state, bool is_pf, qi_value_t *value,
+qi_value_t *qi_index_set(qi_state_t *state, qi_bool is_pf, qi_value_t *value,
                          qi_value_t *index, qi_value_t *newvalue);
 qi_value_t *qi_call(qi_state_t *state, qi_value_t *value, qi_list_t *pargs);
 qi_value_t *qi_call_debug(qi_state_t *state, qi_value_t *value,
                           qi_list_t *pargs, const char *debug_data);
-bool _qi_equals(qi_state_t *state, qi_value_t *a, qi_value_t *b);
-bool _qi_in(qi_state_t *state, qi_value_t *a, qi_value_t *b);
+qi_bool _qi_equals(qi_state_t *state, qi_value_t *a, qi_value_t *b);
+qi_bool _qi_in(qi_state_t *state, qi_value_t *a, qi_value_t *b);
 qi_value_t *qi_add(qi_state_t *state, qi_value_t *a, qi_value_t *b);
 qi_value_t *qi_sub(qi_state_t *state, qi_value_t *a, qi_value_t *b);
 qi_value_t *qi_mul(qi_state_t *state, qi_value_t *a, qi_value_t *b);
@@ -428,8 +430,8 @@ qi_value_t *qi_bor(qi_state_t *state, qi_value_t *a, qi_value_t *b);
 qi_value_t *qi_xor(qi_state_t *state, qi_value_t *a, qi_value_t *b);
 qi_value_t *qi_shl(qi_state_t *state, qi_value_t *a, qi_value_t *b);
 qi_value_t *qi_shr(qi_state_t *state, qi_value_t *a, qi_value_t *b);
-bool _qi_lt(qi_state_t *state, qi_value_t *a, qi_value_t *b);
-bool _qi_gt(qi_state_t *state, qi_value_t *a, qi_value_t *b);
+qi_bool _qi_lt(qi_state_t *state, qi_value_t *a, qi_value_t *b);
+qi_bool _qi_gt(qi_state_t *state, qi_value_t *a, qi_value_t *b);
 qi_value_t *qi_negate(qi_state_t *state, qi_value_t *a);
 qi_value_t *qi_unary_plus(qi_state_t *state, qi_value_t *a);
 qi_value_t *qi_bnot(qi_state_t *state, qi_value_t *a);
@@ -437,11 +439,11 @@ void qi_exit(qi_state_t *state, int code);
 void *qi_thread_create(qi_state_t *state, qi_value_t *fn, qi_list_t *args);
 qi_value_t *qi_thread_join(qi_state_t *state, void *td);
 void qi_thread_exit(qi_state_t *state, qi_value_t *value);
-bool qi_thread_main(void);
+qi_bool qi_thread_main(void);
 void *qi_mutex_create(void);
 void qi_mutex_destroy(void *mutex);
 void qi_mutex_lock(void *mutex);
-bool qi_mutex_trylock(void *mutex);
+qi_bool qi_mutex_trylock(void *mutex);
 void qi_mutex_unlock(void *mutex);
 void *qi_cond_create(void);
 void qi_cond_destroy(void *cond);

+ 2 - 1
qistd.c

@@ -1,3 +1,4 @@
+#include "qirt.h"
 qi_value_t *__qistd0(qi_state_t *state, qi_size_t pargc, qi_list_t *pargs) {
 qi_decl(state, "l", qi_list_index(pargs, 0));
 return qi_index(state, qi_get(state, "l"), qi_make_number(state, 0));return state->nil;
@@ -263,7 +264,7 @@ qi_value_t *__qistd42(qi_state_t *state, qi_size_t pargc, qi_list_t *pargs) {
 qi_decl(state, "name", qi_list_index(pargs, 0));
 if (_qi_truthy(state, qi_not_equals(state, qi_call(state, qi_get(state, "type"), __qistd43(state)), qi_make_string(state, "string")))) {
 qi_throw(state, qi_add(state, qi_make_string(state, "expected first argument to be: string, but got: "), qi_call(state, qi_get(state, "type"), __qistd44(state))));}
-bool b = qi_find(state, qi_get(state, "name")->value.string) != NULL;
+qi_bool b = qi_find(state, qi_get(state, "name")->value.string) != NULL;
 return qi_make_boolean(state, b);
 return state->nil;
 }

+ 1 - 1
std.qi

@@ -59,7 +59,7 @@ func file_write(filename, data) {
 func is_defined(name) {
   if type(name) != "string"
     throw "expected first argument to be: string, but got: " + type(name)
-  inline `bool b = qi_find(state, qi_get(state, "name")->value.string) != NULL`
+  inline `qi_bool b = qi_find(state, qi_get(state, "name")->value.string) != NULL`
   inline `return qi_make_boolean(state, b)`
 }
 func list_remove(l, x, first=false) {