diff --git a/.gitignore b/.gitignore
index 91b8d1b..90524b6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,22 @@
*~
*.a
.build/
+build_c_asan
+build_c_cov
+build_c_debug
+build_c_main
+build_cxx_asan
+build_cxx_cov
+build_cxx_debug
+build_cxx_main
+build_lib_asan
+build_lib_cov
+build_lib_debug
+build_lib_main
+build_prog_asan
+build_prog_cov
+build_prog_debug
+build_prog_main
config.h
config.mk
*.core
diff --git a/config.subr b/config.subr
index fbe89c3..72a6c8c 100644
--- a/config.subr
+++ b/config.subr
@@ -17,43 +17,47 @@ cd "$(dirname "$0")"
build_lib() {
echo >> ${CONFIG_MK}
- echo "$LIB_ASAN: $OBJECTS_ASAN .build/lib_asan" >> ${CONFIG_MK}
- echo " .build/lib_asan $LIB_ASAN" >> ${CONFIG_MK}
+ echo "$LIB_ASAN: $OBJECTS_ASAN build_lib_asan" >> ${CONFIG_MK}
+ echo " ./build_lib_asan $LIB_ASAN" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
- echo "$LIB_COV: $OBJECTS_COV .build/lib_cov" >> ${CONFIG_MK}
- echo " .build/lib_cov $LIB_COV" >> ${CONFIG_MK}
+ echo "$LIB_COV: $OBJECTS_COV build_lib_cov" >> ${CONFIG_MK}
+ echo " ./build_lib_cov $LIB_COV" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
- echo "$LIB_DEBUG: $OBJECTS_DEBUG .build/lib_debug" >> ${CONFIG_MK}
- echo " .build/lib_debug $LIB_DEBUG" >> ${CONFIG_MK}
+ echo "$LIB_DEBUG: $OBJECTS_DEBUG build_lib_debug" >> ${CONFIG_MK}
+ echo " ./build_lib_debug $LIB_DEBUG" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
- echo "$LIB: $OBJECTS .build/lib_main" >> ${CONFIG_MK}
- echo " .build/lib_main $LIB" >> ${CONFIG_MK}
+ echo "$LIB: $OBJECTS build_lib_main" >> ${CONFIG_MK}
+ echo " ./build_lib_main $LIB" >> ${CONFIG_MK}
}
build_lo() {
+ build_lo_c
+}
+
+build_lo_c() {
for SRC in $SOURCES; do
echo >> ${CONFIG_MK}
SRC_ASAN_LO="$(c2ext .asan.lo "$SRC")"
- c_ext_rule .asan.lo "$SRC" .build/c_asan >> ${CONFIG_MK}
- echo " .build/c_asan $SRC $SRC_ASAN_LO" >> ${CONFIG_MK}
+ c_ext_rule .asan.lo "$SRC" build_c_asan >> ${CONFIG_MK}
+ echo " ./build_c_asan $SRC $SRC_ASAN_LO" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
SRC_COV_LO="$(c2ext .cov.lo "$SRC")"
- c_ext_rule .cov.lo "$SRC" .build/c_cov >> ${CONFIG_MK}
- echo " .build/c_cov $SRC $SRC_COV_LO" >> ${CONFIG_MK}
+ c_ext_rule .cov.lo "$SRC" build_c_cov >> ${CONFIG_MK}
+ echo " ./build_c_cov $SRC $SRC_COV_LO" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
SRC_DEBUG_LO="$(c2ext .debug.lo "$SRC")"
- c_ext_rule .debug.lo "$SRC" .build/c_debug >> ${CONFIG_MK}
- echo " .build/c_debug $SRC $SRC_DEBUG_LO" >> ${CONFIG_MK}
+ c_ext_rule .debug.lo "$SRC" build_c_debug >> ${CONFIG_MK}
+ echo " ./build_c_debug $SRC $SRC_DEBUG_LO" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
SRC_LO="$(c2ext .main.lo "$SRC")"
- c_ext_rule .main.lo "$SRC" .build/c_main >> ${CONFIG_MK}
- echo " .build/c_main $SRC $SRC_LO" >> ${CONFIG_MK}
+ c_ext_rule .main.lo "$SRC" build_c_main >> ${CONFIG_MK}
+ echo " ./build_c_main $SRC $SRC_LO" >> ${CONFIG_MK}
done
}
@@ -61,23 +65,23 @@ build_lo_cxx() {
for SRC in $SOURCES_CXX; do
echo >> ${CONFIG_MK}
SRC_ASAN_LO="$(cxx2ext .asan.lo "$SRC")"
- cxx_ext_rule .asan.lo "$SRC" .build/cxx_asan >> ${CONFIG_MK}
- echo " .build/cxx_asan $SRC $SRC_ASAN_LO" >> ${CONFIG_MK}
+ cxx_ext_rule .asan.lo "$SRC" build_cxx_asan >> ${CONFIG_MK}
+ echo " ./build_cxx_asan $SRC $SRC_ASAN_LO" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
SRC_COV_LO="$(cxx2ext .cov.lo "$SRC")"
- cxx_ext_rule .cov.lo "$SRC" .build/cxx_cov >> ${CONFIG_MK}
- echo " .build/cxx_cov $SRC $SRC_COV_LO" >> ${CONFIG_MK}
+ cxx_ext_rule .cov.lo "$SRC" build_cxx_cov >> ${CONFIG_MK}
+ echo " ./build_cxx_cov $SRC $SRC_COV_LO" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
SRC_DEBUG_LO="$(cxx2ext .debug.lo "$SRC")"
- cxx_ext_rule .debug.lo "$SRC" .build/cxx_debug >> ${CONFIG_MK}
- echo " .build/cxx_debug $SRC $SRC_DEBUG_LO" >> ${CONFIG_MK}
+ cxx_ext_rule .debug.lo "$SRC" build_cxx_debug >> ${CONFIG_MK}
+ echo " ./build_cxx_debug $SRC $SRC_DEBUG_LO" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
SRC_LO="$(cxx2ext .main.lo "$SRC")"
- cxx_ext_rule .main.lo "$SRC" .build/cxx_main >> ${CONFIG_MK}
- echo " .build/cxx_main $SRC $SRC_LO" >> ${CONFIG_MK}
+ cxx_ext_rule .main.lo "$SRC" build_cxx_main >> ${CONFIG_MK}
+ echo " ./build_cxx_main $SRC $SRC_LO" >> ${CONFIG_MK}
done
}
@@ -85,45 +89,45 @@ build_lo_objc() {
for SRC in $OBJC_SOURCES; do
echo >> ${CONFIG_MK}
SRC_ASAN_LO="$(objc2ext .asan.lo "$SRC")"
- objc_ext_rule .asan.lo "$SRC" .build/objc_asan >> ${CONFIG_MK}
- echo " .build/objc_asan $SRC $SRC_ASAN_LO" >> ${CONFIG_MK}
+ objc_ext_rule .asan.lo "$SRC" build_objc_asan >> ${CONFIG_MK}
+ echo " ./build_objc_asan $SRC $SRC_ASAN_LO" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
SRC_COV_LO="$(objc2ext .cov.lo "$SRC")"
- objc_ext_rule .cov.lo "$SRC" .build/objc_cov >> ${CONFIG_MK}
- echo " .build/objc_cov $SRC $SRC_COV_LO" >> ${CONFIG_MK}
+ objc_ext_rule .cov.lo "$SRC" build_objc_cov >> ${CONFIG_MK}
+ echo " ./build_objc_cov $SRC $SRC_COV_LO" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
SRC_DEBUG_LO="$(objc2ext .debug.lo "$SRC")"
- objc_ext_rule .debug.lo "$SRC" .build/objc_debug >> ${CONFIG_MK}
- echo " .build/objc_debug $SRC $SRC_DEBUG_LO" >> ${CONFIG_MK}
+ objc_ext_rule .debug.lo "$SRC" build_objc_debug >> ${CONFIG_MK}
+ echo " ./build_objc_debug $SRC $SRC_DEBUG_LO" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
SRC_MAIN_LO="$(objc2ext .main.lo "$SRC")"
- objc_ext_rule .main.lo "$SRC" .build/objc_main >> ${CONFIG_MK}
- echo " .build/objc_main $SRC $SRC_MAIN_LO" >> ${CONFIG_MK}
+ objc_ext_rule .main.lo "$SRC" build_objc_main >> ${CONFIG_MK}
+ echo " ./build_objc_main $SRC $SRC_MAIN_LO" >> ${CONFIG_MK}
done
}
build_prog() {
echo >> ${CONFIG_MK}
- echo "$PROG_ASAN: $LOCAL_LIBS_ASAN $OBJECTS_ASAN .build/prog_asan" \
+ echo "$PROG_ASAN: $LOCAL_LIBS_ASAN $OBJECTS_ASAN build_prog_asan" \
>> ${CONFIG_MK}
- echo " .build/prog_asan $PROG_ASAN" >> ${CONFIG_MK}
+ echo " ./build_prog_asan $PROG_ASAN" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
- echo "$PROG_COV: $LOCAL_LIBS_COV $OBJECTS_COV .build/prog_cov" \
+ echo "$PROG_COV: $LOCAL_LIBS_COV $OBJECTS_COV build_prog_cov" \
>> ${CONFIG_MK}
- echo " .build/prog_cov $PROG_COV" >> ${CONFIG_MK}
+ echo " ./build_prog_cov $PROG_COV" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
- echo "$PROG_DEBUG: $LOCAL_LIBS_DEBUG $OBJECTS_DEBUG .build/prog_debug" \
+ echo "$PROG_DEBUG: $LOCAL_LIBS_DEBUG $OBJECTS_DEBUG build_prog_debug" \
>> ${CONFIG_MK}
- echo " .build/prog_debug $PROG_DEBUG" >> ${CONFIG_MK}
+ echo " ./build_prog_debug $PROG_DEBUG" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
- echo "$PROG: $LOCAL_LIBS $OBJECTS .build/prog_main" >> ${CONFIG_MK}
- echo " .build/prog_main $PROG" >> ${CONFIG_MK}
+ echo "$PROG: $LOCAL_LIBS $OBJECTS build_prog_main" >> ${CONFIG_MK}
+ echo " ./build_prog_main $PROG" >> ${CONFIG_MK}
}
c_o_rule() {
@@ -478,22 +482,20 @@ cpp2prog() {
}
cxx_o_rule() {
- "$CXX" $CXXFLAGS $CXXFLAGS -M "$1" || {
- echo "$1" | sed -e 's/^\(.*\)\.cxx$/\1.o: \1.cxx/'
- }
- echo "$1: $2" | sed -e 's/^\(.*\)\.cxx: $/\1.o: /'
+ echo "$1" | sed -e 's/^\(.*\)\.cxx$/\1.o: \1.cxx/'
+ echo "$1: $2" | sed -e 's/^\(.*\)\.cxx:/\1.o:/'
}
cxx_ext_rule() {
- cxx_o_rule "$2" "$3" | sed -e "s/[.]o:/$1:/"
+ cxx_o_rule "$2" "$3" | sed -e "s/\.o:/$1:/"
}
cxx_lo_rule() {
- cxx_ext_rule .lo "$1" "$2"
+ cxx_ext_rule .lo "$1"
}
cxx_prog_rule() {
- { cxx_o_rule "$1" "$2" || exit 1; } | sed -e 's/[.]o:/:/'
+ { cxx_o_rule "$1" || exit 1; } | sed -e 's/[.]o:/:/'
}
cxx2ext() {
@@ -591,10 +593,10 @@ update_build() {
}
update_build_c() {
- BUILD_C_MAIN=.build/c_main.tmp
- BUILD_C_ASAN=.build/c_asan.tmp
- BUILD_C_COV=.build/c_cov.tmp
- BUILD_C_DEBUG=.build/c_debug.tmp
+ BUILD_C_MAIN=build_c_main.tmp
+ BUILD_C_ASAN=build_c_asan.tmp
+ BUILD_C_COV=build_c_cov.tmp
+ BUILD_C_DEBUG=build_c_debug.tmp
mkdir -p .build
COMPILE="${LIBTOOL} --tag=CC --mode=compile"
@@ -608,7 +610,7 @@ update_build_c() {
echo "CPPFLAGS=\"${CPPFLAGS_ASAN}\"" >> ${BUILD_C_ASAN}
echo "CFLAGS=\"${CFLAGS_ASAN}\"" >> ${BUILD_C_ASAN}
echo "$COMPILE > \"\$LOG\" 2>&1 || $COMPILE" >> ${BUILD_C_ASAN}
- update_and_chmod 755 ${BUILD_C_ASAN} .build/c_asan
+ update_and_chmod 755 ${BUILD_C_ASAN} build_c_asan
echo "#!/bin/sh" >> ${BUILD_C_COV}
echo "# gen by configure" >> ${BUILD_C_COV}
@@ -617,7 +619,7 @@ update_build_c() {
echo "CPPFLAGS=\"${CPPFLAGS_COV}\"" >> ${BUILD_C_COV}
echo "CFLAGS=\"${CFLAGS_COV}\"" >> ${BUILD_C_COV}
echo "$COMPILE > \"\$LOG\" 2>&1 || $COMPILE" >> ${BUILD_C_COV}
- update_and_chmod 755 ${BUILD_C_COV} .build/c_cov
+ update_and_chmod 755 ${BUILD_C_COV} build_c_cov
echo "#!/bin/sh" >> ${BUILD_C_DEBUG}
echo "# gen by configure" >> ${BUILD_C_DEBUG}
@@ -626,7 +628,7 @@ update_build_c() {
echo "CPPFLAGS=\"${CPPFLAGS_DEBUG}\"" >> ${BUILD_C_DEBUG}
echo "CFLAGS=\"${CFLAGS_DEBUG}\"" >> ${BUILD_C_DEBUG}
echo "$COMPILE > \"\$LOG\" 2>&1 || $COMPILE" >> ${BUILD_C_DEBUG}
- update_and_chmod 755 ${BUILD_C_DEBUG} .build/c_debug
+ update_and_chmod 755 ${BUILD_C_DEBUG} build_c_debug
echo "#!/bin/sh" >> ${BUILD_C_MAIN}
echo "# gen by configure" >> ${BUILD_C_MAIN}
@@ -635,62 +637,62 @@ update_build_c() {
echo "CPPFLAGS=\"${CPPFLAGS}\"" >> ${BUILD_C_MAIN}
echo "CFLAGS=\"${CFLAGS}\"" >> ${BUILD_C_MAIN}
echo "$COMPILE > \"\$LOG\" 2>&1 || $COMPILE" >> ${BUILD_C_MAIN}
- update_and_chmod 755 ${BUILD_C_MAIN} .build/c_main
+ update_and_chmod 755 ${BUILD_C_MAIN} build_c_main
}
update_build_cxx() {
- BUILD_CXX_MAIN=.build/cxx_main.tmp
- BUILD_CXX_ASAN=.build/cxx_asan.tmp
- BUILD_CXX_COV=.build/cxx_cov.tmp
- BUILD_CXX_DEBUG=.build/cxx_debug.tmp
+ BUILD_CXX_MAIN=build_cxx_main.tmp
+ BUILD_CXX_ASAN=build_cxx_asan.tmp
+ BUILD_CXX_COV=build_cxx_cov.tmp
+ BUILD_CXX_DEBUG=build_cxx_debug.tmp
mkdir -p .build
- COMPILE="${LIBTOOL} --tag=CC --mode=compile"
- COMPILE="$COMPILE \${CC} \${CPPFLAGS} \${CFLAGS}"
+ COMPILE="${LIBTOOL} --tag=CXX --mode=compile"
+ COMPILE="$COMPILE \${CXX} \${CPPFLAGS} \${CXXFLAGS}"
COMPILE="$COMPILE -c \"\$1\" -o \"\$2\""
echo "#!/bin/sh" >> ${BUILD_CXX_ASAN}
echo "# gen by configure" >> ${BUILD_CXX_ASAN}
echo "LOG=\".build/\$1.debug.log\"" >> ${BUILD_CXX_ASAN}
- echo "CC=\"${CC}\"" >> ${BUILD_CXX_ASAN}
+ echo "CXX=\"${CXX}\"" >> ${BUILD_CXX_ASAN}
echo "CPPFLAGS=\"${CPPFLAGS_ASAN}\"" >> ${BUILD_CXX_ASAN}
- echo "CFLAGS=\"${CFLAGS_ASAN}\"" >> ${BUILD_CXX_ASAN}
+ echo "CXXFLAGS=\"${CXXFLAGS_ASAN}\"" >> ${BUILD_CXX_ASAN}
echo "$COMPILE > \"\$LOG\" 2>&1 || $COMPILE" >> ${BUILD_CXX_ASAN}
- update_and_chmod 755 ${BUILD_CXX_ASAN} .build/cxx_asan
+ update_and_chmod 755 ${BUILD_CXX_ASAN} build_cxx_asan
echo "#!/bin/sh" >> ${BUILD_CXX_COV}
echo "# gen by configure" >> ${BUILD_CXX_COV}
echo "LOG=\".build/\$1.debug.log\"" >> ${BUILD_CXX_COV}
- echo "CC=\"${CC}\"" >> ${BUILD_CXX_COV}
+ echo "CXX=\"${CXX}\"" >> ${BUILD_CXX_COV}
echo "CPPFLAGS=\"${CPPFLAGS_COV}\"" >> ${BUILD_CXX_COV}
- echo "CFLAGS=\"${CFLAGS_COV}\"" >> ${BUILD_CXX_COV}
+ echo "CXXFLAGS=\"${CXXFLAGS_COV}\"" >> ${BUILD_CXX_COV}
echo "$COMPILE > \"\$LOG\" 2>&1 || $COMPILE" >> ${BUILD_CXX_COV}
- update_and_chmod 755 ${BUILD_CXX_COV} .build/cxx_cov
+ update_and_chmod 755 ${BUILD_CXX_COV} build_cxx_cov
echo "#!/bin/sh" >> ${BUILD_CXX_DEBUG}
echo "# gen by configure" >> ${BUILD_CXX_DEBUG}
echo "LOG=\".build/\$1.debug.log\"" >> ${BUILD_CXX_DEBUG}
- echo "CC=\"${CC}\"" >> ${BUILD_CXX_DEBUG}
+ echo "CXX=\"${CXX}\"" >> ${BUILD_CXX_DEBUG}
echo "CPPFLAGS=\"${CPPFLAGS_DEBUG}\"" >> ${BUILD_CXX_DEBUG}
- echo "CFLAGS=\"${CFLAGS_DEBUG}\"" >> ${BUILD_CXX_DEBUG}
+ echo "CXXFLAGS=\"${CXXFLAGS_DEBUG}\"" >> ${BUILD_CXX_DEBUG}
echo "$COMPILE > \"\$LOG\" 2>&1 || $COMPILE" >> ${BUILD_CXX_DEBUG}
- update_and_chmod 755 ${BUILD_CXX_DEBUG} .build/cxx_debug
+ update_and_chmod 755 ${BUILD_CXX_DEBUG} build_cxx_debug
echo "#!/bin/sh" >> ${BUILD_CXX_MAIN}
echo "# gen by configure" >> ${BUILD_CXX_MAIN}
echo "LOG=\".build/\$1.main.log\"" >> ${BUILD_CXX_MAIN}
- echo "CC=\"${CC}\"" >> ${BUILD_CXX_MAIN}
+ echo "CXX=\"${CXX}\"" >> ${BUILD_CXX_MAIN}
echo "CPPFLAGS=\"${CPPFLAGS}\"" >> ${BUILD_CXX_MAIN}
- echo "CFLAGS=\"${CFLAGS}\"" >> ${BUILD_CXX_MAIN}
+ echo "CXXFLAGS=\"${CXXFLAGS}\"" >> ${BUILD_CXX_MAIN}
echo "$COMPILE > \"\$LOG\" 2>&1 || $COMPILE" >> ${BUILD_CXX_MAIN}
- update_and_chmod 755 ${BUILD_CXX_MAIN} .build/cxx_main
+ update_and_chmod 755 ${BUILD_CXX_MAIN} build_cxx_main
}
update_build_lib() {
- BUILD_LIB_MAIN=.build/lib_main.tmp
- BUILD_LIB_ASAN=.build/lib_asan.tmp
- BUILD_LIB_COV=.build/lib_cov.tmp
- BUILD_LIB_DEBUG=.build/lib_debug.tmp
+ BUILD_LIB_MAIN=build_lib_main.tmp
+ BUILD_LIB_ASAN=build_lib_asan.tmp
+ BUILD_LIB_COV=build_lib_cov.tmp
+ BUILD_LIB_DEBUG=build_lib_debug.tmp
mkdir -p .build
LINK="${LIBTOOL} --tag=CC --mode=link "
@@ -707,7 +709,7 @@ update_build_lib() {
echo "LIBS=\"${LIBS_ASAN}\"" >> ${BUILD_LIB_ASAN}
echo >> ${BUILD_LIB_ASAN}
echo "$LINK > \"\$LOG\" 2>&1 || $LINK" >> ${BUILD_LIB_ASAN}
- update_and_chmod 755 ${BUILD_LIB_ASAN} .build/lib_asan
+ update_and_chmod 755 ${BUILD_LIB_ASAN} build_lib_asan
echo "#!/bin/sh" >> ${BUILD_LIB_COV}
echo "# gen by configure" >> ${BUILD_LIB_COV}
@@ -719,7 +721,7 @@ update_build_lib() {
echo "LIBS=\"${LIBS_COV}\"" >> ${BUILD_LIB_COV}
echo >> ${BUILD_LIB_COV}
echo "$LINK > \"\$LOG\" 2>&1 || $LINK" >> ${BUILD_LIB_COV}
- update_and_chmod 755 ${BUILD_LIB_COV} .build/lib_cov
+ update_and_chmod 755 ${BUILD_LIB_COV} build_lib_cov
echo "#!/bin/sh" >> ${BUILD_LIB_DEBUG}
echo "# gen by configure" >> ${BUILD_LIB_DEBUG}
@@ -731,7 +733,7 @@ update_build_lib() {
echo "LIBS=\"${LIBS_DEBUG}\"" >> ${BUILD_LIB_DEBUG}
echo >> ${BUILD_LIB_DEBUG}
echo "$LINK > \"\$LOG\" 2>&1 || $LINK" >> ${BUILD_LIB_DEBUG}
- update_and_chmod 755 ${BUILD_LIB_DEBUG} .build/lib_debug
+ update_and_chmod 755 ${BUILD_LIB_DEBUG} build_lib_debug
echo "#!/bin/sh" >> ${BUILD_LIB_MAIN}
echo "# gen by configure" >> ${BUILD_LIB_MAIN}
@@ -743,14 +745,14 @@ update_build_lib() {
echo "LIBS=\"${LIBS}\"" >> ${BUILD_LIB_MAIN}
echo >> ${BUILD_LIB_MAIN}
echo "$LINK > \"\$LOG\" 2>&1 || $LINK" >> ${BUILD_LIB_MAIN}
- update_and_chmod 755 ${BUILD_LIB_MAIN} .build/lib_main
+ update_and_chmod 755 ${BUILD_LIB_MAIN} build_lib_main
}
update_build_objc() {
- BUILD_OBJC_MAIN=.build/objc_main.tmp
- BUILD_OBJC_ASAN=.build/objc_asan.tmp
- BUILD_OBJC_COV=.build/objc_cov.tmp
- BUILD_OBJC_DEBUG=.build/objc_debug.tmp
+ BUILD_OBJC_MAIN=build_objc_main.tmp
+ BUILD_OBJC_ASAN=build_objc_asan.tmp
+ BUILD_OBJC_COV=build_objc_cov.tmp
+ BUILD_OBJC_DEBUG=build_objc_debug.tmp
mkdir -p .build
echo "#!/bin/sh" >> ${BUILD_OBJC_ASAN}
@@ -759,7 +761,7 @@ update_build_objc() {
echo "CPPFLAGS=\"${CPPFLAGS_ASAN}\"" >> ${BUILD_OBJC_ASAN}
echo "CFLAGS=\"${CFLAGS_ASAN}\"" >> ${BUILD_OBJC_ASAN}
echo "${LIBTOOL} --tag=CC --mode=compile \${OBJC} \${CPPFLAGS} \${CFLAGS} -c \"\$1\" -o \"\$2\" >> .build/log 2>&1" >> ${BUILD_OBJC_ASAN}
- update_and_chmod 755 ${BUILD_OBJC_ASAN} .build/objc_asan
+ update_and_chmod 755 ${BUILD_OBJC_ASAN} build_objc_asan
echo "#!/bin/sh" >> ${BUILD_OBJC_COV}
echo "# gen by configure" >> ${BUILD_OBJC_COV}
@@ -767,7 +769,7 @@ update_build_objc() {
echo "CPPFLAGS=\"${CPPFLAGS_COV}\"" >> ${BUILD_OBJC_COV}
echo "CFLAGS=\"${CFLAGS_COV}\"" >> ${BUILD_OBJC_COV}
echo "${LIBTOOL} --tag=CC --mode=compile \${OBJC} \${CPPFLAGS} \${CFLAGS} -c \"\$1\" -o \"\$2\" >> .build/log 2>&1" >> ${BUILD_OBJC_COV}
- update_and_chmod 755 ${BUILD_OBJC_COV} .build/objc_cov
+ update_and_chmod 755 ${BUILD_OBJC_COV} build_objc_cov
echo "#!/bin/sh" >> ${BUILD_OBJC_DEBUG}
echo "# gen by configure" >> ${BUILD_OBJC_DEBUG}
@@ -775,7 +777,7 @@ update_build_objc() {
echo "CPPFLAGS=\"${CPPFLAGS_DEBUG}\"" >> ${BUILD_OBJC_DEBUG}
echo "CFLAGS=\"${CFLAGS_DEBUG}\"" >> ${BUILD_OBJC_DEBUG}
echo "${LIBTOOL} --tag=CC --mode=compile \${OBJC} \${CPPFLAGS} \${CFLAGS} -c \"\$1\" -o \"\$2\" >> .build/log 2>&1" >> ${BUILD_OBJC_DEBUG}
- update_and_chmod 755 ${BUILD_OBJC_DEBUG} .build/objc_debug
+ update_and_chmod 755 ${BUILD_OBJC_DEBUG} build_objc_debug
echo "#!/bin/sh" >> ${BUILD_OBJC_MAIN}
echo "# gen by configure" >> ${BUILD_OBJC_MAIN}
@@ -783,14 +785,14 @@ update_build_objc() {
echo "CPPFLAGS=\"${CPPFLAGS}\"" >> ${BUILD_OBJC_MAIN}
echo "CFLAGS=\"${CFLAGS}\"" >> ${BUILD_OBJC_MAIN}
echo "${LIBTOOL} --tag=CC --mode=compile \${OBJC} \${CPPFLAGS} \${CFLAGS} -c \"\$1\" -o \"\$2\" >> .build/log 2>&1" >> ${BUILD_OBJC_MAIN}
- update_and_chmod 755 ${BUILD_OBJC_MAIN} .build/objc_main
+ update_and_chmod 755 ${BUILD_OBJC_MAIN} build_objc_main
}
update_build_prog() {
- BUILD_PROG_MAIN=.build/prog_main.tmp
- BUILD_PROG_ASAN=.build/prog_asan.tmp
- BUILD_PROG_COV=.build/prog_cov.tmp
- BUILD_PROG_DEBUG=.build/prog_debug.tmp
+ BUILD_PROG_MAIN=build_prog_main.tmp
+ BUILD_PROG_ASAN=build_prog_asan.tmp
+ BUILD_PROG_COV=build_prog_cov.tmp
+ BUILD_PROG_DEBUG=build_prog_debug.tmp
mkdir -p .build
LINK="${LIBTOOL} --tag=CC --mode=link"
@@ -807,7 +809,7 @@ update_build_prog() {
echo "LIBS=\"${LIBS_ASAN}\"" >> ${BUILD_PROG_ASAN}
echo >> ${BUILD_PROG_ASAN}
echo "$LINK > \"\$LOG\" 2>&1 || $LINK" >> ${BUILD_PROG_ASAN}
- update_and_chmod 755 ${BUILD_PROG_ASAN} .build/prog_asan
+ update_and_chmod 755 ${BUILD_PROG_ASAN} build_prog_asan
echo "#!/bin/sh" >> ${BUILD_PROG_COV}
echo "# gen by configure" >> ${BUILD_PROG_COV}
@@ -819,7 +821,7 @@ update_build_prog() {
echo "LIBS=\"${LIBS_COV}\"" >> ${BUILD_PROG_COV}
echo >> ${BUILD_PROG_COV}
echo "$LINK > \"\$LOG\" 2>&1 || $LINK" >> ${BUILD_PROG_COV}
- update_and_chmod 755 ${BUILD_PROG_COV} .build/prog_cov
+ update_and_chmod 755 ${BUILD_PROG_COV} build_prog_cov
echo "#!/bin/sh" >> ${BUILD_PROG_DEBUG}
echo "# gen by configure" >> ${BUILD_PROG_DEBUG}
@@ -831,19 +833,19 @@ update_build_prog() {
echo "LIBS=\"${LIBS_DEBUG}\"" >> ${BUILD_PROG_DEBUG}
echo >> ${BUILD_PROG_DEBUG}
echo "$LINK > \"\$LOG\" 2>&1 || $LINK" >> ${BUILD_PROG_DEBUG}
- update_and_chmod 755 ${BUILD_PROG_DEBUG} .build/prog_debug
+ update_and_chmod 755 ${BUILD_PROG_DEBUG} build_prog_debug
echo "#!/bin/sh" >> ${BUILD_PROG_MAIN}
echo "# gen by configure" >> ${BUILD_PROG_MAIN}
echo "LOG=\".build/\$1.main.log\"" >> ${BUILD_PROG_MAIN}
echo "CC=\"${CC}\"" >> ${BUILD_PROG_MAIN}
- echo "CFLAGS=\"${CFLAGS_DEBUG}\"" >> ${BUILD_PROG_MAIN}
+ echo "CFLAGS=\"${CFLAGS}\"" >> ${BUILD_PROG_MAIN}
echo "LDFLAGS=\"${LDFLAGS}\"" >> ${BUILD_PROG_MAIN}
echo "OBJECTS=\"${OBJECTS}\"" >> ${BUILD_PROG_MAIN}
echo "LIBS=\"${LIBS}\"" >> ${BUILD_PROG_MAIN}
echo >> ${BUILD_PROG_MAIN}
echo "$LINK > \"\$LOG\" 2>&1 || $LINK" >> ${BUILD_PROG_MAIN}
- update_and_chmod 755 ${BUILD_PROG_MAIN} .build/prog_main
+ update_and_chmod 755 ${BUILD_PROG_MAIN} build_prog_main
}
update_file() {
diff --git a/json/json.c b/json/json.c
index f681ee0..b2f7473 100644
--- a/json/json.c
+++ b/json/json.c
@@ -39,7 +39,7 @@ sw json_buf_inspect (s_buf *buf, const s_tag *tag)
case TAG_UW:
return json_buf_inspect_tag_number(buf, tag);
case TAG_BOOL:
- return buf_inspect_bool(buf, &tag->data.bool);
+ return buf_inspect_bool(buf, &tag->data.bool_);
case TAG_VOID:
return json_buf_inspect_void(buf);
default:
@@ -195,7 +195,7 @@ sw json_buf_inspect_size (s_pretty *pretty, const s_tag *tag)
case TAG_UW:
return json_buf_inspect_tag_number_size(pretty, tag);
case TAG_BOOL:
- return buf_inspect_bool_size(pretty, &tag->data.bool);
+ return buf_inspect_bool_size(pretty, &tag->data.bool_);
case TAG_VOID:
return json_buf_inspect_void_size(pretty);
default:
diff --git a/libkc3/bool.c b/libkc3/bool.c
index 3831df4..55ea764 100644
--- a/libkc3/bool.c
+++ b/libkc3/bool.c
@@ -29,7 +29,7 @@ bool * bool_init_cast (bool *b, const s_sym * const *type,
assert(type);
assert(tag);
switch (tag->type) {
- case TAG_BOOL: *b = tag->data.bool; return b;
+ case TAG_BOOL: *b = tag->data.bool_; return b;
case TAG_CHARACTER: *b = (bool) tag->data.character; return b;
case TAG_COMPLEX: *b = ! complex_is_zero(tag->data.complex);
return b;
diff --git a/libkc3/buf_inspect.c b/libkc3/buf_inspect.c
index e51c81e..0d44337 100644
--- a/libkc3/buf_inspect.c
+++ b/libkc3/buf_inspect.c
@@ -3708,7 +3708,7 @@ sw buf_inspect_tag (s_buf *buf, const s_tag *tag)
switch(tag->type) {
case TAG_ARRAY: return buf_inspect_array(buf, &tag->data.array);
case TAG_BLOCK: return buf_inspect_block(buf, &tag->data.block);
- case TAG_BOOL: return buf_inspect_bool(buf, &tag->data.bool);
+ case TAG_BOOL: return buf_inspect_bool(buf, &tag->data.bool_);
case TAG_CALL: return buf_inspect_call(buf, &tag->data.call);
case TAG_CALLABLE:
return buf_inspect_callable(buf, tag->data.callable);
@@ -3768,7 +3768,7 @@ sw buf_inspect_tag_size (s_pretty *pretty, const s_tag *tag)
case TAG_BLOCK:
return buf_inspect_block_size(pretty, &tag->data.block);
case TAG_BOOL:
- return buf_inspect_bool_size(pretty, &tag->data.bool);
+ return buf_inspect_bool_size(pretty, &tag->data.bool_);
case TAG_CALL:
return buf_inspect_call_size(pretty, &tag->data.call);
case TAG_CALLABLE:
diff --git a/libkc3/buf_parse.c b/libkc3/buf_parse.c
index c74f641..c297a7b 100644
--- a/libkc3/buf_parse.c
+++ b/libkc3/buf_parse.c
@@ -3871,7 +3871,7 @@ sw buf_parse_tag_bool (s_buf *buf, s_tag *dest)
sw r;
assert(buf);
assert(dest);
- if ((r = buf_parse_bool(buf, &dest->data.bool)) > 0)
+ if ((r = buf_parse_bool(buf, &dest->data.bool_)) > 0)
dest->type = TAG_BOOL;
return r;
}
diff --git a/libkc3/compare.c b/libkc3/compare.c
index 6e041fb..29291bb 100644
--- a/libkc3/compare.c
+++ b/libkc3/compare.c
@@ -1138,7 +1138,7 @@ s8 compare_tag (const s_tag *a, const s_tag *b) {
&b->data.array);
case TAG_BLOCK: return compare_block(&a->data.block,
&b->data.block);
- case TAG_BOOL: return compare_bool(a->data.bool, b->data.bool);
+ case TAG_BOOL: return compare_bool(a->data.bool_, b->data.bool_);
case TAG_CALL: return compare_call(&a->data.call,
&b->data.call);
case TAG_CALLABLE: return compare_callable(a->data.callable,
diff --git a/libkc3/configure b/libkc3/configure
index 56a936d..5698a14 100755
--- a/libkc3/configure
+++ b/libkc3/configure
@@ -71,9 +71,9 @@ fi
# Address Sanitizer config
CPPFLAGS_ASAN="$CPPFLAGS"
-CFLAGS_ASAN="$CFLAGS -DDEBUG -O2 -g"
+CFLAGS_ASAN="$CFLAGS -DDEBUG -Oz -g"
CFLAGS_ASAN="$CFLAGS_ASAN -fsanitize=address -fno-omit-frame-pointer"
-CXXFLAGS_ASAN="$CXXFLAGS -DDEBUG -O2 -g"
+CXXFLAGS_ASAN="$CXXFLAGS -DDEBUG -Oz -g"
CXXFLAGS_ASAN="$CXXFLAGS_ASAN -fsanitize=address -fno-omit-frame-pointer"
LDFLAGS_ASAN="$LDFLAGS"
LIBS_ASAN="$LIBS"
@@ -93,12 +93,12 @@ LDFLAGS_DEBUG="$LDFLAGS"
LIBS_DEBUG="$LIBS"
# Main config
-DEFAULT_CFLAGS="-O2 -fPIC"
+DEFAULT_CFLAGS="-Oz -fPIC"
if [ "x$ENV_CFLAGS" = "x" ]; then
CFLAGS="$CFLAGS $DEFAULT_CFLAGS"
fi
CFLAGS="$CFLAGS -DNDEBUG"
-DEFAULT_CXXFLAGS="-O2 -fPIC"
+DEFAULT_CXXFLAGS="-Oz -fPIC"
if [ "x$ENV_CXXFLAGS" = "x" ]; then
CXXFLAGS="$CXXFLAGS $DEFAULT_CXXFLAGS"
fi
@@ -134,11 +134,9 @@ echo "LDFLAGS_DEBUG = $LDFLAGS_DEBUG" >> ${CONFIG_MK}
echo "LIBS_DEBUG = $LIBS_DEBUG" >> ${CONFIG_MK}
update_build_c
-update_build_cxx
update_build_lib
-build_lo
-build_lo_cxx
+build_lo_c
build_lib
update_config_mk
diff --git a/libkc3/env.c b/libkc3/env.c
index 3e51951..817264e 100644
--- a/libkc3/env.c
+++ b/libkc3/env.c
@@ -4057,7 +4057,7 @@ s_tag * env_while (s_env *env, s_tag *cond, s_tag *body,
goto ko;
if (cond_bool.type != TAG_BOOL)
goto ko;
- if (! cond_bool.data.bool)
+ if (! cond_bool.data.bool_)
break;
if (! env_eval_tag(env, body, &tmp))
goto ko;
diff --git a/libkc3/f128.c b/libkc3/f128.c
index fa98d96..43ce204 100644
--- a/libkc3/f128.c
+++ b/libkc3/f128.c
@@ -28,7 +28,7 @@ f128 * f128_init_cast (f128 *x, const s_sym * const *type,
assert(tag);
switch (tag->type) {
case TAG_BOOL:
- *x = tag->data.bool ? 1.0 : 0.0;
+ *x = tag->data.bool_ ? 1.0 : 0.0;
return x;
case TAG_CHARACTER:
*x = (f128) tag->data.character;
diff --git a/libkc3/f32.c b/libkc3/f32.c
index 9613782..0ded862 100644
--- a/libkc3/f32.c
+++ b/libkc3/f32.c
@@ -28,7 +28,7 @@ f32 * f32_init_cast (f32 *x, const s_sym * const *type,
assert(tag);
switch (tag->type) {
case TAG_BOOL:
- *x = tag->data.bool ? 1.0f : 0.0f;
+ *x = tag->data.bool_ ? 1.0f : 0.0f;
return x;
case TAG_CHARACTER:
*x = (f32) tag->data.character;
diff --git a/libkc3/f64.c b/libkc3/f64.c
index 824d15b..44fb218 100644
--- a/libkc3/f64.c
+++ b/libkc3/f64.c
@@ -27,7 +27,7 @@ f64 * f64_init_cast (f64 *x, const s_sym * const *type, const s_tag *tag)
assert(tag);
switch (tag->type) {
case TAG_BOOL:
- *x = tag->data.bool ? 1.0 : 0.0;
+ *x = tag->data.bool_ ? 1.0 : 0.0;
return x;
case TAG_CHARACTER:
*x = (f64) tag->data.character;
diff --git a/libkc3/hash.c b/libkc3/hash.c
index d69bade..c5974f1 100644
--- a/libkc3/hash.c
+++ b/libkc3/hash.c
@@ -490,7 +490,7 @@ bool hash_update_tag (t_hash *hash, const s_tag *tag)
switch (tag->type) {
case TAG_ARRAY: return hash_update_array(hash, &tag->data.array);
case TAG_BLOCK: return hash_update_block(hash, &tag->data.block);
- case TAG_BOOL: return hash_update_bool(hash, &tag->data.bool);
+ case TAG_BOOL: return hash_update_bool(hash, &tag->data.bool_);
case TAG_CALL: return hash_update_call(hash, &tag->data.call);
case TAG_CALLABLE:
return hash_update_callable(hash, tag->data.callable);
diff --git a/libkc3/integer.c b/libkc3/integer.c
index 86980b0..6b41654 100644
--- a/libkc3/integer.c
+++ b/libkc3/integer.c
@@ -142,7 +142,7 @@ s_integer * integer_init_cast (s_integer *a, const s_sym * const *type,
(void) type;
switch (tag->type) {
case TAG_BOOL:
- return integer_init_u8(a, tag->data.bool ? 1 : 0);
+ return integer_init_u8(a, tag->data.bool_ ? 1 : 0);
case TAG_CHARACTER:
return integer_init_u32(a, tag->data.character);
case TAG_F32:
diff --git a/libkc3/kc3.c b/libkc3/kc3.c
index 1c795e6..0c7645f 100644
--- a/libkc3/kc3.c
+++ b/libkc3/kc3.c
@@ -422,7 +422,7 @@ s_tag * kc3_if_then_else (s_tag *cond, s_tag *then,
const s_sym *type;
if (env_eval_tag(g_kc3_env, cond, &cond_eval)) {
if (cond_eval.type == TAG_BOOL)
- cond_bool = cond_eval.data.bool;
+ cond_bool = cond_eval.data.bool_;
else {
type = &g_sym_Bool;
if (! bool_init_cast(&cond_bool, &type, &cond_eval)) {
diff --git a/libkc3/list_init.c b/libkc3/list_init.c
index 9861e72..997029e 100644
--- a/libkc3/list_init.c
+++ b/libkc3/list_init.c
@@ -64,17 +64,6 @@ s_list * list_init_array_copy (s_list *list, const s_array *a,
return list;
}
-s_list * list_init_bool (s_list *list, bool b, s_list *next)
-{
- s_list tmp = {0};
- assert(list);
- list_init(&tmp, next);
- if (! tag_init_bool(&tmp.tag, b))
- return NULL;
- *list = tmp;
- return list;
-}
-
s_list * list_init_call (s_list *list, s_list *next)
{
s_list tmp = {0};
@@ -687,19 +676,6 @@ s_list * list_new_array_copy (const s_array *a, s_list *next)
return list;
}
-s_list * list_new_bool (bool b, s_list *next)
-{
- s_list *list;
- list = list_new(next);
- if (! list)
- return NULL;
- if (! tag_init_bool(&list->tag, b)) {
- free(list);
- return NULL;
- }
- return list;
-}
-
s_list * list_new_call (s_list *next)
{
s_list *list;
diff --git a/libkc3/ncpu.cxx b/libkc3/ncpu.cxx
deleted file mode 100644
index da2b373..0000000
--- a/libkc3/ncpu.cxx
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 "ncpu.hxx"
-
-sw ncpu (void) {
- return std::thread::hardware_concurrency();
-}
diff --git a/libkc3/ncpu.hxx b/libkc3/ncpu.hxx
deleted file mode 100644
index bc9aa9f..0000000
--- a/libkc3/ncpu.hxx
+++ /dev/null
@@ -1,30 +0,0 @@
-/* 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.
- */
-/**
- * @file ncpu.hh
- * @brief Number of CPUs and threads.
- *
- * Function that returns the number of CPU cores and threads.
- */
-#ifndef LIBKC3_NCPU_HXX
-#define LIBKC3_NCPU_HXX
-
-extern "C" {
-
-#include "types.h"
-
- sw ncpu (void);
-
-}
-
-#endif /* LIBKC3_NCPU_HXX */
diff --git a/libkc3/s.c.in b/libkc3/s.c.in
index 368ed1e..8ed1dee 100644
--- a/libkc3/s.c.in
+++ b/libkc3/s.c.in
@@ -38,7 +38,7 @@ s_bits$ * s_bits$_init_cast
(void) type;
switch (tag->type) {
case TAG_BOOL:
- *s = tag->data.bool ? 1 : 0;
+ *s = tag->data.bool_ ? 1 : 0;
return s;
case TAG_CHARACTER:
*s = (s_bits$) tag->data.character;
diff --git a/libkc3/s16.c b/libkc3/s16.c
index facdd2d..a8ae795 100644
--- a/libkc3/s16.c
+++ b/libkc3/s16.c
@@ -38,7 +38,7 @@ s16 * s16_init_cast
(void) type;
switch (tag->type) {
case TAG_BOOL:
- *s = tag->data.bool ? 1 : 0;
+ *s = tag->data.bool_ ? 1 : 0;
return s;
case TAG_CHARACTER:
*s = (s16) tag->data.character;
diff --git a/libkc3/s32.c b/libkc3/s32.c
index 9882afc..b49e8e1 100644
--- a/libkc3/s32.c
+++ b/libkc3/s32.c
@@ -38,7 +38,7 @@ s32 * s32_init_cast
(void) type;
switch (tag->type) {
case TAG_BOOL:
- *s = tag->data.bool ? 1 : 0;
+ *s = tag->data.bool_ ? 1 : 0;
return s;
case TAG_CHARACTER:
*s = (s32) tag->data.character;
diff --git a/libkc3/s64.c b/libkc3/s64.c
index 7b4bfb1..47582bf 100644
--- a/libkc3/s64.c
+++ b/libkc3/s64.c
@@ -38,7 +38,7 @@ s64 * s64_init_cast
(void) type;
switch (tag->type) {
case TAG_BOOL:
- *s = tag->data.bool ? 1 : 0;
+ *s = tag->data.bool_ ? 1 : 0;
return s;
case TAG_CHARACTER:
*s = (s64) tag->data.character;
diff --git a/libkc3/s8.c b/libkc3/s8.c
index e6d90c1..320d8b9 100644
--- a/libkc3/s8.c
+++ b/libkc3/s8.c
@@ -38,7 +38,7 @@ s8 * s8_init_cast
(void) type;
switch (tag->type) {
case TAG_BOOL:
- *s = tag->data.bool ? 1 : 0;
+ *s = tag->data.bool_ ? 1 : 0;
return s;
case TAG_CHARACTER:
*s = (s8) tag->data.character;
diff --git a/libkc3/serialize.c b/libkc3/serialize.c
index faa4f5a..2643603 100644
--- a/libkc3/serialize.c
+++ b/libkc3/serialize.c
@@ -107,7 +107,7 @@ DEF_SERIALIZE(sw)
s_serialize * serialize_tag (s_serialize *serialize, const s_tag *tag)
{
switch (tag->type){
- case TAG_BOOL: return serialize_bool(serialize, tag->data.bool);
+ case TAG_BOOL: return serialize_bool(serialize, tag->data.bool_);
case TAG_CHARACTER:
return serialize_character(serialize, tag->data.character);
case TAG_S8: return serialize_s8(serialize, tag->data.s8);
diff --git a/libkc3/sources.mk b/libkc3/sources.mk
index 50ed622..e75642d 100644
--- a/libkc3/sources.mk
+++ b/libkc3/sources.mk
@@ -661,6 +661,3 @@ LO_SOURCES = \
"void.c" \
"wait.c" \
-SOURCES_CXX = \
- "ncpu.cxx" \
-
diff --git a/libkc3/sources.sh b/libkc3/sources.sh
index eafd60c..0dd0903 100644
--- a/libkc3/sources.sh
+++ b/libkc3/sources.sh
@@ -2,4 +2,3 @@
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 deserialize.h env.h env_fork.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 mutex.h operator.h pcomplex.h pcow.h pretty.h ptag.h ptr.h ptr_free.h queue.h quote.h ratio.h rwlock.h s16.h s32.h s64.h s8.h sequence.h serialize.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 wait.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 deserialize.c env.c env_fork.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 mutex.c operator.c pcomplex.c pcow.c pretty.c ptag.c ptr.c ptr_free.c queue.c quote.c ratio.c rwlock.c s16.c s32.c s64.c s8.c sequence.c serialize.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 wait.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 deserialize.c env.c env_fork.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 mutex.c operator.c pcomplex.c pcow.c pretty.c ptag.c ptr.c ptr_free.c queue.c quote.c ratio.c rwlock.c s16.c s32.c s64.c s8.c sequence.c serialize.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 wait.c '
-SOURCES_CXX='ncpu.cxx '
diff --git a/libkc3/std.cxx b/libkc3/std.cxx
new file mode 100644
index 0000000..7026a4f
--- /dev/null
+++ b/libkc3/std.cxx
@@ -0,0 +1,22 @@
+/* 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 <thread>
+#include "std.hxx"
+
+extern "C" {
+
+ sw std_thread_hardware_concurrency (void) {
+ return std::thread::hardware_concurrency();
+ }
+
+}
diff --git a/libkc3/std.hxx b/libkc3/std.hxx
new file mode 100644
index 0000000..c455e79
--- /dev/null
+++ b/libkc3/std.hxx
@@ -0,0 +1,34 @@
+/* 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.
+ */
+/**
+ * @file std.hxx
+ * @brief Standard C++ library.
+ *
+ * Functions of the C++ std:: library.
+ */
+#ifndef LIBKC3_STD_HXX
+#define LIBKC3_STD_HXX
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+sw std_thread_hardware_concurrency (void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LIBKC3_STD_HXX */
diff --git a/libkc3/str.c b/libkc3/str.c
index 0868519..29db4df 100644
--- a/libkc3/str.c
+++ b/libkc3/str.c
@@ -368,7 +368,7 @@ s_str * str_init_cast (s_str *str, const s_sym * const *type,
case TAG_ARRAY:
return str_init_array(str, &tag->data.array);
case TAG_BOOL:
- return str_init_bool(str, tag->data.bool);
+ return str_init_bool(str, tag->data.bool_);
case TAG_CALLABLE:
return str_init_callable(str, tag->data.callable);
case TAG_CHARACTER:
diff --git a/libkc3/sw.c b/libkc3/sw.c
index ae9dfb3..1060bf7 100644
--- a/libkc3/sw.c
+++ b/libkc3/sw.c
@@ -38,7 +38,7 @@ sw * sw_init_cast
(void) type;
switch (tag->type) {
case TAG_BOOL:
- *s = tag->data.bool ? 1 : 0;
+ *s = tag->data.bool_ ? 1 : 0;
return s;
case TAG_CHARACTER:
*s = (sw) tag->data.character;
diff --git a/libkc3/tag.c b/libkc3/tag.c
index 9b35f58..7f719c9 100644
--- a/libkc3/tag.c
+++ b/libkc3/tag.c
@@ -107,6 +107,12 @@ s_tag * tag_assign (s_tag *tag, s_tag *value, s_tag *dest)
return NULL;
}
+s_tag * tag_bool (s_tag *tag, bool b)
+{
+ tag_clean(tag);
+ return tag_init_bool(tag, b);
+}
+
s_tag * tag_brackets (s_tag *tag, s_tag *address, s_tag *dest)
{
assert(tag);
@@ -365,6 +371,15 @@ s_tag * tag_init_1 (s_tag *tag, const char *p)
return tag;
}
+s_tag * tag_init_bool (s_tag *tag, bool b)
+{
+ s_tag tmp = {0};
+ tmp.type = TAG_BOOL;
+ tmp.data.bool_ = b;
+ *tag = tmp;
+ return tag;
+}
+
s_tag * tag_init_call_cast (s_tag *tag, const s_sym *type)
{
s_tag tmp = {0};
@@ -458,7 +473,7 @@ s_tag * tag_init_copy (s_tag *tag, s_tag *src)
return tag;
case TAG_BOOL:
tag->type = src->type;
- tag->data.bool = src->data.bool;
+ tag->data.bool_ = src->data.bool_;
return tag;
case TAG_BLOCK:
tag->type = src->type;
@@ -1094,7 +1109,7 @@ bool tag_to_const_pointer (s_tag *tag, const s_sym *type,
switch (tag_type) {
case TAG_ARRAY: *dest = &tag->data.array; return true;
case TAG_BLOCK: *dest = &tag->data.block; return true;
- case TAG_BOOL: *dest = &tag->data.bool; return true;
+ case TAG_BOOL: *dest = &tag->data.bool_; return true;
case TAG_CALL: *dest = &tag->data.call; return true;
case TAG_CALLABLE: *dest = &tag->data.callable; return true;
case TAG_CHARACTER: *dest = &tag->data.character; return true;
@@ -1176,7 +1191,7 @@ bool tag_to_ffi_pointer (s_tag *tag, const s_sym *type, void **dest)
goto invalid_cast;
case TAG_BOOL:
if (type == &g_sym_Bool) {
- *dest = &tag->data.bool;
+ *dest = &tag->data.bool_;
return true;
}
goto invalid_cast;
@@ -1466,7 +1481,7 @@ bool tag_to_pointer (s_tag *tag, const s_sym *type, void **dest)
switch (tag_type) {
case TAG_ARRAY: *dest = &tag->data.array; return true;
case TAG_BLOCK: *dest = &tag->data.block; return true;
- case TAG_BOOL: *dest = &tag->data.bool; return true;
+ case TAG_BOOL: *dest = &tag->data.bool_; return true;
case TAG_CALL: *dest = &tag->data.call; return true;
case TAG_CALLABLE: *dest = &tag->data.callable; return true;
case TAG_CHARACTER: *dest = &tag->data.character; return true;
diff --git a/libkc3/tag_bor.c b/libkc3/tag_bor.c
index 9acefda..d7a6263 100644
--- a/libkc3/tag_bor.c
+++ b/libkc3/tag_bor.c
@@ -317,7 +317,7 @@ s_tag * tag_bor (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_u8(result, a->data.u8 |
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_u32(result, a->data.u8 | b->data.character);
case TAG_INTEGER:
@@ -354,7 +354,7 @@ s_tag * tag_bor (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_u16(result, a->data.u16 |
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_u32(result, a->data.u16 | b->data.character);
case TAG_INTEGER:
@@ -391,7 +391,7 @@ s_tag * tag_bor (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_u32(result, a->data.u32 |
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_u32(result, a->data.u32 | b->data.character);
case TAG_INTEGER:
@@ -428,7 +428,7 @@ s_tag * tag_bor (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_u64(result, a->data.u64 |
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_u64(result, a->data.u64 | b->data.character);
case TAG_INTEGER:
@@ -525,7 +525,7 @@ s_tag * tag_bor (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_uw(result, a->data.uw |
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_uw(result, a->data.uw | b->data.character);
case TAG_INTEGER:
diff --git a/libkc3/tag_bxor.c b/libkc3/tag_bxor.c
index f817c78..35b0bc6 100644
--- a/libkc3/tag_bxor.c
+++ b/libkc3/tag_bxor.c
@@ -317,7 +317,7 @@ s_tag * tag_bxor (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_u8(result, a->data.u8 ^
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_u32(result, a->data.u8 ^ b->data.character);
case TAG_INTEGER:
@@ -354,7 +354,7 @@ s_tag * tag_bxor (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_u16(result, a->data.u16 ^
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_u32(result, a->data.u16 ^ b->data.character);
case TAG_INTEGER:
@@ -391,7 +391,7 @@ s_tag * tag_bxor (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_u32(result, a->data.u32 ^
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_u32(result, a->data.u32 ^ b->data.character);
case TAG_INTEGER:
@@ -428,7 +428,7 @@ s_tag * tag_bxor (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_u64(result, a->data.u64 ^
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_u64(result, a->data.u64 ^ b->data.character);
case TAG_INTEGER:
@@ -525,7 +525,7 @@ s_tag * tag_bxor (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_uw(result, a->data.uw ^
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_uw(result, a->data.uw ^ b->data.character);
case TAG_INTEGER:
diff --git a/libkc3/tag_init.c b/libkc3/tag_init.c
index 9cbd8b3..986e2d4 100644
--- a/libkc3/tag_init.c
+++ b/libkc3/tag_init.c
@@ -65,16 +65,6 @@ s_tag * tag_init_array_copy (s_tag *tag, const s_array *a)
return tag;
}
-s_tag * tag_init_bool (s_tag *tag, bool b)
-{
- s_tag tmp = {0};
- assert(tag);
- tmp.type = TAG_BOOL;
- tmp.data.bool = b;
- *tag = tmp;
- return tag;
-}
-
s_tag * tag_init_call (s_tag *tag)
{
s_tag tmp = {0};
@@ -667,17 +657,6 @@ s_tag * tag_new_array_copy (const s_array *a)
return tag;
}
-s_tag * tag_new_bool (bool b)
-{
- s_tag *tag;
- tag = alloc(sizeof(s_tag));
- if (! tag)
- return NULL;
- tag->type = TAG_BOOL;
- tag->data.bool = b;
- return tag;
-}
-
s_tag * tag_new_call (void)
{
s_tag *tag;
@@ -1381,17 +1360,6 @@ s_tag * tag_array_copy (s_tag *tag, const s_array *a)
return tag;
}
-s_tag * tag_bool (s_tag *tag, bool b)
-{
- s_tag tmp = {0};
- assert(tag);
- tag_clean(tag);
- tmp.type = TAG_BOOL;
- tmp.data.bool = b;
- *tag = tmp;
- return tag;
-}
-
s_tag * tag_call (s_tag *tag)
{
s_tag tmp = {0};
diff --git a/libkc3/tag_init.rb b/libkc3/tag_init.rb
index 2811da2..c097f26 100644
--- a/libkc3/tag_init.rb
+++ b/libkc3/tag_init.rb
@@ -298,8 +298,8 @@ class TagInitList
Arg.new("const uw *", "dimensions")]),
TagInit.new("array", "copy", "TAG_ARRAY", :init_mode_init,
[Arg.new("const s_array *", "a")]),
- TagInit.new("bool", "TAG_BOOL", :init_mode_direct,
- [Arg.new("bool", "b")]),
+ TagInitProto.new("bool", "TAG_BOOL", :init_mode_direct,
+ [Arg.new("bool", "b")]),
TagInit.new("call", "TAG_CALL", :init_mode_init, []),
TagInitProto.new("callable", "TAG_CALLABLE", :init_mode_init, []),
TagInitProto.new("callable", "copy", "TAG_CALLABLE", :init_mode_init,
diff --git a/libkc3/tag_shift_left.c b/libkc3/tag_shift_left.c
index 9c2872f..c7de356 100644
--- a/libkc3/tag_shift_left.c
+++ b/libkc3/tag_shift_left.c
@@ -21,40 +21,40 @@ s_tag * tag_shift_left (s_tag *a, s_tag *b, s_tag *result)
s_tag tmp_a;
switch (a->type) {
case TAG_BOOL:
- tmp_a.data.bool = a->data.bool ? 1 : 0;
+ tmp_a.data.bool_ = a->data.bool_ ? 1 : 0;
switch (b->type) {
case TAG_BOOL:
- return tag_init_bool(result, tmp_a.data.bool <<
- (b->data.bool ? 1 : 0));
+ return tag_init_bool(result, tmp_a.data.bool_ <<
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
- return tag_init_bool(result, tmp_a.data.bool << b->data.character);
+ return tag_init_bool(result, tmp_a.data.bool_ << b->data.character);
case TAG_INTEGER:
- integer_init_u8(&tmp, tmp_a.data.bool);
+ integer_init_u8(&tmp, tmp_a.data.bool_);
integer_lshift(&tmp, integer_to_sw(&b->data.integer), &tmp2);
tag_init_bool(result, integer_to_u8(&tmp2));
integer_clean(&tmp);
integer_clean(&tmp2);
return result;
case TAG_SW:
- return tag_init_bool(result, tmp_a.data.bool << b->data.sw);
+ return tag_init_bool(result, tmp_a.data.bool_ << b->data.sw);
case TAG_S64:
- return tag_init_bool(result, tmp_a.data.bool << b->data.s64);
+ return tag_init_bool(result, tmp_a.data.bool_ << b->data.s64);
case TAG_S32:
- return tag_init_bool(result, tmp_a.data.bool << b->data.s32);
+ return tag_init_bool(result, tmp_a.data.bool_ << b->data.s32);
case TAG_S16:
- return tag_init_bool(result, tmp_a.data.bool << b->data.s16);
+ return tag_init_bool(result, tmp_a.data.bool_ << b->data.s16);
case TAG_S8:
- return tag_init_bool(result, tmp_a.data.bool << b->data.s8);
+ return tag_init_bool(result, tmp_a.data.bool_ << b->data.s8);
case TAG_U8:
- return tag_init_bool(result, tmp_a.data.bool << b->data.u8);
+ return tag_init_bool(result, tmp_a.data.bool_ << b->data.u8);
case TAG_U16:
- return tag_init_bool(result, tmp_a.data.bool << b->data.u16);
+ return tag_init_bool(result, tmp_a.data.bool_ << b->data.u16);
case TAG_U32:
- return tag_init_bool(result, tmp_a.data.bool << b->data.u32);
+ return tag_init_bool(result, tmp_a.data.bool_ << b->data.u32);
case TAG_U64:
- return tag_init_bool(result, tmp_a.data.bool << b->data.u64);
+ return tag_init_bool(result, tmp_a.data.bool_ << b->data.u64);
case TAG_UW:
- return tag_init_bool(result, tmp_a.data.bool << b->data.uw);
+ return tag_init_bool(result, tmp_a.data.bool_ << b->data.uw);
default:
goto error;
}
@@ -63,7 +63,7 @@ s_tag * tag_shift_left (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_character(result, a->data.character <<
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_character(result, a->data.character << b->data.character);
case TAG_INTEGER:
@@ -101,7 +101,7 @@ s_tag * tag_shift_left (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
result->type = TAG_INTEGER;
- integer_lshift(&a->data.integer, b->data.bool ? 1 : 0,
+ integer_lshift(&a->data.integer, b->data.bool_ ? 1 : 0,
&result->data.integer);
return result;
case TAG_CHARACTER:
@@ -163,7 +163,7 @@ s_tag * tag_shift_left (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_sw(result, a->data.sw <<
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_sw(result, a->data.sw << b->data.character);
case TAG_INTEGER:
@@ -201,7 +201,7 @@ s_tag * tag_shift_left (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_s64(result, a->data.s64 <<
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_s64(result, a->data.s64 << b->data.character);
case TAG_INTEGER:
@@ -239,7 +239,7 @@ s_tag * tag_shift_left (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_s32(result, a->data.s32 <<
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_s32(result, a->data.s32 << b->data.character);
case TAG_INTEGER:
@@ -277,7 +277,7 @@ s_tag * tag_shift_left (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_s16(result, a->data.s16 <<
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_s16(result, a->data.s16 << b->data.character);
case TAG_INTEGER:
@@ -315,7 +315,7 @@ s_tag * tag_shift_left (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_s8(result, a->data.s8 <<
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_s8(result, a->data.s8 << b->data.character);
case TAG_INTEGER:
@@ -353,7 +353,7 @@ s_tag * tag_shift_left (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_u8(result, a->data.u8 <<
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_u8(result, a->data.u8 << b->data.character);
case TAG_INTEGER:
@@ -391,7 +391,7 @@ s_tag * tag_shift_left (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_u16(result, a->data.u16 <<
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_u16(result, a->data.u16 << b->data.character);
case TAG_INTEGER:
@@ -429,7 +429,7 @@ s_tag * tag_shift_left (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_u32(result, a->data.u32 <<
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_u32(result, a->data.u32 << b->data.character);
case TAG_INTEGER:
@@ -467,7 +467,7 @@ s_tag * tag_shift_left (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_u64(result, a->data.u64 <<
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_u64(result, a->data.u64 << b->data.character);
case TAG_INTEGER:
@@ -505,7 +505,7 @@ s_tag * tag_shift_left (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_uw(result, a->data.uw <<
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_uw(result, a->data.uw << b->data.character);
case TAG_INTEGER:
diff --git a/libkc3/tag_shift_right.c b/libkc3/tag_shift_right.c
index be6242d..5294ab3 100644
--- a/libkc3/tag_shift_right.c
+++ b/libkc3/tag_shift_right.c
@@ -21,40 +21,40 @@ s_tag * tag_shift_right (s_tag *a, s_tag *b, s_tag *result)
s_tag tmp_a;
switch (a->type) {
case TAG_BOOL:
- tmp_a.data.bool = a->data.bool ? 1 : 0;
+ tmp_a.data.bool_ = a->data.bool_ ? 1 : 0;
switch (b->type) {
case TAG_BOOL:
- return tag_init_bool(result, tmp_a.data.bool >>
- (b->data.bool ? 1 : 0));
+ return tag_init_bool(result, tmp_a.data.bool_ >>
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
- return tag_init_bool(result, tmp_a.data.bool >> b->data.character);
+ return tag_init_bool(result, tmp_a.data.bool_ >> b->data.character);
case TAG_INTEGER:
- integer_init_u8(&tmp, tmp_a.data.bool);
+ integer_init_u8(&tmp, tmp_a.data.bool_);
integer_lshift(&tmp, -integer_to_sw(&b->data.integer), &tmp2);
tag_init_bool(result, integer_to_u8(&tmp2));
integer_clean(&tmp);
integer_clean(&tmp2);
return result;
case TAG_SW:
- return tag_init_bool(result, tmp_a.data.bool >> b->data.sw);
+ return tag_init_bool(result, tmp_a.data.bool_ >> b->data.sw);
case TAG_S64:
- return tag_init_bool(result, tmp_a.data.bool >> b->data.s64);
+ return tag_init_bool(result, tmp_a.data.bool_ >> b->data.s64);
case TAG_S32:
- return tag_init_bool(result, tmp_a.data.bool >> b->data.s32);
+ return tag_init_bool(result, tmp_a.data.bool_ >> b->data.s32);
case TAG_S16:
- return tag_init_bool(result, tmp_a.data.bool >> b->data.s16);
+ return tag_init_bool(result, tmp_a.data.bool_ >> b->data.s16);
case TAG_S8:
- return tag_init_bool(result, tmp_a.data.bool >> b->data.s8);
+ return tag_init_bool(result, tmp_a.data.bool_ >> b->data.s8);
case TAG_U8:
- return tag_init_bool(result, tmp_a.data.bool >> b->data.u8);
+ return tag_init_bool(result, tmp_a.data.bool_ >> b->data.u8);
case TAG_U16:
- return tag_init_bool(result, tmp_a.data.bool >> b->data.u16);
+ return tag_init_bool(result, tmp_a.data.bool_ >> b->data.u16);
case TAG_U32:
- return tag_init_bool(result, tmp_a.data.bool >> b->data.u32);
+ return tag_init_bool(result, tmp_a.data.bool_ >> b->data.u32);
case TAG_U64:
- return tag_init_bool(result, tmp_a.data.bool >> b->data.u64);
+ return tag_init_bool(result, tmp_a.data.bool_ >> b->data.u64);
case TAG_UW:
- return tag_init_bool(result, tmp_a.data.bool >> b->data.uw);
+ return tag_init_bool(result, tmp_a.data.bool_ >> b->data.uw);
default:
goto error;
}
@@ -63,7 +63,7 @@ s_tag * tag_shift_right (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_character(result, a->data.character >>
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_character(result, a->data.character >> b->data.character);
case TAG_INTEGER:
@@ -101,7 +101,7 @@ s_tag * tag_shift_right (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
result->type = TAG_INTEGER;
- integer_lshift(&a->data.integer, b->data.bool ? -1 : 0,
+ integer_lshift(&a->data.integer, b->data.bool_ ? -1 : 0,
&result->data.integer);
return result;
case TAG_CHARACTER:
@@ -163,7 +163,7 @@ s_tag * tag_shift_right (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_sw(result, a->data.sw >>
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_sw(result, a->data.sw >> b->data.character);
case TAG_INTEGER:
@@ -201,7 +201,7 @@ s_tag * tag_shift_right (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_s64(result, a->data.s64 >>
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_s64(result, a->data.s64 >> b->data.character);
case TAG_INTEGER:
@@ -239,7 +239,7 @@ s_tag * tag_shift_right (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_s32(result, a->data.s32 >>
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_s32(result, a->data.s32 >> b->data.character);
case TAG_INTEGER:
@@ -277,7 +277,7 @@ s_tag * tag_shift_right (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_s16(result, a->data.s16 >>
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_s16(result, a->data.s16 >> b->data.character);
case TAG_INTEGER:
@@ -315,7 +315,7 @@ s_tag * tag_shift_right (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_s8(result, a->data.s8 >>
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_s8(result, a->data.s8 >> b->data.character);
case TAG_INTEGER:
@@ -353,7 +353,7 @@ s_tag * tag_shift_right (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_u8(result, a->data.u8 >>
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_u8(result, a->data.u8 >> b->data.character);
case TAG_INTEGER:
@@ -391,7 +391,7 @@ s_tag * tag_shift_right (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_u16(result, a->data.u16 >>
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_u16(result, a->data.u16 >> b->data.character);
case TAG_INTEGER:
@@ -429,7 +429,7 @@ s_tag * tag_shift_right (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_u32(result, a->data.u32 >>
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_u32(result, a->data.u32 >> b->data.character);
case TAG_INTEGER:
@@ -467,7 +467,7 @@ s_tag * tag_shift_right (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_u64(result, a->data.u64 >>
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_u64(result, a->data.u64 >> b->data.character);
case TAG_INTEGER:
@@ -505,7 +505,7 @@ s_tag * tag_shift_right (s_tag *a, s_tag *b, s_tag *result)
switch (b->type) {
case TAG_BOOL:
return tag_init_uw(result, a->data.uw >>
- (b->data.bool ? 1 : 0));
+ (b->data.bool_ ? 1 : 0));
case TAG_CHARACTER:
return tag_init_uw(result, a->data.uw >> b->data.character);
case TAG_INTEGER:
diff --git a/libkc3/types.h b/libkc3/types.h
index d0d0c85..792593a 100644
--- a/libkc3/types.h
+++ b/libkc3/types.h
@@ -24,6 +24,10 @@
#include "sha1.h"
#include "../libtommath/tommath.h"
+#ifdef __cplusplus
+extern "C" {
+#else
+
#ifdef bool
# undef bool
#endif
@@ -53,6 +57,8 @@
# endif
#endif
+#endif /* __cplusplus */
+
/* Basic integer types. */
typedef int8_t s8;
typedef int16_t s16;
@@ -95,14 +101,23 @@ typedef double f64;
typedef long double f128;
/* Boolean : true or false. */
+#ifdef __cplusplus
+typedef u8 BOOL;
+#else
typedef u8 bool;
+#endif
/* enums */
+
+#ifndef __cplusplus
+
typedef enum {
false = 0,
true = 1
} e_bool;
+#endif /* __cplusplus */
+
typedef enum {
CALLABLE_VOID = 0,
CALLABLE_CFN,
@@ -199,7 +214,7 @@ typedef struct list s_list_map;
typedef struct log s_log;
typedef struct map s_map;
typedef struct mutex s_mutex;
-typedef struct operator s_operator;
+typedef struct operator_ s_operator;
typedef struct pretty s_pretty;
typedef struct pretty_save s_pretty_save;
typedef struct queue s_queue;
@@ -567,7 +582,7 @@ struct callable {
union tag_data {
s_array array;
s_block block;
- bool bool;
+ bool bool_;
s_call call;
p_callable callable;
character character;
@@ -659,7 +674,7 @@ struct list {
s_tag next;
};
-struct operator {
+struct operator_ {
const s_sym *sym;
const s_sym *operator_associativity;
sw operator_precedence;
@@ -804,4 +819,8 @@ struct facts_with_cursor {
s_mutex mutex;
};
+#ifdef __cplusplus
+}
+#endif
+
#endif /* LIBKC3_TYPES_H */
diff --git a/libkc3/u.c.in b/libkc3/u.c.in
index 4547c92..51d6bd7 100644
--- a/libkc3/u.c.in
+++ b/libkc3/u.c.in
@@ -37,7 +37,7 @@ u_bits$ * u_bits$_init_cast
(void) type;
switch (tag->type) {
case TAG_BOOL:
- *u = tag->data.bool ? 1 : 0;
+ *u = tag->data.bool_ ? 1 : 0;
return u;
case TAG_CHARACTER:
*u = (u_bits$) tag->data.character;
diff --git a/libkc3/u16.c b/libkc3/u16.c
index 193257f..de8a8c9 100644
--- a/libkc3/u16.c
+++ b/libkc3/u16.c
@@ -37,7 +37,7 @@ u16 * u16_init_cast
(void) type;
switch (tag->type) {
case TAG_BOOL:
- *u = tag->data.bool ? 1 : 0;
+ *u = tag->data.bool_ ? 1 : 0;
return u;
case TAG_CHARACTER:
*u = (u16) tag->data.character;
diff --git a/libkc3/u32.c b/libkc3/u32.c
index 82a9af2..a059750 100644
--- a/libkc3/u32.c
+++ b/libkc3/u32.c
@@ -37,7 +37,7 @@ u32 * u32_init_cast
(void) type;
switch (tag->type) {
case TAG_BOOL:
- *u = tag->data.bool ? 1 : 0;
+ *u = tag->data.bool_ ? 1 : 0;
return u;
case TAG_CHARACTER:
*u = (u32) tag->data.character;
diff --git a/libkc3/u64.c b/libkc3/u64.c
index 33d84c4..b69f2d0 100644
--- a/libkc3/u64.c
+++ b/libkc3/u64.c
@@ -37,7 +37,7 @@ u64 * u64_init_cast
(void) type;
switch (tag->type) {
case TAG_BOOL:
- *u = tag->data.bool ? 1 : 0;
+ *u = tag->data.bool_ ? 1 : 0;
return u;
case TAG_CHARACTER:
*u = (u64) tag->data.character;
diff --git a/libkc3/u8.c b/libkc3/u8.c
index b7b166c..9288f68 100644
--- a/libkc3/u8.c
+++ b/libkc3/u8.c
@@ -37,7 +37,7 @@ u8 * u8_init_cast
(void) type;
switch (tag->type) {
case TAG_BOOL:
- *u = tag->data.bool ? 1 : 0;
+ *u = tag->data.bool_ ? 1 : 0;
return u;
case TAG_CHARACTER:
*u = (u8) tag->data.character;
diff --git a/libkc3/update_sources b/libkc3/update_sources
index 4883813..91ac7be 100755
--- a/libkc3/update_sources
+++ b/libkc3/update_sources
@@ -124,8 +124,8 @@ LO_SOURCES="$SOURCES
"
sources LO_SOURCES "$LO_SOURCES"
-SOURCES_CXX="$(ls *.cxx)"
-sources SOURCES_CXX "$SOURCES_CXX"
+#SOURCES_CXX="$(ls *.cxx)"
+#sources SOURCES_CXX "$SOURCES_CXX"
update_sources_mk
update_sources_sh
diff --git a/libkc3/uw.c b/libkc3/uw.c
index dc5a4c4..bb378d1 100644
--- a/libkc3/uw.c
+++ b/libkc3/uw.c
@@ -37,7 +37,7 @@ uw * uw_init_cast
(void) type;
switch (tag->type) {
case TAG_BOOL:
- *u = tag->data.bool ? 1 : 0;
+ *u = tag->data.bool_ ? 1 : 0;
return u;
case TAG_CHARACTER:
*u = (uw) tag->data.character;
diff --git a/sources.mk b/sources.mk
index c24ea54..4ef6053 100644
--- a/sources.mk
+++ b/sources.mk
@@ -781,8 +781,8 @@ KC3_C_SOURCES = \
"window/window.h" \
KC3_CXX_SOURCES = \
- "libkc3/ncpu.cxx" \
- "libkc3/ncpu.hxx" \
+ "libkc3/std.cxx" \
+ "libkc3/std.hxx" \
KC3_FONT_SOURCES = \
"fonts/Computer Modern/cmunbl-webfont.ttf" \
diff --git a/sources.sh b/sources.sh
index 85909ba..659df00 100644
--- a/sources.sh
+++ b/sources.sh
@@ -2,7 +2,7 @@
KC3_CONFIGURES='ekc3/configure ekc3/sources.sh ekc3/update_sources event/configure event/sources.sh event/update_sources gtk4/configure gtk4/sources.sh gtk4/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 markdown/configure markdown/sources.sh markdown/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 gtk4/Makefile gtk4/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 markdown/Makefile markdown/sources.mk socket/Makefile socket/sources.mk test/Makefile test/httpd/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 gtk4/action_map.c gtk4/action_map.h gtk4/application.c gtk4/application.h gtk4/application_window.c gtk4/application_window.h gtk4/box.c gtk4/box.h gtk4/button.c gtk4/button.h gtk4/entry.c gtk4/entry.h gtk4/entry_buffer.c gtk4/entry_buffer.h gtk4/file.c gtk4/file.h gtk4/frame.c gtk4/frame.h gtk4/kc3_glib.c gtk4/kc3_glib.h gtk4/kc3_gtk4.h gtk4/label.c gtk4/label.h gtk4/list_box.c gtk4/list_box.h gtk4/menu.c gtk4/menu.h gtk4/menu_item.c gtk4/menu_item.h gtk4/object.c gtk4/object.h gtk4/paned.c gtk4/paned.h gtk4/scrolled_window.c gtk4/scrolled_window.h gtk4/signal.c gtk4/signal.h gtk4/simple_action.c gtk4/simple_action.h gtk4/text.c gtk4/text.h gtk4/text_view.c gtk4/text_view.h gtk4/types.h gtk4/widget.c gtk4/widget.h gtk4/window.c gtk4/window.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/deserialize.c libkc3/deserialize.h libkc3/env.c libkc3/env.h libkc3/env_fork.c libkc3/env_fork.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/mutex.c libkc3/mutex.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/rwlock.c libkc3/rwlock.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/serialize.c libkc3/serialize.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 libkc3/wait.c libkc3/wait.h markdown/entity.c markdown/entity.h markdown/markdown.c markdown/markdown.h markdown/md4c-html.c markdown/md4c-html.h markdown/md4c.c markdown/md4c.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_CXX_SOURCES='libkc3/ncpu.cxx libkc3/ncpu.hxx '
+KC3_CXX_SOURCES='libkc3/std.cxx libkc3/std.hxx '
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 fonts/opensans/fonts/noto-set/ttf/OpenSans-Bold.ttf fonts/opensans/fonts/noto-set/ttf/OpenSans-BoldItalic.ttf fonts/opensans/fonts/noto-set/ttf/OpenSans-CondensedBold.ttf fonts/opensans/fonts/noto-set/ttf/OpenSans-CondensedBoldItalic.ttf fonts/opensans/fonts/noto-set/ttf/OpenSans-CondensedExtraBold.ttf fonts/opensans/fonts/noto-set/ttf/OpenSans-CondensedExtraBoldItalic.ttf fonts/opensans/fonts/noto-set/ttf/OpenSans-CondensedItalic.ttf fonts/opensans/fonts/noto-set/ttf/OpenSans-CondensedLight.ttf fonts/opensans/fonts/noto-set/ttf/OpenSans-CondensedLightItalic.ttf fonts/opensans/fonts/noto-set/ttf/OpenSans-CondensedRegular.ttf fonts/opensans/fonts/noto-set/ttf/OpenSans-CondensedSemiBold.ttf fonts/opensans/fonts/noto-set/ttf/OpenSans-CondensedSemiBoldItalic.ttf fonts/opensans/fonts/noto-set/ttf/OpenSans-ExtraBold.ttf fonts/opensans/fonts/noto-set/ttf/OpenSans-ExtraBoldItalic.ttf fonts/opensans/fonts/noto-set/ttf/OpenSans-Italic.ttf fonts/opensans/fonts/noto-set/ttf/OpenSans-Light.ttf fonts/opensans/fonts/noto-set/ttf/OpenSans-LightItalic.ttf fonts/opensans/fonts/noto-set/ttf/OpenSans-Regular.ttf fonts/opensans/fonts/noto-set/ttf/OpenSans-SemiBold.ttf fonts/opensans/fonts/noto-set/ttf/OpenSans-SemiBoldItalic.ttf fonts/opensans/fonts/noto-set/variable/OpenSans-Italic[wdth,wght].ttf fonts/opensans/fonts/noto-set/variable/OpenSans[wdth,wght].ttf fonts/opensans/fonts/ttf/OpenSans-Bold.ttf fonts/opensans/fonts/ttf/OpenSans-BoldItalic.ttf fonts/opensans/fonts/ttf/OpenSans-CondensedBold.ttf fonts/opensans/fonts/ttf/OpenSans-CondensedBoldItalic.ttf fonts/opensans/fonts/ttf/OpenSans-CondensedExtraBold.ttf fonts/opensans/fonts/ttf/OpenSans-CondensedExtraBoldItalic.ttf fonts/opensans/fonts/ttf/OpenSans-CondensedItalic.ttf fonts/opensans/fonts/ttf/OpenSans-CondensedLight.ttf fonts/opensans/fonts/ttf/OpenSans-CondensedLightItalic.ttf fonts/opensans/fonts/ttf/OpenSans-CondensedRegular.ttf fonts/opensans/fonts/ttf/OpenSans-CondensedSemiBold.ttf fonts/opensans/fonts/ttf/OpenSans-CondensedSemiBoldItalic.ttf fonts/opensans/fonts/ttf/OpenSans-ExtraBold.ttf fonts/opensans/fonts/ttf/OpenSans-ExtraBoldItalic.ttf fonts/opensans/fonts/ttf/OpenSans-Italic.ttf fonts/opensans/fonts/ttf/OpenSans-Light.ttf fonts/opensans/fonts/ttf/OpenSans-LightItalic.ttf fonts/opensans/fonts/ttf/OpenSans-Regular.ttf fonts/opensans/fonts/ttf/OpenSans-SemiBold.ttf fonts/opensans/fonts/ttf/OpenSans-SemiBoldItalic.ttf fonts/opensans/fonts/variable/OpenSans-Italic[wdth,wght].ttf fonts/opensans/fonts/variable/OpenSans[wdth,wght].ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Italic-wg300wd100.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Italic-wg300wd75.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Italic-wg400wd100.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Italic-wg400wd75.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Italic-wg600wd100.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Italic-wg600wd75.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Italic-wg700wd100.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Italic-wg700wd75.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Italic-wg800wd100.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Italic-wg800wd75.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Italic.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Roman-wg300wd100.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Roman-wg300wd75.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Roman-wg400wd100.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Roman-wg400wd75.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Roman-wg600wd100.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Roman-wg600wd75.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Roman-wg700wd100.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Roman-wg700wd75.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Roman-wg800wd100.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Roman-wg800wd75.ttf fonts/opensans/original source/TTF_VTT_source/OpenSans-Roman.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/deserialize.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/gtk4.kc3 lib/kc3/0.1/gtk4/action_map.kc3 lib/kc3/0.1/gtk4/application.kc3 lib/kc3/0.1/gtk4/application_window.kc3 lib/kc3/0.1/gtk4/box.kc3 lib/kc3/0.1/gtk4/button.kc3 lib/kc3/0.1/gtk4/entry.kc3 lib/kc3/0.1/gtk4/entry_buffer.kc3 lib/kc3/0.1/gtk4/file.kc3 lib/kc3/0.1/gtk4/frame.kc3 lib/kc3/0.1/gtk4/label.kc3 lib/kc3/0.1/gtk4/list_box.kc3 lib/kc3/0.1/gtk4/menu.kc3 lib/kc3/0.1/gtk4/menu_item.kc3 lib/kc3/0.1/gtk4/object.kc3 lib/kc3/0.1/gtk4/paned.kc3 lib/kc3/0.1/gtk4/scrolled_window.kc3 lib/kc3/0.1/gtk4/simple_action.kc3 lib/kc3/0.1/gtk4/text.kc3 lib/kc3/0.1/gtk4/text_view.kc3 lib/kc3/0.1/gtk4/widget.kc3 lib/kc3/0.1/gtk4/window.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/rwlock.kc3 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/serialize.kc3 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/thread.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 '
diff --git a/test/cfn_test.c b/test/cfn_test.c
index 598735b..a741d16 100644
--- a/test/cfn_test.c
+++ b/test/cfn_test.c
@@ -58,7 +58,7 @@ TEST_CASE(cfn_apply)
tag_init_bool(&args->tag, false);
TEST_EQ(cfn_apply(&a, args, &result), &result);
TEST_EQ(result.type, TAG_BOOL);
- TEST_EQ(result.data.bool, true);
+ TEST_EQ(result.data.bool_, true);
list_delete_all(args);
cfn_clean(&a);
}