diff --git a/sources.mk b/sources.mk
index 2193c96..fea7e1f 100644
--- a/sources.mk
+++ b/sources.mk
@@ -5,10 +5,10 @@ C3_CONFIGURES = \
c3s/update_sources \
ic3/configure \
ic3/update_sources \
- libc3/update_sources \
libc3/configure \
- libtommath/configure \
+ libc3/update_sources \
libtommath/update_sources \
+ libtommath/configure \
test/configure \
test/update_sources \
ucd2c/configure \
@@ -28,305 +28,306 @@ C3_C_SOURCES = \
c3s/buf_readline.c \
c3s/c3s.c \
c3s/buf_readline.h \
- ic3/buf_linenoise.c \
ic3/ic3.c \
+ ic3/buf_linenoise.c \
ic3/buf_linenoise.h \
ic3/linenoise.c \
- libc3/buf_parse_u64.h \
- libc3/buf_parse_uw.c \
- libc3/buf_parse_uw.h \
+ libc3/abs.c \
+ libc3/abs.h \
+ libc3/buf.c \
+ libc3/buf.h \
+ libc3/buf_inspect_s8_decimal.c \
+ libc3/buf_inspect_s8_decimal.h \
+ libc3/buf_inspect_s8_hexadecimal.c \
+ libc3/buf_inspect_s8_hexadecimal.h \
+ libc3/buf_inspect_s16.c \
+ libc3/buf_inspect_s16.h \
+ libc3/buf_inspect_s16_binary.c \
+ libc3/buf_parse_s8.c \
+ libc3/call.c \
libc3/arg.c \
libc3/arg.h \
- libc3/set__fact.c \
- libc3/set__fact.h \
- libc3/set__tag.c \
- libc3/set__tag.h \
- libc3/set_cursor__fact.c \
- libc3/set_cursor__fact.h \
- libc3/set_cursor__tag.c \
- libc3/set_cursor__tag.h \
- libc3/set_item__fact.c \
- libc3/set_item__fact.h \
- libc3/set_item__tag.c \
- libc3/set_item__tag.h \
- libc3/facts.c \
- libc3/binding.c \
- libc3/binding.h \
- libc3/facts_with_cursor.c \
libc3/array.c \
libc3/array.h \
- libc3/buf.c \
- libc3/buf_parse.c \
- libc3/integer.h \
- libc3/types.h \
- libc3/type.c \
- libc3/buf_inspect_s8.c \
- libc3/buf_inspect_s8.h \
- libc3/buf_inspect_s16.c \
- libc3/buf_inspect_s16.h \
+ libc3/binding.c \
+ libc3/c3.c \
+ libc3/buf_inspect_s16_binary.h \
+ libc3/buf_inspect_s16_octal.c \
+ libc3/buf_inspect_s16_octal.h \
+ libc3/buf_inspect_s16_decimal.c \
+ libc3/binding.h \
+ libc3/buf_inspect_s16_decimal.h \
+ libc3/buf_inspect_s16_hexadecimal.c \
+ libc3/buf_inspect_s16_hexadecimal.h \
libc3/buf_inspect_s32.c \
libc3/buf_inspect_s32.h \
- libc3/buf_file.c \
- libc3/buf_file.h \
+ libc3/buf_inspect_s32_binary.c \
+ libc3/buf_inspect_s32_binary.h \
libc3/bool.c \
- libc3/io.h \
- libc3/skiplist__fact.c \
- libc3/skiplist__fact.h \
- libc3/skiplist_node__fact.c \
- libc3/skiplist_node__fact.h \
- libc3/io.c \
- libc3/abs.h \
- libc3/env.c \
- libc3/ceiling.c \
- libc3/buf_parse_c.c \
- libc3/buf_parse_c.h \
- libc3/buf_save.c \
- libc3/buf_parse.h \
- libc3/compare.c \
- libc3/buf_inspect_u64_hexadecimal.h \
- libc3/buf_inspect_uw.h \
- libc3/buf_parse_s8.c \
- libc3/buf_parse_s8.h \
- libc3/buf_parse_s16.c \
- libc3/buf_parse_s16.h \
- libc3/buf_parse_s32.c \
- libc3/buf_parse_s32.h \
- libc3/buf_parse_s64.c \
- libc3/call.h \
libc3/bool.h \
- libc3/buf_save.h \
- libc3/fact.h \
- libc3/error.c \
- libc3/list.h \
- libc3/c3.c \
- libc3/c3.h \
- libc3/error.h \
- libc3/env.h \
- libc3/character.h \
- libc3/compare.h \
- libc3/operator.h \
- libc3/operator.c \
- libc3/tag.h \
- libc3/sign.h \
- libc3/buf.h \
+ libc3/buf_file.c \
+ libc3/buf_file.h \
+ libc3/buf_inspect_s32_octal.c \
+ libc3/buf_inspect_s32_octal.h \
+ libc3/buf_inspect_s32_decimal.c \
+ libc3/buf_inspect_s32_decimal.h \
+ libc3/buf_inspect_s32_hexadecimal.c \
+ libc3/buf_inspect_s32_hexadecimal.h \
libc3/buf_inspect_s64.c \
libc3/buf_inspect_s64.h \
+ libc3/buf_inspect_s64_binary.c \
+ libc3/buf_inspect_s64_binary.h \
+ libc3/buf_inspect_s64_octal.c \
+ libc3/buf_inspect_s64_octal.h \
+ libc3/buf_parse.h \
+ libc3/buf_parse_c.c \
+ libc3/buf_save.c \
+ libc3/buf_inspect_s64_decimal.c \
+ libc3/facts_spec_cursor.c \
+ libc3/buf_inspect_s64_decimal.h \
+ libc3/buf_inspect_s64_hexadecimal.c \
+ libc3/buf_inspect_s64_hexadecimal.h \
libc3/buf_inspect_sw.c \
libc3/buf_inspect_sw.h \
+ libc3/buf_inspect_sw_binary.c \
+ libc3/buf_inspect_sw_binary.h \
+ libc3/buf_inspect_sw_octal.c \
+ libc3/buf_inspect_sw_octal.h \
+ libc3/buf_inspect_sw_decimal.c \
+ libc3/buf_inspect_sw_decimal.h \
+ libc3/buf_parse_c.h \
+ libc3/buf_save.h \
+ libc3/c3.h \
+ libc3/c_types.h \
+ libc3/call.h \
+ libc3/buf_inspect_sw_hexadecimal.c \
+ libc3/buf_inspect_sw_hexadecimal.h \
libc3/buf_inspect_u8.c \
libc3/buf_inspect_u8.h \
+ libc3/buf_inspect_u8_binary.c \
+ libc3/buf_inspect_u8_binary.h \
+ libc3/buf_inspect_u8_octal.c \
+ libc3/buf_inspect_u8_octal.h \
+ libc3/buf_inspect_u8_decimal.c \
+ libc3/buf_inspect_u8_decimal.h \
+ libc3/buf_inspect_u8_hexadecimal.c \
+ libc3/buf_inspect_u8_hexadecimal.h \
+ libc3/ceiling.c \
+ libc3/ceiling.h \
+ libc3/cfn.c \
+ libc3/cfn.h \
+ libc3/character.c \
+ libc3/character.h \
libc3/buf_inspect_u16.c \
+ libc3/buf_inspect_u16.h \
+ libc3/buf_inspect_u16_binary.c \
+ libc3/buf_inspect_u16_binary.h \
+ libc3/buf_inspect_u16_octal.c \
+ libc3/buf_inspect_u16_octal.h \
+ libc3/buf_inspect_u16_decimal.c \
+ libc3/buf_inspect_u16_decimal.h \
+ libc3/buf_inspect_u16_hexadecimal.c \
+ libc3/buf_inspect_u16_hexadecimal.h \
+ libc3/buf_inspect_u32.c \
+ libc3/buf_inspect_u32.h \
+ libc3/compare.c \
+ libc3/buf_inspect.c \
+ libc3/compare.h \
+ libc3/buf_parse.c \
+ libc3/env.c \
+ libc3/env.h \
+ libc3/facts.c \
+ libc3/facts.h \
+ libc3/hash.c \
libc3/ident.c \
+ libc3/operator.c \
+ libc3/operator.h \
+ libc3/sym.c \
+ libc3/buf_inspect_s8.c \
+ libc3/buf_inspect_s8.h \
+ libc3/buf_inspect_s8_binary.c \
+ libc3/buf_inspect_s8_binary.h \
+ libc3/buf_inspect_s8_octal.c \
+ libc3/buf_inspect_s8_octal.h \
+ libc3/error.c \
+ libc3/error.h \
libc3/error_handler.c \
- libc3/frame.c \
- libc3/set_cursor.c.in \
- libc3/set_cursor.h.in \
- libc3/set_item.c.in \
- libc3/set_item.h.in \
- libc3/tag.c \
libc3/error_handler.h \
libc3/eval.c \
libc3/eval.h \
+ libc3/buf_inspect_u32_binary.c \
+ libc3/buf_inspect_u32_binary.h \
+ libc3/buf_inspect_u32_octal.c \
+ libc3/buf_inspect_u32_octal.h \
+ libc3/buf_inspect_u32_decimal.c \
+ libc3/buf_inspect_u32_decimal.h \
+ libc3/buf_inspect_u32_hexadecimal.c \
+ libc3/buf_inspect_u32_hexadecimal.h \
+ libc3/buf_inspect_u64.c \
+ libc3/buf_inspect_u64.h \
+ libc3/buf_inspect_u64_binary.c \
+ libc3/set__fact.c \
libc3/fact.c \
- libc3/facts.h \
+ libc3/fact.h \
libc3/facts_cursor.c \
- libc3/fn.h \
- libc3/ceiling.h \
libc3/buf_inspect_u64_binary.h \
libc3/buf_inspect_u64_octal.c \
libc3/buf_inspect_u64_octal.h \
libc3/buf_inspect_u64_decimal.c \
libc3/buf_inspect_u64_decimal.h \
libc3/buf_inspect_u64_hexadecimal.c \
- libc3/sym.c \
+ libc3/buf_inspect_u64_hexadecimal.h \
+ libc3/buf_inspect_uw.c \
+ libc3/buf_inspect_uw.h \
+ libc3/buf_inspect_uw_binary.c \
+ libc3/buf_inspect_uw_binary.h \
+ libc3/buf_inspect_uw_octal.c \
+ libc3/buf_inspect_uw_octal.h \
+ libc3/set__fact.h \
libc3/facts_cursor.h \
libc3/facts_spec.c \
- libc3/frame.h \
- libc3/sign.c \
libc3/facts_spec.h \
- libc3/facts_spec_cursor.c \
- libc3/hash.c \
libc3/facts_spec_cursor.h \
- libc3/buf_inspect_s16_binary.h \
- libc3/buf_inspect_s16_decimal.c \
- libc3/buf_inspect_s16_decimal.h \
- libc3/buf_inspect_s16_hexadecimal.c \
- libc3/buf_inspect_s16_hexadecimal.h \
- libc3/facts_with.c \
- libc3/facts_with.h \
- libc3/hash.h \
- libc3/cfn.h \
- libc3/buf_parse_u.c.in \
- libc3/abs.c \
- libc3/facts_with_cursor.h \
- libc3/ident.h \
- libc3/str.c \
- libc3/c_types.h \
+ libc3/buf_inspect_uw_decimal.c \
+ libc3/buf_inspect_uw_decimal.h \
+ libc3/buf_inspect_uw_hexadecimal.c \
+ libc3/buf_inspect_uw_hexadecimal.h \
+ libc3/buf_parse_s8.h \
+ libc3/buf_parse_s16.c \
+ libc3/buf_parse_s16.h \
+ libc3/buf_parse_s32.c \
+ libc3/buf_parse_s32.h \
+ libc3/buf_parse_s64.c \
libc3/buf_parse_s64.h \
libc3/buf_parse_sw.c \
libc3/buf_parse_sw.h \
libc3/buf_parse_u8.c \
+ libc3/set__tag.c \
+ libc3/facts_with.c \
+ libc3/facts_with.h \
+ libc3/facts_with_cursor.c \
libc3/buf_parse_u8.h \
- libc3/buf_parse_s.c.in \
libc3/buf_parse_u16.c \
libc3/buf_parse_u16.h \
libc3/buf_parse_u32.c \
libc3/buf_parse_u32.h \
libc3/buf_parse_u64.c \
- libc3/buf_inspect.c \
+ libc3/buf_parse_u64.h \
+ libc3/buf_parse_uw.c \
+ libc3/buf_parse_uw.h \
+ libc3/set__tag.h \
+ libc3/set_cursor__fact.c \
+ libc3/set_cursor__fact.h \
+ libc3/set_cursor__tag.c \
+ libc3/set_cursor__tag.h \
+ libc3/set_item__fact.c \
+ libc3/set_item__fact.h \
+ libc3/set_item__tag.c \
+ libc3/facts_with_cursor.h \
+ libc3/float.h \
+ libc3/fn.c \
+ libc3/fn.h \
+ libc3/frame.c \
+ libc3/frame.h \
+ libc3/set_item__tag.h \
+ libc3/skiplist__fact.c \
+ libc3/skiplist__fact.h \
+ libc3/skiplist_node__fact.c \
+ libc3/skiplist_node__fact.h \
+ libc3/types.h \
+ libc3/hash.h \
+ libc3/ident.h \
libc3/integer.c \
+ libc3/integer.h \
+ libc3/io.c \
+ libc3/io.h \
libc3/list.c \
+ libc3/list.h \
libc3/log.c \
libc3/log.h \
- libc3/sym.h \
+ libc3/buf_inspect_s.h.in \
libc3/module.c \
+ libc3/str.c \
+ libc3/module.h \
+ libc3/buf_parse_u.c.in \
libc3/quote.c \
libc3/quote.h \
- libc3/character.c \
- libc3/cfn.c \
- libc3/fn.c \
- libc3/module.h \
libc3/set.c.in \
libc3/set.h.in \
+ libc3/buf_inspect_s_base.h.in \
libc3/sha1.h \
+ libc3/set_cursor.c.in \
+ libc3/set_cursor.h.in \
+ libc3/buf_inspect.h \
+ libc3/set_item.c.in \
+ libc3/set_item.h.in \
+ libc3/sign.c \
+ libc3/sign.h \
libc3/skiplist.c.in \
libc3/skiplist.h.in \
+ libc3/type.h \
libc3/skiplist_node.c.in \
libc3/skiplist_node.h.in \
libc3/str.h \
+ libc3/ucd.c \
+ libc3/sym.h \
libc3/tuple.c \
libc3/tuple.h \
- libc3/ucd.c \
+ libc3/type.c \
libc3/ucd.h \
- libc3/type.h \
+ libc3/buf_parse_s.c.in \
libc3/buf_parse_s.h.in \
+ libc3/buf_inspect_s.c.in \
libc3/buf_parse_u.h.in \
- libc3/float.h \
libc3/buf_inspect_s_base.c.in \
- libc3/buf_inspect_s.c.in \
- libc3/buf_inspect_u16.h \
- libc3/buf_inspect_s.h.in \
- libc3/buf_inspect_u32.c \
- libc3/buf_inspect_u32.h \
- libc3/buf_inspect_u64.c \
- libc3/buf_inspect_u64.h \
libc3/buf_inspect_u.c.in \
- libc3/buf_inspect_u64_binary.c \
- libc3/buf_inspect_uw.c \
- libc3/buf_inspect_u_base.c.in \
libc3/buf_inspect_u.h.in \
+ libc3/buf_inspect_u_base.c.in \
libc3/buf_inspect_u_base.h.in \
- libc3/call.c \
- libc3/buf_inspect_s16_binary.c \
- libc3/buf_inspect_s16_octal.c \
- libc3/buf_inspect_s16_octal.h \
- libc3/buf_inspect_s32_binary.c \
- libc3/buf_inspect_s32_binary.h \
- libc3/buf_inspect_s32_decimal.c \
- libc3/buf_inspect_s32_decimal.h \
- libc3/buf_inspect_s32_hexadecimal.c \
- libc3/buf_inspect_s32_hexadecimal.h \
- libc3/buf_inspect_s32_octal.c \
- libc3/buf_inspect_s32_octal.h \
- libc3/buf_inspect_s64_binary.c \
- libc3/buf_inspect_s64_binary.h \
- libc3/buf_inspect_s64_decimal.c \
- libc3/buf_inspect_s64_decimal.h \
- libc3/buf_inspect_s64_hexadecimal.c \
- libc3/buf_inspect_s64_hexadecimal.h \
- libc3/buf_inspect_s64_octal.c \
- libc3/buf_inspect_s64_octal.h \
- libc3/buf_inspect_s8_binary.c \
- libc3/buf_inspect_s8_binary.h \
- libc3/buf_inspect_s8_decimal.c \
- libc3/buf_inspect_s8_decimal.h \
- libc3/buf_inspect_s8_hexadecimal.c \
- libc3/buf_inspect_s8_hexadecimal.h \
- libc3/buf_inspect_s8_octal.c \
- libc3/buf_inspect_s8_octal.h \
- libc3/buf_inspect_sw_binary.c \
- libc3/buf_inspect_sw_binary.h \
- libc3/buf_inspect_sw_decimal.c \
- libc3/buf_inspect_sw_decimal.h \
- libc3/buf_inspect_sw_hexadecimal.c \
- libc3/buf_inspect_sw_hexadecimal.h \
- libc3/buf_inspect_sw_octal.c \
- libc3/buf_inspect_sw_octal.h \
- libc3/buf_inspect_u16_binary.c \
- libc3/buf_inspect_u16_binary.h \
- libc3/buf_inspect_u16_decimal.c \
- libc3/buf_inspect_u16_decimal.h \
- libc3/buf_inspect.h \
- libc3/buf_inspect_u16_hexadecimal.c \
- libc3/buf_inspect_u16_hexadecimal.h \
- libc3/buf_inspect_u16_octal.c \
- libc3/buf_inspect_u16_octal.h \
- libc3/buf_inspect_u32_binary.c \
- libc3/buf_inspect_u32_binary.h \
- libc3/buf_inspect_u32_decimal.c \
- libc3/buf_inspect_u32_decimal.h \
- libc3/buf_inspect_u32_hexadecimal.c \
- libc3/buf_inspect_u32_hexadecimal.h \
- libc3/buf_inspect_u32_octal.c \
- libc3/buf_inspect_u32_octal.h \
- libc3/buf_inspect_uw_binary.c \
- libc3/buf_inspect_uw_binary.h \
- libc3/buf_inspect_uw_decimal.c \
- libc3/buf_inspect_uw_decimal.h \
- libc3/buf_inspect_uw_hexadecimal.c \
- libc3/buf_inspect_uw_hexadecimal.h \
- libc3/buf_inspect_uw_octal.c \
- libc3/buf_inspect_uw_octal.h \
- libc3/buf_inspect_s_base.h.in \
- libc3/buf_inspect_u8_binary.c \
- libc3/buf_inspect_u8_binary.h \
- libc3/buf_inspect_u8_decimal.c \
- libc3/buf_inspect_u8_decimal.h \
- libc3/buf_inspect_u8_hexadecimal.c \
- libc3/buf_inspect_u8_hexadecimal.h \
- libc3/buf_inspect_u8_octal.c \
- libc3/buf_inspect_u8_octal.h \
- test/facts_cursor_test.c \
- test/facts_test.c \
- test/facts_with_test.c \
- test/set__fact_test.c \
- test/test.c \
+ libc3/tag.h \
+ libc3/tag.c \
+ test/buf_inspect_test.c \
+ test/bool_test.c \
test/buf_parse_test.c \
- test/set__tag_test.c \
- test/tag_test.c \
- test/sym_test.c \
- test/tag_test.h \
- test/tuple_test.c \
- test/types_test.c \
- test/call_test.c \
- test/skiplist__fact_test.c \
- test/fact_test.c \
- test/compare_test.h \
- test/fact_test.h \
- test/str_test.c \
- test/list_test.c \
- test/hash_test.c \
- test/compare_test.c \
- test/ident_test.c \
+ test/facts_test.c \
+ test/buf_file_test.c \
test/libc3_test.c \
- test/buf_inspect_test.c \
+ test/list_test.c \
+ test/test.c \
test/test.h \
- test/bool_test.c \
- test/cfn_test.c \
- test/buf_parse_test_s8.c \
+ test/buf_parse_test_u8.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_u8.c \
test/buf_parse_test_u32.c \
- test/buf_parse_test_u64.c \
- test/buf_parse_test.h \
test/buf_test.c \
- test/env_test.c \
- test/buf_parse_test_su.h \
+ test/buf_parse_test_u64.c \
+ test/call_test.c \
+ test/facts_cursor_test.c \
+ test/cfn_test.c \
test/character_test.c \
- test/buf_parse_test_s16.c \
- test/buf_file_test.c \
+ test/compare_test.c \
+ test/compare_test.h \
+ test/env_test.c \
+ test/fact_test.c \
+ test/fact_test.h \
+ test/facts_with_test.c \
+ test/hash_test.c \
+ test/ident_test.c \
+ test/set__fact_test.c \
+ test/set__tag_test.c \
+ test/skiplist__fact_test.c \
+ test/str_test.c \
+ test/sym_test.c \
+ test/tag_test.c \
+ test/tag_test.h \
+ test/array_test.c \
+ test/tuple_test.c \
+ test/types_test.c \
ucd2c/ucd.h \
ucd2c/ucd2c.c \
diff --git a/sources.sh b/sources.sh
index 11db827..b2e1c06 100644
--- a/sources.sh
+++ b/sources.sh
@@ -1,4 +1,4 @@
# sources.sh generated by update_sources
-C3_CONFIGURES='c3c/configure c3s/configure c3s/update_sources ic3/configure ic3/update_sources libc3/update_sources libc3/configure libtommath/configure libtommath/update_sources test/configure test/update_sources ucd2c/configure '
+C3_CONFIGURES='c3c/configure c3s/configure c3s/update_sources ic3/configure ic3/update_sources libc3/configure libc3/update_sources libtommath/update_sources libtommath/configure test/configure test/update_sources ucd2c/configure '
C3_MAKEFILES='c3c/Makefile c3s/Makefile ic3/Makefile libc3/Makefile libc3/gen.mk libtommath/Makefile test/Makefile ucd2c/Makefile '
-C3_C_SOURCES='c3c/c3c.c c3s/buf_readline.c c3s/c3s.c c3s/buf_readline.h ic3/buf_linenoise.c ic3/ic3.c ic3/buf_linenoise.h ic3/linenoise.c libc3/buf_parse_u64.h libc3/buf_parse_uw.c libc3/buf_parse_uw.h libc3/arg.c libc3/arg.h libc3/set__fact.c libc3/set__fact.h libc3/set__tag.c libc3/set__tag.h libc3/set_cursor__fact.c libc3/set_cursor__fact.h libc3/set_cursor__tag.c libc3/set_cursor__tag.h libc3/set_item__fact.c libc3/set_item__fact.h libc3/set_item__tag.c libc3/set_item__tag.h libc3/facts.c libc3/binding.c libc3/binding.h libc3/facts_with_cursor.c libc3/array.c libc3/array.h libc3/buf.c libc3/buf_parse.c libc3/integer.h libc3/types.h libc3/type.c libc3/buf_inspect_s8.c libc3/buf_inspect_s8.h libc3/buf_inspect_s16.c libc3/buf_inspect_s16.h libc3/buf_inspect_s32.c libc3/buf_inspect_s32.h libc3/buf_file.c libc3/buf_file.h libc3/bool.c libc3/io.h libc3/skiplist__fact.c libc3/skiplist__fact.h libc3/skiplist_node__fact.c libc3/skiplist_node__fact.h libc3/io.c libc3/abs.h libc3/env.c libc3/ceiling.c libc3/buf_parse_c.c libc3/buf_parse_c.h libc3/buf_save.c libc3/buf_parse.h libc3/compare.c libc3/buf_inspect_u64_hexadecimal.h libc3/buf_inspect_uw.h libc3/buf_parse_s8.c libc3/buf_parse_s8.h libc3/buf_parse_s16.c libc3/buf_parse_s16.h libc3/buf_parse_s32.c libc3/buf_parse_s32.h libc3/buf_parse_s64.c libc3/call.h libc3/bool.h libc3/buf_save.h libc3/fact.h libc3/error.c libc3/list.h libc3/c3.c libc3/c3.h libc3/error.h libc3/env.h libc3/character.h libc3/compare.h libc3/operator.h libc3/operator.c libc3/tag.h libc3/sign.h libc3/buf.h libc3/buf_inspect_s64.c libc3/buf_inspect_s64.h libc3/buf_inspect_sw.c libc3/buf_inspect_sw.h libc3/buf_inspect_u8.c libc3/buf_inspect_u8.h libc3/buf_inspect_u16.c libc3/ident.c libc3/error_handler.c libc3/frame.c libc3/set_cursor.c.in libc3/set_cursor.h.in libc3/set_item.c.in libc3/set_item.h.in libc3/tag.c libc3/error_handler.h libc3/eval.c libc3/eval.h libc3/fact.c libc3/facts.h libc3/facts_cursor.c libc3/fn.h libc3/ceiling.h libc3/buf_inspect_u64_binary.h libc3/buf_inspect_u64_octal.c libc3/buf_inspect_u64_octal.h libc3/buf_inspect_u64_decimal.c libc3/buf_inspect_u64_decimal.h libc3/buf_inspect_u64_hexadecimal.c libc3/sym.c libc3/facts_cursor.h libc3/facts_spec.c libc3/frame.h libc3/sign.c libc3/facts_spec.h libc3/facts_spec_cursor.c libc3/hash.c libc3/facts_spec_cursor.h libc3/buf_inspect_s16_binary.h libc3/buf_inspect_s16_decimal.c libc3/buf_inspect_s16_decimal.h libc3/buf_inspect_s16_hexadecimal.c libc3/buf_inspect_s16_hexadecimal.h libc3/facts_with.c libc3/facts_with.h libc3/hash.h libc3/cfn.h libc3/buf_parse_u.c.in libc3/abs.c libc3/facts_with_cursor.h libc3/ident.h libc3/str.c libc3/c_types.h libc3/buf_parse_s64.h libc3/buf_parse_sw.c libc3/buf_parse_sw.h libc3/buf_parse_u8.c libc3/buf_parse_u8.h libc3/buf_parse_s.c.in libc3/buf_parse_u16.c libc3/buf_parse_u16.h libc3/buf_parse_u32.c libc3/buf_parse_u32.h libc3/buf_parse_u64.c libc3/buf_inspect.c libc3/integer.c libc3/list.c libc3/log.c libc3/log.h libc3/sym.h libc3/module.c libc3/quote.c libc3/quote.h libc3/character.c libc3/cfn.c libc3/fn.c libc3/module.h libc3/set.c.in libc3/set.h.in libc3/sha1.h libc3/skiplist.c.in libc3/skiplist.h.in libc3/skiplist_node.c.in libc3/skiplist_node.h.in libc3/str.h libc3/tuple.c libc3/tuple.h libc3/ucd.c libc3/ucd.h libc3/type.h libc3/buf_parse_s.h.in libc3/buf_parse_u.h.in libc3/float.h libc3/buf_inspect_s_base.c.in libc3/buf_inspect_s.c.in libc3/buf_inspect_u16.h libc3/buf_inspect_s.h.in libc3/buf_inspect_u32.c libc3/buf_inspect_u32.h libc3/buf_inspect_u64.c libc3/buf_inspect_u64.h libc3/buf_inspect_u.c.in libc3/buf_inspect_u64_binary.c libc3/buf_inspect_uw.c libc3/buf_inspect_u_base.c.in libc3/buf_inspect_u.h.in libc3/buf_inspect_u_base.h.in libc3/call.c libc3/buf_inspect_s16_binary.c libc3/buf_inspect_s16_octal.c libc3/buf_inspect_s16_octal.h libc3/buf_inspect_s32_binary.c libc3/buf_inspect_s32_binary.h libc3/buf_inspect_s32_decimal.c libc3/buf_inspect_s32_decimal.h libc3/buf_inspect_s32_hexadecimal.c libc3/buf_inspect_s32_hexadecimal.h libc3/buf_inspect_s32_octal.c libc3/buf_inspect_s32_octal.h libc3/buf_inspect_s64_binary.c libc3/buf_inspect_s64_binary.h libc3/buf_inspect_s64_decimal.c libc3/buf_inspect_s64_decimal.h libc3/buf_inspect_s64_hexadecimal.c libc3/buf_inspect_s64_hexadecimal.h libc3/buf_inspect_s64_octal.c libc3/buf_inspect_s64_octal.h libc3/buf_inspect_s8_binary.c libc3/buf_inspect_s8_binary.h libc3/buf_inspect_s8_decimal.c libc3/buf_inspect_s8_decimal.h libc3/buf_inspect_s8_hexadecimal.c libc3/buf_inspect_s8_hexadecimal.h libc3/buf_inspect_s8_octal.c libc3/buf_inspect_s8_octal.h libc3/buf_inspect_sw_binary.c libc3/buf_inspect_sw_binary.h libc3/buf_inspect_sw_decimal.c libc3/buf_inspect_sw_decimal.h libc3/buf_inspect_sw_hexadecimal.c libc3/buf_inspect_sw_hexadecimal.h libc3/buf_inspect_sw_octal.c libc3/buf_inspect_sw_octal.h libc3/buf_inspect_u16_binary.c libc3/buf_inspect_u16_binary.h libc3/buf_inspect_u16_decimal.c libc3/buf_inspect_u16_decimal.h libc3/buf_inspect.h libc3/buf_inspect_u16_hexadecimal.c libc3/buf_inspect_u16_hexadecimal.h libc3/buf_inspect_u16_octal.c libc3/buf_inspect_u16_octal.h libc3/buf_inspect_u32_binary.c libc3/buf_inspect_u32_binary.h libc3/buf_inspect_u32_decimal.c libc3/buf_inspect_u32_decimal.h libc3/buf_inspect_u32_hexadecimal.c libc3/buf_inspect_u32_hexadecimal.h libc3/buf_inspect_u32_octal.c libc3/buf_inspect_u32_octal.h libc3/buf_inspect_uw_binary.c libc3/buf_inspect_uw_binary.h libc3/buf_inspect_uw_decimal.c libc3/buf_inspect_uw_decimal.h libc3/buf_inspect_uw_hexadecimal.c libc3/buf_inspect_uw_hexadecimal.h libc3/buf_inspect_uw_octal.c libc3/buf_inspect_uw_octal.h libc3/buf_inspect_s_base.h.in libc3/buf_inspect_u8_binary.c libc3/buf_inspect_u8_binary.h libc3/buf_inspect_u8_decimal.c libc3/buf_inspect_u8_decimal.h libc3/buf_inspect_u8_hexadecimal.c libc3/buf_inspect_u8_hexadecimal.h libc3/buf_inspect_u8_octal.c libc3/buf_inspect_u8_octal.h test/facts_cursor_test.c test/facts_test.c test/facts_with_test.c test/set__fact_test.c test/test.c test/buf_parse_test.c test/set__tag_test.c test/tag_test.c test/sym_test.c test/tag_test.h test/tuple_test.c test/types_test.c test/call_test.c test/skiplist__fact_test.c test/fact_test.c test/compare_test.h test/fact_test.h test/str_test.c test/list_test.c test/hash_test.c test/compare_test.c test/ident_test.c test/libc3_test.c test/buf_inspect_test.c test/test.h test/bool_test.c test/cfn_test.c test/buf_parse_test_s8.c test/buf_parse_test_s32.c test/buf_parse_test_s64.c test/buf_parse_test_u16.c test/buf_parse_test_u8.c test/buf_parse_test_u32.c test/buf_parse_test_u64.c test/buf_parse_test.h test/buf_test.c test/env_test.c test/buf_parse_test_su.h test/character_test.c test/buf_parse_test_s16.c test/buf_file_test.c ucd2c/ucd.h ucd2c/ucd2c.c '
+C3_C_SOURCES='c3c/c3c.c c3s/buf_readline.c c3s/c3s.c c3s/buf_readline.h ic3/ic3.c ic3/buf_linenoise.c ic3/buf_linenoise.h ic3/linenoise.c libc3/abs.c libc3/abs.h libc3/buf.c libc3/buf.h libc3/buf_inspect_s8_decimal.c libc3/buf_inspect_s8_decimal.h libc3/buf_inspect_s8_hexadecimal.c libc3/buf_inspect_s8_hexadecimal.h libc3/buf_inspect_s16.c libc3/buf_inspect_s16.h libc3/buf_inspect_s16_binary.c libc3/buf_parse_s8.c libc3/call.c libc3/arg.c libc3/arg.h libc3/array.c libc3/array.h libc3/binding.c libc3/c3.c libc3/buf_inspect_s16_binary.h libc3/buf_inspect_s16_octal.c libc3/buf_inspect_s16_octal.h libc3/buf_inspect_s16_decimal.c libc3/binding.h libc3/buf_inspect_s16_decimal.h libc3/buf_inspect_s16_hexadecimal.c libc3/buf_inspect_s16_hexadecimal.h libc3/buf_inspect_s32.c libc3/buf_inspect_s32.h libc3/buf_inspect_s32_binary.c libc3/buf_inspect_s32_binary.h libc3/bool.c libc3/bool.h libc3/buf_file.c libc3/buf_file.h libc3/buf_inspect_s32_octal.c libc3/buf_inspect_s32_octal.h libc3/buf_inspect_s32_decimal.c libc3/buf_inspect_s32_decimal.h libc3/buf_inspect_s32_hexadecimal.c libc3/buf_inspect_s32_hexadecimal.h libc3/buf_inspect_s64.c libc3/buf_inspect_s64.h libc3/buf_inspect_s64_binary.c libc3/buf_inspect_s64_binary.h libc3/buf_inspect_s64_octal.c libc3/buf_inspect_s64_octal.h libc3/buf_parse.h libc3/buf_parse_c.c libc3/buf_save.c libc3/buf_inspect_s64_decimal.c libc3/facts_spec_cursor.c libc3/buf_inspect_s64_decimal.h libc3/buf_inspect_s64_hexadecimal.c libc3/buf_inspect_s64_hexadecimal.h libc3/buf_inspect_sw.c libc3/buf_inspect_sw.h libc3/buf_inspect_sw_binary.c libc3/buf_inspect_sw_binary.h libc3/buf_inspect_sw_octal.c libc3/buf_inspect_sw_octal.h libc3/buf_inspect_sw_decimal.c libc3/buf_inspect_sw_decimal.h libc3/buf_parse_c.h libc3/buf_save.h libc3/c3.h libc3/c_types.h libc3/call.h libc3/buf_inspect_sw_hexadecimal.c libc3/buf_inspect_sw_hexadecimal.h libc3/buf_inspect_u8.c libc3/buf_inspect_u8.h libc3/buf_inspect_u8_binary.c libc3/buf_inspect_u8_binary.h libc3/buf_inspect_u8_octal.c libc3/buf_inspect_u8_octal.h libc3/buf_inspect_u8_decimal.c libc3/buf_inspect_u8_decimal.h libc3/buf_inspect_u8_hexadecimal.c libc3/buf_inspect_u8_hexadecimal.h libc3/ceiling.c libc3/ceiling.h libc3/cfn.c libc3/cfn.h libc3/character.c libc3/character.h libc3/buf_inspect_u16.c libc3/buf_inspect_u16.h libc3/buf_inspect_u16_binary.c libc3/buf_inspect_u16_binary.h libc3/buf_inspect_u16_octal.c libc3/buf_inspect_u16_octal.h libc3/buf_inspect_u16_decimal.c libc3/buf_inspect_u16_decimal.h libc3/buf_inspect_u16_hexadecimal.c libc3/buf_inspect_u16_hexadecimal.h libc3/buf_inspect_u32.c libc3/buf_inspect_u32.h libc3/compare.c libc3/buf_inspect.c libc3/compare.h libc3/buf_parse.c libc3/env.c libc3/env.h libc3/facts.c libc3/facts.h libc3/hash.c libc3/ident.c libc3/operator.c libc3/operator.h libc3/sym.c libc3/buf_inspect_s8.c libc3/buf_inspect_s8.h libc3/buf_inspect_s8_binary.c libc3/buf_inspect_s8_binary.h libc3/buf_inspect_s8_octal.c libc3/buf_inspect_s8_octal.h libc3/error.c libc3/error.h libc3/error_handler.c libc3/error_handler.h libc3/eval.c libc3/eval.h libc3/buf_inspect_u32_binary.c libc3/buf_inspect_u32_binary.h libc3/buf_inspect_u32_octal.c libc3/buf_inspect_u32_octal.h libc3/buf_inspect_u32_decimal.c libc3/buf_inspect_u32_decimal.h libc3/buf_inspect_u32_hexadecimal.c libc3/buf_inspect_u32_hexadecimal.h libc3/buf_inspect_u64.c libc3/buf_inspect_u64.h libc3/buf_inspect_u64_binary.c libc3/set__fact.c libc3/fact.c libc3/fact.h libc3/facts_cursor.c libc3/buf_inspect_u64_binary.h libc3/buf_inspect_u64_octal.c libc3/buf_inspect_u64_octal.h libc3/buf_inspect_u64_decimal.c libc3/buf_inspect_u64_decimal.h libc3/buf_inspect_u64_hexadecimal.c libc3/buf_inspect_u64_hexadecimal.h libc3/buf_inspect_uw.c libc3/buf_inspect_uw.h libc3/buf_inspect_uw_binary.c libc3/buf_inspect_uw_binary.h libc3/buf_inspect_uw_octal.c libc3/buf_inspect_uw_octal.h libc3/set__fact.h libc3/facts_cursor.h libc3/facts_spec.c libc3/facts_spec.h libc3/facts_spec_cursor.h libc3/buf_inspect_uw_decimal.c libc3/buf_inspect_uw_decimal.h libc3/buf_inspect_uw_hexadecimal.c libc3/buf_inspect_uw_hexadecimal.h libc3/buf_parse_s8.h libc3/buf_parse_s16.c libc3/buf_parse_s16.h libc3/buf_parse_s32.c libc3/buf_parse_s32.h libc3/buf_parse_s64.c libc3/buf_parse_s64.h libc3/buf_parse_sw.c libc3/buf_parse_sw.h libc3/buf_parse_u8.c libc3/set__tag.c libc3/facts_with.c libc3/facts_with.h libc3/facts_with_cursor.c libc3/buf_parse_u8.h libc3/buf_parse_u16.c libc3/buf_parse_u16.h libc3/buf_parse_u32.c libc3/buf_parse_u32.h libc3/buf_parse_u64.c libc3/buf_parse_u64.h libc3/buf_parse_uw.c libc3/buf_parse_uw.h libc3/set__tag.h libc3/set_cursor__fact.c libc3/set_cursor__fact.h libc3/set_cursor__tag.c libc3/set_cursor__tag.h libc3/set_item__fact.c libc3/set_item__fact.h libc3/set_item__tag.c libc3/facts_with_cursor.h libc3/float.h libc3/fn.c libc3/fn.h libc3/frame.c libc3/frame.h libc3/set_item__tag.h libc3/skiplist__fact.c libc3/skiplist__fact.h libc3/skiplist_node__fact.c libc3/skiplist_node__fact.h libc3/types.h libc3/hash.h libc3/ident.h libc3/integer.c libc3/integer.h libc3/io.c libc3/io.h libc3/list.c libc3/list.h libc3/log.c libc3/log.h libc3/buf_inspect_s.h.in libc3/module.c libc3/str.c libc3/module.h libc3/buf_parse_u.c.in libc3/quote.c libc3/quote.h libc3/set.c.in libc3/set.h.in libc3/buf_inspect_s_base.h.in libc3/sha1.h libc3/set_cursor.c.in libc3/set_cursor.h.in libc3/buf_inspect.h libc3/set_item.c.in libc3/set_item.h.in libc3/sign.c libc3/sign.h libc3/skiplist.c.in libc3/skiplist.h.in libc3/type.h libc3/skiplist_node.c.in libc3/skiplist_node.h.in libc3/str.h libc3/ucd.c libc3/sym.h libc3/tuple.c libc3/tuple.h libc3/type.c libc3/ucd.h libc3/buf_parse_s.c.in libc3/buf_parse_s.h.in libc3/buf_inspect_s.c.in libc3/buf_parse_u.h.in libc3/buf_inspect_s_base.c.in libc3/buf_inspect_u.c.in libc3/buf_inspect_u.h.in libc3/buf_inspect_u_base.c.in libc3/buf_inspect_u_base.h.in libc3/tag.h libc3/tag.c test/buf_inspect_test.c test/bool_test.c test/buf_parse_test.c test/facts_test.c test/buf_file_test.c test/libc3_test.c test/list_test.c test/test.c test/test.h test/buf_parse_test_u8.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_test.c test/buf_parse_test_u64.c test/call_test.c test/facts_cursor_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_with_test.c test/hash_test.c test/ident_test.c test/set__fact_test.c test/set__tag_test.c test/skiplist__fact_test.c test/str_test.c test/sym_test.c test/tag_test.c test/tag_test.h test/array_test.c test/tuple_test.c test/types_test.c ucd2c/ucd.h ucd2c/ucd2c.c '
diff --git a/test/array_test.c b/test/array_test.c
new file mode 100644
index 0000000..03782d7
--- /dev/null
+++ b/test/array_test.c
@@ -0,0 +1,44 @@
+/* c3
+ * Copyright 2022,2023 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 <string.h>
+#include "../libc3/array.h"
+#include "test.h"
+
+#define ARRAY_TEST_INIT_CLEAN(type, dimension, dimensions) \
+ do { \
+ s_array a; \
+ TEST_EQ(array_init(&a, (type), (dimension), (dimensions)), &a); \
+ array_clean(&a); \
+ } while(0)
+
+void array_test ();
+TEST_CASE_PROTOTYPE(array_init_clean);
+
+void array_test ()
+{
+ TEST_CASE_RUN(array_init_clean);
+}
+
+TEST_CASE(array_init_clean)
+{
+ ARRAY_TEST_INIT_CLEAN(TAG_U8, 1, (uw []) {1});
+ ARRAY_TEST_INIT_CLEAN(TAG_U8, 1, (uw []) {10});
+ ARRAY_TEST_INIT_CLEAN(TAG_U8, 1, (uw []) {100});
+ ARRAY_TEST_INIT_CLEAN(TAG_U8, 2, ((uw []) {1, 1}));
+ ARRAY_TEST_INIT_CLEAN(TAG_U8, 2, ((uw []) {10, 10}));
+ ARRAY_TEST_INIT_CLEAN(TAG_U8, 2, ((uw []) {100, 100}));
+ ARRAY_TEST_INIT_CLEAN(TAG_U8, 3, ((uw []) {1, 1, 1}));
+ ARRAY_TEST_INIT_CLEAN(TAG_U8, 3, ((uw []) {10, 10, 10}));
+ ARRAY_TEST_INIT_CLEAN(TAG_U8, 3, ((uw []) {100, 100, 100}));
+}
+TEST_CASE_END(array_init_clean)
diff --git a/test/libc3_test.c b/test/libc3_test.c
index 9e87f65..b1590ee 100644
--- a/test/libc3_test.c
+++ b/test/libc3_test.c
@@ -13,6 +13,7 @@
#include "../libc3/c3.h"
#include "test.h"
+void array_test ();
void bool_test ();
void buf_file_test ();
void buf_inspect_test ();
@@ -45,6 +46,10 @@ int main (int argc, char **argv)
fprintf(stderr, "\ntypes\n");
types_test();
}
+ if (test_target("array")) {
+ fprintf(stderr, "\narray\n");
+ array_test();
+ }
if (test_target("bool")) {
fprintf(stderr, "\nbool\n");
bool_test();
diff --git a/test/sources.mk b/test/sources.mk
index 89f855d..35344ec 100644
--- a/test/sources.mk
+++ b/test/sources.mk
@@ -1,5 +1,6 @@
# sources.mk generated by update_sources
SOURCES = \
+ array_test.c \
bool_test.c \
buf_file_test.c \
buf_inspect_test.c \
diff --git a/test/sources.sh b/test/sources.sh
index 261cd39..dccfc9e 100644
--- a/test/sources.sh
+++ b/test/sources.sh
@@ -1,2 +1,2 @@
# sources.sh generated by update_sources
-SOURCES='bool_test.c buf_file_test.c buf_inspect_test.c buf_parse_test.c buf_parse_test_s16.c buf_parse_test_s32.c buf_parse_test_s64.c buf_parse_test_s8.c buf_parse_test_u16.c buf_parse_test_u32.c buf_parse_test_u64.c buf_parse_test_u8.c buf_test.c call_test.c cfn_test.c character_test.c compare_test.c env_test.c fact_test.c facts_cursor_test.c facts_test.c facts_with_test.c hash_test.c ident_test.c libc3_test.c list_test.c set__fact_test.c set__tag_test.c skiplist__fact_test.c str_test.c sym_test.c tag_test.c test.c tuple_test.c types_test.c '
+SOURCES='array_test.c bool_test.c buf_file_test.c buf_inspect_test.c buf_parse_test.c buf_parse_test_s16.c buf_parse_test_s32.c buf_parse_test_s64.c buf_parse_test_s8.c buf_parse_test_u16.c buf_parse_test_u32.c buf_parse_test_u64.c buf_parse_test_u8.c buf_test.c call_test.c cfn_test.c character_test.c compare_test.c env_test.c fact_test.c facts_cursor_test.c facts_test.c facts_with_test.c hash_test.c ident_test.c libc3_test.c list_test.c set__fact_test.c set__tag_test.c skiplist__fact_test.c str_test.c sym_test.c tag_test.c test.c tuple_test.c types_test.c '