diff --git a/ekc3/ekc3.c b/ekc3/ekc3.c
index d33303f..3d0c980 100644
--- a/ekc3/ekc3.c
+++ b/ekc3/ekc3.c
@@ -256,7 +256,7 @@ sw ekc3_buf_parse_kc3_block (s_buf *buf, s_block *dest)
result += r;
tail = &(*tail)->next.data.list;
}
- if (! block_init_from_list(&tmp, (const s_list * const*) &list)) {
+ if (! block_init_from_list(&tmp, &list)) {
list_delete_all(list);
err_puts("ekc3_buf_parse_kc3_block: block_init_from_list");
assert(! "ekc3_buf_parse_kc3_block: block_init_from_list");
diff --git a/event/event.c b/event/event.c
index fd11b4d..0575bee 100644
--- a/event/event.c
+++ b/event/event.c
@@ -38,21 +38,22 @@ void kc3_event_callback (int fd, short events, void *tag_tuple)
{
s_tag *arg;
s_list *arguments;
+ p_callable callable;
struct event *ev;
s_list *events_list;
- s_fn *fn;
s_tag *tag;
s_tag tmp;
tag = tag_tuple;
if (tag->type != TAG_TUPLE ||
tag->data.tuple.count != 3 ||
- tag->data.tuple.tag[0].type != TAG_FN ||
+ tag->data.tuple.tag[0].type != TAG_CALLABLE ||
+ ! (callable = tag->data.tuple.tag[0].data.callable) ||
+ callable->type == CALLABLE_VOID ||
tag->data.tuple.tag[1].type != TAG_PTR) {
err_puts("kc3_event_callback: invalid arg");
assert(! "kc3_event_callback: invalid arg");
abort();
}
- fn = &tag->data.tuple.tag[0].data.fn;
ev = tag->data.tuple.tag[1].data.ptr.p;
arg = tag->data.tuple.tag + 2;
events_list = NULL;
@@ -70,7 +71,8 @@ void kc3_event_callback (int fd, short events, void *tag_tuple)
(events_list, list_new_ptr
(ev, list_new_tag_copy
(arg, NULL))));
- if (! env_eval_call_fn_args(&g_kc3_env, fn, arguments, &tmp)) {
+ if (! env_eval_call_callable_args(&g_kc3_env, callable, arguments,
+ &tmp)) {
err_puts("kc3_event_callback: callback failed");
assert(! "kc3_event_callback: callback failed");
abort();
@@ -90,7 +92,7 @@ struct event_base * kc3_event_base_new (void)
struct event * kc3_event_new (struct event_base **event_base, s32 fd,
const s_list * const *events,
- const s_fn *callback, s_tag *arg)
+ const s_callable *callback, s_tag *arg)
{
const s_list *e;
struct event *ev;
@@ -119,7 +121,7 @@ struct event * kc3_event_new (struct event_base **event_base, s32 fd,
assert(! "kc3_event_new: event_new");
return NULL;
}
- tag_init_fn_copy(tag->data.tuple.tag, callback);
+ tag_init_callable_copy(tag->data.tuple.tag, callback);
tag_init_copy(tag->data.tuple.tag + 2, arg);
tag_init_ptr(tag->data.tuple.tag + 1, ev);
return ev;
diff --git a/event/event.h b/event/event.h
index 1b49eec..df5258b 100644
--- a/event/event.h
+++ b/event/event.h
@@ -21,7 +21,8 @@ void kc3_event_delete (struct event *ev);
struct event * kc3_event_new (struct event_base **event_base,
s32 fd,
const s_list * const *events,
- const s_fn *callback, s_tag *arg);
+ const s_callable *callback,
+ s_tag *arg);
/* Operators. */
s32 kc3_event_add (struct event **ev, s_time *time);
diff --git a/libkc3/buf_inspect.c b/libkc3/buf_inspect.c
index 316a976..062f474 100644
--- a/libkc3/buf_inspect.c
+++ b/libkc3/buf_inspect.c
@@ -1247,6 +1247,40 @@ sw buf_inspect_call_str_size (s_pretty *pretty, const s_call *call)
return buf_inspect_str_eval_size(pretty, call->arguments->tag.data.list);
}
+sw buf_inspect_callable (s_buf *buf, const s_callable *callable)
+{
+ switch (callable->type) {
+ case CALLABLE_CFN:
+ return buf_inspect_cfn(buf, &callable->data.cfn);
+ case CALLABLE_FN:
+ return buf_inspect_fn(buf, &callable->data.fn);
+ case CALLABLE_VOID:
+ err_puts("buf_inspect_callable: CALLABLE_VOID");
+ assert(! "buf_inspect_callable: CALLABLE_VOID");
+ return -1;
+ }
+ err_puts("buf_inspect_callable: unknown callable type");
+ assert(! "buf_inspect_callable: unknown callable type");
+ return -1;
+}
+
+sw buf_inspect_callable_size (s_pretty *pretty, const s_callable *callable)
+{
+ switch (callable->type) {
+ case CALLABLE_CFN:
+ return buf_inspect_cfn_size(pretty, &callable->data.cfn);
+ case CALLABLE_FN:
+ return buf_inspect_fn_size(pretty, &callable->data.fn);
+ case CALLABLE_VOID:
+ err_puts("buf_inspect_callable_size: CALLABLE_VOID");
+ assert(! "buf_inspect_callable_size: CALLABLE_VOID");
+ return -1;
+ }
+ err_puts("buf_inspect_callable_size: unknown callable type");
+ assert(! "buf_inspect_callable_size: unknown callable type");
+ return -1;
+}
+
sw buf_inspect_cast (s_buf *buf, const s_call *call)
{
s_tag *arg;
diff --git a/libkc3/buf_parse.c b/libkc3/buf_parse.c
index 65c963d..468d77f 100644
--- a/libkc3/buf_parse.c
+++ b/libkc3/buf_parse.c
@@ -4189,7 +4189,7 @@ sw buf_parse_tag_primary_4 (s_buf *buf, s_tag *dest)
goto restore;
case 'c':
if ((r = buf_parse_tag_cow(buf, dest)) ||
- (r = buf_parse_tag_cfn(buf, dest)) ||
+ (r = buf_parse_tag_callable(buf, dest)) ||
(r = buf_parse_tag_call(buf, dest)) ||
(r = buf_parse_tag_ident(buf, dest)))
goto end;
@@ -4220,7 +4220,7 @@ sw buf_parse_tag_primary_4 (s_buf *buf, s_tag *dest)
goto restore;
case 'f':
case 'm':
- if ((r = buf_parse_tag_fn(buf, dest)))
+ if ((r = buf_parse_tag_callable(buf, dest)))
goto end;
// fall through
case 't':
@@ -4256,7 +4256,7 @@ sw buf_parse_tag_primary_4 (s_buf *buf, s_tag *dest)
goto end;
goto restore;
default:
- if ((r = buf_parse_tag_fn(buf, dest)) ||
+ if ((r = buf_parse_tag_callable(buf, dest)) ||
(r = buf_parse_tag_call(buf, dest)) ||
(r = buf_parse_tag_ident(buf, dest)) ||
(r = buf_parse_tag_sym(buf, dest)))
diff --git a/libkc3/buf_parse.h b/libkc3/buf_parse.h
index a64767e..ee5b8db 100644
--- a/libkc3/buf_parse.h
+++ b/libkc3/buf_parse.h
@@ -116,11 +116,10 @@ sw buf_parse_tag_call_access (s_buf *buf, s_tag *dest);
sw buf_parse_tag_call_op (s_buf *buf, s_tag *dest);
sw buf_parse_tag_call_op_unary (s_buf *buf, s_tag *dest);
sw buf_parse_tag_call_paren (s_buf *buf, s_tag *dest);
-sw buf_parse_tag_cfn (s_buf *buf, s_tag *dest);
+sw buf_parse_tag_callable (s_buf *buf, s_tag *dest);
sw buf_parse_tag_character (s_buf *buf, s_tag *dest);
sw buf_parse_tag_f32 (s_buf *buf, s_tag *dest);
sw buf_parse_tag_f64 (s_buf *buf, s_tag *dest);
-sw buf_parse_tag_fn (s_buf *buf, s_tag *dest);
sw buf_parse_tag_ident (s_buf *buf, s_tag *dest);
sw buf_parse_tag_ident_sym (s_buf *buf, s_tag *dest);
sw buf_parse_tag_if (s_buf *buf, s_tag *dest);
diff --git a/libkc3/callable.c b/libkc3/callable.c
new file mode 100644
index 0000000..4a46b0e
--- /dev/null
+++ b/libkc3/callable.c
@@ -0,0 +1,103 @@
+/* kc3
+ * Copyright 2022,2023,2024 kmx.io <contact@kmx.io>
+ *
+ * Permission is hereby granted to use this software granted the above
+ * copyright notice and this permission paragraph are included in all
+ * copies and substantial portions of this software.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS-IS" WITHOUT ANY GUARANTEE OF
+ * PURPOSE AND PERFORMANCE. IN NO EVENT WHATSOEVER SHALL THE
+ * AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+#include <unistd.h>
+#include "alloc.h"
+#include "assert.h"
+#include "callable.h"
+#include "cfn.h"
+#include "fn.h"
+#include "tag.h"
+
+void callable_delete (s_callable *callable)
+{
+ assert(callable);
+ /* FIXME: lock callable lock. */
+ if (callable->reference_count <= 0)
+ goto clean;
+ if (--callable->reference_count > 0)
+ goto clean;
+ switch (callable->type) {
+ case CALLABLE_CFN: cfn_clean(&callable->data.cfn); break;
+ case CALLABLE_FN: fn_clean(&callable->data.fn); break;
+ case CALLABLE_VOID: break;
+ }
+ /* FIXME: unlock callable lock. */
+ free(callable);
+ return;
+ clean:
+ /* FIXME: unlock callable lock. */
+ return;
+}
+
+s_callable * callable_new (void)
+{
+ s_callable *callable;
+ if (! (callable = alloc(sizeof(s_callable))))
+ return NULL;
+ return callable;
+}
+
+s_callable * callable_new_ref (s_callable *callable)
+{
+ assert(callable);
+ assert(callable->reference_count > 0);
+ callable->reference_count++;
+ return callable;
+}
+
+void p_callable_clean (p_callable *callable)
+{
+ callable_delete(*callable);
+}
+
+p_callable * p_callable_init (p_callable *callable)
+{
+ p_callable tmp;
+ if (! (tmp = callable_new()))
+ return NULL;
+ *callable = tmp;
+ return callable;
+}
+p_callable * p_callable_init_cast (p_callable *callable,
+ const s_sym * const *type,
+ const s_tag *tag)
+{
+ const s_sym *tag_type_;
+ (void) callable;
+ switch (tag->type) {
+ case TAG_CALLABLE:
+ err_puts("p_callable_init_cast: not implemented.");
+ assert(! "p_callable_init_cast: not implemented.");
+ return NULL;
+ default:
+ break;
+ }
+ err_write_1("p_callable_init_cast: cannot cast from ");
+ tag_type(tag, &tag_type_);
+ err_inspect_sym(&tag_type_);
+ err_write_1(" to ");
+ err_inspect_sym(type);
+ err_write_1(" aka Callable.\n");
+ assert(! "p_callable_init_cast: cannot cast to Callable.");
+ return NULL;
+}
+
+p_callable * p_callable_init_copy (p_callable *callable,
+ p_callable *src)
+{
+ p_callable tmp;
+ if (! (tmp = callable_new_ref(*src)))
+ return NULL;
+ *callable = tmp;
+ return callable;
+}
diff --git a/libkc3/callable.h b/libkc3/callable.h
index 692cdda..08a0df2 100644
--- a/libkc3/callable.h
+++ b/libkc3/callable.h
@@ -22,12 +22,12 @@ p_callable * p_callable_init (p_callable *callable);
p_callable * p_callable_init_cast (p_callable *callable,
const s_sym * const *type,
const s_tag *tag);
-s_callable * p_callable_init_copy (p_callable *callable,
+p_callable * p_callable_init_copy (p_callable *callable,
p_callable *src);
/* Heap-allocation functions, call callable_delete after use. */
-s_callable * callable_delete (s_callable *callable);
-s_callable * callable_new (s_callable *callable);
+void callable_delete (s_callable *callable);
+s_callable * callable_new (void);
s_callable * callable_new_ref (s_callable *callable);
#endif /* LIBKC3_CALLABLE_H */
diff --git a/libkc3/compare.c b/libkc3/compare.c
index b32a2d1..77f40e9 100644
--- a/libkc3/compare.c
+++ b/libkc3/compare.c
@@ -144,7 +144,7 @@ s8 compare_cfn (const s_cfn *a, const s_cfn *b)
COMPARE_DEF(character)
-s8 compare_complex (const s_complex *a, const s_complex *b)
+s8 compare_complex (s_complex *a, s_complex *b)
{
s_tag aa = {0};
s_tag ax2 = {0};
diff --git a/libkc3/compare.h b/libkc3/compare.h
index 79c79d4..6a70b35 100644
--- a/libkc3/compare.h
+++ b/libkc3/compare.h
@@ -30,7 +30,7 @@ s8 compare_call (const s_call *a, const s_call *b);
s8 compare_callable (const s_callable *a, const s_callable *b);
s8 compare_cfn (const s_cfn *a, const s_cfn *b);
COMPARE_PROTOTYPE(character);
-s8 compare_complex (const s_complex *a, const s_complex *b);
+s8 compare_complex (s_complex *a, s_complex *b);
COMPARE_PROTOTYPE(f32);
COMPARE_PROTOTYPE(f64);
COMPARE_PROTOTYPE(f128);
diff --git a/libkc3/complex.c b/libkc3/complex.c
index 04e80f1..1ecd554 100644
--- a/libkc3/complex.c
+++ b/libkc3/complex.c
@@ -44,7 +44,7 @@ DEF_COMPLEX_INIT(u32)
DEF_COMPLEX_INIT(u64)
DEF_COMPLEX_INIT(uw)
-s_complex * complex_add (const s_complex *a, const s_complex *b,
+s_complex * complex_add (s_complex *a, s_complex *b,
s_complex *dest)
{
assert(a);
@@ -69,7 +69,7 @@ void complex_delete (s_complex *c)
free(c);
}
-s_complex * complex_div (const s_complex *a, const s_complex *b,
+s_complex * complex_div (s_complex *a, s_complex *b,
s_complex *dest)
{
s_tag axbx;
@@ -116,7 +116,7 @@ s_complex * complex_init (s_complex *c)
}
s_complex * complex_init_cast (s_complex *c, const s_sym * const *type,
- const s_tag *src)
+ s_tag *src)
{
assert(c);
assert(src);
@@ -186,7 +186,7 @@ s_complex * complex_init_integer (s_complex *c, const s_integer *src)
return c;
}
-s_complex * complex_init_ratio (s_complex *c, const s_ratio *src)
+s_complex * complex_init_ratio (s_complex *c, s_ratio *src)
{
assert(c);
tag_init_ratio_copy(&c->x, src);
@@ -194,7 +194,7 @@ s_complex * complex_init_ratio (s_complex *c, const s_ratio *src)
return c;
}
-s_complex * complex_mul (const s_complex *a, const s_complex *b,
+s_complex * complex_mul (s_complex *a, s_complex *b,
s_complex *dest)
{
s_tag axbx;
@@ -230,7 +230,7 @@ s_complex * complex_new (void)
return c;
}
-s_complex * complex_new_add (const s_complex *a, const s_complex *b)
+s_complex * complex_new_add (s_complex *a, s_complex *b)
{
s_complex *c;
c = alloc(sizeof(s_complex));
@@ -244,7 +244,7 @@ s_complex * complex_new_add (const s_complex *a, const s_complex *b)
}
s_complex * complex_new_cast (const s_sym * const *type,
- const s_tag *src)
+ s_tag *src)
{
s_complex *c;
assert(src);
@@ -258,7 +258,7 @@ s_complex * complex_new_cast (const s_sym * const *type,
return c;
}
-s_complex * complex_new_div (const s_complex *a, const s_complex *b)
+s_complex * complex_new_div (s_complex *a, s_complex *b)
{
s_complex *c;
c = alloc(sizeof(s_complex));
@@ -271,7 +271,7 @@ s_complex * complex_new_div (const s_complex *a, const s_complex *b)
return c;
}
-s_complex * complex_new_mul (const s_complex *a, const s_complex *b)
+s_complex * complex_new_mul (s_complex *a, s_complex *b)
{
s_complex *c;
c = alloc(sizeof(s_complex));
@@ -284,7 +284,7 @@ s_complex * complex_new_mul (const s_complex *a, const s_complex *b)
return c;
}
-s_complex * complex_new_sub (const s_complex *a, const s_complex *b)
+s_complex * complex_new_sub (s_complex *a, s_complex *b)
{
s_complex *c;
c = alloc(sizeof(s_complex));
@@ -311,7 +311,7 @@ s_complex * complex_new_copy (s_complex *src)
return c;
}
-s_complex * complex_sub (const s_complex *a, const s_complex *b,
+s_complex * complex_sub (s_complex *a, s_complex *b,
s_complex *dest)
{
assert(a);
@@ -322,7 +322,7 @@ s_complex * complex_sub (const s_complex *a, const s_complex *b,
return dest;
}
-s_tag * complex_norm (const s_complex *c, s_tag *dest)
+s_tag * complex_norm (s_complex *c, s_tag *dest)
{
s_complex d;
s_tag sum;
@@ -344,7 +344,7 @@ bool complex_is_zero(const s_complex *c)
return tag_is_zero(&c->x) && tag_is_zero(&c->y);
}
-f32 complex_to_f32 (const s_complex *c)
+f32 complex_to_f32 (s_complex *c)
{
s_tag norm;
const s_sym *type;
@@ -356,7 +356,7 @@ f32 complex_to_f32 (const s_complex *c)
return x;
}
-f64 complex_to_f64 (const s_complex *c)
+f64 complex_to_f64 (s_complex *c)
{
s_tag norm;
const s_sym *type;
@@ -368,7 +368,7 @@ f64 complex_to_f64 (const s_complex *c)
return x;
}
-f128 complex_to_f128 (const s_complex *c)
+f128 complex_to_f128 (s_complex *c)
{
s_tag norm;
const s_sym *type;
diff --git a/libkc3/complex.h b/libkc3/complex.h
index 081f4d9..90825ed 100644
--- a/libkc3/complex.h
+++ b/libkc3/complex.h
@@ -21,13 +21,13 @@ void complex_clean (s_complex *c);
s_complex * complex_init (s_complex *c);
s_complex * complex_init_1 (s_complex *c, const s8 *p);
s_complex * complex_init_cast (s_complex *c, const s_sym * const *type,
- const s_tag *src);
+ s_tag *src);
s_complex * complex_init_copy (s_complex *c, s_complex *src);
s_complex * complex_init_f32 (s_complex *c, f32 src);
s_complex * complex_init_f64 (s_complex *c, f64 src);
s_complex * complex_init_f128 (s_complex *c, f128 src);
s_complex * complex_init_integer (s_complex *c, const s_integer *src);
-s_complex * complex_init_ratio (s_complex *c, const s_ratio *src);
+s_complex * complex_init_ratio (s_complex *c, s_ratio *src);
s_complex * complex_init_s8 (s_complex *c, s8 src);
s_complex * complex_init_s16 (s_complex *c, s16 src);
s_complex * complex_init_s32 (s_complex *c, s32 src);
@@ -43,30 +43,30 @@ s_complex * complex_init_uw (s_complex *c, uw src);
s_complex * complex_set_double (s_complex *a, double x, double y);
/* Modifiers */
-s_complex * complex_add (const s_complex *a, const s_complex *b,
+s_complex * complex_add (s_complex *a, s_complex *b,
s_complex *dest);
-s_complex * complex_div (const s_complex *a, const s_complex *b,
+s_complex * complex_div (s_complex *a, s_complex *b,
s_complex *dest);
-s_complex * complex_mul (const s_complex *a, const s_complex *b,
+s_complex * complex_mul (s_complex *a, s_complex *b,
s_complex *dest);
-s_complex * complex_sub (const s_complex *a, const s_complex *b,
+s_complex * complex_sub (s_complex *a, s_complex *b,
s_complex *dest);
+f32 complex_to_f32 (s_complex *c);
+f64 complex_to_f64 (s_complex *c);
+f128 complex_to_f128 (s_complex *c);
/* Heap-allocation functions, call complex_delete after use. */
void complex_delete (s_complex *c);
s_complex * complex_new (void);
-s_complex * complex_new_add (const s_complex *a, const s_complex *b);
+s_complex * complex_new_add (s_complex *a, s_complex *b);
s_complex * complex_new_cast (const s_sym * const *type,
- const s_tag *src);
-s_complex * complex_new_div (const s_complex *a, const s_complex *b);
-s_complex * complex_new_mul (const s_complex *a, const s_complex *b);
-s_complex * complex_new_sub (const s_complex *a, const s_complex *b);
+ s_tag *src);
+s_complex * complex_new_div (s_complex *a, s_complex *b);
+s_complex * complex_new_mul (s_complex *a, s_complex *b);
+s_complex * complex_new_sub (s_complex *a, s_complex *b);
s_complex * complex_new_copy (s_complex *a);
/* Observers */
bool complex_is_zero (const s_complex *c);
-f32 complex_to_f32 (const s_complex *c);
-f64 complex_to_f64 (const s_complex *c);
-f128 complex_to_f128 (const s_complex *c);
#endif /* LIBKC3_COMPLEX_H */
diff --git a/libkc3/env.c b/libkc3/env.c
index 535945b..c8ddacd 100644
--- a/libkc3/env.c
+++ b/libkc3/env.c
@@ -311,7 +311,7 @@ bool env_def (s_env *env, const s_ident *ident, s_tag *value)
const s_sym * env_def_clean (s_env *env, const s_sym *module,
const s_tag *clean)
{
- const s_struct_type *st;
+ s_struct_type *st;
s_tag tag_module_name;
s_tag tag_st;
s_tag tag_struct_type;
@@ -451,7 +451,7 @@ s_tag * env_defoperator (s_env *env, const s_sym * const *name,
return dest;
}
-const s_sym * env_defstruct (s_env *env, const s_list *spec)
+const s_sym * env_defstruct (s_env *env, s_list *spec)
{
s_tag tag_module_name;
s_tag tag_st;
@@ -656,7 +656,7 @@ bool env_eval_call_cfn_args (s_env *env, s_cfn *cfn, s_list *arguments,
//s_frame frame;
s_tag tag;
assert(env);
- assert(call);
+ assert(cfn);
assert(dest);
//if (! frame_init(&frame, env->frame))
// return false;
@@ -3723,9 +3723,9 @@ bool * env_struct_type_exists (s_env *env, const s_sym *module,
return dest;
}
-const s_struct_type ** env_struct_type_find (s_env *env,
- const s_sym *module,
- const s_struct_type **dest)
+s_struct_type ** env_struct_type_find (s_env *env,
+ const s_sym *module,
+ s_struct_type **dest)
{
s_facts_with_cursor cursor;
s_fact *found;
diff --git a/libkc3/env.h b/libkc3/env.h
index 367da01..9137218 100644
--- a/libkc3/env.h
+++ b/libkc3/env.h
@@ -57,7 +57,7 @@ s_tag * env_defoperator (s_env *env, const s_sym * const *name,
u8 op_precedence,
const s_sym * const *op_assoc,
s_tag *dest);
-const s_sym * env_defstruct (s_env *env, const s_list *spec);
+const s_sym * env_defstruct (s_env *env, s_list *spec);
s_fact_w * env_fact_w_eval (s_env *env, s_fact_w *fact,
s_fact_w *dest);
s_tag * env_facts_collect_with (s_env *env, s_facts *facts,
@@ -128,9 +128,9 @@ u8 env_special_operator_arity (s_env *env,
const s_ident *ident);
bool * env_struct_type_exists (s_env *env, const s_sym *module,
bool *dest);
-const s_struct_type **
+s_struct_type **
env_struct_type_find (s_env *env, const s_sym *module,
- const s_struct_type **dest);
+ s_struct_type **dest);
f_clean env_struct_type_get_clean (s_env *env,
const s_sym *module);
s_list ** env_struct_type_get_spec (s_env *env,
@@ -155,6 +155,10 @@ bool env_eval_call (s_env *env, s_call *call,
s_tag *dest);
bool env_eval_call_arguments (s_env *env, s_list *args,
s_list **dest);
+bool env_eval_call_callable_args (s_env *env,
+ const s_callable *callable,
+ s_list *arguments,
+ s_tag *dest);
bool env_eval_call_cfn_args (s_env *env, s_cfn *cfn, s_list *arguments,
s_tag *dest);
bool env_eval_call_fn (s_env *env, const s_call *call,
diff --git a/libkc3/hash.c b/libkc3/hash.c
index ff5a744..afae8ab 100644
--- a/libkc3/hash.c
+++ b/libkc3/hash.c
@@ -151,6 +151,25 @@ bool hash_update_call (t_hash *hash, const s_call *call)
hash_update_list(hash, (const s_list * const *) &call->arguments);
}
+bool hash_update_callable (t_hash *hash, const s_callable *callable)
+{
+ const char type[] = "callable";
+ assert(hash);
+ assert(callable);
+ if (! hash_update(hash, type, sizeof(type)) ||
+ ! hash_update_u8(hash, callable->type))
+ return false;
+ switch (callable->type) {
+ case CALLABLE_CFN: return hash_update_cfn(hash, &callable->data.cfn);
+ case CALLABLE_FN: return hash_update_fn(hash, &callable->data.fn);
+ case CALLABLE_VOID: return true;
+ }
+ err_puts("hash_update_callable: invalid callable type");
+ assert(! "hash_update_callable: invalid callable type");
+ return false;
+}
+
+
bool hash_update_cfn (t_hash *hash, const s_cfn *cfn)
{
const char type[] = "cfn";
diff --git a/libkc3/kc3.c b/libkc3/kc3.c
index fa9015a..87446ee 100644
--- a/libkc3/kc3.c
+++ b/libkc3/kc3.c
@@ -153,7 +153,7 @@ s_tag * kc3_defoperator (const s_sym **name, const s_sym **sym,
operator_associativity, dest);
}
-s_tag * kc3_defstruct (const s_list * const *spec, s_tag *dest)
+s_tag * kc3_defstruct (s_list **spec, s_tag *dest)
{
s_tag tmp = {0};
assert(spec);
diff --git a/libkc3/kc3_main.h b/libkc3/kc3_main.h
index a345ceb..e453cd5 100644
--- a/libkc3/kc3_main.h
+++ b/libkc3/kc3_main.h
@@ -65,7 +65,7 @@ s_tag * kc3_defoperator (const s_sym **name, const s_sym **sym,
u8 operator_precedence,
const s_sym **operator_associativity,
s_tag *dest);
-s_tag * kc3_defstruct (const s_list * const *spec, s_tag *dest);
+s_tag * kc3_defstruct (s_list **spec, s_tag *dest);
void ** kc3_dlopen (const s_str *path, void **dest);
s_facts ** kc3_env_db (s_facts **dest);
sw kc3_errno (void);
diff --git a/libkc3/list_init.c b/libkc3/list_init.c
index 1558e7e..9861e72 100644
--- a/libkc3/list_init.c
+++ b/libkc3/list_init.c
@@ -220,8 +220,8 @@ s_list * list_init_map_1 (s_list *list, const char *p, s_list *next)
return list;
}
-s_list * list_init_map_from_lists (s_list *list, const s_list *keys,
- const s_list *values, s_list *next)
+s_list * list_init_map_from_lists (s_list *list, s_list *keys,
+ s_list *values, s_list *next)
{
s_list tmp = {0};
assert(list);
@@ -254,7 +254,7 @@ s_list * list_init_ptr_free (s_list *list, void *p, s_list *next)
return list;
}
-s_list * list_init_quote_copy (s_list *list, const s_quote *quote,
+s_list * list_init_quote_copy (s_list *list, s_quote *quote,
s_list *next)
{
s_list tmp = {0};
@@ -288,8 +288,7 @@ s_list * list_init_ratio (s_list *list, s_list *next)
return list;
}
-s_list * list_init_ratio_copy (s_list *list, const s_ratio *r,
- s_list *next)
+s_list * list_init_ratio_copy (s_list *list, s_ratio *r, s_list *next)
{
s_list tmp = {0};
assert(list);
@@ -475,7 +474,7 @@ s_list * list_init_struct (s_list *list, const s_sym *module,
return list;
}
-s_list * list_init_struct_copy (s_list *list, const s_struct *src,
+s_list * list_init_struct_copy (s_list *list, s_struct *src,
s_list *next)
{
s_list tmp = {0};
@@ -501,7 +500,7 @@ s_list * list_init_struct_with_data (s_list *list, const s_sym *module,
}
s_list * list_init_struct_type (s_list *list, const s_sym *module,
- const s_list *spec, s_list *next)
+ s_list *spec, s_list *next)
{
s_list tmp = {0};
assert(list);
@@ -559,8 +558,8 @@ s_list * list_init_tuple (s_list *list, uw count, s_list *next)
return list;
}
-s_list * list_init_tuple_2 (s_list *list, const s_tag *a,
- const s_tag *b, s_list *next)
+s_list * list_init_tuple_2 (s_list *list, s_tag *a, s_tag *b,
+ s_list *next)
{
s_list tmp = {0};
assert(list);
@@ -638,8 +637,8 @@ s_list * list_init_u64 (s_list *list, u64 i, s_list *next)
return list;
}
-s_list * list_init_unquote_copy (s_list *list,
- const s_unquote *unquote, s_list *next)
+s_list * list_init_unquote_copy (s_list *list, s_unquote *unquote,
+ s_list *next)
{
s_list tmp = {0};
assert(list);
@@ -870,8 +869,8 @@ s_list * list_new_map_1 (const char *p, s_list *next)
return list;
}
-s_list * list_new_map_from_lists (const s_list *keys,
- const s_list *values, s_list *next)
+s_list * list_new_map_from_lists (s_list *keys, s_list *values,
+ s_list *next)
{
s_list *list;
list = list_new(next);
@@ -910,7 +909,7 @@ s_list * list_new_ptr_free (void *p, s_list *next)
return list;
}
-s_list * list_new_quote_copy (const s_quote *quote, s_list *next)
+s_list * list_new_quote_copy (s_quote *quote, s_list *next)
{
s_list *list;
list = list_new(next);
@@ -949,7 +948,7 @@ s_list * list_new_ratio (s_list *next)
return list;
}
-s_list * list_new_ratio_copy (const s_ratio *r, s_list *next)
+s_list * list_new_ratio_copy (s_ratio *r, s_list *next)
{
s_list *list;
list = list_new(next);
@@ -1161,7 +1160,7 @@ s_list * list_new_struct (const s_sym *module, s_list *next)
return list;
}
-s_list * list_new_struct_copy (const s_struct *src, s_list *next)
+s_list * list_new_struct_copy (s_struct *src, s_list *next)
{
s_list *list;
list = list_new(next);
@@ -1189,7 +1188,7 @@ s_list * list_new_struct_with_data (const s_sym *module, void *data,
return list;
}
-s_list * list_new_struct_type (const s_sym *module, const s_list *spec,
+s_list * list_new_struct_type (const s_sym *module, s_list *spec,
s_list *next)
{
s_list *list;
@@ -1257,7 +1256,7 @@ s_list * list_new_tuple (uw count, s_list *next)
return list;
}
-s_list * list_new_tuple_2 (const s_tag *a, const s_tag *b, s_list *next)
+s_list * list_new_tuple_2 (s_tag *a, s_tag *b, s_list *next)
{
s_list *list;
list = list_new(next);
@@ -1349,7 +1348,7 @@ s_list * list_new_u64 (u64 i, s_list *next)
return list;
}
-s_list * list_new_unquote_copy (const s_unquote *unquote, s_list *next)
+s_list * list_new_unquote_copy (s_unquote *unquote, s_list *next)
{
s_list *list;
list = list_new(next);
diff --git a/libkc3/list_init.h b/libkc3/list_init.h
index 295cc71..0ff3989 100644
--- a/libkc3/list_init.h
+++ b/libkc3/list_init.h
@@ -40,16 +40,15 @@ s_list * list_init_integer_zero (s_list *list, s_list *next);
s_list * list_init_map (s_list *list, uw count, s_list *next);
s_list * list_init_map_1 (s_list *list, const char *p, s_list *next);
-s_list * list_init_map_from_lists (s_list *list, const s_list *keys,
- const s_list *values, s_list *next);
+s_list * list_init_map_from_lists (s_list *list, s_list *keys,
+ s_list *values, s_list *next);
s_list * list_init_ptr (s_list *list, void *p, s_list *next);
s_list * list_init_ptr_free (s_list *list, void *p, s_list *next);
-s_list * list_init_quote_copy (s_list *list, const s_quote *quote,
+s_list * list_init_quote_copy (s_list *list, s_quote *quote,
s_list *next);
s_list * list_init_ratio_1 (s_list *list, const char *p, s_list *next);
s_list * list_init_ratio (s_list *list, s_list *next);
-s_list * list_init_ratio_copy (s_list *list, const s_ratio *r,
- s_list *next);
+s_list * list_init_ratio_copy (s_list *list, s_ratio *r, s_list *next);
s_list * list_init_ratio_zero (s_list *list, s_list *next);
s_list * list_init_s8 (s_list *list, s8 i, s_list *next);
s_list * list_init_s16 (s_list *list, s16 i, s_list *next);
@@ -75,13 +74,13 @@ s_list * list_init_str_copy (s_list *list, const s_str *src,
s_list * list_init_str_empty (s_list *list, s_list *next);
s_list * list_init_struct (s_list *list, const s_sym *module,
s_list *next);
-s_list * list_init_struct_copy (s_list *list, const s_struct *src,
+s_list * list_init_struct_copy (s_list *list, s_struct *src,
s_list *next);
s_list * list_init_struct_with_data (s_list *list, const s_sym *module,
void *data, bool free_data,
s_list *next);
s_list * list_init_struct_type (s_list *list, const s_sym *module,
- const s_list *spec, s_list *next);
+ s_list *spec, s_list *next);
s_list * list_init_struct_type_update_clean (s_list *list,
const s_struct_type *st,
const s_cfn *clean,
@@ -89,8 +88,8 @@ s_list * list_init_struct_type_update_clean (s_list *list,
s_list * list_init_sw (s_list *list, sw i, s_list *next);
s_list * list_init_sym (s_list *list, const s_sym *sym, s_list *next);
s_list * list_init_tuple (s_list *list, uw count, s_list *next);
-s_list * list_init_tuple_2 (s_list *list, const s_tag *a,
- const s_tag *b, s_list *next);
+s_list * list_init_tuple_2 (s_list *list, s_tag *a, s_tag *b,
+ s_list *next);
s_list * list_init_time (s_list *list, s_list *next);
s_list * list_init_time_add (s_list *list, const s_time *a,
const s_time *b, s_list *next);
@@ -99,8 +98,7 @@ s_list * list_init_u8 (s_list *list, u8 i, s_list *next);
s_list * list_init_u16 (s_list *list, u16 i, s_list *next);
s_list * list_init_u32 (s_list *list, u32 i, s_list *next);
s_list * list_init_u64 (s_list *list, u64 i, s_list *next);
-s_list * list_init_unquote_copy (s_list *list,
- const s_unquote *unquote,
+s_list * list_init_unquote_copy (s_list *list, s_unquote *unquote,
s_list *next);
s_list * list_init_uw (s_list *list, uw i, s_list *next);
s_list * list_init_var (s_list *list, const s_sym *type, s_list *next);
@@ -126,14 +124,14 @@ s_list * list_new_integer_zero (s_list *next);
s_list * list_new_map (uw count, s_list *next);
s_list * list_new_map_1 (const char *p, s_list *next);
-s_list * list_new_map_from_lists (const s_list *keys,
- const s_list *values, s_list *next);
+s_list * list_new_map_from_lists (s_list *keys, s_list *values,
+ s_list *next);
s_list * list_new_ptr (void *p, s_list *next);
s_list * list_new_ptr_free (void *p, s_list *next);
-s_list * list_new_quote_copy (const s_quote *quote, s_list *next);
+s_list * list_new_quote_copy (s_quote *quote, s_list *next);
s_list * list_new_ratio_1 (const char *p, s_list *next);
s_list * list_new_ratio (s_list *next);
-s_list * list_new_ratio_copy (const s_ratio *r, s_list *next);
+s_list * list_new_ratio_copy (s_ratio *r, s_list *next);
s_list * list_new_ratio_zero (s_list *next);
s_list * list_new_s8 (s8 i, s_list *next);
s_list * list_new_s16 (s16 i, s_list *next);
@@ -153,10 +151,10 @@ s_list * list_new_str_concatenate_list (const s_list * const *src,
s_list * list_new_str_copy (const s_str *src, s_list *next);
s_list * list_new_str_empty (s_list *next);
s_list * list_new_struct (const s_sym *module, s_list *next);
-s_list * list_new_struct_copy (const s_struct *src, s_list *next);
+s_list * list_new_struct_copy (s_struct *src, s_list *next);
s_list * list_new_struct_with_data (const s_sym *module, void *data,
bool free_data, s_list *next);
-s_list * list_new_struct_type (const s_sym *module, const s_list *spec,
+s_list * list_new_struct_type (const s_sym *module, s_list *spec,
s_list *next);
s_list * list_new_struct_type_update_clean (const s_struct_type *st,
const s_cfn *clean,
@@ -164,8 +162,7 @@ s_list * list_new_struct_type_update_clean (const s_struct_type *st,
s_list * list_new_sw (sw i, s_list *next);
s_list * list_new_sym (const s_sym *sym, s_list *next);
s_list * list_new_tuple (uw count, s_list *next);
-s_list * list_new_tuple_2 (const s_tag *a, const s_tag *b,
- s_list *next);
+s_list * list_new_tuple_2 (s_tag *a, s_tag *b, s_list *next);
s_list * list_new_time (s_list *next);
s_list * list_new_time_add (const s_time *a, const s_time *b,
s_list *next);
@@ -174,7 +171,7 @@ s_list * list_new_u8 (u8 i, s_list *next);
s_list * list_new_u16 (u16 i, s_list *next);
s_list * list_new_u32 (u32 i, s_list *next);
s_list * list_new_u64 (u64 i, s_list *next);
-s_list * list_new_unquote_copy (const s_unquote *unquote, s_list *next);
+s_list * list_new_unquote_copy (s_unquote *unquote, s_list *next);
s_list * list_new_uw (uw i, s_list *next);
s_list * list_new_var (const s_sym *type, s_list *next);
s_list * list_new_void (s_list *next);
diff --git a/libkc3/skiplist.c.in b/libkc3/skiplist.c.in
index 945df87..28488af 100644
--- a/libkc3/skiplist.c.in
+++ b/libkc3/skiplist.c.in
@@ -127,7 +127,7 @@ skiplist_init___NAME$ (s_skiplist___NAME$ *skiplist, u8 max_height, f64 spacing)
}
s_skiplist_node___NAME$ *
-skiplist_insert___NAME$ (s_skiplist___NAME$ *skiplist, const _TYPE$ _NAME$)
+skiplist_insert___NAME$ (s_skiplist___NAME$ *skiplist, _TYPE$ _NAME$)
{
s_skiplist_node___NAME$ *pred;
s_skiplist_node___NAME$ *next;
diff --git a/libkc3/skiplist.h.in b/libkc3/skiplist.h.in
index 19023ea..0d27d86 100644
--- a/libkc3/skiplist.h.in
+++ b/libkc3/skiplist.h.in
@@ -42,7 +42,7 @@ s_skiplist___NAME$ *
skiplist_init___NAME$ (s_skiplist___NAME$ *skiplist, u8 max_height, f64 spacing);
s_skiplist_node___NAME$ *
-skiplist_insert___NAME$ (s_skiplist___NAME$ *skiplist, const _TYPE$ value);
+skiplist_insert___NAME$ (s_skiplist___NAME$ *skiplist, _TYPE$ value);
s_skiplist___NAME$ *
skiplist_new___NAME$ (u8 max_height, f64 spacing);
diff --git a/libkc3/skiplist__fact.c b/libkc3/skiplist__fact.c
index 25ac3f7..4f0272c 100644
--- a/libkc3/skiplist__fact.c
+++ b/libkc3/skiplist__fact.c
@@ -127,7 +127,7 @@ skiplist_init__fact (s_skiplist__fact *skiplist, u8 max_height, f64 spacing)
}
s_skiplist_node__fact *
-skiplist_insert__fact (s_skiplist__fact *skiplist, const s_fact * fact)
+skiplist_insert__fact (s_skiplist__fact *skiplist, s_fact * fact)
{
s_skiplist_node__fact *pred;
s_skiplist_node__fact *next;
diff --git a/libkc3/skiplist__fact.h b/libkc3/skiplist__fact.h
index e31f342..622b7a2 100644
--- a/libkc3/skiplist__fact.h
+++ b/libkc3/skiplist__fact.h
@@ -42,7 +42,7 @@ s_skiplist__fact *
skiplist_init__fact (s_skiplist__fact *skiplist, u8 max_height, f64 spacing);
s_skiplist_node__fact *
-skiplist_insert__fact (s_skiplist__fact *skiplist, const s_fact * value);
+skiplist_insert__fact (s_skiplist__fact *skiplist, s_fact * value);
s_skiplist__fact *
skiplist_new__fact (u8 max_height, f64 spacing);
diff --git a/libkc3/skiplist_node.c.in b/libkc3/skiplist_node.c.in
index a679a58..5091497 100644
--- a/libkc3/skiplist_node.c.in
+++ b/libkc3/skiplist_node.c.in
@@ -16,7 +16,7 @@
#include "skiplist_node___NAME$.h"
s_skiplist_node___NAME$ *
-skiplist_node_init (s_skiplist_node___NAME$ *node, const _TYPE$ _NAME$, u8 height)
+skiplist_node_init (s_skiplist_node___NAME$ *node, _TYPE$ _NAME$, u8 height)
{
node->_NAME$ = _NAME$;
node->height = height;
@@ -26,7 +26,7 @@ skiplist_node_init (s_skiplist_node___NAME$ *node, const _TYPE$ _NAME$, u8 heigh
}
s_skiplist_node___NAME$ *
-skiplist_node_new___NAME$ (const _TYPE$ _NAME$, u8 height)
+skiplist_node_new___NAME$ (_TYPE$ _NAME$, u8 height)
{
s_skiplist_node___NAME$ *node;
node = alloc(SKIPLIST_NODE_SIZE___NAME$(height));
diff --git a/libkc3/skiplist_node.h.in b/libkc3/skiplist_node.h.in
index aef3659..554e149 100644
--- a/libkc3/skiplist_node.h.in
+++ b/libkc3/skiplist_node.h.in
@@ -32,10 +32,10 @@
(sizeof(s_skiplist_node___NAME$) + (height) * sizeof(_TYPE$))
s_skiplist_node___NAME$ *
-skiplist_node_init (s_skiplist_node___NAME$ *node, const _TYPE$ value, u8 height);
+skiplist_node_init (s_skiplist_node___NAME$ *node, _TYPE$ value, u8 height);
s_skiplist_node___NAME$ *
-skiplist_node_new___NAME$ (const _TYPE$ value, u8 height);
+skiplist_node_new___NAME$ (_TYPE$ value, u8 height);
void
skiplist_node_delete___NAME$ (s_skiplist_node___NAME$ *node);
diff --git a/libkc3/skiplist_node__fact.c b/libkc3/skiplist_node__fact.c
index 780fbcf..363f3d8 100644
--- a/libkc3/skiplist_node__fact.c
+++ b/libkc3/skiplist_node__fact.c
@@ -16,7 +16,7 @@
#include "skiplist_node__fact.h"
s_skiplist_node__fact *
-skiplist_node_init (s_skiplist_node__fact *node, const s_fact * fact, u8 height)
+skiplist_node_init (s_skiplist_node__fact *node, s_fact * fact, u8 height)
{
node->fact = fact;
node->height = height;
@@ -26,7 +26,7 @@ skiplist_node_init (s_skiplist_node__fact *node, const s_fact * fact, u8 height)
}
s_skiplist_node__fact *
-skiplist_node_new__fact (const s_fact * fact, u8 height)
+skiplist_node_new__fact (s_fact * fact, u8 height)
{
s_skiplist_node__fact *node;
node = alloc(SKIPLIST_NODE_SIZE__fact(height));
diff --git a/libkc3/skiplist_node__fact.h b/libkc3/skiplist_node__fact.h
index 5a5b76f..4436fd7 100644
--- a/libkc3/skiplist_node__fact.h
+++ b/libkc3/skiplist_node__fact.h
@@ -32,10 +32,10 @@
(sizeof(s_skiplist_node__fact) + (height) * sizeof(s_fact *))
s_skiplist_node__fact *
-skiplist_node_init (s_skiplist_node__fact *node, const s_fact * value, u8 height);
+skiplist_node_init (s_skiplist_node__fact *node, s_fact * value, u8 height);
s_skiplist_node__fact *
-skiplist_node_new__fact (const s_fact * value, u8 height);
+skiplist_node_new__fact (s_fact * value, u8 height);
void
skiplist_node_delete__fact (s_skiplist_node__fact *node);
diff --git a/libkc3/sources.mk b/libkc3/sources.mk
index b6599cb..b1cbc0d 100644
--- a/libkc3/sources.mk
+++ b/libkc3/sources.mk
@@ -79,6 +79,7 @@ HEADERS = \
"buf_rw.h" \
"buf_save.h" \
"call.h" \
+ "callable.h" \
"cast.h" \
"ceiling.h" \
"cfn.h" \
@@ -252,6 +253,7 @@ SOURCES = \
"buf_rw.c" \
"buf_save.c" \
"call.c" \
+ "callable.c" \
"cast.c" \
"ceiling.c" \
"cfn.c" \
@@ -534,6 +536,7 @@ LO_SOURCES = \
"buf_rw.c" \
"buf_save.c" \
"call.c" \
+ "callable.c" \
"cast.c" \
"ceiling.c" \
"cfn.c" \
diff --git a/libkc3/sources.sh b/libkc3/sources.sh
index 55b54bd..b753d6b 100644
--- a/libkc3/sources.sh
+++ b/libkc3/sources.sh
@@ -1,4 +1,4 @@
# sources.sh generated by update_sources
-HEADERS='abs.h alist.h alloc.h arg.h array.h assert.h binding.h block.h bool.h buf.h buf_fd.h buf_file.h buf_getc.h buf_getchar.h buf_inspect.h buf_inspect_s16.h buf_inspect_s16_binary.h buf_inspect_s16_decimal.h buf_inspect_s16_hexadecimal.h buf_inspect_s16_octal.h buf_inspect_s32.h buf_inspect_s32_binary.h buf_inspect_s32_decimal.h buf_inspect_s32_hexadecimal.h buf_inspect_s32_octal.h buf_inspect_s64.h buf_inspect_s64_binary.h buf_inspect_s64_decimal.h buf_inspect_s64_hexadecimal.h buf_inspect_s64_octal.h buf_inspect_s8.h buf_inspect_s8_binary.h buf_inspect_s8_decimal.h buf_inspect_s8_hexadecimal.h buf_inspect_s8_octal.h buf_inspect_sw.h buf_inspect_sw_binary.h buf_inspect_sw_decimal.h buf_inspect_sw_hexadecimal.h buf_inspect_sw_octal.h buf_inspect_u16.h buf_inspect_u16_binary.h buf_inspect_u16_decimal.h buf_inspect_u16_hexadecimal.h buf_inspect_u16_octal.h buf_inspect_u32.h buf_inspect_u32_binary.h buf_inspect_u32_decimal.h buf_inspect_u32_hexadecimal.h buf_inspect_u32_octal.h buf_inspect_u64.h buf_inspect_u64_binary.h buf_inspect_u64_decimal.h buf_inspect_u64_hexadecimal.h buf_inspect_u64_octal.h buf_inspect_u8.h buf_inspect_u8_binary.h buf_inspect_u8_decimal.h buf_inspect_u8_hexadecimal.h buf_inspect_u8_octal.h buf_inspect_uw.h buf_inspect_uw_binary.h buf_inspect_uw_decimal.h buf_inspect_uw_hexadecimal.h buf_inspect_uw_octal.h buf_parse.h buf_parse_s16.h buf_parse_s32.h buf_parse_s64.h buf_parse_s8.h buf_parse_sw.h buf_parse_u16.h buf_parse_u32.h buf_parse_u64.h buf_parse_u8.h buf_parse_uw.h buf_rw.h buf_save.h call.h cast.h ceiling.h cfn.h character.h compare.h complex.h cow.h crypt.h data.h env.h error.h error_handler.h eval.h explicit_bzero.h f128.h f32.h f64.h fact.h fact_action.h fact_list.h facts.h facts_cursor.h facts_spec.h facts_spec_cursor.h facts_transaction.h facts_with.h facts_with_cursor.h fd.h file.h float.h fn.h fn_clause.h frame.h hash.h ident.h inspect.h integer.h io.h kc3.h kc3_main.h list.h list_init.h log.h map.h module.h operator.h pcomplex.h pcow.h pretty.h ptag.h ptr.h ptr_free.h queue.h quote.h ratio.h s16.h s32.h s64.h s8.h sequence.h set__fact.h set__tag.h set_cursor__fact.h set_cursor__tag.h set_item__fact.h set_item__tag.h sh.h sha1.h sign.h skiplist__fact.h skiplist_node__fact.h special_operator.h str.h struct.h struct_type.h sw.h sym.h tag.h tag_init.h tag_type.h time.h to_lisp.h tuple.h types.h u16.h u32.h u64.h u8.h ucd.h unquote.h uw.h var.h void.h '
-SOURCES='abs.c alist.c alloc.c arg.c array.c binding.c block.c bool.c buf.c buf_fd.c buf_file.c buf_getc.c buf_getchar.c buf_inspect.c buf_inspect_s16.c buf_inspect_s16_binary.c buf_inspect_s16_decimal.c buf_inspect_s16_hexadecimal.c buf_inspect_s16_octal.c buf_inspect_s32.c buf_inspect_s32_binary.c buf_inspect_s32_decimal.c buf_inspect_s32_hexadecimal.c buf_inspect_s32_octal.c buf_inspect_s64.c buf_inspect_s64_binary.c buf_inspect_s64_decimal.c buf_inspect_s64_hexadecimal.c buf_inspect_s64_octal.c buf_inspect_s8.c buf_inspect_s8_binary.c buf_inspect_s8_decimal.c buf_inspect_s8_hexadecimal.c buf_inspect_s8_octal.c buf_inspect_sw.c buf_inspect_sw_binary.c buf_inspect_sw_decimal.c buf_inspect_sw_hexadecimal.c buf_inspect_sw_octal.c buf_inspect_u16.c buf_inspect_u16_binary.c buf_inspect_u16_decimal.c buf_inspect_u16_hexadecimal.c buf_inspect_u16_octal.c buf_inspect_u32.c buf_inspect_u32_binary.c buf_inspect_u32_decimal.c buf_inspect_u32_hexadecimal.c buf_inspect_u32_octal.c buf_inspect_u64.c buf_inspect_u64_binary.c buf_inspect_u64_decimal.c buf_inspect_u64_hexadecimal.c buf_inspect_u64_octal.c buf_inspect_u8.c buf_inspect_u8_binary.c buf_inspect_u8_decimal.c buf_inspect_u8_hexadecimal.c buf_inspect_u8_octal.c buf_inspect_uw.c buf_inspect_uw_binary.c buf_inspect_uw_decimal.c buf_inspect_uw_hexadecimal.c buf_inspect_uw_octal.c buf_parse.c buf_parse_s16.c buf_parse_s32.c buf_parse_s64.c buf_parse_s8.c buf_parse_sw.c buf_parse_u16.c buf_parse_u32.c buf_parse_u64.c buf_parse_u8.c buf_parse_uw.c buf_rw.c buf_save.c call.c cast.c ceiling.c cfn.c character.c compare.c complex.c cow.c crypt.c crypt_sha512.c data.c env.c error.c error_handler.c eval.c f128.c f32.c f64.c fact.c fact_action.c fact_list.c facts.c facts_cursor.c facts_spec.c facts_spec_cursor.c facts_transaction.c facts_with.c facts_with_cursor.c fd.c file.c fn.c fn_clause.c frame.c hash.c ident.c inspect.c integer.c io.c kc3.c license.c list.c list_init.c log.c map.c module.c operator.c pcomplex.c pcow.c pretty.c ptag.c ptr.c ptr_free.c queue.c quote.c ratio.c s16.c s32.c s64.c s8.c sequence.c set__fact.c set__tag.c set_cursor__fact.c set_cursor__tag.c set_item__fact.c set_item__tag.c sh.c sha1.c sign.c skiplist__fact.c skiplist_node__fact.c special_operator.c str.c struct.c struct_type.c sw.c sym.c tag.c tag_add.c tag_addi.c tag_band.c tag_bnot.c tag_bor.c tag_bxor.c tag_div.c tag_init.c tag_mod.c tag_mul.c tag_neg.c tag_shift_left.c tag_shift_right.c tag_sqrt.c tag_sub.c tag_type.c time.c to_lisp.c tuple.c u16.c u32.c u64.c u8.c ucd.c unquote.c uw.c var.c void.c '
-LO_SOURCES=' ../libtommath/bn_cutoffs.c ../libtommath/bn_mp_2expt.c ../libtommath/bn_mp_abs.c ../libtommath/bn_mp_add.c ../libtommath/bn_mp_add_d.c ../libtommath/bn_mp_and.c ../libtommath/bn_mp_clamp.c ../libtommath/bn_mp_clear.c ../libtommath/bn_mp_clear_multi.c ../libtommath/bn_mp_cmp.c ../libtommath/bn_mp_cmp_d.c ../libtommath/bn_mp_cmp_mag.c ../libtommath/bn_mp_cnt_lsb.c ../libtommath/bn_mp_complement.c ../libtommath/bn_mp_copy.c ../libtommath/bn_mp_count_bits.c ../libtommath/bn_mp_div.c ../libtommath/bn_mp_div_2.c ../libtommath/bn_mp_div_2d.c ../libtommath/bn_mp_div_3.c ../libtommath/bn_mp_div_d.c ../libtommath/bn_mp_dr_is_modulus.c ../libtommath/bn_mp_dr_reduce.c ../libtommath/bn_mp_dr_setup.c ../libtommath/bn_mp_error_to_string.c ../libtommath/bn_mp_exch.c ../libtommath/bn_mp_exptmod.c ../libtommath/bn_mp_gcd.c ../libtommath/bn_mp_get_double.c ../libtommath/bn_mp_get_i32.c ../libtommath/bn_mp_get_i64.c ../libtommath/bn_mp_get_mag_u32.c ../libtommath/bn_mp_get_mag_u64.c ../libtommath/bn_mp_grow.c ../libtommath/bn_mp_init.c ../libtommath/bn_mp_init_copy.c ../libtommath/bn_mp_init_multi.c ../libtommath/bn_mp_init_size.c ../libtommath/bn_mp_invmod.c ../libtommath/bn_mp_lcm.c ../libtommath/bn_mp_lshd.c ../libtommath/bn_mp_mod.c ../libtommath/bn_mp_mod_2d.c ../libtommath/bn_mp_montgomery_calc_normalization.c ../libtommath/bn_mp_montgomery_reduce.c ../libtommath/bn_mp_montgomery_setup.c ../libtommath/bn_mp_mul.c ../libtommath/bn_mp_mul_2.c ../libtommath/bn_mp_mul_2d.c ../libtommath/bn_mp_mul_d.c ../libtommath/bn_mp_mulmod.c ../libtommath/bn_mp_neg.c ../libtommath/bn_mp_or.c ../libtommath/bn_mp_radix_size.c ../libtommath/bn_mp_reduce.c ../libtommath/bn_mp_reduce_2k.c ../libtommath/bn_mp_reduce_2k_l.c ../libtommath/bn_mp_reduce_2k_setup.c ../libtommath/bn_mp_reduce_2k_setup_l.c ../libtommath/bn_mp_reduce_is_2k.c ../libtommath/bn_mp_reduce_is_2k_l.c ../libtommath/bn_mp_reduce_setup.c ../libtommath/bn_mp_rshd.c ../libtommath/bn_mp_set.c ../libtommath/bn_mp_set_double.c ../libtommath/bn_mp_set_i32.c ../libtommath/bn_mp_set_i64.c ../libtommath/bn_mp_set_l.c ../libtommath/bn_mp_set_u32.c ../libtommath/bn_mp_set_u64.c ../libtommath/bn_mp_set_ul.c ../libtommath/bn_mp_sqr.c ../libtommath/bn_mp_sqrt.c ../libtommath/bn_mp_sub.c ../libtommath/bn_mp_sub_d.c ../libtommath/bn_mp_xor.c ../libtommath/bn_mp_zero.c ../libtommath/bn_s_mp_add.c ../libtommath/bn_s_mp_balance_mul.c ../libtommath/bn_s_mp_exptmod.c ../libtommath/bn_s_mp_exptmod_fast.c ../libtommath/bn_s_mp_invmod_fast.c ../libtommath/bn_s_mp_invmod_slow.c ../libtommath/bn_s_mp_karatsuba_mul.c ../libtommath/bn_s_mp_karatsuba_sqr.c ../libtommath/bn_s_mp_montgomery_reduce_fast.c ../libtommath/bn_s_mp_mul_digs.c ../libtommath/bn_s_mp_mul_digs_fast.c ../libtommath/bn_s_mp_mul_high_digs.c ../libtommath/bn_s_mp_mul_high_digs_fast.c ../libtommath/bn_s_mp_rand_platform.c ../libtommath/bn_s_mp_sqr.c ../libtommath/bn_s_mp_sqr_fast.c ../libtommath/bn_s_mp_sub.c ../libtommath/bn_s_mp_toom_mul.c ../libtommath/bn_s_mp_toom_sqr.c abs.c alist.c alloc.c arg.c array.c binding.c block.c bool.c buf.c buf_fd.c buf_file.c buf_getc.c buf_getchar.c buf_inspect.c buf_inspect_s16.c buf_inspect_s16_binary.c buf_inspect_s16_decimal.c buf_inspect_s16_hexadecimal.c buf_inspect_s16_octal.c buf_inspect_s32.c buf_inspect_s32_binary.c buf_inspect_s32_decimal.c buf_inspect_s32_hexadecimal.c buf_inspect_s32_octal.c buf_inspect_s64.c buf_inspect_s64_binary.c buf_inspect_s64_decimal.c buf_inspect_s64_hexadecimal.c buf_inspect_s64_octal.c buf_inspect_s8.c buf_inspect_s8_binary.c buf_inspect_s8_decimal.c buf_inspect_s8_hexadecimal.c buf_inspect_s8_octal.c buf_inspect_sw.c buf_inspect_sw_binary.c buf_inspect_sw_decimal.c buf_inspect_sw_hexadecimal.c buf_inspect_sw_octal.c buf_inspect_u16.c buf_inspect_u16_binary.c buf_inspect_u16_decimal.c buf_inspect_u16_hexadecimal.c buf_inspect_u16_octal.c buf_inspect_u32.c buf_inspect_u32_binary.c buf_inspect_u32_decimal.c buf_inspect_u32_hexadecimal.c buf_inspect_u32_octal.c buf_inspect_u64.c buf_inspect_u64_binary.c buf_inspect_u64_decimal.c buf_inspect_u64_hexadecimal.c buf_inspect_u64_octal.c buf_inspect_u8.c buf_inspect_u8_binary.c buf_inspect_u8_decimal.c buf_inspect_u8_hexadecimal.c buf_inspect_u8_octal.c buf_inspect_uw.c buf_inspect_uw_binary.c buf_inspect_uw_decimal.c buf_inspect_uw_hexadecimal.c buf_inspect_uw_octal.c buf_parse.c buf_parse_s16.c buf_parse_s32.c buf_parse_s64.c buf_parse_s8.c buf_parse_sw.c buf_parse_u16.c buf_parse_u32.c buf_parse_u64.c buf_parse_u8.c buf_parse_uw.c buf_rw.c buf_save.c call.c cast.c ceiling.c cfn.c character.c compare.c complex.c cow.c crypt.c crypt_sha512.c data.c env.c error.c error_handler.c eval.c f128.c f32.c f64.c fact.c fact_action.c fact_list.c facts.c facts_cursor.c facts_spec.c facts_spec_cursor.c facts_transaction.c facts_with.c facts_with_cursor.c fd.c file.c fn.c fn_clause.c frame.c hash.c ident.c inspect.c integer.c io.c kc3.c license.c list.c list_init.c log.c map.c module.c operator.c pcomplex.c pcow.c pretty.c ptag.c ptr.c ptr_free.c queue.c quote.c ratio.c s16.c s32.c s64.c s8.c sequence.c set__fact.c set__tag.c set_cursor__fact.c set_cursor__tag.c set_item__fact.c set_item__tag.c sh.c sha1.c sign.c skiplist__fact.c skiplist_node__fact.c special_operator.c str.c struct.c struct_type.c sw.c sym.c tag.c tag_add.c tag_addi.c tag_band.c tag_bnot.c tag_bor.c tag_bxor.c tag_div.c tag_init.c tag_mod.c tag_mul.c tag_neg.c tag_shift_left.c tag_shift_right.c tag_sqrt.c tag_sub.c tag_type.c time.c to_lisp.c tuple.c u16.c u32.c u64.c u8.c ucd.c unquote.c uw.c var.c void.c '
+HEADERS='abs.h alist.h alloc.h arg.h array.h assert.h binding.h block.h bool.h buf.h buf_fd.h buf_file.h buf_getc.h buf_getchar.h buf_inspect.h buf_inspect_s16.h buf_inspect_s16_binary.h buf_inspect_s16_decimal.h buf_inspect_s16_hexadecimal.h buf_inspect_s16_octal.h buf_inspect_s32.h buf_inspect_s32_binary.h buf_inspect_s32_decimal.h buf_inspect_s32_hexadecimal.h buf_inspect_s32_octal.h buf_inspect_s64.h buf_inspect_s64_binary.h buf_inspect_s64_decimal.h buf_inspect_s64_hexadecimal.h buf_inspect_s64_octal.h buf_inspect_s8.h buf_inspect_s8_binary.h buf_inspect_s8_decimal.h buf_inspect_s8_hexadecimal.h buf_inspect_s8_octal.h buf_inspect_sw.h buf_inspect_sw_binary.h buf_inspect_sw_decimal.h buf_inspect_sw_hexadecimal.h buf_inspect_sw_octal.h buf_inspect_u16.h buf_inspect_u16_binary.h buf_inspect_u16_decimal.h buf_inspect_u16_hexadecimal.h buf_inspect_u16_octal.h buf_inspect_u32.h buf_inspect_u32_binary.h buf_inspect_u32_decimal.h buf_inspect_u32_hexadecimal.h buf_inspect_u32_octal.h buf_inspect_u64.h buf_inspect_u64_binary.h buf_inspect_u64_decimal.h buf_inspect_u64_hexadecimal.h buf_inspect_u64_octal.h buf_inspect_u8.h buf_inspect_u8_binary.h buf_inspect_u8_decimal.h buf_inspect_u8_hexadecimal.h buf_inspect_u8_octal.h buf_inspect_uw.h buf_inspect_uw_binary.h buf_inspect_uw_decimal.h buf_inspect_uw_hexadecimal.h buf_inspect_uw_octal.h buf_parse.h buf_parse_s16.h buf_parse_s32.h buf_parse_s64.h buf_parse_s8.h buf_parse_sw.h buf_parse_u16.h buf_parse_u32.h buf_parse_u64.h buf_parse_u8.h buf_parse_uw.h buf_rw.h buf_save.h call.h callable.h cast.h ceiling.h cfn.h character.h compare.h complex.h cow.h crypt.h data.h env.h error.h error_handler.h eval.h explicit_bzero.h f128.h f32.h f64.h fact.h fact_action.h fact_list.h facts.h facts_cursor.h facts_spec.h facts_spec_cursor.h facts_transaction.h facts_with.h facts_with_cursor.h fd.h file.h float.h fn.h fn_clause.h frame.h hash.h ident.h inspect.h integer.h io.h kc3.h kc3_main.h list.h list_init.h log.h map.h module.h operator.h pcomplex.h pcow.h pretty.h ptag.h ptr.h ptr_free.h queue.h quote.h ratio.h s16.h s32.h s64.h s8.h sequence.h set__fact.h set__tag.h set_cursor__fact.h set_cursor__tag.h set_item__fact.h set_item__tag.h sh.h sha1.h sign.h skiplist__fact.h skiplist_node__fact.h special_operator.h str.h struct.h struct_type.h sw.h sym.h tag.h tag_init.h tag_type.h time.h to_lisp.h tuple.h types.h u16.h u32.h u64.h u8.h ucd.h unquote.h uw.h var.h void.h '
+SOURCES='abs.c alist.c alloc.c arg.c array.c binding.c block.c bool.c buf.c buf_fd.c buf_file.c buf_getc.c buf_getchar.c buf_inspect.c buf_inspect_s16.c buf_inspect_s16_binary.c buf_inspect_s16_decimal.c buf_inspect_s16_hexadecimal.c buf_inspect_s16_octal.c buf_inspect_s32.c buf_inspect_s32_binary.c buf_inspect_s32_decimal.c buf_inspect_s32_hexadecimal.c buf_inspect_s32_octal.c buf_inspect_s64.c buf_inspect_s64_binary.c buf_inspect_s64_decimal.c buf_inspect_s64_hexadecimal.c buf_inspect_s64_octal.c buf_inspect_s8.c buf_inspect_s8_binary.c buf_inspect_s8_decimal.c buf_inspect_s8_hexadecimal.c buf_inspect_s8_octal.c buf_inspect_sw.c buf_inspect_sw_binary.c buf_inspect_sw_decimal.c buf_inspect_sw_hexadecimal.c buf_inspect_sw_octal.c buf_inspect_u16.c buf_inspect_u16_binary.c buf_inspect_u16_decimal.c buf_inspect_u16_hexadecimal.c buf_inspect_u16_octal.c buf_inspect_u32.c buf_inspect_u32_binary.c buf_inspect_u32_decimal.c buf_inspect_u32_hexadecimal.c buf_inspect_u32_octal.c buf_inspect_u64.c buf_inspect_u64_binary.c buf_inspect_u64_decimal.c buf_inspect_u64_hexadecimal.c buf_inspect_u64_octal.c buf_inspect_u8.c buf_inspect_u8_binary.c buf_inspect_u8_decimal.c buf_inspect_u8_hexadecimal.c buf_inspect_u8_octal.c buf_inspect_uw.c buf_inspect_uw_binary.c buf_inspect_uw_decimal.c buf_inspect_uw_hexadecimal.c buf_inspect_uw_octal.c buf_parse.c buf_parse_s16.c buf_parse_s32.c buf_parse_s64.c buf_parse_s8.c buf_parse_sw.c buf_parse_u16.c buf_parse_u32.c buf_parse_u64.c buf_parse_u8.c buf_parse_uw.c buf_rw.c buf_save.c call.c callable.c cast.c ceiling.c cfn.c character.c compare.c complex.c cow.c crypt.c crypt_sha512.c data.c env.c error.c error_handler.c eval.c f128.c f32.c f64.c fact.c fact_action.c fact_list.c facts.c facts_cursor.c facts_spec.c facts_spec_cursor.c facts_transaction.c facts_with.c facts_with_cursor.c fd.c file.c fn.c fn_clause.c frame.c hash.c ident.c inspect.c integer.c io.c kc3.c license.c list.c list_init.c log.c map.c module.c operator.c pcomplex.c pcow.c pretty.c ptag.c ptr.c ptr_free.c queue.c quote.c ratio.c s16.c s32.c s64.c s8.c sequence.c set__fact.c set__tag.c set_cursor__fact.c set_cursor__tag.c set_item__fact.c set_item__tag.c sh.c sha1.c sign.c skiplist__fact.c skiplist_node__fact.c special_operator.c str.c struct.c struct_type.c sw.c sym.c tag.c tag_add.c tag_addi.c tag_band.c tag_bnot.c tag_bor.c tag_bxor.c tag_div.c tag_init.c tag_mod.c tag_mul.c tag_neg.c tag_shift_left.c tag_shift_right.c tag_sqrt.c tag_sub.c tag_type.c time.c to_lisp.c tuple.c u16.c u32.c u64.c u8.c ucd.c unquote.c uw.c var.c void.c '
+LO_SOURCES=' ../libtommath/bn_cutoffs.c ../libtommath/bn_mp_2expt.c ../libtommath/bn_mp_abs.c ../libtommath/bn_mp_add.c ../libtommath/bn_mp_add_d.c ../libtommath/bn_mp_and.c ../libtommath/bn_mp_clamp.c ../libtommath/bn_mp_clear.c ../libtommath/bn_mp_clear_multi.c ../libtommath/bn_mp_cmp.c ../libtommath/bn_mp_cmp_d.c ../libtommath/bn_mp_cmp_mag.c ../libtommath/bn_mp_cnt_lsb.c ../libtommath/bn_mp_complement.c ../libtommath/bn_mp_copy.c ../libtommath/bn_mp_count_bits.c ../libtommath/bn_mp_div.c ../libtommath/bn_mp_div_2.c ../libtommath/bn_mp_div_2d.c ../libtommath/bn_mp_div_3.c ../libtommath/bn_mp_div_d.c ../libtommath/bn_mp_dr_is_modulus.c ../libtommath/bn_mp_dr_reduce.c ../libtommath/bn_mp_dr_setup.c ../libtommath/bn_mp_error_to_string.c ../libtommath/bn_mp_exch.c ../libtommath/bn_mp_exptmod.c ../libtommath/bn_mp_gcd.c ../libtommath/bn_mp_get_double.c ../libtommath/bn_mp_get_i32.c ../libtommath/bn_mp_get_i64.c ../libtommath/bn_mp_get_mag_u32.c ../libtommath/bn_mp_get_mag_u64.c ../libtommath/bn_mp_grow.c ../libtommath/bn_mp_init.c ../libtommath/bn_mp_init_copy.c ../libtommath/bn_mp_init_multi.c ../libtommath/bn_mp_init_size.c ../libtommath/bn_mp_invmod.c ../libtommath/bn_mp_lcm.c ../libtommath/bn_mp_lshd.c ../libtommath/bn_mp_mod.c ../libtommath/bn_mp_mod_2d.c ../libtommath/bn_mp_montgomery_calc_normalization.c ../libtommath/bn_mp_montgomery_reduce.c ../libtommath/bn_mp_montgomery_setup.c ../libtommath/bn_mp_mul.c ../libtommath/bn_mp_mul_2.c ../libtommath/bn_mp_mul_2d.c ../libtommath/bn_mp_mul_d.c ../libtommath/bn_mp_mulmod.c ../libtommath/bn_mp_neg.c ../libtommath/bn_mp_or.c ../libtommath/bn_mp_radix_size.c ../libtommath/bn_mp_reduce.c ../libtommath/bn_mp_reduce_2k.c ../libtommath/bn_mp_reduce_2k_l.c ../libtommath/bn_mp_reduce_2k_setup.c ../libtommath/bn_mp_reduce_2k_setup_l.c ../libtommath/bn_mp_reduce_is_2k.c ../libtommath/bn_mp_reduce_is_2k_l.c ../libtommath/bn_mp_reduce_setup.c ../libtommath/bn_mp_rshd.c ../libtommath/bn_mp_set.c ../libtommath/bn_mp_set_double.c ../libtommath/bn_mp_set_i32.c ../libtommath/bn_mp_set_i64.c ../libtommath/bn_mp_set_l.c ../libtommath/bn_mp_set_u32.c ../libtommath/bn_mp_set_u64.c ../libtommath/bn_mp_set_ul.c ../libtommath/bn_mp_sqr.c ../libtommath/bn_mp_sqrt.c ../libtommath/bn_mp_sub.c ../libtommath/bn_mp_sub_d.c ../libtommath/bn_mp_xor.c ../libtommath/bn_mp_zero.c ../libtommath/bn_s_mp_add.c ../libtommath/bn_s_mp_balance_mul.c ../libtommath/bn_s_mp_exptmod.c ../libtommath/bn_s_mp_exptmod_fast.c ../libtommath/bn_s_mp_invmod_fast.c ../libtommath/bn_s_mp_invmod_slow.c ../libtommath/bn_s_mp_karatsuba_mul.c ../libtommath/bn_s_mp_karatsuba_sqr.c ../libtommath/bn_s_mp_montgomery_reduce_fast.c ../libtommath/bn_s_mp_mul_digs.c ../libtommath/bn_s_mp_mul_digs_fast.c ../libtommath/bn_s_mp_mul_high_digs.c ../libtommath/bn_s_mp_mul_high_digs_fast.c ../libtommath/bn_s_mp_rand_platform.c ../libtommath/bn_s_mp_sqr.c ../libtommath/bn_s_mp_sqr_fast.c ../libtommath/bn_s_mp_sub.c ../libtommath/bn_s_mp_toom_mul.c ../libtommath/bn_s_mp_toom_sqr.c abs.c alist.c alloc.c arg.c array.c binding.c block.c bool.c buf.c buf_fd.c buf_file.c buf_getc.c buf_getchar.c buf_inspect.c buf_inspect_s16.c buf_inspect_s16_binary.c buf_inspect_s16_decimal.c buf_inspect_s16_hexadecimal.c buf_inspect_s16_octal.c buf_inspect_s32.c buf_inspect_s32_binary.c buf_inspect_s32_decimal.c buf_inspect_s32_hexadecimal.c buf_inspect_s32_octal.c buf_inspect_s64.c buf_inspect_s64_binary.c buf_inspect_s64_decimal.c buf_inspect_s64_hexadecimal.c buf_inspect_s64_octal.c buf_inspect_s8.c buf_inspect_s8_binary.c buf_inspect_s8_decimal.c buf_inspect_s8_hexadecimal.c buf_inspect_s8_octal.c buf_inspect_sw.c buf_inspect_sw_binary.c buf_inspect_sw_decimal.c buf_inspect_sw_hexadecimal.c buf_inspect_sw_octal.c buf_inspect_u16.c buf_inspect_u16_binary.c buf_inspect_u16_decimal.c buf_inspect_u16_hexadecimal.c buf_inspect_u16_octal.c buf_inspect_u32.c buf_inspect_u32_binary.c buf_inspect_u32_decimal.c buf_inspect_u32_hexadecimal.c buf_inspect_u32_octal.c buf_inspect_u64.c buf_inspect_u64_binary.c buf_inspect_u64_decimal.c buf_inspect_u64_hexadecimal.c buf_inspect_u64_octal.c buf_inspect_u8.c buf_inspect_u8_binary.c buf_inspect_u8_decimal.c buf_inspect_u8_hexadecimal.c buf_inspect_u8_octal.c buf_inspect_uw.c buf_inspect_uw_binary.c buf_inspect_uw_decimal.c buf_inspect_uw_hexadecimal.c buf_inspect_uw_octal.c buf_parse.c buf_parse_s16.c buf_parse_s32.c buf_parse_s64.c buf_parse_s8.c buf_parse_sw.c buf_parse_u16.c buf_parse_u32.c buf_parse_u64.c buf_parse_u8.c buf_parse_uw.c buf_rw.c buf_save.c call.c callable.c cast.c ceiling.c cfn.c character.c compare.c complex.c cow.c crypt.c crypt_sha512.c data.c env.c error.c error_handler.c eval.c f128.c f32.c f64.c fact.c fact_action.c fact_list.c facts.c facts_cursor.c facts_spec.c facts_spec_cursor.c facts_transaction.c facts_with.c facts_with_cursor.c fd.c file.c fn.c fn_clause.c frame.c hash.c ident.c inspect.c integer.c io.c kc3.c license.c list.c list_init.c log.c map.c module.c operator.c pcomplex.c pcow.c pretty.c ptag.c ptr.c ptr_free.c queue.c quote.c ratio.c s16.c s32.c s64.c s8.c sequence.c set__fact.c set__tag.c set_cursor__fact.c set_cursor__tag.c set_item__fact.c set_item__tag.c sh.c sha1.c sign.c skiplist__fact.c skiplist_node__fact.c special_operator.c str.c struct.c struct_type.c sw.c sym.c tag.c tag_add.c tag_addi.c tag_band.c tag_bnot.c tag_bor.c tag_bxor.c tag_div.c tag_init.c tag_mod.c tag_mul.c tag_neg.c tag_shift_left.c tag_shift_right.c tag_sqrt.c tag_sub.c tag_type.c time.c to_lisp.c tuple.c u16.c u32.c u64.c u8.c ucd.c unquote.c uw.c var.c void.c '
diff --git a/libkc3/str.c b/libkc3/str.c
index 8f8a2f4..74903d2 100644
--- a/libkc3/str.c
+++ b/libkc3/str.c
@@ -356,6 +356,7 @@ s_str * str_init_alloc_copy (s_str *str, uw size, const char *p)
DEF_STR_INIT_STRUCT(array)
DEF_STR_INIT(bool, bool)
+DEF_STR_INIT_STRUCT(callable)
s_str * str_init_cast (s_str *str, const s_sym * const *type,
const s_tag *tag)
diff --git a/libkc3/str.h b/libkc3/str.h
index 06399e2..3d36a89 100644
--- a/libkc3/str.h
+++ b/libkc3/str.h
@@ -58,7 +58,7 @@ s_str * str_init_f (s_str *str, const char *fmt, ...);
PROTOTYPE_STR_INIT_DIRECT(f32);
PROTOTYPE_STR_INIT_DIRECT(f64);
PROTOTYPE_STR_INIT_DIRECT(f128);
-PROTOTYPE_STR_INIT(callable, s_callable *);
+PROTOTYPE_STR_INIT_STRUCT(callable);
s_str * str_init_ftime (s_str *str, s_time *time, const s_str *format);
PROTOTYPE_STR_INIT_STRUCT(ident);
PROTOTYPE_STR_INIT(list, const s_list * const *);
diff --git a/libkc3/struct.c b/libkc3/struct.c
index de5d805..18a1830 100644
--- a/libkc3/struct.c
+++ b/libkc3/struct.c
@@ -65,7 +65,7 @@ s_tag * struct_access (s_struct *s, s_list *key, s_tag *dest)
s_tag * struct_access_sym (s_struct *s, const s_sym *key, s_tag *dest)
{
void *data;
- const s_struct_type *st;
+ s_struct_type *st;
const s_sym *type;
s_tag tmp = {0};
void *tmp_data;
@@ -171,7 +171,7 @@ const s_sym ** struct_get_sym (const s_struct *s, const s_sym *key)
return (const s_sym **) struct_get(s, key);
}
-const s_tag * struct_get_tag (const s_struct *s, const s_sym *key)
+s_tag * struct_get_tag (s_struct *s, const s_sym *key)
{
return (s_tag *) struct_get(s, key);
}
@@ -334,13 +334,13 @@ s_struct * struct_init_copy (s_struct *s, const s_struct *src)
}
s_struct * struct_init_from_lists (s_struct *s, const s_sym *module,
- const s_list *keys,
- const s_list *values)
+ s_list *keys,
+ s_list *values)
{
uw i;
- const s_list *k;
+ s_list *k;
s_struct tmp = {0};
- const s_list *v;
+ s_list *v;
assert(s);
assert(module);
assert(list_length(keys) == list_length(values));
diff --git a/libkc3/struct.h b/libkc3/struct.h
index a9912b8..fae708a 100644
--- a/libkc3/struct.h
+++ b/libkc3/struct.h
@@ -28,8 +28,8 @@ s_struct * struct_init_cast (s_struct *s, const s_sym * const *type,
const s_tag *tag);
s_struct * struct_init_copy (s_struct *s, const s_struct *src);
s_struct * struct_init_from_lists (s_struct *s, const s_sym *module,
- const s_list *keys,
- const s_list *values);
+ s_list *keys,
+ s_list *values);
s_struct * struct_init_with_data (s_struct *s, const s_sym *module,
void *data, bool free_data);
diff --git a/libkc3/struct_type.c b/libkc3/struct_type.c
index 1ae6b5e..8879402 100644
--- a/libkc3/struct_type.c
+++ b/libkc3/struct_type.c
@@ -67,8 +67,8 @@ bool * struct_type_exists (const s_sym *module, bool *dest)
return env_struct_type_exists(&g_kc3_env, module, dest);
}
-const s_struct_type ** struct_type_find (const s_sym *module,
- const s_struct_type **dest)
+s_struct_type ** struct_type_find (const s_sym *module,
+ s_struct_type **dest)
{
return env_struct_type_find(&g_kc3_env, module, dest);
}
diff --git a/libkc3/struct_type.h b/libkc3/struct_type.h
index f57e593..7e462d1 100644
--- a/libkc3/struct_type.h
+++ b/libkc3/struct_type.h
@@ -50,7 +50,7 @@ bool * struct_type_exists (const s_sym *module,
bool *dest);
s_struct_type ** struct_type_find (const s_sym *module,
s_struct_type **dest);
-uw * struct_type_find_key_index (s_struct_type *st,
+uw * struct_type_find_key_index (const s_struct_type *st,
const s_sym *key,
uw *dest);
uw struct_type_padding (uw offset, uw size);
diff --git a/libkc3/sym.c b/libkc3/sym.c
index 66a491c..b0dcf78 100644
--- a/libkc3/sym.c
+++ b/libkc3/sym.c
@@ -542,7 +542,7 @@ s_sym_list * sym_list_new (const s_sym *sym, s_sym *free_sym,
bool * sym_must_clean (const s_sym *sym, bool *must_clean)
{
- const s_struct_type *st;
+ s_struct_type *st;
if (sym_is_array_type(sym))
sym = sym_array_type(sym);
if (sym == &g_sym_Block) {
@@ -1068,7 +1068,7 @@ bool sym_to_tag_type (const s_sym *sym, e_tag_type *dest)
uw * sym_type_size (const s_sym * const *type, uw *dest)
{
- const s_struct_type *st;
+ s_struct_type *st;
if (*type == &g_sym_Array ||
sym_is_array_type(*type)) {
*dest = sizeof(s_array);
diff --git a/libkc3/tag.c b/libkc3/tag.c
index dd78d7f..7c66090 100644
--- a/libkc3/tag.c
+++ b/libkc3/tag.c
@@ -60,7 +60,7 @@ s_tag * tag_1 (s_tag *tag, const char *p)
return tag_init_1(tag, p);
}
-bool * tag_and (const s_tag *a, const s_tag *b, bool *dest)
+bool * tag_and (s_tag *a, s_tag *b, bool *dest)
{
s_tag f;
assert(a);
@@ -87,7 +87,7 @@ s8 tag_arity (const s_tag *tag)
return -1;
}
-s_tag * tag_assign (const s_tag *tag, const s_tag *value, s_tag *dest)
+s_tag * tag_assign (s_tag *tag, s_tag *value, s_tag *dest)
{
assert(tag);
assert(value);
@@ -107,8 +107,7 @@ s_tag * tag_assign (const s_tag *tag, const s_tag *value, s_tag *dest)
return NULL;
}
-s_tag * tag_brackets (const s_tag *tag, const s_tag *address,
- s_tag *dest)
+s_tag * tag_brackets (s_tag *tag, s_tag *address, s_tag *dest)
{
assert(tag);
assert(address);
@@ -253,7 +252,7 @@ void tag_clean (s_tag *tag)
}
}
-s_tag * tag_copy (s_tag *tag, const s_tag *src)
+s_tag * tag_copy (s_tag *tag, s_tag *src)
{
tag_clean(tag);
return tag_init_copy(tag, src);
@@ -265,7 +264,7 @@ void tag_delete (s_tag *tag)
free(tag);
}
-bool * tag_eq (const s_tag *a, const s_tag *b, bool *dest)
+bool * tag_eq (s_tag *a, s_tag *b, bool *dest)
{
assert(a);
assert(b);
@@ -274,7 +273,7 @@ bool * tag_eq (const s_tag *a, const s_tag *b, bool *dest)
return dest;
}
-s_tag * tag_equal (const s_tag *a, const s_tag *b, s_tag *dest)
+s_tag * tag_equal (s_tag *a, s_tag *b, s_tag *dest)
{
assert(a);
assert(b);
@@ -284,7 +283,7 @@ s_tag * tag_equal (const s_tag *a, const s_tag *b, s_tag *dest)
return dest;
}
-bool * tag_gt (const s_tag *a, const s_tag *b, bool *dest)
+bool * tag_gt (s_tag *a, s_tag *b, bool *dest)
{
assert(a);
assert(b);
@@ -293,7 +292,7 @@ bool * tag_gt (const s_tag *a, const s_tag *b, bool *dest)
return dest;
}
-bool * tag_gte (const s_tag *a, const s_tag *b, bool *dest)
+bool * tag_gte (s_tag *a, s_tag *b, bool *dest)
{
assert(a);
assert(b);
@@ -462,7 +461,6 @@ s_tag * tag_init_copy (s_tag *tag, s_tag *src)
case TAG_COMPLEX:
tag->type = src->type;
if (! pcomplex_init_copy(&tag->data.complex,
- (const s_complex * const *)
&src->data.complex))
return NULL;
return tag;
@@ -498,9 +496,7 @@ s_tag * tag_init_copy (s_tag *tag, s_tag *src)
return tag;
case TAG_LIST:
tag->type = src->type;
- if (! list_init_copy(&tag->data.list,
- (const s_list * const *)
- &src->data.list))
+ if (! list_init_copy(&tag->data.list, &src->data.list))
return NULL;
return tag;
case TAG_MAP:
@@ -776,7 +772,7 @@ bool tag_is_alist (const s_tag *tag)
return false;
if (tag->type != TAG_LIST)
return false;
- return list_is_alist((const s_list * const *) &tag->data.list);
+ return list_is_alist(tag->data.list);
}
bool tag_is_bound_var (const s_tag *tag)
@@ -796,7 +792,7 @@ bool tag_is_cast (const s_tag *tag, const s_sym *type)
tag->data.call.ident.sym == &g_sym_cast);
}
-bool tag_is_number (const s_tag *tag)
+bool tag_is_number (s_tag *tag)
{
assert(tag);
tag = tag_resolve_cow(tag);
@@ -926,7 +922,7 @@ s_tag * tag_list_1 (s_tag *tag, const char *p)
return tag;
}
-bool * tag_lt (const s_tag *a, const s_tag *b, bool *dest)
+bool * tag_lt (s_tag *a, s_tag *b, bool *dest)
{
assert(a);
assert(b);
@@ -935,7 +931,7 @@ bool * tag_lt (const s_tag *a, const s_tag *b, bool *dest)
return dest;
}
-bool * tag_lte (const s_tag *a, const s_tag *b, bool *dest)
+bool * tag_lte (s_tag *a, s_tag *b, bool *dest)
{
assert(a);
assert(b);
@@ -966,7 +962,7 @@ s_tag * tag_new_1 (const char *p)
return dest;
}
-s_tag * tag_new_copy (const s_tag *src)
+s_tag * tag_new_copy (s_tag *src)
{
s_tag *dest;
dest = alloc(sizeof(s_tag));
@@ -979,7 +975,7 @@ s_tag * tag_new_copy (const s_tag *src)
return dest;
}
-bool * tag_not (const s_tag *tag, bool *dest)
+bool * tag_not (s_tag *tag, bool *dest)
{
bool b;
const s_sym *type;
@@ -997,7 +993,7 @@ bool * tag_not (const s_tag *tag, bool *dest)
return dest;
}
-bool * tag_not_eq (const s_tag *a, const s_tag *b, bool *dest)
+bool * tag_not_eq (s_tag *a, s_tag *b, bool *dest)
{
assert(a);
assert(b);
@@ -1006,7 +1002,7 @@ bool * tag_not_eq (const s_tag *a, const s_tag *b, bool *dest)
return dest;
}
-bool * tag_or (const s_tag *a, const s_tag *b, bool *dest)
+bool * tag_or (s_tag *a, s_tag *b, bool *dest)
{
s_tag f;
assert(a);
@@ -1018,14 +1014,14 @@ bool * tag_or (const s_tag *a, const s_tag *b, bool *dest)
return dest;
}
-s_tag * tag_paren (const s_tag *tag, s_tag *dest)
+s_tag * tag_paren (s_tag *tag, s_tag *dest)
{
assert(tag);
assert(dest);
return tag_init_copy(dest, tag);
}
-const s_tag * tag_resolve_cow (const s_tag *tag)
+s_tag * tag_resolve_cow (s_tag *tag)
{
while (tag->type == TAG_COW)
tag = cow_read_only(tag->data.cow);
@@ -1037,7 +1033,7 @@ const s_tag * tag_resolve_cow (const s_tag *tag)
return tag;
}
-s_tag * tag_semicolumn (const s_tag *a, const s_tag *b, s_tag *dest)
+s_tag * tag_semicolumn (const s_tag *a, s_tag *b, s_tag *dest)
{
(void) a;
return tag_init_copy(dest, b);
@@ -1170,12 +1166,11 @@ bool tag_to_ffi_pointer (s_tag *tag, const s_sym *type, void **dest)
goto invalid_cast;
case TAG_CALLABLE:
if (type == &g_sym_Callable ||
- (type == &g_sym_Cfn &&
- tag->data.callable &&
- tag->data.callable->type == CALLABLE_CFN) ||
- (type == &g_sym_Fn &&
- tag->data.callable
- tag->data.callable->type == CALLABLE_FN)) {
+ (tag->data.callable &&
+ ((type == &g_sym_Cfn &&
+ tag->data.callable->type == CALLABLE_CFN) ||
+ (type == &g_sym_Fn &&
+ tag->data.callable->type == CALLABLE_FN)))) {
*dest = &tag->data.callable;
return true;
}
diff --git a/libkc3/tag.h b/libkc3/tag.h
index 57986f4..046acdb 100644
--- a/libkc3/tag.h
+++ b/libkc3/tag.h
@@ -50,7 +50,6 @@ bool tag_ident_is_bound (const s_tag *tag);
bool tag_is_alist (const s_tag *tag);
bool tag_is_bound_var (const s_tag *tag);
bool tag_is_cast (const s_tag *tag, const s_sym *type);
-bool tag_is_number (const s_tag *tag);
bool tag_is_struct (const s_tag *tag, const s_sym *module);
bool * tag_is_unbound_var (const s_tag *tag, bool *dest);
bool tag_is_zero(const s_tag *tag);
@@ -72,6 +71,7 @@ s_tag * tag_integer_cast_to_u32 (const s_tag *tag, s_tag *dest);
s_tag * tag_integer_cast_to_u64 (const s_tag *tag, s_tag *dest);
s_tag * tag_integer_cast_to_u8 (const s_tag *tag, s_tag *dest);
s_tag * tag_integer_reduce (s_tag *tag);
+bool tag_is_number (s_tag *tag);
s_tag * tag_list_1 (s_tag *tag, const char *p);
bool tag_to_const_pointer (s_tag *tag, const s_sym *type,
void **dest);
@@ -79,33 +79,33 @@ bool tag_to_ffi_pointer (s_tag *tag, const s_sym *type, void **dest);
bool tag_to_pointer (s_tag *tag, const s_sym *type, void **dest);
/* KC3 operators. */
-s_tag * tag_add (const s_tag *a, const s_tag *b, s_tag *dest);
-bool * tag_and (const s_tag *a, const s_tag *b, bool *dest);
-s_tag * tag_assign (const s_tag *tag, const s_tag *value, s_tag *dest);
-s_tag * tag_band (const s_tag *a, const s_tag *b, s_tag *dest);
-s_tag * tag_bnot (const s_tag *tag, s_tag *dest);
-s_tag * tag_bor (const s_tag *a, const s_tag *b, s_tag *dest);
-s_tag * tag_brackets (const s_tag *tag, const s_tag *address,
+s_tag * tag_add (s_tag *a, s_tag *b, s_tag *dest);
+bool * tag_and (s_tag *a, s_tag *b, bool *dest);
+s_tag * tag_assign (s_tag *tag, s_tag *value, s_tag *dest);
+s_tag * tag_band (s_tag *a, s_tag *b, s_tag *dest);
+s_tag * tag_bnot (s_tag *tag, s_tag *dest);
+s_tag * tag_bor (s_tag *a, s_tag *b, s_tag *dest);
+s_tag * tag_brackets (s_tag *tag, s_tag *address,
s_tag *dest);
-s_tag * tag_bxor (const s_tag *a, const s_tag *b, s_tag *dest);
-s_tag * tag_cow (const s_tag *value, s_tag *dest);
-s_tag * tag_div (const s_tag *a, const s_tag *b, s_tag *dest);
-bool * tag_lt (const s_tag *a, const s_tag *b, bool *dest);
-bool * tag_lte (const s_tag *a, const s_tag *b, bool *dest);
-bool * tag_gt (const s_tag *a, const s_tag *b, bool *dest);
-bool * tag_gte (const s_tag *a, const s_tag *b, bool *dest);
-bool * tag_eq (const s_tag *a, const s_tag *b, bool *dest);
-s_tag * tag_equal (const s_tag *a, const s_tag *b, s_tag *dest);
-s_tag * tag_mod (const s_tag *a, const s_tag *b, s_tag *dest);
-s_tag * tag_mul (const s_tag *a, const s_tag *b, s_tag *dest);
-s_tag * tag_neg (const s_tag *tag, s_tag *dest);
-bool * tag_not (const s_tag *tag, bool *dest);
-bool * tag_not_eq (const s_tag *a, const s_tag *b, bool *dest);
-bool * tag_or (const s_tag *a, const s_tag *b, bool *dest);
-s_tag * tag_paren (const s_tag *tag, s_tag *dest);
-s_tag * tag_shift_left (const s_tag *a, const s_tag *b, s_tag *dest);
-s_tag * tag_shift_right (const s_tag *a, const s_tag *b, s_tag *dest);
-s_tag * tag_sqrt (const s_tag *tag, s_tag *dest);
-s_tag * tag_sub (const s_tag *a, const s_tag *b, s_tag *dest);
+s_tag * tag_bxor (s_tag *a, s_tag *b, s_tag *dest);
+s_tag * tag_cow (s_tag *value, s_tag *dest);
+s_tag * tag_div (s_tag *a, s_tag *b, s_tag *dest);
+bool * tag_lt (s_tag *a, s_tag *b, bool *dest);
+bool * tag_lte (s_tag *a, s_tag *b, bool *dest);
+bool * tag_gt (s_tag *a, s_tag *b, bool *dest);
+bool * tag_gte (s_tag *a, s_tag *b, bool *dest);
+bool * tag_eq (s_tag *a, s_tag *b, bool *dest);
+s_tag * tag_equal (s_tag *a, s_tag *b, s_tag *dest);
+s_tag * tag_mod (s_tag *a, s_tag *b, s_tag *dest);
+s_tag * tag_mul (s_tag *a, s_tag *b, s_tag *dest);
+s_tag * tag_neg (s_tag *tag, s_tag *dest);
+bool * tag_not (s_tag *tag, bool *dest);
+bool * tag_not_eq (s_tag *a, s_tag *b, bool *dest);
+bool * tag_or (s_tag *a, s_tag *b, bool *dest);
+s_tag * tag_paren (s_tag *tag, s_tag *dest);
+s_tag * tag_shift_left (s_tag *a, s_tag *b, s_tag *dest);
+s_tag * tag_shift_right (s_tag *a, s_tag *b, s_tag *dest);
+s_tag * tag_sqrt (s_tag *tag, s_tag *dest);
+s_tag * tag_sub (s_tag *a, s_tag *b, s_tag *dest);
#endif /* LIBKC3_TAG_H */
diff --git a/libkc3/tag_add.c b/libkc3/tag_add.c
index cb141c6..5e5f226 100644
--- a/libkc3/tag_add.c
+++ b/libkc3/tag_add.c
@@ -16,7 +16,7 @@
#include "ratio.h"
#include "tag.h"
-s_tag * tag_add (const s_tag *a, const s_tag *b, s_tag *dest)
+s_tag * tag_add (s_tag *a, s_tag *b, s_tag *dest)
{
s_complex c = {0};
s_integer tmp = {0};
diff --git a/libkc3/tag_addi.c b/libkc3/tag_addi.c
index d61e10a..7f57331 100644
--- a/libkc3/tag_addi.c
+++ b/libkc3/tag_addi.c
@@ -16,7 +16,7 @@
#include "sym.h"
#include "tag.h"
-s_tag * tag_addi (const s_tag *a, const s_tag *b, s_tag *dest)
+s_tag * tag_addi (s_tag *a, s_tag *b, s_tag *dest)
{
s_complex *c;
s_complex ca = {0};
diff --git a/libkc3/tag_band.c b/libkc3/tag_band.c
index e58f562..6cd33e0 100644
--- a/libkc3/tag_band.c
+++ b/libkc3/tag_band.c
@@ -14,7 +14,7 @@
#include "integer.h"
#include "tag.h"
-s_tag * tag_band (const s_tag *a, const s_tag *b, s_tag *dest)
+s_tag * tag_band (s_tag *a, s_tag *b, s_tag *dest)
{
s_integer tmp = {0};
s_integer tmp2 = {0};
diff --git a/libkc3/tag_bnot.c b/libkc3/tag_bnot.c
index 3961cdf..205c766 100644
--- a/libkc3/tag_bnot.c
+++ b/libkc3/tag_bnot.c
@@ -14,7 +14,7 @@
#include "integer.h"
#include "tag.h"
-s_tag * tag_bnot (const s_tag *tag, s_tag *result)
+s_tag * tag_bnot (s_tag *tag, s_tag *result)
{
assert(tag);
assert(result);
diff --git a/libkc3/tag_bor.c b/libkc3/tag_bor.c
index a8ce33b..9acefda 100644
--- a/libkc3/tag_bor.c
+++ b/libkc3/tag_bor.c
@@ -14,7 +14,7 @@
#include "integer.h"
#include "tag.h"
-s_tag * tag_bor (const s_tag *a, const s_tag *b, s_tag *result)
+s_tag * tag_bor (s_tag *a, s_tag *b, s_tag *result)
{
s_integer tmp = {0};
s_integer tmp2 = {0};
diff --git a/libkc3/tag_bxor.c b/libkc3/tag_bxor.c
index 563e6b7..f817c78 100644
--- a/libkc3/tag_bxor.c
+++ b/libkc3/tag_bxor.c
@@ -14,7 +14,7 @@
#include "integer.h"
#include "tag.h"
-s_tag * tag_bxor (const s_tag *a, const s_tag *b, s_tag *result)
+s_tag * tag_bxor (s_tag *a, s_tag *b, s_tag *result)
{
s_integer tmp = {0};
s_integer tmp2 = {0};
diff --git a/libkc3/tag_div.c b/libkc3/tag_div.c
index 7943ad8..dd5cef1 100644
--- a/libkc3/tag_div.c
+++ b/libkc3/tag_div.c
@@ -17,7 +17,7 @@
#include "ratio.h"
#include "tag.h"
-s_tag * tag_div (const s_tag *a, const s_tag *b, s_tag *dest)
+s_tag * tag_div (s_tag *a, s_tag *b, s_tag *dest)
{
s_complex c = {0};
s_integer tmp = {0};
diff --git a/libkc3/tag_init.c b/libkc3/tag_init.c
index ab336d8..9cbd8b3 100644
--- a/libkc3/tag_init.c
+++ b/libkc3/tag_init.c
@@ -222,8 +222,8 @@ s_tag * tag_init_map_1 (s_tag *tag, const char *p)
return tag;
}
-s_tag * tag_init_map_from_lists (s_tag *tag, const s_list *keys,
- const s_list *values)
+s_tag * tag_init_map_from_lists (s_tag *tag, s_list *keys,
+ s_list *values)
{
s_tag tmp = {0};
assert(tag);
@@ -256,7 +256,7 @@ s_tag * tag_init_ptr_free (s_tag *tag, void *p)
return tag;
}
-s_tag * tag_init_quote_copy (s_tag *tag, const s_quote *quote)
+s_tag * tag_init_quote_copy (s_tag *tag, s_quote *quote)
{
s_tag tmp = {0};
assert(tag);
@@ -289,7 +289,7 @@ s_tag * tag_init_ratio (s_tag *tag)
return tag;
}
-s_tag * tag_init_ratio_copy (s_tag *tag, const s_ratio *r)
+s_tag * tag_init_ratio_copy (s_tag *tag, s_ratio *r)
{
s_tag tmp = {0};
assert(tag);
@@ -464,7 +464,7 @@ s_tag * tag_init_struct (s_tag *tag, const s_sym *module)
return tag;
}
-s_tag * tag_init_struct_copy (s_tag *tag, const s_struct *src)
+s_tag * tag_init_struct_copy (s_tag *tag, s_struct *src)
{
s_tag tmp = {0};
assert(tag);
@@ -489,7 +489,7 @@ s_tag * tag_init_struct_with_data (s_tag *tag, const s_sym *module,
}
s_tag * tag_init_struct_type (s_tag *tag, const s_sym *module,
- const s_list *spec)
+ s_list *spec)
{
s_tag tmp = {0};
assert(tag);
@@ -544,7 +544,7 @@ s_tag * tag_init_tuple (s_tag *tag, uw count)
return tag;
}
-s_tag * tag_init_tuple_2 (s_tag *tag, const s_tag *a, const s_tag *b)
+s_tag * tag_init_tuple_2 (s_tag *tag, s_tag *a, s_tag *b)
{
s_tag tmp = {0};
assert(tag);
@@ -617,7 +617,7 @@ s_tag * tag_init_u64 (s_tag *tag, u64 i)
return tag;
}
-s_tag * tag_init_unquote_copy (s_tag *tag, const s_unquote *unquote)
+s_tag * tag_init_unquote_copy (s_tag *tag, s_unquote *unquote)
{
s_tag tmp = {0};
assert(tag);
@@ -853,8 +853,7 @@ s_tag * tag_new_map_1 (const char *p)
return tag;
}
-s_tag * tag_new_map_from_lists (const s_list *keys,
- const s_list *values)
+s_tag * tag_new_map_from_lists (s_list *keys, s_list *values)
{
s_tag *tag;
tag = alloc(sizeof(s_tag));
@@ -896,7 +895,7 @@ s_tag * tag_new_ptr_free (void *p)
return tag;
}
-s_tag * tag_new_quote_copy (const s_quote *quote)
+s_tag * tag_new_quote_copy (s_quote *quote)
{
s_tag *tag;
tag = alloc(sizeof(s_tag));
@@ -938,7 +937,7 @@ s_tag * tag_new_ratio (void)
return tag;
}
-s_tag * tag_new_ratio_copy (const s_ratio *r)
+s_tag * tag_new_ratio_copy (s_ratio *r)
{
s_tag *tag;
tag = alloc(sizeof(s_tag));
@@ -1150,7 +1149,7 @@ s_tag * tag_new_struct (const s_sym *module)
return tag;
}
-s_tag * tag_new_struct_copy (const s_struct *src)
+s_tag * tag_new_struct_copy (s_struct *src)
{
s_tag *tag;
tag = alloc(sizeof(s_tag));
@@ -1180,7 +1179,7 @@ s_tag * tag_new_struct_with_data (const s_sym *module, void *data,
return tag;
}
-s_tag * tag_new_struct_type (const s_sym *module, const s_list *spec)
+s_tag * tag_new_struct_type (const s_sym *module, s_list *spec)
{
s_tag *tag;
tag = alloc(sizeof(s_tag));
@@ -1246,7 +1245,7 @@ s_tag * tag_new_tuple (uw count)
return tag;
}
-s_tag * tag_new_tuple_2 (const s_tag *a, const s_tag *b)
+s_tag * tag_new_tuple_2 (s_tag *a, s_tag *b)
{
s_tag *tag;
tag = alloc(sizeof(s_tag));
@@ -1332,7 +1331,7 @@ s_tag * tag_new_u64 (u64 i)
return tag;
}
-s_tag * tag_new_unquote_copy (const s_unquote *unquote)
+s_tag * tag_new_unquote_copy (s_unquote *unquote)
{
s_tag *tag;
tag = alloc(sizeof(s_tag));
@@ -1554,8 +1553,7 @@ s_tag * tag_map_1 (s_tag *tag, const char *p)
return tag;
}
-s_tag * tag_map_from_lists (s_tag *tag, const s_list *keys,
- const s_list *values)
+s_tag * tag_map_from_lists (s_tag *tag, s_list *keys, s_list *values)
{
s_tag tmp = {0};
assert(tag);
@@ -1591,7 +1589,7 @@ s_tag * tag_ptr_free (s_tag *tag, void *p)
return tag;
}
-s_tag * tag_quote_copy (s_tag *tag, const s_quote *quote)
+s_tag * tag_quote_copy (s_tag *tag, s_quote *quote)
{
s_tag tmp = {0};
assert(tag);
@@ -1627,7 +1625,7 @@ s_tag * tag_ratio (s_tag *tag)
return tag;
}
-s_tag * tag_ratio_copy (s_tag *tag, const s_ratio *r)
+s_tag * tag_ratio_copy (s_tag *tag, s_ratio *r)
{
s_tag tmp = {0};
assert(tag);
@@ -1816,7 +1814,7 @@ s_tag * tag_struct (s_tag *tag, const s_sym *module)
return tag;
}
-s_tag * tag_struct_copy (s_tag *tag, const s_struct *src)
+s_tag * tag_struct_copy (s_tag *tag, s_struct *src)
{
s_tag tmp = {0};
assert(tag);
@@ -1842,8 +1840,7 @@ s_tag * tag_struct_with_data (s_tag *tag, const s_sym *module,
return tag;
}
-s_tag * tag_struct_type (s_tag *tag, const s_sym *module,
- const s_list *spec)
+s_tag * tag_struct_type (s_tag *tag, const s_sym *module, s_list *spec)
{
s_tag tmp = {0};
assert(tag);
@@ -1903,7 +1900,7 @@ s_tag * tag_tuple (s_tag *tag, uw count)
return tag;
}
-s_tag * tag_tuple_2 (s_tag *tag, const s_tag *a, const s_tag *b)
+s_tag * tag_tuple_2 (s_tag *tag, s_tag *a, s_tag *b)
{
s_tag tmp = {0};
assert(tag);
@@ -1983,7 +1980,7 @@ s_tag * tag_u64 (s_tag *tag, u64 i)
return tag;
}
-s_tag * tag_unquote_copy (s_tag *tag, const s_unquote *unquote)
+s_tag * tag_unquote_copy (s_tag *tag, s_unquote *unquote)
{
s_tag tmp = {0};
assert(tag);
diff --git a/libkc3/tag_init.h b/libkc3/tag_init.h
index 8f10847..5e6b9ec 100644
--- a/libkc3/tag_init.h
+++ b/libkc3/tag_init.h
@@ -35,14 +35,14 @@ s_tag * tag_init_integer_zero (s_tag *tag);
s_tag * tag_init_list (s_tag *tag, s_list *list);
s_tag * tag_init_map (s_tag *tag, uw count);
s_tag * tag_init_map_1 (s_tag *tag, const char *p);
-s_tag * tag_init_map_from_lists (s_tag *tag, const s_list *keys,
- const s_list *values);
+s_tag * tag_init_map_from_lists (s_tag *tag, s_list *keys,
+ s_list *values);
s_tag * tag_init_ptr (s_tag *tag, void *p);
s_tag * tag_init_ptr_free (s_tag *tag, void *p);
-s_tag * tag_init_quote_copy (s_tag *tag, const s_quote *quote);
+s_tag * tag_init_quote_copy (s_tag *tag, s_quote *quote);
s_tag * tag_init_ratio_1 (s_tag *tag, const char *p);
s_tag * tag_init_ratio (s_tag *tag);
-s_tag * tag_init_ratio_copy (s_tag *tag, const s_ratio *r);
+s_tag * tag_init_ratio_copy (s_tag *tag, s_ratio *r);
s_tag * tag_init_ratio_zero (s_tag *tag);
s_tag * tag_init_s8 (s_tag *tag, s8 i);
s_tag * tag_init_s16 (s_tag *tag, s16 i);
@@ -61,18 +61,18 @@ s_tag * tag_init_str_concatenate_list (s_tag *tag,
s_tag * tag_init_str_copy (s_tag *tag, const s_str *src);
s_tag * tag_init_str_empty (s_tag *tag);
s_tag * tag_init_struct (s_tag *tag, const s_sym *module);
-s_tag * tag_init_struct_copy (s_tag *tag, const s_struct *src);
+s_tag * tag_init_struct_copy (s_tag *tag, s_struct *src);
s_tag * tag_init_struct_with_data (s_tag *tag, const s_sym *module,
void *data, bool free_data);
s_tag * tag_init_struct_type (s_tag *tag, const s_sym *module,
- const s_list *spec);
+ s_list *spec);
s_tag * tag_init_struct_type_update_clean (s_tag *tag,
const s_struct_type *st,
const s_cfn *clean);
s_tag * tag_init_sw (s_tag *tag, sw i);
s_tag * tag_init_sym (s_tag *tag, const s_sym *sym);
s_tag * tag_init_tuple (s_tag *tag, uw count);
-s_tag * tag_init_tuple_2 (s_tag *tag, const s_tag *a, const s_tag *b);
+s_tag * tag_init_tuple_2 (s_tag *tag, s_tag *a, s_tag *b);
s_tag * tag_init_time (s_tag *tag);
s_tag * tag_init_time_add (s_tag *tag, const s_time *a,
const s_time *b);
@@ -81,7 +81,7 @@ s_tag * tag_init_u8 (s_tag *tag, u8 i);
s_tag * tag_init_u16 (s_tag *tag, u16 i);
s_tag * tag_init_u32 (s_tag *tag, u32 i);
s_tag * tag_init_u64 (s_tag *tag, u64 i);
-s_tag * tag_init_unquote_copy (s_tag *tag, const s_unquote *unquote);
+s_tag * tag_init_unquote_copy (s_tag *tag, s_unquote *unquote);
s_tag * tag_init_uw (s_tag *tag, uw i);
s_tag * tag_init_var (s_tag *tag, const s_sym *type);
s_tag * tag_init_void (s_tag *tag);
@@ -106,14 +106,13 @@ s_tag * tag_new_integer_zero (void);
s_tag * tag_new_list (s_list *list);
s_tag * tag_new_map (uw count);
s_tag * tag_new_map_1 (const char *p);
-s_tag * tag_new_map_from_lists (const s_list *keys,
- const s_list *values);
+s_tag * tag_new_map_from_lists (s_list *keys, s_list *values);
s_tag * tag_new_ptr (void *p);
s_tag * tag_new_ptr_free (void *p);
-s_tag * tag_new_quote_copy (const s_quote *quote);
+s_tag * tag_new_quote_copy (s_quote *quote);
s_tag * tag_new_ratio_1 (const char *p);
s_tag * tag_new_ratio (void);
-s_tag * tag_new_ratio_copy (const s_ratio *r);
+s_tag * tag_new_ratio_copy (s_ratio *r);
s_tag * tag_new_ratio_zero (void);
s_tag * tag_new_s8 (s8 i);
s_tag * tag_new_s16 (s16 i);
@@ -129,16 +128,16 @@ s_tag * tag_new_str_concatenate_list (const s_list * const *src);
s_tag * tag_new_str_copy (const s_str *src);
s_tag * tag_new_str_empty (void);
s_tag * tag_new_struct (const s_sym *module);
-s_tag * tag_new_struct_copy (const s_struct *src);
+s_tag * tag_new_struct_copy (s_struct *src);
s_tag * tag_new_struct_with_data (const s_sym *module, void *data,
bool free_data);
-s_tag * tag_new_struct_type (const s_sym *module, const s_list *spec);
+s_tag * tag_new_struct_type (const s_sym *module, s_list *spec);
s_tag * tag_new_struct_type_update_clean (const s_struct_type *st,
const s_cfn *clean);
s_tag * tag_new_sw (sw i);
s_tag * tag_new_sym (const s_sym *sym);
s_tag * tag_new_tuple (uw count);
-s_tag * tag_new_tuple_2 (const s_tag *a, const s_tag *b);
+s_tag * tag_new_tuple_2 (s_tag *a, s_tag *b);
s_tag * tag_new_time (void);
s_tag * tag_new_time_add (const s_time *a, const s_time *b);
s_tag * tag_new_time_now (void);
@@ -146,7 +145,7 @@ s_tag * tag_new_u8 (u8 i);
s_tag * tag_new_u16 (u16 i);
s_tag * tag_new_u32 (u32 i);
s_tag * tag_new_u64 (u64 i);
-s_tag * tag_new_unquote_copy (const s_unquote *unquote);
+s_tag * tag_new_unquote_copy (s_unquote *unquote);
s_tag * tag_new_uw (uw i);
s_tag * tag_new_var (const s_sym *type);
s_tag * tag_new_void (void);
@@ -171,14 +170,13 @@ s_tag * tag_integer_zero (s_tag *tag);
s_tag * tag_list (s_tag *tag, s_list *list);
s_tag * tag_map (s_tag *tag, uw count);
s_tag * tag_map_1 (s_tag *tag, const char *p);
-s_tag * tag_map_from_lists (s_tag *tag, const s_list *keys,
- const s_list *values);
+s_tag * tag_map_from_lists (s_tag *tag, s_list *keys, s_list *values);
s_tag * tag_ptr (s_tag *tag, void *p);
s_tag * tag_ptr_free (s_tag *tag, void *p);
-s_tag * tag_quote_copy (s_tag *tag, const s_quote *quote);
+s_tag * tag_quote_copy (s_tag *tag, s_quote *quote);
s_tag * tag_ratio_1 (s_tag *tag, const char *p);
s_tag * tag_ratio (s_tag *tag);
-s_tag * tag_ratio_copy (s_tag *tag, const s_ratio *r);
+s_tag * tag_ratio_copy (s_tag *tag, s_ratio *r);
s_tag * tag_ratio_zero (s_tag *tag);
s_tag * tag_s8 (s_tag *tag, s8 i);
s_tag * tag_s16 (s_tag *tag, s16 i);
@@ -197,18 +195,17 @@ s_tag * tag_str_concatenate_list (s_tag *tag,
s_tag * tag_str_copy (s_tag *tag, const s_str *src);
s_tag * tag_str_empty (s_tag *tag);
s_tag * tag_struct (s_tag *tag, const s_sym *module);
-s_tag * tag_struct_copy (s_tag *tag, const s_struct *src);
+s_tag * tag_struct_copy (s_tag *tag, s_struct *src);
s_tag * tag_struct_with_data (s_tag *tag, const s_sym *module,
void *data, bool free_data);
-s_tag * tag_struct_type (s_tag *tag, const s_sym *module,
- const s_list *spec);
+s_tag * tag_struct_type (s_tag *tag, const s_sym *module, s_list *spec);
s_tag * tag_struct_type_update_clean (s_tag *tag,
const s_struct_type *st,
const s_cfn *clean);
s_tag * tag_sw (s_tag *tag, sw i);
s_tag * tag_sym (s_tag *tag, const s_sym *sym);
s_tag * tag_tuple (s_tag *tag, uw count);
-s_tag * tag_tuple_2 (s_tag *tag, const s_tag *a, const s_tag *b);
+s_tag * tag_tuple_2 (s_tag *tag, s_tag *a, s_tag *b);
s_tag * tag_time (s_tag *tag);
s_tag * tag_time_add (s_tag *tag, const s_time *a, const s_time *b);
s_tag * tag_time_now (s_tag *tag);
@@ -216,7 +213,7 @@ s_tag * tag_u8 (s_tag *tag, u8 i);
s_tag * tag_u16 (s_tag *tag, u16 i);
s_tag * tag_u32 (s_tag *tag, u32 i);
s_tag * tag_u64 (s_tag *tag, u64 i);
-s_tag * tag_unquote_copy (s_tag *tag, const s_unquote *unquote);
+s_tag * tag_unquote_copy (s_tag *tag, s_unquote *unquote);
s_tag * tag_uw (s_tag *tag, uw i);
s_tag * tag_var (s_tag *tag, const s_sym *type);
s_tag * tag_void (s_tag *tag);
diff --git a/libkc3/tag_init.rb b/libkc3/tag_init.rb
index a25da5d..20ed991 100644
--- a/libkc3/tag_init.rb
+++ b/libkc3/tag_init.rb
@@ -301,6 +301,9 @@ class TagInitList
TagInit.new("bool", "TAG_BOOL", :init_mode_direct,
[Arg.new("bool", "b")]),
TagInit.new("call", "TAG_CALL", :init_mode_init, []),
+ TagInit.new("callable", "TAG_CALLABLE", :init_mode_init, []),
+ TagInit.new("callable", "copy", "TAG_CALLABLE", :init_mode_init,
+ []),
TagInit.new("character", "TAG_CHARACTER", :init_mode_direct,
[Arg.new("character", "c")]),
TagInitProto.new("copy", nil, :init_mode_none,
@@ -332,19 +335,19 @@ class TagInitList
[Arg.new("uw", "count")]),
TagInit1.new("map", "1", "TAG_MAP", :init_mode_init),
TagInit.new("map", "from_lists", "TAG_MAP", :init_mode_init,
- [Arg.new("const s_list *", "keys"),
- Arg.new("const s_list *", "values")]),
+ [Arg.new("s_list *", "keys"),
+ Arg.new("s_list *", "values")]),
TagInit.new("ptr", "TAG_PTR", :init_mode_init,
[Arg.new("void *", "p")]),
TagInit.new("ptr_free", "TAG_PTR_FREE", :init_mode_init,
[Arg.new("void *", "p")]),
TagInit.new("quote", "copy", "TAG_QUOTE", :init_mode_init,
- [Arg.new("const s_quote *", "quote")]),
+ [Arg.new("s_quote *", "quote")]),
TagInit1.new("ratio", "1", "TAG_RATIO", :init_mode_init),
TagInit.new("ratio", "TAG_RATIO", :init_mode_init,
[]),
TagInit.new("ratio", "copy", "TAG_RATIO", :init_mode_init,
- [Arg.new("const s_ratio *", "r")]),
+ [Arg.new("s_ratio *", "r")]),
TagInit.new("ratio", "zero", "TAG_RATIO", :init_mode_init,
[]),
TagInit.new("s8", "TAG_S8", :init_mode_direct,
@@ -381,14 +384,14 @@ class TagInitList
TagInit.new("struct", "TAG_STRUCT", :init_mode_init,
[Arg.new("const s_sym *", "module")]),
TagInit.new("struct", "copy", "TAG_STRUCT", :init_mode_init,
- [Arg.new("const s_struct *", "src")]),
+ [Arg.new("s_struct *", "src")]),
TagInit.new("struct", "with_data", "TAG_STRUCT", :init_mode_init,
[Arg.new("const s_sym *", "module"),
Arg.new("void *", "data"),
Arg.new("bool", "free_data")]),
TagInit.new("struct_type", "TAG_STRUCT_TYPE", :init_mode_init,
[Arg.new("const s_sym *", "module"),
- Arg.new("const s_list *", "spec")]),
+ Arg.new("s_list *", "spec")]),
TagInit.new("struct_type", "update_clean", "TAG_STRUCT_TYPE",
:init_mode_init,
[Arg.new("const s_struct_type *", "st"),
@@ -400,8 +403,8 @@ class TagInitList
TagInit.new("tuple", "TAG_TUPLE", :init_mode_init,
[Arg.new("uw", "count")]),
TagInit.new("tuple", "2", "TAG_TUPLE", :init_mode_init,
- [Arg.new("const s_tag *", "a"),
- Arg.new("const s_tag *", "b")]),
+ [Arg.new("s_tag *", "a"),
+ Arg.new("s_tag *", "b")]),
TagInitProto.new("time", "TAG_TIME", :init_mode_none, []),
TagInit.new("time", "add", "TAG_TIME", :init_mode_init,
[Arg.new("const s_time *", "a"),
@@ -416,7 +419,7 @@ class TagInitList
TagInit.new("u64", "TAG_U64", :init_mode_direct,
[Arg.new("u64", "i")]),
TagInit.new("unquote", "copy", "TAG_UNQUOTE", :init_mode_init,
- [Arg.new("const s_unquote *", "unquote")]),
+ [Arg.new("s_unquote *", "unquote")]),
TagInit.new("uw", "TAG_UW", :init_mode_direct,
[Arg.new("uw", "i")]),
TagInitProto.new("var", "TAG_VAR", :init_mode_none,
diff --git a/libkc3/tag_mod.c b/libkc3/tag_mod.c
index a14c8ce..50f4e4e 100644
--- a/libkc3/tag_mod.c
+++ b/libkc3/tag_mod.c
@@ -15,7 +15,7 @@
#include "integer.h"
#include "tag.h"
-s_tag * tag_mod (const s_tag *a, const s_tag *b, s_tag *dest)
+s_tag * tag_mod (s_tag *a, s_tag *b, s_tag *dest)
{
s_integer tmp = {0};
s_integer tmp2 = {0};
diff --git a/libkc3/tag_mul.c b/libkc3/tag_mul.c
index 69f7989..4a275e0 100644
--- a/libkc3/tag_mul.c
+++ b/libkc3/tag_mul.c
@@ -17,7 +17,7 @@
#include "ratio.h"
#include "tag.h"
-s_tag * tag_mul (const s_tag *a, const s_tag *b, s_tag *dest)
+s_tag * tag_mul (s_tag *a, s_tag *b, s_tag *dest)
{
s_complex c = {0};
s_ratio r = {0};
diff --git a/libkc3/tag_neg.c b/libkc3/tag_neg.c
index b10986a..f44dbfd 100644
--- a/libkc3/tag_neg.c
+++ b/libkc3/tag_neg.c
@@ -15,7 +15,7 @@
#include "ratio.h"
#include "tag.h"
-s_tag * tag_neg (const s_tag *tag, s_tag *dest)
+s_tag * tag_neg (s_tag *tag, s_tag *dest)
{
s_integer tmp = {0};
switch (tag->type) {
diff --git a/libkc3/tag_shift_left.c b/libkc3/tag_shift_left.c
index 6afe744..9c2872f 100644
--- a/libkc3/tag_shift_left.c
+++ b/libkc3/tag_shift_left.c
@@ -14,7 +14,7 @@
#include "integer.h"
#include "tag.h"
-s_tag * tag_shift_left (const s_tag *a, const s_tag *b, s_tag *result)
+s_tag * tag_shift_left (s_tag *a, s_tag *b, s_tag *result)
{
s_integer tmp = {0};
s_integer tmp2 = {0};
diff --git a/libkc3/tag_shift_right.c b/libkc3/tag_shift_right.c
index 41f8d66..be6242d 100644
--- a/libkc3/tag_shift_right.c
+++ b/libkc3/tag_shift_right.c
@@ -14,7 +14,7 @@
#include "integer.h"
#include "tag.h"
-s_tag * tag_shift_right (const s_tag *a, const s_tag *b, s_tag *result)
+s_tag * tag_shift_right (s_tag *a, s_tag *b, s_tag *result)
{
s_integer tmp = {0};
s_integer tmp2 = {0};
diff --git a/libkc3/tag_sqrt.c b/libkc3/tag_sqrt.c
index 15e7613..728d16f 100644
--- a/libkc3/tag_sqrt.c
+++ b/libkc3/tag_sqrt.c
@@ -25,7 +25,7 @@
#include "u64.h"
#include "uw.h"
-s_tag * tag_sqrt (const s_tag *tag, s_tag *dest)
+s_tag * tag_sqrt (s_tag *tag, s_tag *dest)
{
switch (tag->type) {
case TAG_INTEGER: return integer_sqrt(&tag->data.integer, dest);
diff --git a/libkc3/tag_sub.c b/libkc3/tag_sub.c
index 00da4e9..b39a267 100644
--- a/libkc3/tag_sub.c
+++ b/libkc3/tag_sub.c
@@ -17,7 +17,7 @@
#include "ratio.h"
#include "tag.h"
-s_tag * tag_sub (const s_tag *a, const s_tag *b, s_tag *dest)
+s_tag * tag_sub (s_tag *a, s_tag *b, s_tag *dest)
{
s_complex c;
s_integer tmp = {0};
diff --git a/libkc3/to_lisp.c b/libkc3/to_lisp.c
index 90ce1b9..e77ba94 100644
--- a/libkc3/to_lisp.c
+++ b/libkc3/to_lisp.c
@@ -21,7 +21,7 @@
#include "tag.h"
#include "to_lisp.h"
-s_tag * to_lisp (const s_tag *tag, s_tag *dest)
+s_tag * to_lisp (s_tag *tag, s_tag *dest)
{
assert(tag);
assert(dest);
@@ -37,7 +37,7 @@ s_tag * to_lisp (const s_tag *tag, s_tag *dest)
}
}
-s_tag * to_lisp_call (const s_call *call, s_tag *dest)
+s_tag * to_lisp_call (s_call *call, s_tag *dest)
{
s_tag arguments;
s_list *list;
@@ -55,9 +55,9 @@ s_tag * to_lisp_call (const s_call *call, s_tag *dest)
return tag_init_list(dest, list);
}
-s_tag * to_lisp_list (const s_list *list, s_tag *dest)
+s_tag * to_lisp_list (s_list *list, s_tag *dest)
{
- const s_list *list_i;
+ s_list *list_i;
s_list **tail;
s_list *tmp;
tmp = NULL;
@@ -76,7 +76,7 @@ s_tag * to_lisp_list (const s_list *list, s_tag *dest)
return NULL;
}
-s_tag * to_lisp_tuple (const s_tuple *tuple, s_tag *dest)
+s_tag * to_lisp_tuple (s_tuple *tuple, s_tag *dest)
{
uw i;
s_tag tmp = {0};
diff --git a/libkc3/to_lisp.h b/libkc3/to_lisp.h
index 3d3ef09..c4df70a 100644
--- a/libkc3/to_lisp.h
+++ b/libkc3/to_lisp.h
@@ -21,9 +21,9 @@
#include "types.h"
-s_tag * to_lisp (const s_tag *tag, s_tag *dest);
-s_tag * to_lisp_call (const s_call *call, s_tag *dest);
-s_tag * to_lisp_list (const s_list *list, s_tag *dest);
-s_tag * to_lisp_tuple (const s_tuple *call, s_tag *dest);
+s_tag * to_lisp (s_tag *tag, s_tag *dest);
+s_tag * to_lisp_call (s_call *call, s_tag *dest);
+s_tag * to_lisp_list (s_list *list, s_tag *dest);
+s_tag * to_lisp_tuple (s_tuple *call, s_tag *dest);
#endif /* LIBKC3_TO_LISP_H */
diff --git a/libkc3/tuple.c b/libkc3/tuple.c
index 451adb1..511a401 100644
--- a/libkc3/tuple.c
+++ b/libkc3/tuple.c
@@ -81,7 +81,7 @@ s_tuple * tuple_init_1 (s_tuple *tuple, const char *p)
return tuple;
}
-s_tuple * tuple_init_2 (s_tuple *tuple, const s_tag *a, const s_tag *b)
+s_tuple * tuple_init_2 (s_tuple *tuple, s_tag *a, s_tag *b)
{
tuple_init(tuple, 2);
tag_init_copy(tuple->tag + 0, a);
@@ -90,7 +90,7 @@ s_tuple * tuple_init_2 (s_tuple *tuple, const s_tag *a, const s_tag *b)
}
s_tuple * tuple_init_cast (s_tuple *tuple, const s_sym * const *type,
- const s_tag *tag)
+ s_tag *tag)
{
switch (tag->type) {
case TAG_TUPLE:
@@ -111,7 +111,7 @@ s_tuple * tuple_init_cast (s_tuple *tuple, const s_sym * const *type,
return NULL;
}
-s_tuple * tuple_init_copy (s_tuple *tuple, const s_tuple *src)
+s_tuple * tuple_init_copy (s_tuple *tuple, s_tuple *src)
{
uw i = 0;
assert(src);
diff --git a/libkc3/tuple.h b/libkc3/tuple.h
index a372716..ae65fe4 100644
--- a/libkc3/tuple.h
+++ b/libkc3/tuple.h
@@ -25,10 +25,10 @@
/* Stack allocation compatible functions */
s_tuple * tuple_init (s_tuple *tuple, uw count);
s_tuple * tuple_init_1 (s_tuple *tuple, const char *p);
-s_tuple * tuple_init_2 (s_tuple *tuple, const s_tag *a, const s_tag *b);
+s_tuple * tuple_init_2 (s_tuple *tuple, s_tag *a, s_tag *b);
s_tuple * tuple_init_cast (s_tuple *tuple, const s_sym * const *type,
- const s_tag *tag);
-s_tuple * tuple_init_copy (s_tuple *tuple, const s_tuple *src);
+ s_tag *tag);
+s_tuple * tuple_init_copy (s_tuple *tuple, s_tuple *src);
void tuple_clean (s_tuple *tuple);
/* Constructors, call tuple_delete after use */
@@ -42,6 +42,6 @@ void tuple_delete (s_tuple *tuple);
s_tuple * tuple_1 (s_tuple *tuple, const char *p);
/* Observers */
-s_list * tuple_to_list (const s_tuple *tuple, s_list **list);
+s_list * tuple_to_list (s_tuple *tuple, s_list **list);
#endif /* LIBKC3_TUPLE_H */
diff --git a/libkc3/unquote.c b/libkc3/unquote.c
index 13393fe..1e0c074 100644
--- a/libkc3/unquote.c
+++ b/libkc3/unquote.c
@@ -20,13 +20,13 @@ void unquote_clean (s_unquote *unquote)
tag_delete(unquote->tag);
}
-s_unquote * unquote_init (s_unquote *unquote, const s_tag *tag)
+s_unquote * unquote_init (s_unquote *unquote, s_tag *tag)
{
unquote->tag = tag_new_copy(tag);
return unquote;
}
-s_unquote * unquote_init_cast (s_unquote *unquote, const s_tag *tag)
+s_unquote * unquote_init_cast (s_unquote *unquote, s_tag *tag)
{
switch (tag->type) {
case TAG_UNQUOTE:
@@ -41,7 +41,7 @@ s_unquote * unquote_init_cast (s_unquote *unquote, const s_tag *tag)
return NULL;
}
-s_unquote * unquote_init_copy (s_unquote *unquote, const s_unquote *src)
+s_unquote * unquote_init_copy (s_unquote *unquote, s_unquote *src)
{
unquote->tag = tag_new_copy(src->tag);
return unquote;
diff --git a/libkc3/unquote.h b/libkc3/unquote.h
index 6124403..bbc6fa2 100644
--- a/libkc3/unquote.h
+++ b/libkc3/unquote.h
@@ -18,10 +18,9 @@
/* Stack-allocation compatible functions, call unquote_clean
after use. */
void unquote_clean (s_unquote *unquote);
-s_unquote * unquote_init (s_unquote *unquote, const s_tag *tag);
+s_unquote * unquote_init (s_unquote *unquote, s_tag *tag);
s_unquote * unquote_init_1 (s_unquote *unquote, const s8 *p);
-s_unquote * unquote_init_cast (s_unquote *unquote, const s_tag *src);
-s_unquote * unquote_init_copy (s_unquote *unquote,
- const s_unquote *src);
+s_unquote * unquote_init_cast (s_unquote *unquote, s_tag *src);
+s_unquote * unquote_init_copy (s_unquote *unquote, s_unquote *src);
#endif /* LIBKC3_UNQUOTE_H */
diff --git a/libkc3/var.c b/libkc3/var.c
index d4ee907..e4bcb44 100644
--- a/libkc3/var.c
+++ b/libkc3/var.c
@@ -19,7 +19,7 @@
#include "tag.h"
#include "var.h"
-s_tag * var_assign (const s_var *var, const s_tag *value, s_tag *dest)
+s_tag * var_assign (const s_var *var, s_tag *value, s_tag *dest)
{
assert(var);
assert(value);
@@ -70,7 +70,7 @@ s_var * var_init_1 (s_var *var, const char *p)
}
s_var * var_init_cast (s_var *var, const s_sym * const *type,
- const s_tag *src)
+ s_tag *src)
{
void *data;
s_tag tag = {0};
@@ -139,7 +139,7 @@ const s_var * var_reset (const s_var *var)
return var;
}
-const s_var * var_set (const s_var *var, const s_tag *value)
+const s_var * var_set (const s_var *var, s_tag *value)
{
const s_sym *value_type;
assert(var);
diff --git a/libkc3/var.h b/libkc3/var.h
index 2124582..9a9dcbe 100644
--- a/libkc3/var.h
+++ b/libkc3/var.h
@@ -19,16 +19,16 @@
s_var * var_init (s_var *var, s_tag *ptr, const s_sym *type);
s_var * var_init_1 (s_var *var, const char *p);
s_var * var_init_cast (s_var *tag, const s_sym * const *type,
- const s_tag *src);
+ s_tag *src);
s_var * var_init_copy (s_var *tag, const s_var *src);
/* Observers. */
bool * var_is_unbound (const s_var *var, bool *dest);
/* Operators. */
-s_tag * var_assign (const s_var *var, const s_tag *value,
+s_tag * var_assign (const s_var *var, s_tag *value,
s_tag *dest);
const s_var * var_reset (const s_var *var);
-const s_var * var_set (const s_var *var, const s_tag *value);
+const s_var * var_set (const s_var *var, s_tag *value);
#endif /* LIBKC3_VAR_H */
diff --git a/sources.mk b/sources.mk
index c5ce9ff..ce3ce32 100644
--- a/sources.mk
+++ b/sources.mk
@@ -324,6 +324,8 @@ KC3_C_SOURCES = \
"libkc3/buf_save.h" \
"libkc3/call.c" \
"libkc3/call.h" \
+ "libkc3/callable.c" \
+ "libkc3/callable.h" \
"libkc3/cast.c" \
"libkc3/cast.h" \
"libkc3/ceiling.c" \
diff --git a/sources.sh b/sources.sh
index 2b8ae82..33ab585 100644
--- a/sources.sh
+++ b/sources.sh
@@ -1,7 +1,7 @@
# sources.sh generated by update_sources
KC3_CONFIGURES='ekc3/configure ekc3/sources.sh ekc3/update_sources event/configure event/sources.sh event/update_sources http/configure http/sources.sh http/update_sources httpd/configure httpd/sources.sh httpd/update_sources ikc3/configure ikc3/sources.sh ikc3/update_sources json/configure json/sources.sh json/update_sources kc3c/configure kc3s/configure kc3s/sources.sh kc3s/update_sources libkc3/configure libkc3/sources.sh libkc3/update_sources libtommath/configure libtommath/sources.sh libtommath/update_sources socket/configure socket/sources.sh socket/update_sources test/configure test/sources.sh test/update_sources ucd2c/configure window/cairo/configure window/cairo/demo/configure window/cairo/demo/sources.sh window/cairo/demo/update_sources window/cairo/quartz/configure window/cairo/quartz/demo/configure window/cairo/quartz/demo/sources.sh window/cairo/quartz/demo/update_sources window/cairo/quartz/sources.sh window/cairo/quartz/update_sources window/cairo/sources.sh window/cairo/update_sources window/cairo/win32/configure window/cairo/win32/demo/configure window/cairo/win32/demo/sources.sh window/cairo/win32/demo/update_sources window/cairo/win32/sources.sh window/cairo/win32/update_sources window/cairo/xcb/configure window/cairo/xcb/demo/configure window/cairo/xcb/demo/sources.sh window/cairo/xcb/demo/update_sources window/cairo/xcb/sources.sh window/cairo/xcb/update_sources window/configure window/sdl2/configure window/sdl2/demo/configure window/sdl2/demo/macos/configure window/sdl2/demo/sources.sh window/sdl2/demo/update_sources window/sdl2/sources.sh window/sdl2/update_sources window/sources.sh window/update_sources '
KC3_MAKEFILES='ekc3/Makefile ekc3/sources.mk event/Makefile event/sources.mk http/Makefile http/sources.mk httpd/Makefile httpd/fx/assets/Makefile httpd/sources.mk ikc3/Makefile ikc3/sources.mk json/Makefile json/sources.mk kc3c/Makefile kc3s/Makefile kc3s/sources.mk libkc3/Makefile libkc3/gen.mk libkc3/sources.mk libtommath/Makefile libtommath/sources.mk socket/Makefile socket/sources.mk test/Makefile test/httpd/assets/Makefile test/sources.mk ucd2c/Makefile window/Makefile window/cairo/Makefile window/cairo/demo/Makefile window/cairo/demo/sources.mk window/cairo/quartz/Makefile window/cairo/quartz/demo/Makefile window/cairo/quartz/demo/sources.mk window/cairo/quartz/sources.mk window/cairo/sources.mk window/cairo/win32/Makefile window/cairo/win32/demo/Makefile window/cairo/win32/demo/sources.mk window/cairo/win32/sources.mk window/cairo/xcb/Makefile window/cairo/xcb/demo/Makefile window/cairo/xcb/demo/sources.mk window/cairo/xcb/sources.mk window/sdl2/Makefile window/sdl2/demo/Makefile window/sdl2/demo/macos/Makefile window/sdl2/demo/sources.mk window/sdl2/sources.mk window/sources.mk '
-KC3_C_SOURCES='ekc3/ekc3.c ekc3/ekc3.h ekc3/html.c ekc3/html.h ekc3/types.h event/event.c event/event.h http/http.c http/http.h http/http_request.c http/http_request.h http/http_response.c http/http_response.h http/mime_type.c http/mime_type.h http/types.h http/url.c http/url.h httpd/httpd.c httpd/httpd.h ikc3/buf_linenoise.c ikc3/buf_linenoise.h ikc3/buf_wineditline.c ikc3/buf_wineditline.h ikc3/ikc3.c ikc3/linenoise.c json/json.c json/json.h kc3c/c3c.c kc3s/buf_readline.c kc3s/buf_readline.h kc3s/kc3s.c libkc3/abs.c libkc3/abs.h libkc3/alist.c libkc3/alist.h libkc3/alloc.c libkc3/alloc.h libkc3/arg.c libkc3/arg.h libkc3/array.c libkc3/array.h libkc3/assert.h libkc3/binding.c libkc3/binding.h libkc3/block.c libkc3/block.h libkc3/bool.c libkc3/bool.h libkc3/buf.c libkc3/buf.h libkc3/buf_fd.c libkc3/buf_fd.h libkc3/buf_file.c libkc3/buf_file.h libkc3/buf_getc.c libkc3/buf_getc.h libkc3/buf_getchar.c libkc3/buf_getchar.h libkc3/buf_inspect.c libkc3/buf_inspect.h libkc3/buf_inspect_s.c.in libkc3/buf_inspect_s.h.in libkc3/buf_inspect_s16.c libkc3/buf_inspect_s16.h libkc3/buf_inspect_s16_binary.c libkc3/buf_inspect_s16_binary.h libkc3/buf_inspect_s16_decimal.c libkc3/buf_inspect_s16_decimal.h libkc3/buf_inspect_s16_hexadecimal.c libkc3/buf_inspect_s16_hexadecimal.h libkc3/buf_inspect_s16_octal.c libkc3/buf_inspect_s16_octal.h libkc3/buf_inspect_s32.c libkc3/buf_inspect_s32.h libkc3/buf_inspect_s32_binary.c libkc3/buf_inspect_s32_binary.h libkc3/buf_inspect_s32_decimal.c libkc3/buf_inspect_s32_decimal.h libkc3/buf_inspect_s32_hexadecimal.c libkc3/buf_inspect_s32_hexadecimal.h libkc3/buf_inspect_s32_octal.c libkc3/buf_inspect_s32_octal.h libkc3/buf_inspect_s64.c libkc3/buf_inspect_s64.h libkc3/buf_inspect_s64_binary.c libkc3/buf_inspect_s64_binary.h libkc3/buf_inspect_s64_decimal.c libkc3/buf_inspect_s64_decimal.h libkc3/buf_inspect_s64_hexadecimal.c libkc3/buf_inspect_s64_hexadecimal.h libkc3/buf_inspect_s64_octal.c libkc3/buf_inspect_s64_octal.h libkc3/buf_inspect_s8.c libkc3/buf_inspect_s8.h libkc3/buf_inspect_s8_binary.c libkc3/buf_inspect_s8_binary.h libkc3/buf_inspect_s8_decimal.c libkc3/buf_inspect_s8_decimal.h libkc3/buf_inspect_s8_hexadecimal.c libkc3/buf_inspect_s8_hexadecimal.h libkc3/buf_inspect_s8_octal.c libkc3/buf_inspect_s8_octal.h libkc3/buf_inspect_s_base.c.in libkc3/buf_inspect_s_base.h.in libkc3/buf_inspect_sw.c libkc3/buf_inspect_sw.h libkc3/buf_inspect_sw_binary.c libkc3/buf_inspect_sw_binary.h libkc3/buf_inspect_sw_decimal.c libkc3/buf_inspect_sw_decimal.h libkc3/buf_inspect_sw_hexadecimal.c libkc3/buf_inspect_sw_hexadecimal.h libkc3/buf_inspect_sw_octal.c libkc3/buf_inspect_sw_octal.h libkc3/buf_inspect_u.c.in libkc3/buf_inspect_u.h.in libkc3/buf_inspect_u16.c libkc3/buf_inspect_u16.h libkc3/buf_inspect_u16_binary.c libkc3/buf_inspect_u16_binary.h libkc3/buf_inspect_u16_decimal.c libkc3/buf_inspect_u16_decimal.h libkc3/buf_inspect_u16_hexadecimal.c libkc3/buf_inspect_u16_hexadecimal.h libkc3/buf_inspect_u16_octal.c libkc3/buf_inspect_u16_octal.h libkc3/buf_inspect_u32.c libkc3/buf_inspect_u32.h libkc3/buf_inspect_u32_binary.c libkc3/buf_inspect_u32_binary.h libkc3/buf_inspect_u32_decimal.c libkc3/buf_inspect_u32_decimal.h libkc3/buf_inspect_u32_hexadecimal.c libkc3/buf_inspect_u32_hexadecimal.h libkc3/buf_inspect_u32_octal.c libkc3/buf_inspect_u32_octal.h libkc3/buf_inspect_u64.c libkc3/buf_inspect_u64.h libkc3/buf_inspect_u64_binary.c libkc3/buf_inspect_u64_binary.h libkc3/buf_inspect_u64_decimal.c libkc3/buf_inspect_u64_decimal.h libkc3/buf_inspect_u64_hexadecimal.c libkc3/buf_inspect_u64_hexadecimal.h libkc3/buf_inspect_u64_octal.c libkc3/buf_inspect_u64_octal.h libkc3/buf_inspect_u8.c libkc3/buf_inspect_u8.h libkc3/buf_inspect_u8_binary.c libkc3/buf_inspect_u8_binary.h libkc3/buf_inspect_u8_decimal.c libkc3/buf_inspect_u8_decimal.h libkc3/buf_inspect_u8_hexadecimal.c libkc3/buf_inspect_u8_hexadecimal.h libkc3/buf_inspect_u8_octal.c libkc3/buf_inspect_u8_octal.h libkc3/buf_inspect_u_base.c.in libkc3/buf_inspect_u_base.h.in libkc3/buf_inspect_uw.c libkc3/buf_inspect_uw.h libkc3/buf_inspect_uw_binary.c libkc3/buf_inspect_uw_binary.h libkc3/buf_inspect_uw_decimal.c libkc3/buf_inspect_uw_decimal.h libkc3/buf_inspect_uw_hexadecimal.c libkc3/buf_inspect_uw_hexadecimal.h libkc3/buf_inspect_uw_octal.c libkc3/buf_inspect_uw_octal.h libkc3/buf_parse.c libkc3/buf_parse.h libkc3/buf_parse_s.c.in libkc3/buf_parse_s.h.in libkc3/buf_parse_s16.c libkc3/buf_parse_s16.h libkc3/buf_parse_s32.c libkc3/buf_parse_s32.h libkc3/buf_parse_s64.c libkc3/buf_parse_s64.h libkc3/buf_parse_s8.c libkc3/buf_parse_s8.h libkc3/buf_parse_sw.c libkc3/buf_parse_sw.h libkc3/buf_parse_u.c.in libkc3/buf_parse_u.h.in libkc3/buf_parse_u16.c libkc3/buf_parse_u16.h libkc3/buf_parse_u32.c libkc3/buf_parse_u32.h libkc3/buf_parse_u64.c libkc3/buf_parse_u64.h libkc3/buf_parse_u8.c libkc3/buf_parse_u8.h libkc3/buf_parse_uw.c libkc3/buf_parse_uw.h libkc3/buf_rw.c libkc3/buf_rw.h libkc3/buf_save.c libkc3/buf_save.h libkc3/call.c libkc3/call.h libkc3/cast.c libkc3/cast.h libkc3/ceiling.c libkc3/ceiling.h libkc3/cfn.c libkc3/cfn.h libkc3/character.c libkc3/character.h libkc3/compare.c libkc3/compare.h libkc3/complex.c libkc3/complex.h libkc3/cow.c libkc3/cow.h libkc3/crypt.c libkc3/crypt.h libkc3/crypt_sha512.c libkc3/data.c libkc3/data.h libkc3/env.c libkc3/env.h libkc3/error.c libkc3/error.h libkc3/error_handler.c libkc3/error_handler.h libkc3/eval.c libkc3/eval.h libkc3/explicit_bzero.h libkc3/f128.c libkc3/f128.h libkc3/f32.c libkc3/f32.h libkc3/f64.c libkc3/f64.h libkc3/fact.c libkc3/fact.h libkc3/fact_action.c libkc3/fact_action.h libkc3/fact_list.c libkc3/fact_list.h libkc3/facts.c libkc3/facts.h libkc3/facts_cursor.c libkc3/facts_cursor.h libkc3/facts_spec.c libkc3/facts_spec.h libkc3/facts_spec_cursor.c libkc3/facts_spec_cursor.h libkc3/facts_transaction.c libkc3/facts_transaction.h libkc3/facts_with.c libkc3/facts_with.h libkc3/facts_with_cursor.c libkc3/facts_with_cursor.h libkc3/fd.c libkc3/fd.h libkc3/file.c libkc3/file.h libkc3/float.h libkc3/fn.c libkc3/fn.h libkc3/fn_clause.c libkc3/fn_clause.h libkc3/frame.c libkc3/frame.h libkc3/hash.c libkc3/hash.h libkc3/ident.c libkc3/ident.h libkc3/inspect.c libkc3/inspect.h libkc3/integer.c libkc3/integer.h libkc3/io.c libkc3/io.h libkc3/kc3.c libkc3/kc3.h libkc3/kc3_main.h libkc3/license.c libkc3/list.c libkc3/list.h libkc3/list_init.c libkc3/list_init.h libkc3/log.c libkc3/log.h libkc3/map.c libkc3/map.h libkc3/module.c libkc3/module.h libkc3/operator.c libkc3/operator.h libkc3/pcomplex.c libkc3/pcomplex.h libkc3/pcow.c libkc3/pcow.h libkc3/pretty.c libkc3/pretty.h libkc3/ptag.c libkc3/ptag.h libkc3/ptr.c libkc3/ptr.h libkc3/ptr_free.c libkc3/ptr_free.h libkc3/queue.c libkc3/queue.h libkc3/quote.c libkc3/quote.h libkc3/ratio.c libkc3/ratio.h libkc3/s.c.in libkc3/s.h.in libkc3/s16.c libkc3/s16.h libkc3/s32.c libkc3/s32.h libkc3/s64.c libkc3/s64.h libkc3/s8.c libkc3/s8.h libkc3/sequence.c libkc3/sequence.h libkc3/set.c.in libkc3/set.h.in libkc3/set__fact.c libkc3/set__fact.h libkc3/set__tag.c libkc3/set__tag.h libkc3/set_cursor.c.in libkc3/set_cursor.h.in libkc3/set_cursor__fact.c libkc3/set_cursor__fact.h libkc3/set_cursor__tag.c libkc3/set_cursor__tag.h libkc3/set_item.c.in libkc3/set_item.h.in libkc3/set_item__fact.c libkc3/set_item__fact.h libkc3/set_item__tag.c libkc3/set_item__tag.h libkc3/sh.c libkc3/sh.h libkc3/sha1.c libkc3/sha1.h libkc3/sign.c libkc3/sign.h libkc3/skiplist.c.in libkc3/skiplist.h.in libkc3/skiplist__fact.c libkc3/skiplist__fact.h libkc3/skiplist_node.c.in libkc3/skiplist_node.h.in libkc3/skiplist_node__fact.c libkc3/skiplist_node__fact.h libkc3/special_operator.c libkc3/special_operator.h libkc3/str.c libkc3/str.h libkc3/struct.c libkc3/struct.h libkc3/struct_type.c libkc3/struct_type.h libkc3/sw.c libkc3/sw.h libkc3/sym.c libkc3/sym.h libkc3/tag.c libkc3/tag.h libkc3/tag_add.c libkc3/tag_addi.c libkc3/tag_band.c libkc3/tag_bnot.c libkc3/tag_bor.c libkc3/tag_bxor.c libkc3/tag_div.c libkc3/tag_init.c libkc3/tag_init.h libkc3/tag_mod.c libkc3/tag_mul.c libkc3/tag_neg.c libkc3/tag_shift_left.c libkc3/tag_shift_right.c libkc3/tag_sqrt.c libkc3/tag_sub.c libkc3/tag_type.c libkc3/tag_type.h libkc3/time.c libkc3/time.h libkc3/to_lisp.c libkc3/to_lisp.h libkc3/tuple.c libkc3/tuple.h libkc3/types.h libkc3/u.c.in libkc3/u.h.in libkc3/u16.c libkc3/u16.h libkc3/u32.c libkc3/u32.h libkc3/u64.c libkc3/u64.h libkc3/u8.c libkc3/u8.h libkc3/ucd.c libkc3/ucd.h libkc3/unquote.c libkc3/unquote.h libkc3/uw.c libkc3/uw.h libkc3/var.c libkc3/var.h libkc3/void.c libkc3/void.h socket/socket.c socket/socket.h socket/socket_addr.c socket/socket_addr.h socket/socket_buf.c socket/socket_buf.h socket/types.h test/array_test.c test/bool_test.c test/buf_file_test.c test/buf_inspect_test.c test/buf_parse_test.c test/buf_parse_test.h test/buf_parse_test_s16.c test/buf_parse_test_s32.c test/buf_parse_test_s64.c test/buf_parse_test_s8.c test/buf_parse_test_su.h test/buf_parse_test_u16.c test/buf_parse_test_u32.c test/buf_parse_test_u64.c test/buf_parse_test_u8.c test/buf_test.c test/call_test.c test/cfn_test.c test/character_test.c test/compare_test.c test/compare_test.h test/env_test.c test/fact_test.c test/fact_test.h test/facts_cursor_test.c test/facts_test.c test/facts_with_test.c test/fn_test.c test/hash_test.c test/ident_test.c test/inspect_test.c test/libkc3_test.c test/list_test.c test/ratio_test.c test/set__fact_test.c test/set__tag_test.c test/skiplist__fact_test.c test/str_test.c test/struct_test.c test/sym_test.c test/tag_test.c test/tag_test.h test/test.c test/test.h test/tuple_test.c test/types_test.c ucd2c/ucd.h ucd2c/ucd2c.c window/cairo/cairo_font.c window/cairo/cairo_font.h window/cairo/cairo_sprite.c window/cairo/cairo_sprite.h window/cairo/cairo_text.c window/cairo/cairo_text.h window/cairo/demo/bg_rect.c window/cairo/demo/bg_rect.h window/cairo/demo/flies.c window/cairo/demo/flies.h window/cairo/demo/lightspeed.c window/cairo/demo/lightspeed.h window/cairo/demo/mandelbrot_f128.c window/cairo/demo/mandelbrot_f128.h window/cairo/demo/toasters.c window/cairo/demo/toasters.h window/cairo/demo/window_cairo_demo.c window/cairo/demo/window_cairo_demo.h window/cairo/quartz/demo/window_cairo_quartz_demo.c window/cairo/quartz/quartz_to_xkbcommon.c window/cairo/quartz/quartz_to_xkbcommon.h window/cairo/quartz/window_cairo_quartz.h window/cairo/quartz/window_cairo_quartz_app_delegate.h window/cairo/quartz/window_cairo_quartz_view.h window/cairo/quartz/window_cairo_quartz_view_controller.h window/cairo/quartz/xkbquartz.h window/cairo/types.h window/cairo/win32/demo/window_cairo_win32_demo.c window/cairo/win32/vk_to_xkbcommon.c window/cairo/win32/vk_to_xkbcommon.h window/cairo/win32/window_cairo_win32.c window/cairo/win32/window_cairo_win32.h window/cairo/window_cairo.c window/cairo/window_cairo.h window/cairo/xcb/demo/window_cairo_xcb_demo.c window/cairo/xcb/window_cairo_xcb.c window/cairo/xcb/window_cairo_xcb.h window/sdl2/demo/bg_rect.c window/sdl2/demo/bg_rect.h window/sdl2/demo/earth.c window/sdl2/demo/earth.h window/sdl2/demo/flies.c window/sdl2/demo/flies.h window/sdl2/demo/lightspeed.c window/sdl2/demo/lightspeed.h window/sdl2/demo/mandelbrot_f128.c window/sdl2/demo/mandelbrot_f128.h window/sdl2/demo/matrix.c window/sdl2/demo/matrix.h window/sdl2/demo/toasters.c window/sdl2/demo/toasters.h window/sdl2/demo/window_sdl2_demo.c window/sdl2/demo/window_sdl2_demo.h window/sdl2/disabled/mandelbrot.c window/sdl2/disabled/mandelbrot.h window/sdl2/disabled/sdl2_font.c window/sdl2/disabled/sdl2_font.h window/sdl2/disabled/sdl2_sprite.c window/sdl2/disabled/sdl2_sprite.h window/sdl2/dmat3.h window/sdl2/dmat4.c window/sdl2/dmat4.h window/sdl2/dvec2.c window/sdl2/dvec2.h window/sdl2/dvec3.c window/sdl2/dvec3.h window/sdl2/gl_camera.c window/sdl2/gl_camera.h window/sdl2/gl_cylinder.c window/sdl2/gl_cylinder.h window/sdl2/gl_deprecated.c window/sdl2/gl_deprecated.h window/sdl2/gl_font.c window/sdl2/gl_font.h window/sdl2/gl_lines.c window/sdl2/gl_lines.h window/sdl2/gl_object.c window/sdl2/gl_object.h window/sdl2/gl_ortho.c window/sdl2/gl_ortho.h window/sdl2/gl_sphere.c window/sdl2/gl_sphere.h window/sdl2/gl_sprite.c window/sdl2/gl_sprite.h window/sdl2/gl_square.c window/sdl2/gl_square.h window/sdl2/gl_text.c window/sdl2/gl_text.h window/sdl2/gl_triangle.c window/sdl2/gl_triangle.h window/sdl2/gl_vertex.c window/sdl2/gl_vertex.h window/sdl2/gl_vtext.c window/sdl2/gl_vtext.h window/sdl2/mat3.h window/sdl2/mat4.c window/sdl2/mat4.h window/sdl2/types.h window/sdl2/vec2.c window/sdl2/vec2.h window/sdl2/vec3.c window/sdl2/vec3.h window/sdl2/window_sdl2.c window/sdl2/window_sdl2.h window/types.h window/window.c window/window.h '
+KC3_C_SOURCES='ekc3/ekc3.c ekc3/ekc3.h ekc3/html.c ekc3/html.h ekc3/types.h event/event.c event/event.h http/http.c http/http.h http/http_request.c http/http_request.h http/http_response.c http/http_response.h http/mime_type.c http/mime_type.h http/types.h http/url.c http/url.h httpd/httpd.c httpd/httpd.h ikc3/buf_linenoise.c ikc3/buf_linenoise.h ikc3/buf_wineditline.c ikc3/buf_wineditline.h ikc3/ikc3.c ikc3/linenoise.c json/json.c json/json.h kc3c/c3c.c kc3s/buf_readline.c kc3s/buf_readline.h kc3s/kc3s.c libkc3/abs.c libkc3/abs.h libkc3/alist.c libkc3/alist.h libkc3/alloc.c libkc3/alloc.h libkc3/arg.c libkc3/arg.h libkc3/array.c libkc3/array.h libkc3/assert.h libkc3/binding.c libkc3/binding.h libkc3/block.c libkc3/block.h libkc3/bool.c libkc3/bool.h libkc3/buf.c libkc3/buf.h libkc3/buf_fd.c libkc3/buf_fd.h libkc3/buf_file.c libkc3/buf_file.h libkc3/buf_getc.c libkc3/buf_getc.h libkc3/buf_getchar.c libkc3/buf_getchar.h libkc3/buf_inspect.c libkc3/buf_inspect.h libkc3/buf_inspect_s.c.in libkc3/buf_inspect_s.h.in libkc3/buf_inspect_s16.c libkc3/buf_inspect_s16.h libkc3/buf_inspect_s16_binary.c libkc3/buf_inspect_s16_binary.h libkc3/buf_inspect_s16_decimal.c libkc3/buf_inspect_s16_decimal.h libkc3/buf_inspect_s16_hexadecimal.c libkc3/buf_inspect_s16_hexadecimal.h libkc3/buf_inspect_s16_octal.c libkc3/buf_inspect_s16_octal.h libkc3/buf_inspect_s32.c libkc3/buf_inspect_s32.h libkc3/buf_inspect_s32_binary.c libkc3/buf_inspect_s32_binary.h libkc3/buf_inspect_s32_decimal.c libkc3/buf_inspect_s32_decimal.h libkc3/buf_inspect_s32_hexadecimal.c libkc3/buf_inspect_s32_hexadecimal.h libkc3/buf_inspect_s32_octal.c libkc3/buf_inspect_s32_octal.h libkc3/buf_inspect_s64.c libkc3/buf_inspect_s64.h libkc3/buf_inspect_s64_binary.c libkc3/buf_inspect_s64_binary.h libkc3/buf_inspect_s64_decimal.c libkc3/buf_inspect_s64_decimal.h libkc3/buf_inspect_s64_hexadecimal.c libkc3/buf_inspect_s64_hexadecimal.h libkc3/buf_inspect_s64_octal.c libkc3/buf_inspect_s64_octal.h libkc3/buf_inspect_s8.c libkc3/buf_inspect_s8.h libkc3/buf_inspect_s8_binary.c libkc3/buf_inspect_s8_binary.h libkc3/buf_inspect_s8_decimal.c libkc3/buf_inspect_s8_decimal.h libkc3/buf_inspect_s8_hexadecimal.c libkc3/buf_inspect_s8_hexadecimal.h libkc3/buf_inspect_s8_octal.c libkc3/buf_inspect_s8_octal.h libkc3/buf_inspect_s_base.c.in libkc3/buf_inspect_s_base.h.in libkc3/buf_inspect_sw.c libkc3/buf_inspect_sw.h libkc3/buf_inspect_sw_binary.c libkc3/buf_inspect_sw_binary.h libkc3/buf_inspect_sw_decimal.c libkc3/buf_inspect_sw_decimal.h libkc3/buf_inspect_sw_hexadecimal.c libkc3/buf_inspect_sw_hexadecimal.h libkc3/buf_inspect_sw_octal.c libkc3/buf_inspect_sw_octal.h libkc3/buf_inspect_u.c.in libkc3/buf_inspect_u.h.in libkc3/buf_inspect_u16.c libkc3/buf_inspect_u16.h libkc3/buf_inspect_u16_binary.c libkc3/buf_inspect_u16_binary.h libkc3/buf_inspect_u16_decimal.c libkc3/buf_inspect_u16_decimal.h libkc3/buf_inspect_u16_hexadecimal.c libkc3/buf_inspect_u16_hexadecimal.h libkc3/buf_inspect_u16_octal.c libkc3/buf_inspect_u16_octal.h libkc3/buf_inspect_u32.c libkc3/buf_inspect_u32.h libkc3/buf_inspect_u32_binary.c libkc3/buf_inspect_u32_binary.h libkc3/buf_inspect_u32_decimal.c libkc3/buf_inspect_u32_decimal.h libkc3/buf_inspect_u32_hexadecimal.c libkc3/buf_inspect_u32_hexadecimal.h libkc3/buf_inspect_u32_octal.c libkc3/buf_inspect_u32_octal.h libkc3/buf_inspect_u64.c libkc3/buf_inspect_u64.h libkc3/buf_inspect_u64_binary.c libkc3/buf_inspect_u64_binary.h libkc3/buf_inspect_u64_decimal.c libkc3/buf_inspect_u64_decimal.h libkc3/buf_inspect_u64_hexadecimal.c libkc3/buf_inspect_u64_hexadecimal.h libkc3/buf_inspect_u64_octal.c libkc3/buf_inspect_u64_octal.h libkc3/buf_inspect_u8.c libkc3/buf_inspect_u8.h libkc3/buf_inspect_u8_binary.c libkc3/buf_inspect_u8_binary.h libkc3/buf_inspect_u8_decimal.c libkc3/buf_inspect_u8_decimal.h libkc3/buf_inspect_u8_hexadecimal.c libkc3/buf_inspect_u8_hexadecimal.h libkc3/buf_inspect_u8_octal.c libkc3/buf_inspect_u8_octal.h libkc3/buf_inspect_u_base.c.in libkc3/buf_inspect_u_base.h.in libkc3/buf_inspect_uw.c libkc3/buf_inspect_uw.h libkc3/buf_inspect_uw_binary.c libkc3/buf_inspect_uw_binary.h libkc3/buf_inspect_uw_decimal.c libkc3/buf_inspect_uw_decimal.h libkc3/buf_inspect_uw_hexadecimal.c libkc3/buf_inspect_uw_hexadecimal.h libkc3/buf_inspect_uw_octal.c libkc3/buf_inspect_uw_octal.h libkc3/buf_parse.c libkc3/buf_parse.h libkc3/buf_parse_s.c.in libkc3/buf_parse_s.h.in libkc3/buf_parse_s16.c libkc3/buf_parse_s16.h libkc3/buf_parse_s32.c libkc3/buf_parse_s32.h libkc3/buf_parse_s64.c libkc3/buf_parse_s64.h libkc3/buf_parse_s8.c libkc3/buf_parse_s8.h libkc3/buf_parse_sw.c libkc3/buf_parse_sw.h libkc3/buf_parse_u.c.in libkc3/buf_parse_u.h.in libkc3/buf_parse_u16.c libkc3/buf_parse_u16.h libkc3/buf_parse_u32.c libkc3/buf_parse_u32.h libkc3/buf_parse_u64.c libkc3/buf_parse_u64.h libkc3/buf_parse_u8.c libkc3/buf_parse_u8.h libkc3/buf_parse_uw.c libkc3/buf_parse_uw.h libkc3/buf_rw.c libkc3/buf_rw.h libkc3/buf_save.c libkc3/buf_save.h libkc3/call.c libkc3/call.h libkc3/callable.c libkc3/callable.h libkc3/cast.c libkc3/cast.h libkc3/ceiling.c libkc3/ceiling.h libkc3/cfn.c libkc3/cfn.h libkc3/character.c libkc3/character.h libkc3/compare.c libkc3/compare.h libkc3/complex.c libkc3/complex.h libkc3/cow.c libkc3/cow.h libkc3/crypt.c libkc3/crypt.h libkc3/crypt_sha512.c libkc3/data.c libkc3/data.h libkc3/env.c libkc3/env.h libkc3/error.c libkc3/error.h libkc3/error_handler.c libkc3/error_handler.h libkc3/eval.c libkc3/eval.h libkc3/explicit_bzero.h libkc3/f128.c libkc3/f128.h libkc3/f32.c libkc3/f32.h libkc3/f64.c libkc3/f64.h libkc3/fact.c libkc3/fact.h libkc3/fact_action.c libkc3/fact_action.h libkc3/fact_list.c libkc3/fact_list.h libkc3/facts.c libkc3/facts.h libkc3/facts_cursor.c libkc3/facts_cursor.h libkc3/facts_spec.c libkc3/facts_spec.h libkc3/facts_spec_cursor.c libkc3/facts_spec_cursor.h libkc3/facts_transaction.c libkc3/facts_transaction.h libkc3/facts_with.c libkc3/facts_with.h libkc3/facts_with_cursor.c libkc3/facts_with_cursor.h libkc3/fd.c libkc3/fd.h libkc3/file.c libkc3/file.h libkc3/float.h libkc3/fn.c libkc3/fn.h libkc3/fn_clause.c libkc3/fn_clause.h libkc3/frame.c libkc3/frame.h libkc3/hash.c libkc3/hash.h libkc3/ident.c libkc3/ident.h libkc3/inspect.c libkc3/inspect.h libkc3/integer.c libkc3/integer.h libkc3/io.c libkc3/io.h libkc3/kc3.c libkc3/kc3.h libkc3/kc3_main.h libkc3/license.c libkc3/list.c libkc3/list.h libkc3/list_init.c libkc3/list_init.h libkc3/log.c libkc3/log.h libkc3/map.c libkc3/map.h libkc3/module.c libkc3/module.h libkc3/operator.c libkc3/operator.h libkc3/pcomplex.c libkc3/pcomplex.h libkc3/pcow.c libkc3/pcow.h libkc3/pretty.c libkc3/pretty.h libkc3/ptag.c libkc3/ptag.h libkc3/ptr.c libkc3/ptr.h libkc3/ptr_free.c libkc3/ptr_free.h libkc3/queue.c libkc3/queue.h libkc3/quote.c libkc3/quote.h libkc3/ratio.c libkc3/ratio.h libkc3/s.c.in libkc3/s.h.in libkc3/s16.c libkc3/s16.h libkc3/s32.c libkc3/s32.h libkc3/s64.c libkc3/s64.h libkc3/s8.c libkc3/s8.h libkc3/sequence.c libkc3/sequence.h libkc3/set.c.in libkc3/set.h.in libkc3/set__fact.c libkc3/set__fact.h libkc3/set__tag.c libkc3/set__tag.h libkc3/set_cursor.c.in libkc3/set_cursor.h.in libkc3/set_cursor__fact.c libkc3/set_cursor__fact.h libkc3/set_cursor__tag.c libkc3/set_cursor__tag.h libkc3/set_item.c.in libkc3/set_item.h.in libkc3/set_item__fact.c libkc3/set_item__fact.h libkc3/set_item__tag.c libkc3/set_item__tag.h libkc3/sh.c libkc3/sh.h libkc3/sha1.c libkc3/sha1.h libkc3/sign.c libkc3/sign.h libkc3/skiplist.c.in libkc3/skiplist.h.in libkc3/skiplist__fact.c libkc3/skiplist__fact.h libkc3/skiplist_node.c.in libkc3/skiplist_node.h.in libkc3/skiplist_node__fact.c libkc3/skiplist_node__fact.h libkc3/special_operator.c libkc3/special_operator.h libkc3/str.c libkc3/str.h libkc3/struct.c libkc3/struct.h libkc3/struct_type.c libkc3/struct_type.h libkc3/sw.c libkc3/sw.h libkc3/sym.c libkc3/sym.h libkc3/tag.c libkc3/tag.h libkc3/tag_add.c libkc3/tag_addi.c libkc3/tag_band.c libkc3/tag_bnot.c libkc3/tag_bor.c libkc3/tag_bxor.c libkc3/tag_div.c libkc3/tag_init.c libkc3/tag_init.h libkc3/tag_mod.c libkc3/tag_mul.c libkc3/tag_neg.c libkc3/tag_shift_left.c libkc3/tag_shift_right.c libkc3/tag_sqrt.c libkc3/tag_sub.c libkc3/tag_type.c libkc3/tag_type.h libkc3/time.c libkc3/time.h libkc3/to_lisp.c libkc3/to_lisp.h libkc3/tuple.c libkc3/tuple.h libkc3/types.h libkc3/u.c.in libkc3/u.h.in libkc3/u16.c libkc3/u16.h libkc3/u32.c libkc3/u32.h libkc3/u64.c libkc3/u64.h libkc3/u8.c libkc3/u8.h libkc3/ucd.c libkc3/ucd.h libkc3/unquote.c libkc3/unquote.h libkc3/uw.c libkc3/uw.h libkc3/var.c libkc3/var.h libkc3/void.c libkc3/void.h socket/socket.c socket/socket.h socket/socket_addr.c socket/socket_addr.h socket/socket_buf.c socket/socket_buf.h socket/types.h test/array_test.c test/bool_test.c test/buf_file_test.c test/buf_inspect_test.c test/buf_parse_test.c test/buf_parse_test.h test/buf_parse_test_s16.c test/buf_parse_test_s32.c test/buf_parse_test_s64.c test/buf_parse_test_s8.c test/buf_parse_test_su.h test/buf_parse_test_u16.c test/buf_parse_test_u32.c test/buf_parse_test_u64.c test/buf_parse_test_u8.c test/buf_test.c test/call_test.c test/cfn_test.c test/character_test.c test/compare_test.c test/compare_test.h test/env_test.c test/fact_test.c test/fact_test.h test/facts_cursor_test.c test/facts_test.c test/facts_with_test.c test/fn_test.c test/hash_test.c test/ident_test.c test/inspect_test.c test/libkc3_test.c test/list_test.c test/ratio_test.c test/set__fact_test.c test/set__tag_test.c test/skiplist__fact_test.c test/str_test.c test/struct_test.c test/sym_test.c test/tag_test.c test/tag_test.h test/test.c test/test.h test/tuple_test.c test/types_test.c ucd2c/ucd.h ucd2c/ucd2c.c window/cairo/cairo_font.c window/cairo/cairo_font.h window/cairo/cairo_sprite.c window/cairo/cairo_sprite.h window/cairo/cairo_text.c window/cairo/cairo_text.h window/cairo/demo/bg_rect.c window/cairo/demo/bg_rect.h window/cairo/demo/flies.c window/cairo/demo/flies.h window/cairo/demo/lightspeed.c window/cairo/demo/lightspeed.h window/cairo/demo/mandelbrot_f128.c window/cairo/demo/mandelbrot_f128.h window/cairo/demo/toasters.c window/cairo/demo/toasters.h window/cairo/demo/window_cairo_demo.c window/cairo/demo/window_cairo_demo.h window/cairo/quartz/demo/window_cairo_quartz_demo.c window/cairo/quartz/quartz_to_xkbcommon.c window/cairo/quartz/quartz_to_xkbcommon.h window/cairo/quartz/window_cairo_quartz.h window/cairo/quartz/window_cairo_quartz_app_delegate.h window/cairo/quartz/window_cairo_quartz_view.h window/cairo/quartz/window_cairo_quartz_view_controller.h window/cairo/quartz/xkbquartz.h window/cairo/types.h window/cairo/win32/demo/window_cairo_win32_demo.c window/cairo/win32/vk_to_xkbcommon.c window/cairo/win32/vk_to_xkbcommon.h window/cairo/win32/window_cairo_win32.c window/cairo/win32/window_cairo_win32.h window/cairo/window_cairo.c window/cairo/window_cairo.h window/cairo/xcb/demo/window_cairo_xcb_demo.c window/cairo/xcb/window_cairo_xcb.c window/cairo/xcb/window_cairo_xcb.h window/sdl2/demo/bg_rect.c window/sdl2/demo/bg_rect.h window/sdl2/demo/earth.c window/sdl2/demo/earth.h window/sdl2/demo/flies.c window/sdl2/demo/flies.h window/sdl2/demo/lightspeed.c window/sdl2/demo/lightspeed.h window/sdl2/demo/mandelbrot_f128.c window/sdl2/demo/mandelbrot_f128.h window/sdl2/demo/matrix.c window/sdl2/demo/matrix.h window/sdl2/demo/toasters.c window/sdl2/demo/toasters.h window/sdl2/demo/window_sdl2_demo.c window/sdl2/demo/window_sdl2_demo.h window/sdl2/disabled/mandelbrot.c window/sdl2/disabled/mandelbrot.h window/sdl2/disabled/sdl2_font.c window/sdl2/disabled/sdl2_font.h window/sdl2/disabled/sdl2_sprite.c window/sdl2/disabled/sdl2_sprite.h window/sdl2/dmat3.h window/sdl2/dmat4.c window/sdl2/dmat4.h window/sdl2/dvec2.c window/sdl2/dvec2.h window/sdl2/dvec3.c window/sdl2/dvec3.h window/sdl2/gl_camera.c window/sdl2/gl_camera.h window/sdl2/gl_cylinder.c window/sdl2/gl_cylinder.h window/sdl2/gl_deprecated.c window/sdl2/gl_deprecated.h window/sdl2/gl_font.c window/sdl2/gl_font.h window/sdl2/gl_lines.c window/sdl2/gl_lines.h window/sdl2/gl_object.c window/sdl2/gl_object.h window/sdl2/gl_ortho.c window/sdl2/gl_ortho.h window/sdl2/gl_sphere.c window/sdl2/gl_sphere.h window/sdl2/gl_sprite.c window/sdl2/gl_sprite.h window/sdl2/gl_square.c window/sdl2/gl_square.h window/sdl2/gl_text.c window/sdl2/gl_text.h window/sdl2/gl_triangle.c window/sdl2/gl_triangle.h window/sdl2/gl_vertex.c window/sdl2/gl_vertex.h window/sdl2/gl_vtext.c window/sdl2/gl_vtext.h window/sdl2/mat3.h window/sdl2/mat4.c window/sdl2/mat4.h window/sdl2/types.h window/sdl2/vec2.c window/sdl2/vec2.h window/sdl2/vec3.c window/sdl2/vec3.h window/sdl2/window_sdl2.c window/sdl2/window_sdl2.h window/types.h window/window.c window/window.h '
KC3_FONT_SOURCES='fonts/Computer Modern/cmunbl-webfont.ttf fonts/Computer Modern/cmunbl.otf fonts/Computer Modern/cmunbx-webfont.ttf fonts/Computer Modern/cmunbx.otf fonts/Computer Modern/cmunbxo-webfont.ttf fonts/Computer Modern/cmunbxo.otf fonts/Computer Modern/cmunrm-webfont.ttf fonts/Computer Modern/cmunrm.otf fonts/Computer Modern/cmunsi-webfont.ttf fonts/Computer Modern/cmunsi.otf fonts/Computer Modern/cmunsl-webfont.ttf fonts/Computer Modern/cmunsl.otf fonts/Computer Modern/cmunss-webfont.ttf fonts/Computer Modern/cmunss.otf fonts/Computer Modern/cmunsx-webfont.ttf fonts/Computer Modern/cmunsx.otf fonts/Courier New/Courier New.ttf fonts/Courier/fonts/OGCourier-Bold.otf fonts/Courier/fonts/OGCourier-Bold.ttf fonts/Courier/fonts/OGCourier-BoldItalic.otf fonts/Courier/fonts/OGCourier-BoldItalic.ttf fonts/Courier/fonts/OGCourier-Italic.otf fonts/Courier/fonts/OGCourier-Italic.ttf fonts/Courier/fonts/OGCourier.otf fonts/Courier/fonts/OGCourier.ttf fonts/Courier/fonts/zero-dot/OGCourierZeroDot-Bold.otf fonts/Courier/fonts/zero-dot/OGCourierZeroDot-Bold.ttf fonts/Courier/fonts/zero-dot/OGCourierZeroDot-BoldItalic.otf fonts/Courier/fonts/zero-dot/OGCourierZeroDot-BoldItalic.ttf fonts/Courier/fonts/zero-dot/OGCourierZeroDot-Italic.otf fonts/Courier/fonts/zero-dot/OGCourierZeroDot-Italic.ttf fonts/Courier/fonts/zero-dot/OGCourierZeroDot.otf fonts/Courier/fonts/zero-dot/OGCourierZeroDot.ttf fonts/Courier/fonts/zero-slash/OGCourierZeroSlash-Bold.otf fonts/Courier/fonts/zero-slash/OGCourierZeroSlash-Bold.ttf fonts/Courier/fonts/zero-slash/OGCourierZeroSlash-BoldItalic.otf fonts/Courier/fonts/zero-slash/OGCourierZeroSlash-BoldItalic.ttf fonts/Courier/fonts/zero-slash/OGCourierZeroSlash-Italic.otf fonts/Courier/fonts/zero-slash/OGCourierZeroSlash-Italic.ttf fonts/Courier/fonts/zero-slash/OGCourierZeroSlash.otf fonts/Courier/fonts/zero-slash/OGCourierZeroSlash.ttf fonts/Courier/sfd/OGCourier-Bold.sfd.ttf fonts/Courier/sfd/OGCourier-BoldItalic.sfd.ttf fonts/Courier/sfd/OGCourier-Italic.sfd.ttf fonts/Courier/sfd/OGCourier.sfd.ttf fonts/Inter/InterVariable-Italic.ttf fonts/Inter/InterVariable.ttf fonts/Inter/extras/otf/Inter-Black.otf fonts/Inter/extras/otf/Inter-BlackItalic.otf fonts/Inter/extras/otf/Inter-Bold.otf fonts/Inter/extras/otf/Inter-BoldItalic.otf fonts/Inter/extras/otf/Inter-ExtraBold.otf fonts/Inter/extras/otf/Inter-ExtraBoldItalic.otf fonts/Inter/extras/otf/Inter-ExtraLight.otf fonts/Inter/extras/otf/Inter-ExtraLightItalic.otf fonts/Inter/extras/otf/Inter-Italic.otf fonts/Inter/extras/otf/Inter-Light.otf fonts/Inter/extras/otf/Inter-LightItalic.otf fonts/Inter/extras/otf/Inter-Medium.otf fonts/Inter/extras/otf/Inter-MediumItalic.otf fonts/Inter/extras/otf/Inter-Regular.otf fonts/Inter/extras/otf/Inter-SemiBold.otf fonts/Inter/extras/otf/Inter-SemiBoldItalic.otf fonts/Inter/extras/otf/Inter-Thin.otf fonts/Inter/extras/otf/Inter-ThinItalic.otf fonts/Inter/extras/otf/InterDisplay-Black.otf fonts/Inter/extras/otf/InterDisplay-BlackItalic.otf fonts/Inter/extras/otf/InterDisplay-Bold.otf fonts/Inter/extras/otf/InterDisplay-BoldItalic.otf fonts/Inter/extras/otf/InterDisplay-ExtraBold.otf fonts/Inter/extras/otf/InterDisplay-ExtraBoldItalic.otf fonts/Inter/extras/otf/InterDisplay-ExtraLight.otf fonts/Inter/extras/otf/InterDisplay-ExtraLightItalic.otf fonts/Inter/extras/otf/InterDisplay-Italic.otf fonts/Inter/extras/otf/InterDisplay-Light.otf fonts/Inter/extras/otf/InterDisplay-LightItalic.otf fonts/Inter/extras/otf/InterDisplay-Medium.otf fonts/Inter/extras/otf/InterDisplay-MediumItalic.otf fonts/Inter/extras/otf/InterDisplay-Regular.otf fonts/Inter/extras/otf/InterDisplay-SemiBold.otf fonts/Inter/extras/otf/InterDisplay-SemiBoldItalic.otf fonts/Inter/extras/otf/InterDisplay-Thin.otf fonts/Inter/extras/otf/InterDisplay-ThinItalic.otf fonts/Inter/extras/ttf/Inter-Black.ttf fonts/Inter/extras/ttf/Inter-BlackItalic.ttf fonts/Inter/extras/ttf/Inter-Bold.ttf fonts/Inter/extras/ttf/Inter-BoldItalic.ttf fonts/Inter/extras/ttf/Inter-ExtraBold.ttf fonts/Inter/extras/ttf/Inter-ExtraBoldItalic.ttf fonts/Inter/extras/ttf/Inter-ExtraLight.ttf fonts/Inter/extras/ttf/Inter-ExtraLightItalic.ttf fonts/Inter/extras/ttf/Inter-Italic.ttf fonts/Inter/extras/ttf/Inter-Light.ttf fonts/Inter/extras/ttf/Inter-LightItalic.ttf fonts/Inter/extras/ttf/Inter-Medium.ttf fonts/Inter/extras/ttf/Inter-MediumItalic.ttf fonts/Inter/extras/ttf/Inter-Regular.ttf fonts/Inter/extras/ttf/Inter-SemiBold.ttf fonts/Inter/extras/ttf/Inter-SemiBoldItalic.ttf fonts/Inter/extras/ttf/Inter-Thin.ttf fonts/Inter/extras/ttf/Inter-ThinItalic.ttf fonts/Inter/extras/ttf/InterDisplay-Black.ttf fonts/Inter/extras/ttf/InterDisplay-BlackItalic.ttf fonts/Inter/extras/ttf/InterDisplay-Bold.ttf fonts/Inter/extras/ttf/InterDisplay-BoldItalic.ttf fonts/Inter/extras/ttf/InterDisplay-ExtraBold.ttf fonts/Inter/extras/ttf/InterDisplay-ExtraBoldItalic.ttf fonts/Inter/extras/ttf/InterDisplay-ExtraLight.ttf fonts/Inter/extras/ttf/InterDisplay-ExtraLightItalic.ttf fonts/Inter/extras/ttf/InterDisplay-Italic.ttf fonts/Inter/extras/ttf/InterDisplay-Light.ttf fonts/Inter/extras/ttf/InterDisplay-LightItalic.ttf fonts/Inter/extras/ttf/InterDisplay-Medium.ttf fonts/Inter/extras/ttf/InterDisplay-MediumItalic.ttf fonts/Inter/extras/ttf/InterDisplay-Regular.ttf fonts/Inter/extras/ttf/InterDisplay-SemiBold.ttf fonts/Inter/extras/ttf/InterDisplay-SemiBoldItalic.ttf fonts/Inter/extras/ttf/InterDisplay-Thin.ttf fonts/Inter/extras/ttf/InterDisplay-ThinItalic.ttf fonts/Noto Sans/NotoSans-Black.ttf fonts/Noto Sans/NotoSans-BlackItalic.ttf fonts/Noto Sans/NotoSans-Bold.ttf fonts/Noto Sans/NotoSans-BoldItalic.ttf fonts/Noto Sans/NotoSans-ExtraBold.ttf fonts/Noto Sans/NotoSans-ExtraBoldItalic.ttf fonts/Noto Sans/NotoSans-ExtraLight.ttf fonts/Noto Sans/NotoSans-ExtraLightItalic.ttf fonts/Noto Sans/NotoSans-Italic-VariableFont_wdth,wght.ttf fonts/Noto Sans/NotoSans-Italic.ttf fonts/Noto Sans/NotoSans-Light.ttf fonts/Noto Sans/NotoSans-LightItalic.ttf fonts/Noto Sans/NotoSans-Medium.ttf fonts/Noto Sans/NotoSans-MediumItalic.ttf fonts/Noto Sans/NotoSans-Regular.ttf fonts/Noto Sans/NotoSans-SemiBold.ttf fonts/Noto Sans/NotoSans-SemiBoldItalic.ttf fonts/Noto Sans/NotoSans-Thin.ttf fonts/Noto Sans/NotoSans-ThinItalic.ttf fonts/Noto Sans/NotoSans-VariableFont_wdth,wght.ttf fonts/Noto Sans/NotoSans_Condensed-Black.ttf fonts/Noto Sans/NotoSans_Condensed-BlackItalic.ttf fonts/Noto Sans/NotoSans_Condensed-Bold.ttf fonts/Noto Sans/NotoSans_Condensed-BoldItalic.ttf fonts/Noto Sans/NotoSans_Condensed-ExtraBold.ttf fonts/Noto Sans/NotoSans_Condensed-ExtraBoldItalic.ttf fonts/Noto Sans/NotoSans_Condensed-ExtraLight.ttf fonts/Noto Sans/NotoSans_Condensed-ExtraLightItalic.ttf fonts/Noto Sans/NotoSans_Condensed-Italic.ttf fonts/Noto Sans/NotoSans_Condensed-Light.ttf fonts/Noto Sans/NotoSans_Condensed-LightItalic.ttf fonts/Noto Sans/NotoSans_Condensed-Medium.ttf fonts/Noto Sans/NotoSans_Condensed-MediumItalic.ttf fonts/Noto Sans/NotoSans_Condensed-Regular.ttf fonts/Noto Sans/NotoSans_Condensed-SemiBold.ttf fonts/Noto Sans/NotoSans_Condensed-SemiBoldItalic.ttf fonts/Noto Sans/NotoSans_Condensed-Thin.ttf fonts/Noto Sans/NotoSans_Condensed-ThinItalic.ttf fonts/Noto Sans/NotoSans_ExtraCondensed-Black.ttf fonts/Noto Sans/NotoSans_ExtraCondensed-BlackItalic.ttf fonts/Noto Sans/NotoSans_ExtraCondensed-Bold.ttf fonts/Noto Sans/NotoSans_ExtraCondensed-BoldItalic.ttf fonts/Noto Sans/NotoSans_ExtraCondensed-ExtraBold.ttf fonts/Noto Sans/NotoSans_ExtraCondensed-ExtraBoldItalic.ttf fonts/Noto Sans/NotoSans_ExtraCondensed-ExtraLight.ttf fonts/Noto Sans/NotoSans_ExtraCondensed-ExtraLightItalic.ttf fonts/Noto Sans/NotoSans_ExtraCondensed-Italic.ttf fonts/Noto Sans/NotoSans_ExtraCondensed-Light.ttf fonts/Noto Sans/NotoSans_ExtraCondensed-LightItalic.ttf fonts/Noto Sans/NotoSans_ExtraCondensed-Medium.ttf fonts/Noto Sans/NotoSans_ExtraCondensed-MediumItalic.ttf fonts/Noto Sans/NotoSans_ExtraCondensed-Regular.ttf fonts/Noto Sans/NotoSans_ExtraCondensed-SemiBold.ttf fonts/Noto Sans/NotoSans_ExtraCondensed-SemiBoldItalic.ttf fonts/Noto Sans/NotoSans_ExtraCondensed-Thin.ttf fonts/Noto Sans/NotoSans_ExtraCondensed-ThinItalic.ttf fonts/Noto Sans/NotoSans_SemiCondensed-Black.ttf fonts/Noto Sans/NotoSans_SemiCondensed-BlackItalic.ttf fonts/Noto Sans/NotoSans_SemiCondensed-Bold.ttf fonts/Noto Sans/NotoSans_SemiCondensed-BoldItalic.ttf fonts/Noto Sans/NotoSans_SemiCondensed-ExtraBold.ttf fonts/Noto Sans/NotoSans_SemiCondensed-ExtraBoldItalic.ttf fonts/Noto Sans/NotoSans_SemiCondensed-ExtraLight.ttf fonts/Noto Sans/NotoSans_SemiCondensed-ExtraLightItalic.ttf fonts/Noto Sans/NotoSans_SemiCondensed-Italic.ttf fonts/Noto Sans/NotoSans_SemiCondensed-Light.ttf fonts/Noto Sans/NotoSans_SemiCondensed-LightItalic.ttf fonts/Noto Sans/NotoSans_SemiCondensed-Medium.ttf fonts/Noto Sans/NotoSans_SemiCondensed-MediumItalic.ttf fonts/Noto Sans/NotoSans_SemiCondensed-Regular.ttf fonts/Noto Sans/NotoSans_SemiCondensed-SemiBold.ttf fonts/Noto Sans/NotoSans_SemiCondensed-SemiBoldItalic.ttf fonts/Noto Sans/NotoSans_SemiCondensed-Thin.ttf fonts/Noto Sans/NotoSans_SemiCondensed-ThinItalic.ttf '
KC3_IMG_SOURCES='img/earth.jpg img/earth.png img/flaps.256.png img/flaps.png img/fly-dead.png img/fly-noto.png img/iris-kc3-004.jpeg img/kc3.1.xcf img/kc3.1080.jpg img/kc3.1080.png img/kc3.128.jpg img/kc3.128.png img/kc3.16.jpg img/kc3.16.png img/kc3.256.jpg img/kc3.256.png img/kc3.32.jpg img/kc3.32.png img/kc3.512.jpg img/kc3.512.png img/kc3.64.jpg img/kc3.64.png img/kc3.640.jpg img/kc3.640.png img/kc3.720.jpg img/kc3.720.png img/kc3.96.jpg img/kc3.96.png img/kc3.iconset/icon_128x128.png img/kc3.iconset/icon_16x16.png img/kc3.iconset/icon_256x256.png img/kc3.iconset/icon_32x32.png img/kc3.iconset/icon_512x512.png img/kc3.iconset/icon_64x64.png img/kc3.xcf img/mandelbrot_f128_limit.1.png img/mandelbrot_f128_limit.2.png img/mandelbrot_f128_limit.3.png img/mandelbrot_f128_limit.png img/matrix_shade.png img/thodg_No_Prompt_073261d5-2c81-4b6e-9572-e0b840c55f1f.jpeg img/toast.128.png img/toast.png '
KC3_LIB_SOURCES='lib/kc3/0.1/alist.kc3 lib/kc3/0.1/array.kc3 lib/kc3/0.1/bool.facts lib/kc3/0.1/buf.kc3 lib/kc3/0.1/buf_rw.kc3 lib/kc3/0.1/compare.kc3 lib/kc3/0.1/complex.facts lib/kc3/0.1/cow.kc3 lib/kc3/0.1/crypt.kc3 lib/kc3/0.1/ekc3.kc3 lib/kc3/0.1/event.kc3 lib/kc3/0.1/f128.facts lib/kc3/0.1/f32.facts lib/kc3/0.1/f64.facts lib/kc3/0.1/fact.kc3 lib/kc3/0.1/fact_w.kc3 lib/kc3/0.1/facts.kc3 lib/kc3/0.1/facts/cursor.kc3 lib/kc3/0.1/fd.kc3 lib/kc3/0.1/file.kc3 lib/kc3/0.1/file/stat.kc3 lib/kc3/0.1/gl/dvec2.kc3 lib/kc3/0.1/gl/dvec3.kc3 lib/kc3/0.1/gl/object.kc3 lib/kc3/0.1/gl/sphere.kc3 lib/kc3/0.1/gl/triangle.kc3 lib/kc3/0.1/gl/vec2.kc3 lib/kc3/0.1/gl/vec3.kc3 lib/kc3/0.1/gl/vertex.kc3 lib/kc3/0.1/html.kc3 lib/kc3/0.1/http.kc3 lib/kc3/0.1/http/request.kc3 lib/kc3/0.1/http/response.kc3 lib/kc3/0.1/httpd.kc3 lib/kc3/0.1/httpd/route.kc3 lib/kc3/0.1/integer.facts lib/kc3/0.1/json.kc3 lib/kc3/0.1/kc3.facts lib/kc3/0.1/kc3/operator.kc3 lib/kc3/0.1/list.kc3 lib/kc3/0.1/map.facts lib/kc3/0.1/markdown.kc3 lib/kc3/0.1/ptr.facts lib/kc3/0.1/ptr_free.facts lib/kc3/0.1/ratio.facts lib/kc3/0.1/s16.facts lib/kc3/0.1/s32.facts lib/kc3/0.1/s64.facts lib/kc3/0.1/s8.facts lib/kc3/0.1/set.kc3 lib/kc3/0.1/set/fact.kc3 lib/kc3/0.1/set/item/fact.kc3 lib/kc3/0.1/set/item/tag.kc3 lib/kc3/0.1/set/tag.kc3 lib/kc3/0.1/sh.kc3 lib/kc3/0.1/socket.kc3 lib/kc3/0.1/socket/addr.kc3 lib/kc3/0.1/socket/buf.kc3 lib/kc3/0.1/str.facts lib/kc3/0.1/struct.kc3 lib/kc3/0.1/sw.facts lib/kc3/0.1/sym.facts lib/kc3/0.1/tag.kc3 lib/kc3/0.1/time.kc3 lib/kc3/0.1/u16.facts lib/kc3/0.1/u32.facts lib/kc3/0.1/u64.facts lib/kc3/0.1/u8.facts lib/kc3/0.1/url.kc3 lib/kc3/0.1/uw.facts lib/kc3/0.1/var.facts lib/kc3/0.1/void.facts '