From 20d2db0e27ce95f43949e286e707d125be3f0b9e Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Tue, 2 Sep 2025 23:58:15 +0900 Subject: [PATCH] renamed hcl to hak --- Makefile.am | 22 +- Makefile.in | 86 +- README.md | 11 +- bin/Makefile.am | 22 +- bin/Makefile.in | 126 +- bin/{hcl.c => hak.c} | 548 +- bin/{hclx.c => hakx.c} | 392 +- configure | 274 +- configure.ac | 194 +- go.mod | 2 +- go/cb.go | 124 +- go/hak.go | 487 + go/hcl.go | 487 - go/inst.go | 10 +- lang.txt | 2 +- lib/Makefile.am | 86 +- lib/Makefile.in | 816 +- lib/bigint.c | 3618 ++-- lib/chr.c | 138 +- lib/cmgr.c | 96 +- lib/cnode.c | 170 +- lib/comp.c | 5128 ++--- lib/debug.c | 46 +- lib/decode.c | 780 +- lib/dic.c | 390 +- lib/err.c | 560 +- lib/exec.c | 4928 ++--- lib/fmt-imp.h | 28 +- lib/fmt.c | 1458 +- lib/gc.c | 1338 +- lib/{hcl-cfg.h.in => hak-cfg.h.in} | 326 +- lib/hak-chr.h | 334 + lib/{hcl-cmgr.h => hak-cmgr.h} | 110 +- lib/hak-cmn.h | 1196 + lib/hak-dos.h | 165 + lib/hak-fmt.h | 407 + lib/hak-json.h | 252 + lib/{hcl-mac.h => hak-mac.h} | 46 +- lib/hak-msw.h | 196 + lib/{hcl-opt.h => hak-opt.h} | 84 +- lib/hak-os2.h | 125 + lib/{hcl-pac1.h => hak-pac1.h} | 0 lib/hak-prv.h | 2080 ++ lib/hak-rbt.h | 603 + lib/hak-str.h | 373 + lib/hak-tmr.h | 152 + lib/{hcl-upac.h => hak-upac.h} | 0 lib/hak-utl.h | 901 + lib/hak-x.h | 634 + lib/hak-xma.h | 247 + lib/hak.c | 1019 + lib/hak.h | 3351 +++ lib/hcl-chr.h | 334 - lib/hcl-cmn.h | 1196 - lib/hcl-dos.h | 165 - lib/hcl-fmt.h | 407 - lib/hcl-json.h | 252 - lib/hcl-msw.h | 196 - lib/hcl-os2.h | 125 - lib/hcl-prv.h | 2080 -- lib/hcl-rbt.h | 603 - lib/hcl-str.h | 373 - lib/hcl-tmr.h | 152 - lib/hcl-utl.h | 901 - lib/hcl-x.h | 634 - lib/hcl-xma.h | 247 - lib/hcl.c | 1019 - lib/hcl.h | 3351 --- lib/heap.c | 88 +- lib/json.c | 470 +- lib/mb8.c | 12 +- lib/number.c | 298 +- lib/obj.c | 824 +- lib/opt-impl.h | 22 +- lib/opt.c | 40 +- lib/poll-msw.h | 2 +- lib/prim.c | 1226 +- lib/print.c | 634 +- lib/rbt.c | 460 +- lib/read.c | 2514 +-- lib/std.c | 1952 +- lib/str.c | 272 +- lib/sym.c | 182 +- lib/tmr.c | 142 +- lib/uch-case.h | 4 +- lib/uch-prop.h | 26462 +++++++++++------------ lib/utf16.c | 16 +- lib/utf8.c | 44 +- lib/utl.c | 238 +- lib/x-client.c | 438 +- lib/x-proto.c | 104 +- lib/x-server.c | 1410 +- lib/x-sys.c | 38 +- lib/x-utl-sa.h | 104 +- lib/x-utl.c | 30 +- lib/xchg.c | 612 +- lib/xma.c | 400 +- main.go | 26 +- mod/Makefile.am | 44 +- mod/Makefile.in | 168 +- mod/_core.h | 8 +- mod/_dic.h | 8 +- mod/_sys.h | 8 +- mod/core.c | 492 +- mod/dic.c | 100 +- mod/sys.c | 88 +- pas/Makefile.am | 20 +- pas/Makefile.in | 42 +- pas/{hcl.pas => hak.pas} | 192 +- pas/main.pas | 6 +- src/{Collection.hcl => Collection.hak} | 0 src/{Magnitude.hcl => Magnitude.hak} | 0 src/{System.hcl => System.hak} | 0 src/{kernel.hcl => kernel.hak} | 6 +- t/Makefile.am | 34 +- t/Makefile.in | 66 +- t/{feed-01.hcl => feed-01.hak} | 0 t/{fun-01.hcl => fun-01.hak} | 0 t/{insta-01.hcl => insta-01.hak} | 0 t/{insta-02.hcl => insta-02.hak} | 0 t/{proc-01.hcl => proc-01.hak} | 0 t/{ret-01.hcl => ret-01.hak} | 0 t/{retvar-01.hcl => retvar-01.hak} | 0 t/t-001.c | 28 +- t/{test-bi.hcl => test-bi.hak} | 2 +- t/{va-01.hcl => va-01.hak} | 0 t/{var-01.hcl => var-01.hak} | 0 t/{var-02.hcl => var-02.hak} | 0 t/{var-03.hcl => var-03.hak} | 0 129 files changed, 43690 insertions(+), 43689 deletions(-) rename bin/{hcl.c => hak.c} (52%) rename bin/{hclx.c => hakx.c} (59%) create mode 100644 go/hak.go delete mode 100644 go/hcl.go rename lib/{hcl-cfg.h.in => hak-cfg.h.in} (89%) create mode 100644 lib/hak-chr.h rename lib/{hcl-cmgr.h => hak-cmgr.h} (58%) create mode 100644 lib/hak-cmn.h create mode 100644 lib/hak-dos.h create mode 100644 lib/hak-fmt.h create mode 100644 lib/hak-json.h rename lib/{hcl-mac.h => hak-mac.h} (66%) create mode 100644 lib/hak-msw.h rename lib/{hcl-opt.h => hak-opt.h} (61%) create mode 100644 lib/hak-os2.h rename lib/{hcl-pac1.h => hak-pac1.h} (100%) create mode 100644 lib/hak-prv.h create mode 100644 lib/hak-rbt.h create mode 100644 lib/hak-str.h create mode 100644 lib/hak-tmr.h rename lib/{hcl-upac.h => hak-upac.h} (100%) create mode 100644 lib/hak-utl.h create mode 100644 lib/hak-x.h create mode 100644 lib/hak-xma.h create mode 100644 lib/hak.c create mode 100644 lib/hak.h delete mode 100644 lib/hcl-chr.h delete mode 100644 lib/hcl-cmn.h delete mode 100644 lib/hcl-dos.h delete mode 100644 lib/hcl-fmt.h delete mode 100644 lib/hcl-json.h delete mode 100644 lib/hcl-msw.h delete mode 100644 lib/hcl-os2.h delete mode 100644 lib/hcl-prv.h delete mode 100644 lib/hcl-rbt.h delete mode 100644 lib/hcl-str.h delete mode 100644 lib/hcl-tmr.h delete mode 100644 lib/hcl-utl.h delete mode 100644 lib/hcl-x.h delete mode 100644 lib/hcl-xma.h delete mode 100644 lib/hcl.c delete mode 100644 lib/hcl.h rename pas/{hcl.pas => hak.pas} (65%) rename src/{Collection.hcl => Collection.hak} (100%) rename src/{Magnitude.hcl => Magnitude.hak} (100%) rename src/{System.hcl => System.hak} (100%) rename src/{kernel.hcl => kernel.hak} (97%) rename t/{feed-01.hcl => feed-01.hak} (100%) rename t/{fun-01.hcl => fun-01.hak} (100%) rename t/{insta-01.hcl => insta-01.hak} (100%) rename t/{insta-02.hcl => insta-02.hak} (100%) rename t/{proc-01.hcl => proc-01.hak} (100%) rename t/{ret-01.hcl => ret-01.hak} (100%) rename t/{retvar-01.hcl => retvar-01.hak} (100%) rename t/{test-bi.hcl => test-bi.hak} (95%) rename t/{va-01.hcl => va-01.hak} (100%) rename t/{var-01.hcl => var-01.hak} (100%) rename t/{var-02.hcl => var-02.hak} (100%) rename t/{var-03.hcl => var-03.hak} (100%) diff --git a/Makefile.am b/Makefile.am index b08a4de..904d84e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,7 +1,7 @@ AUTOMAKE_OPTION = foreign ACLOCAL_AMFLAGS = -I m4 -EXTRA_DIST = t t/test-bi.hcl +EXTRA_DIST = t t/test-bi.hak SUBDIRS = @@ -20,7 +20,7 @@ distclean-local: clean-local: rm -rf $(builddir)/go.mod $(builddir)/go.sum -if ENABLE_HCLGO +if ENABLE_HAKGO ## the attempt to compose a proper procedure using a regular compiler failed. ## e.g ./configure GOC=opt/go/pkg/tool/linux_amd64/ @@ -30,17 +30,17 @@ if ENABLE_HCLGO ## the following is to trick autoconf/automake as if it's building go files with ## a real compiler whereas the actual building is done thru `go build` -bin_PROGRAMS = hclgo -hclgo_SOURCES = \ - go/hcl.go \ +bin_PROGRAMS = hakgo +hakgo_SOURCES = \ + go/hak.go \ go/cb.go \ go/inst.go \ main.go \ go.mod -hclgo_DEPENDENCIES = hclgo.bin +hakgo_DEPENDENCIES = hakgo.bin -## let the linker to move hclgo.bin to the actual target -hclgo_LINK = cp -pf hclgo.bin hclgo$(EXEEXT) || echo "FAILED TO LINK" +## let the linker to move hakgo.bin to the actual target +hakgo_LINK = cp -pf hakgo.bin hakgo$(EXEEXT) || echo "FAILED TO LINK" if ENABLE_STATIC CGO_CFLAGS_EXTRA="-static" @@ -50,15 +50,15 @@ CGO_CFLAGS_EXTRA="" CGO_LDFLAGS_EXTRA="" endif -hclgo.bin: lib/libhcl.la $(hclgo_OBJECTS) +hakgo.bin: lib/libhak.la $(hakgo_OBJECTS) cp -pf $(srcdir)/go.mod $(builddir)/go.mod >/dev/null 2>&1 || true chmod u+w $(builddir)/go.mod ## with `make distcheck`, the echo's redirection to the file fails without this permission change [ -f $(srcdir)/go.sum ] && cp -pf $(srcdir)/go.sum $(builddir)/go.sum >/dev/null 2>&1 || true ## --------------------------------------------------------------- CC=$(CC) \ CGO_CFLAGS="-I$(abs_srcdir)/lib -I$(abs_builddir)/lib $(CFLAGS) $(CGO_CFLAGS_EXTRA)" \ - CGO_LDFLAGS="-L$(abs_builddir)/lib -L$(abs_builddir)/lib/.libs -lhcl -ldl $(LIBM) $(CGO_LDFLAGS_EXTRA)" \ - go build -C $(srcdir) -ldflags "-X 'main.BINDIR=$(bindir)' -X 'main.SBINDIR=$(sbindir)' -X 'main.LIBDIR=$(libdir)' -X 'main.SYSCONFDIR=$(sysconfdir)'" -x -o $(abs_builddir)/hclgo.bin -modfile $(abs_builddir)/go.mod + CGO_LDFLAGS="-L$(abs_builddir)/lib -L$(abs_builddir)/lib/.libs -lhak -ldl $(LIBM) $(CGO_LDFLAGS_EXTRA)" \ + go build -C $(srcdir) -ldflags "-X 'main.BINDIR=$(bindir)' -X 'main.SBINDIR=$(sbindir)' -X 'main.LIBDIR=$(libdir)' -X 'main.SYSCONFDIR=$(sysconfdir)'" -x -o $(abs_builddir)/hakgo.bin -modfile $(abs_builddir)/go.mod ## --------------------------------------------------------------- go clean -C $(srcdir) -x -modfile $(abs_builddir)/go.mod diff --git a/Makefile.in b/Makefile.in index 205c4e8..30e6f2b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -92,7 +92,7 @@ build_triplet = @build@ host_triplet = @host@ @ENABLE_STATIC_MODULE_TRUE@am__append_1 = mod lib bin t @ENABLE_STATIC_MODULE_FALSE@am__append_2 = lib mod bin t -@ENABLE_HCLGO_TRUE@bin_PROGRAMS = hclgo$(EXEEXT) +@ENABLE_HAKGO_TRUE@bin_PROGRAMS = hakgo$(EXEEXT) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \ @@ -107,18 +107,18 @@ DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/lib/hcl-cfg.h +CONFIG_HEADER = $(top_builddir)/lib/hak-cfg.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) -am__hclgo_SOURCES_DIST = go/hcl.go go/cb.go go/inst.go main.go go.mod +am__hakgo_SOURCES_DIST = go/hak.go go/cb.go go/inst.go main.go go.mod am__dirstamp = $(am__leading_dot)dirstamp -@ENABLE_HCLGO_TRUE@am_hclgo_OBJECTS = go/hcl.$(OBJEXT) go/cb.$(OBJEXT) \ -@ENABLE_HCLGO_TRUE@ go/inst.$(OBJEXT) main.$(OBJEXT) \ -@ENABLE_HCLGO_TRUE@ go.$(OBJEXT) -hclgo_OBJECTS = $(am_hclgo_OBJECTS) -hclgo_LDADD = $(LDADD) +@ENABLE_HAKGO_TRUE@am_hakgo_OBJECTS = go/hak.$(OBJEXT) go/cb.$(OBJEXT) \ +@ENABLE_HAKGO_TRUE@ go/inst.$(OBJEXT) main.$(OBJEXT) \ +@ENABLE_HAKGO_TRUE@ go.$(OBJEXT) +hakgo_OBJECTS = $(am_hakgo_OBJECTS) +hakgo_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -132,8 +132,8 @@ am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib -SOURCES = $(hclgo_SOURCES) -DIST_SOURCES = $(am__hclgo_SOURCES_DIST) +SOURCES = $(hakgo_SOURCES) +DIST_SOURCES = $(am__hakgo_SOURCES_DIST) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ @@ -256,9 +256,9 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GREP = @GREP@ -HCL_PROJECT_AUTHOR = @HCL_PROJECT_AUTHOR@ -HCL_PROJECT_URL = @HCL_PROJECT_URL@ -HCL_SYS_LIB_SEARCH_PATH_SPEC = @HCL_SYS_LIB_SEARCH_PATH_SPEC@ +HAK_PROJECT_AUTHOR = @HAK_PROJECT_AUTHOR@ +HAK_PROJECT_URL = @HAK_PROJECT_URL@ +HAK_SYS_LIB_SEARCH_PATH_SPEC = @HAK_SYS_LIB_SEARCH_PATH_SPEC@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -367,22 +367,22 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTION = foreign ACLOCAL_AMFLAGS = -I m4 -EXTRA_DIST = t t/test-bi.hcl +EXTRA_DIST = t t/test-bi.hak SUBDIRS = $(am__append_1) $(am__append_2) DIST_SUBDIRS = $(SUBDIRS) pas -@ENABLE_HCLGO_TRUE@hclgo_SOURCES = \ -@ENABLE_HCLGO_TRUE@ go/hcl.go \ -@ENABLE_HCLGO_TRUE@ go/cb.go \ -@ENABLE_HCLGO_TRUE@ go/inst.go \ -@ENABLE_HCLGO_TRUE@ main.go \ -@ENABLE_HCLGO_TRUE@ go.mod +@ENABLE_HAKGO_TRUE@hakgo_SOURCES = \ +@ENABLE_HAKGO_TRUE@ go/hak.go \ +@ENABLE_HAKGO_TRUE@ go/cb.go \ +@ENABLE_HAKGO_TRUE@ go/inst.go \ +@ENABLE_HAKGO_TRUE@ main.go \ +@ENABLE_HAKGO_TRUE@ go.mod -@ENABLE_HCLGO_TRUE@hclgo_DEPENDENCIES = hclgo.bin -@ENABLE_HCLGO_TRUE@hclgo_LINK = cp -pf hclgo.bin hclgo$(EXEEXT) || echo "FAILED TO LINK" -@ENABLE_HCLGO_TRUE@@ENABLE_STATIC_FALSE@CGO_CFLAGS_EXTRA = "" -@ENABLE_HCLGO_TRUE@@ENABLE_STATIC_TRUE@CGO_CFLAGS_EXTRA = "-static" -@ENABLE_HCLGO_TRUE@@ENABLE_STATIC_FALSE@CGO_LDFLAGS_EXTRA = "" -@ENABLE_HCLGO_TRUE@@ENABLE_STATIC_TRUE@CGO_LDFLAGS_EXTRA = "-static" +@ENABLE_HAKGO_TRUE@hakgo_DEPENDENCIES = hakgo.bin +@ENABLE_HAKGO_TRUE@hakgo_LINK = cp -pf hakgo.bin hakgo$(EXEEXT) || echo "FAILED TO LINK" +@ENABLE_HAKGO_TRUE@@ENABLE_STATIC_FALSE@CGO_CFLAGS_EXTRA = "" +@ENABLE_HAKGO_TRUE@@ENABLE_STATIC_TRUE@CGO_CFLAGS_EXTRA = "-static" +@ENABLE_HAKGO_TRUE@@ENABLE_STATIC_FALSE@CGO_LDFLAGS_EXTRA = "" +@ENABLE_HAKGO_TRUE@@ENABLE_STATIC_TRUE@CGO_LDFLAGS_EXTRA = "-static" all: all-recursive .SUFFIXES: @@ -470,13 +470,13 @@ go/$(am__dirstamp): go/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) go/$(DEPDIR) @: >>go/$(DEPDIR)/$(am__dirstamp) -go/hcl.$(OBJEXT): go/$(am__dirstamp) go/$(DEPDIR)/$(am__dirstamp) +go/hak.$(OBJEXT): go/$(am__dirstamp) go/$(DEPDIR)/$(am__dirstamp) go/cb.$(OBJEXT): go/$(am__dirstamp) go/$(DEPDIR)/$(am__dirstamp) go/inst.$(OBJEXT): go/$(am__dirstamp) go/$(DEPDIR)/$(am__dirstamp) -hclgo$(EXEEXT): $(hclgo_OBJECTS) $(hclgo_DEPENDENCIES) $(EXTRA_hclgo_DEPENDENCIES) - @rm -f hclgo$(EXEEXT) - $(AM_V_GEN)$(hclgo_LINK) $(hclgo_OBJECTS) $(hclgo_LDADD) $(LIBS) +hakgo$(EXEEXT): $(hakgo_OBJECTS) $(hakgo_DEPENDENCIES) $(EXTRA_hakgo_DEPENDENCIES) + @rm -f hakgo$(EXEEXT) + $(AM_V_GEN)$(hakgo_LINK) $(hakgo_OBJECTS) $(hakgo_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -938,21 +938,21 @@ distclean-local: clean-local: rm -rf $(builddir)/go.mod $(builddir)/go.sum -@ENABLE_HCLGO_TRUE@hclgo.bin: lib/libhcl.la $(hclgo_OBJECTS) -@ENABLE_HCLGO_TRUE@ cp -pf $(srcdir)/go.mod $(builddir)/go.mod >/dev/null 2>&1 || true -@ENABLE_HCLGO_TRUE@ chmod u+w $(builddir)/go.mod ## with `make distcheck`, the echo's redirection to the file fails without this permission change -@ENABLE_HCLGO_TRUE@ [ -f $(srcdir)/go.sum ] && cp -pf $(srcdir)/go.sum $(builddir)/go.sum >/dev/null 2>&1 || true -@ENABLE_HCLGO_TRUE@ CC=$(CC) \ -@ENABLE_HCLGO_TRUE@ CGO_CFLAGS="-I$(abs_srcdir)/lib -I$(abs_builddir)/lib $(CFLAGS) $(CGO_CFLAGS_EXTRA)" \ -@ENABLE_HCLGO_TRUE@ CGO_LDFLAGS="-L$(abs_builddir)/lib -L$(abs_builddir)/lib/.libs -lhcl -ldl $(LIBM) $(CGO_LDFLAGS_EXTRA)" \ -@ENABLE_HCLGO_TRUE@ go build -C $(srcdir) -ldflags "-X 'main.BINDIR=$(bindir)' -X 'main.SBINDIR=$(sbindir)' -X 'main.LIBDIR=$(libdir)' -X 'main.SYSCONFDIR=$(sysconfdir)'" -x -o $(abs_builddir)/hclgo.bin -modfile $(abs_builddir)/go.mod -@ENABLE_HCLGO_TRUE@ go clean -C $(srcdir) -x -modfile $(abs_builddir)/go.mod +@ENABLE_HAKGO_TRUE@hakgo.bin: lib/libhak.la $(hakgo_OBJECTS) +@ENABLE_HAKGO_TRUE@ cp -pf $(srcdir)/go.mod $(builddir)/go.mod >/dev/null 2>&1 || true +@ENABLE_HAKGO_TRUE@ chmod u+w $(builddir)/go.mod ## with `make distcheck`, the echo's redirection to the file fails without this permission change +@ENABLE_HAKGO_TRUE@ [ -f $(srcdir)/go.sum ] && cp -pf $(srcdir)/go.sum $(builddir)/go.sum >/dev/null 2>&1 || true +@ENABLE_HAKGO_TRUE@ CC=$(CC) \ +@ENABLE_HAKGO_TRUE@ CGO_CFLAGS="-I$(abs_srcdir)/lib -I$(abs_builddir)/lib $(CFLAGS) $(CGO_CFLAGS_EXTRA)" \ +@ENABLE_HAKGO_TRUE@ CGO_LDFLAGS="-L$(abs_builddir)/lib -L$(abs_builddir)/lib/.libs -lhak -ldl $(LIBM) $(CGO_LDFLAGS_EXTRA)" \ +@ENABLE_HAKGO_TRUE@ go build -C $(srcdir) -ldflags "-X 'main.BINDIR=$(bindir)' -X 'main.SBINDIR=$(sbindir)' -X 'main.LIBDIR=$(libdir)' -X 'main.SYSCONFDIR=$(sysconfdir)'" -x -o $(abs_builddir)/hakgo.bin -modfile $(abs_builddir)/go.mod +@ENABLE_HAKGO_TRUE@ go clean -C $(srcdir) -x -modfile $(abs_builddir)/go.mod -@ENABLE_HCLGO_TRUE@.go.o: -@ENABLE_HCLGO_TRUE@ echo $< > $@ +@ENABLE_HAKGO_TRUE@.go.o: +@ENABLE_HAKGO_TRUE@ echo $< > $@ -@ENABLE_HCLGO_TRUE@.mod.o: -@ENABLE_HCLGO_TRUE@ echo $< > $@ +@ENABLE_HAKGO_TRUE@.mod.o: +@ENABLE_HAKGO_TRUE@ echo $< > $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/README.md b/README.md index 072f6c0..6dfaeee 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# HCL - Hybrid Command Language +# HAK - Command Language ## Language Syntax -A HCL program is composed of expressions. +A HAK program is composed of expressions. ## Keywords - nil @@ -47,6 +47,7 @@ do { | k | set k 20; printf "k=%d\n" k; }; - dictionary `#{ }` - array `#[ ]` - byte array `#b[ ]` +- character array `#c[ ]` - list `#( )` - function calls `( )` - message sends `(rcv:msg arg1 ...)` @@ -168,10 +169,10 @@ do { | k | set k 20; printf "k=%d\n" k; }; (printf "--------------------------\n") ``` -## HCL Exchange Protocol +## HAK Exchange Protocol -The HCL library contains a simple server/client libraries that can exchange -HCL scripts and results over network. The following describes the protocol +The HAK library contains a simple server/client libraries that can exchange +HAK scripts and results over network. The following describes the protocol briefly. ### Request message diff --git a/bin/Makefile.am b/bin/Makefile.am index f010282..9417402 100644 --- a/bin/Makefile.am +++ b/bin/Makefile.am @@ -63,18 +63,18 @@ else LIBADD_COMMON += $(DL_LIBS) endif -bin_PROGRAMS = hcl -hcl_SOURCES = hcl.c -hcl_CPPFLAGS = $(CPPFLAGS_COMMON) -I$(srcdir)/isocline/include -DHAVE_ISOCLINE_H -DHAVE_ISOCLINE_LIB -hcl_LDFLAGS = $(LDFLAGS_COMMON) -hcl_LDADD = ../lib/libhcl.la $(LIBADD_COMMON) ./libisocline.a +bin_PROGRAMS = hak +hak_SOURCES = hak.c +hak_CPPFLAGS = $(CPPFLAGS_COMMON) -I$(srcdir)/isocline/include -DHAVE_ISOCLINE_H -DHAVE_ISOCLINE_LIB +hak_LDFLAGS = $(LDFLAGS_COMMON) +hak_LDADD = ../lib/libhak.la $(LIBADD_COMMON) ./libisocline.a -if ENABLE_HCLX +if ENABLE_HAKX -bin_PROGRAMS += hclx -hclx_SOURCES = hclx.c -hclx_CPPFLAGS = $(CPPFLAGS_COMMON) -hclx_LDFLAGS = $(LDFLAGS_COMMON) -hclx_LDADD = ../lib/libhclx.la $(LIBADD_COMMON) +bin_PROGRAMS += hakx +hakx_SOURCES = hakx.c +hakx_CPPFLAGS = $(CPPFLAGS_COMMON) +hakx_LDFLAGS = $(LDFLAGS_COMMON) +hakx_LDADD = ../lib/libhakx.la $(LIBADD_COMMON) endif diff --git a/bin/Makefile.in b/bin/Makefile.in index df8ad9c..a1f55fa 100644 --- a/bin/Makefile.in +++ b/bin/Makefile.in @@ -98,8 +98,8 @@ host_triplet = @host@ ################################################## @ENABLE_LIBLTDL_TRUE@am__append_1 = $(LTDL_LIBS) @ENABLE_LIBLTDL_FALSE@am__append_2 = $(DL_LIBS) -bin_PROGRAMS = hcl$(EXEEXT) $(am__EXEEXT_1) -@ENABLE_HCLX_TRUE@am__append_3 = hclx +bin_PROGRAMS = hak$(EXEEXT) $(am__EXEEXT_1) +@ENABLE_HAKX_TRUE@am__append_3 = hakx subdir = bin ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \ @@ -112,10 +112,10 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/lib/hcl-cfg.h +CONFIG_HEADER = $(top_builddir)/lib/hak-cfg.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = -@ENABLE_HCLX_TRUE@am__EXEEXT_1 = hclx$(EXEEXT) +@ENABLE_HAKX_TRUE@am__EXEEXT_1 = hakx$(EXEEXT) am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) LIBRARIES = $(noinst_LIBRARIES) @@ -141,29 +141,29 @@ am_libisocline_a_OBJECTS = isocline/src/attr.$(OBJEXT) \ isocline/src/tty.$(OBJEXT) isocline/src/tty_esc.$(OBJEXT) \ isocline/src/undo.$(OBJEXT) isocline/src/wcwidth.$(OBJEXT) libisocline_a_OBJECTS = $(am_libisocline_a_OBJECTS) -am_hcl_OBJECTS = hcl-hcl.$(OBJEXT) -hcl_OBJECTS = $(am_hcl_OBJECTS) +am_hak_OBJECTS = hak-hak.$(OBJEXT) +hak_OBJECTS = $(am_hak_OBJECTS) am__DEPENDENCIES_1 = @ENABLE_LIBLTDL_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) @ENABLE_LIBLTDL_FALSE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) am__DEPENDENCIES_4 = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) -hcl_DEPENDENCIES = ../lib/libhcl.la $(am__DEPENDENCIES_4) \ +hak_DEPENDENCIES = ../lib/libhak.la $(am__DEPENDENCIES_4) \ ./libisocline.a AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = -hcl_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ +hak_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(hcl_LDFLAGS) $(LDFLAGS) -o $@ -am__hclx_SOURCES_DIST = hclx.c -@ENABLE_HCLX_TRUE@am_hclx_OBJECTS = hclx-hclx.$(OBJEXT) -hclx_OBJECTS = $(am_hclx_OBJECTS) -@ENABLE_HCLX_TRUE@hclx_DEPENDENCIES = ../lib/libhclx.la \ -@ENABLE_HCLX_TRUE@ $(am__DEPENDENCIES_4) -hclx_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(hak_LDFLAGS) $(LDFLAGS) -o $@ +am__hakx_SOURCES_DIST = hakx.c +@ENABLE_HAKX_TRUE@am_hakx_OBJECTS = hakx-hakx.$(OBJEXT) +hakx_OBJECTS = $(am_hakx_OBJECTS) +@ENABLE_HAKX_TRUE@hakx_DEPENDENCIES = ../lib/libhakx.la \ +@ENABLE_HAKX_TRUE@ $(am__DEPENDENCIES_4) +hakx_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(hclx_LDFLAGS) $(LDFLAGS) -o $@ + $(hakx_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -179,7 +179,7 @@ am__v_at_1 = DEFAULT_INCLUDES = depcomp = $(SHELL) $(top_srcdir)/ac/depcomp am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/hcl-hcl.Po ./$(DEPDIR)/hclx-hclx.Po \ +am__depfiles_remade = ./$(DEPDIR)/hak-hak.Po ./$(DEPDIR)/hakx-hakx.Po \ isocline/src/$(DEPDIR)/attr.Po \ isocline/src/$(DEPDIR)/bbcode.Po \ isocline/src/$(DEPDIR)/bbcode_colors.Po \ @@ -214,9 +214,9 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = -SOURCES = $(libisocline_a_SOURCES) $(hcl_SOURCES) $(hclx_SOURCES) -DIST_SOURCES = $(libisocline_a_SOURCES) $(hcl_SOURCES) \ - $(am__hclx_SOURCES_DIST) +SOURCES = $(libisocline_a_SOURCES) $(hak_SOURCES) $(hakx_SOURCES) +DIST_SOURCES = $(libisocline_a_SOURCES) $(hak_SOURCES) \ + $(am__hakx_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -274,9 +274,9 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GREP = @GREP@ -HCL_PROJECT_AUTHOR = @HCL_PROJECT_AUTHOR@ -HCL_PROJECT_URL = @HCL_PROJECT_URL@ -HCL_SYS_LIB_SEARCH_PATH_SPEC = @HCL_SYS_LIB_SEARCH_PATH_SPEC@ +HAK_PROJECT_AUTHOR = @HAK_PROJECT_AUTHOR@ +HAK_PROJECT_URL = @HAK_PROJECT_URL@ +HAK_SYS_LIB_SEARCH_PATH_SPEC = @HAK_SYS_LIB_SEARCH_PATH_SPEC@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -437,14 +437,14 @@ libisocline_a_SOURCES = \ isocline/src/undo.c \ isocline/src/wcwidth.c -hcl_SOURCES = hcl.c -hcl_CPPFLAGS = $(CPPFLAGS_COMMON) -I$(srcdir)/isocline/include -DHAVE_ISOCLINE_H -DHAVE_ISOCLINE_LIB -hcl_LDFLAGS = $(LDFLAGS_COMMON) -hcl_LDADD = ../lib/libhcl.la $(LIBADD_COMMON) ./libisocline.a -@ENABLE_HCLX_TRUE@hclx_SOURCES = hclx.c -@ENABLE_HCLX_TRUE@hclx_CPPFLAGS = $(CPPFLAGS_COMMON) -@ENABLE_HCLX_TRUE@hclx_LDFLAGS = $(LDFLAGS_COMMON) -@ENABLE_HCLX_TRUE@hclx_LDADD = ../lib/libhclx.la $(LIBADD_COMMON) +hak_SOURCES = hak.c +hak_CPPFLAGS = $(CPPFLAGS_COMMON) -I$(srcdir)/isocline/include -DHAVE_ISOCLINE_H -DHAVE_ISOCLINE_LIB +hak_LDFLAGS = $(LDFLAGS_COMMON) +hak_LDADD = ../lib/libhak.la $(LIBADD_COMMON) ./libisocline.a +@ENABLE_HAKX_TRUE@hakx_SOURCES = hakx.c +@ENABLE_HAKX_TRUE@hakx_CPPFLAGS = $(CPPFLAGS_COMMON) +@ENABLE_HAKX_TRUE@hakx_LDFLAGS = $(LDFLAGS_COMMON) +@ENABLE_HAKX_TRUE@hakx_LDADD = ../lib/libhakx.la $(LIBADD_COMMON) all: all-am .SUFFIXES: @@ -569,13 +569,13 @@ libisocline.a: $(libisocline_a_OBJECTS) $(libisocline_a_DEPENDENCIES) $(EXTRA_li $(AM_V_AR)$(libisocline_a_AR) libisocline.a $(libisocline_a_OBJECTS) $(libisocline_a_LIBADD) $(AM_V_at)$(libisocline_a_RANLIB) libisocline.a -hcl$(EXEEXT): $(hcl_OBJECTS) $(hcl_DEPENDENCIES) $(EXTRA_hcl_DEPENDENCIES) - @rm -f hcl$(EXEEXT) - $(AM_V_CCLD)$(hcl_LINK) $(hcl_OBJECTS) $(hcl_LDADD) $(LIBS) +hak$(EXEEXT): $(hak_OBJECTS) $(hak_DEPENDENCIES) $(EXTRA_hak_DEPENDENCIES) + @rm -f hak$(EXEEXT) + $(AM_V_CCLD)$(hak_LINK) $(hak_OBJECTS) $(hak_LDADD) $(LIBS) -hclx$(EXEEXT): $(hclx_OBJECTS) $(hclx_DEPENDENCIES) $(EXTRA_hclx_DEPENDENCIES) - @rm -f hclx$(EXEEXT) - $(AM_V_CCLD)$(hclx_LINK) $(hclx_OBJECTS) $(hclx_LDADD) $(LIBS) +hakx$(EXEEXT): $(hakx_OBJECTS) $(hakx_DEPENDENCIES) $(EXTRA_hakx_DEPENDENCIES) + @rm -f hakx$(EXEEXT) + $(AM_V_CCLD)$(hakx_LINK) $(hakx_OBJECTS) $(hakx_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -584,8 +584,8 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hcl-hcl.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hclx-hclx.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hak-hak.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hakx-hakx.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@isocline/src/$(DEPDIR)/attr.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@isocline/src/$(DEPDIR)/bbcode.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@isocline/src/$(DEPDIR)/bbcode_colors.Po@am__quote@ # am--include-marker @@ -633,33 +633,33 @@ am--depfiles: $(am__depfiles_remade) @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< -hcl-hcl.o: hcl.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hcl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hcl-hcl.o -MD -MP -MF $(DEPDIR)/hcl-hcl.Tpo -c -o hcl-hcl.o `test -f 'hcl.c' || echo '$(srcdir)/'`hcl.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hcl-hcl.Tpo $(DEPDIR)/hcl-hcl.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hcl.c' object='hcl-hcl.o' libtool=no @AMDEPBACKSLASH@ +hak-hak.o: hak.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hak_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hak-hak.o -MD -MP -MF $(DEPDIR)/hak-hak.Tpo -c -o hak-hak.o `test -f 'hak.c' || echo '$(srcdir)/'`hak.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hak-hak.Tpo $(DEPDIR)/hak-hak.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hak.c' object='hak-hak.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hcl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hcl-hcl.o `test -f 'hcl.c' || echo '$(srcdir)/'`hcl.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hak_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hak-hak.o `test -f 'hak.c' || echo '$(srcdir)/'`hak.c -hcl-hcl.obj: hcl.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hcl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hcl-hcl.obj -MD -MP -MF $(DEPDIR)/hcl-hcl.Tpo -c -o hcl-hcl.obj `if test -f 'hcl.c'; then $(CYGPATH_W) 'hcl.c'; else $(CYGPATH_W) '$(srcdir)/hcl.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hcl-hcl.Tpo $(DEPDIR)/hcl-hcl.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hcl.c' object='hcl-hcl.obj' libtool=no @AMDEPBACKSLASH@ +hak-hak.obj: hak.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hak_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hak-hak.obj -MD -MP -MF $(DEPDIR)/hak-hak.Tpo -c -o hak-hak.obj `if test -f 'hak.c'; then $(CYGPATH_W) 'hak.c'; else $(CYGPATH_W) '$(srcdir)/hak.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hak-hak.Tpo $(DEPDIR)/hak-hak.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hak.c' object='hak-hak.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hcl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hcl-hcl.obj `if test -f 'hcl.c'; then $(CYGPATH_W) 'hcl.c'; else $(CYGPATH_W) '$(srcdir)/hcl.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hak_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hak-hak.obj `if test -f 'hak.c'; then $(CYGPATH_W) 'hak.c'; else $(CYGPATH_W) '$(srcdir)/hak.c'; fi` -hclx-hclx.o: hclx.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hclx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hclx-hclx.o -MD -MP -MF $(DEPDIR)/hclx-hclx.Tpo -c -o hclx-hclx.o `test -f 'hclx.c' || echo '$(srcdir)/'`hclx.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hclx-hclx.Tpo $(DEPDIR)/hclx-hclx.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hclx.c' object='hclx-hclx.o' libtool=no @AMDEPBACKSLASH@ +hakx-hakx.o: hakx.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hakx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hakx-hakx.o -MD -MP -MF $(DEPDIR)/hakx-hakx.Tpo -c -o hakx-hakx.o `test -f 'hakx.c' || echo '$(srcdir)/'`hakx.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hakx-hakx.Tpo $(DEPDIR)/hakx-hakx.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hakx.c' object='hakx-hakx.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hclx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hclx-hclx.o `test -f 'hclx.c' || echo '$(srcdir)/'`hclx.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hakx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hakx-hakx.o `test -f 'hakx.c' || echo '$(srcdir)/'`hakx.c -hclx-hclx.obj: hclx.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hclx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hclx-hclx.obj -MD -MP -MF $(DEPDIR)/hclx-hclx.Tpo -c -o hclx-hclx.obj `if test -f 'hclx.c'; then $(CYGPATH_W) 'hclx.c'; else $(CYGPATH_W) '$(srcdir)/hclx.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hclx-hclx.Tpo $(DEPDIR)/hclx-hclx.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hclx.c' object='hclx-hclx.obj' libtool=no @AMDEPBACKSLASH@ +hakx-hakx.obj: hakx.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hakx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hakx-hakx.obj -MD -MP -MF $(DEPDIR)/hakx-hakx.Tpo -c -o hakx-hakx.obj `if test -f 'hakx.c'; then $(CYGPATH_W) 'hakx.c'; else $(CYGPATH_W) '$(srcdir)/hakx.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hakx-hakx.Tpo $(DEPDIR)/hakx-hakx.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hakx.c' object='hakx-hakx.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hclx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hclx-hclx.obj `if test -f 'hclx.c'; then $(CYGPATH_W) 'hclx.c'; else $(CYGPATH_W) '$(srcdir)/hclx.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hakx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hakx-hakx.obj `if test -f 'hakx.c'; then $(CYGPATH_W) 'hakx.c'; else $(CYGPATH_W) '$(srcdir)/hakx.c'; fi` mostlyclean-libtool: -rm -f *.lo @@ -796,8 +796,8 @@ clean-am: clean-binPROGRAMS clean-generic clean-libtool \ clean-noinstLIBRARIES mostlyclean-am distclean: distclean-am - -rm -f ./$(DEPDIR)/hcl-hcl.Po - -rm -f ./$(DEPDIR)/hclx-hclx.Po + -rm -f ./$(DEPDIR)/hak-hak.Po + -rm -f ./$(DEPDIR)/hakx-hakx.Po -rm -f isocline/src/$(DEPDIR)/attr.Po -rm -f isocline/src/$(DEPDIR)/bbcode.Po -rm -f isocline/src/$(DEPDIR)/bbcode_colors.Po @@ -859,8 +859,8 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/hcl-hcl.Po - -rm -f ./$(DEPDIR)/hclx-hclx.Po + -rm -f ./$(DEPDIR)/hak-hak.Po + -rm -f ./$(DEPDIR)/hakx-hakx.Po -rm -f isocline/src/$(DEPDIR)/attr.Po -rm -f isocline/src/$(DEPDIR)/bbcode.Po -rm -f isocline/src/$(DEPDIR)/bbcode_colors.Po diff --git a/bin/hcl.c b/bin/hak.c similarity index 52% rename from bin/hcl.c rename to bin/hak.c index 49709a4..2a868ec 100644 --- a/bin/hcl.c +++ b/bin/hak.c @@ -28,11 +28,11 @@ #define _CRT_SECURE_NO_WARNINGS #endif -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include @@ -102,111 +102,111 @@ struct xtn_t struct { - hcl_bch_t* ptr; - hcl_bch_t buf[1024]; /* not used if isocline is used */ - hcl_oow_t len; - hcl_oow_t pos; + hak_bch_t* ptr; + hak_bch_t buf[1024]; /* not used if isocline is used */ + hak_oow_t len; + hak_oow_t pos; int eof; - hcl_oow_t ncompexprs; /* number of compiled expressions */ + hak_oow_t ncompexprs; /* number of compiled expressions */ } feed; - /*hcl_oop_t sym_errstr;*/ + /*hak_oop_t sym_errstr;*/ }; /* ========================================================================= */ -static hcl_t* g_hcl = HCL_NULL; +static hak_t* g_hak = HAK_NULL; /* ========================================================================= */ -static int vm_startup (hcl_t* hcl) +static int vm_startup (hak_t* hak) { - xtn_t* xtn = (xtn_t*)hcl_getxtn(hcl); + xtn_t* xtn = (xtn_t*)hak_getxtn(hak); xtn->vm_running = 1; return 0; } -static void vm_cleanup (hcl_t* hcl) +static void vm_cleanup (hak_t* hak) { - xtn_t* xtn = (xtn_t*)hcl_getxtn(hcl); + xtn_t* xtn = (xtn_t*)hak_getxtn(hak); xtn->vm_running = 0; #if defined(USE_ISOCLINE) if (xtn->feed.ptr && xtn->feed.ptr != xtn->feed.buf) { ic_free (xtn->feed.ptr); - xtn->feed.ptr = HCL_NULL; + xtn->feed.ptr = HAK_NULL; } #endif } /* -static void vm_checkbc (hcl_t* hcl, hcl_oob_t bcode) +static void vm_checkbc (hak_t* hak, hak_oob_t bcode) { } */ -static void on_gc_hcl (hcl_t* hcl) +static void on_gc_hak (hak_t* hak) { - /*xtn_t* xtn = (xtn_t*)hcl_getxtn(hcl);*/ - /*if (xtn->sym_errstr) xtn->sym_errstr = hcl_moveoop(hcl, xtn->sym_errstr);*/ + /*xtn_t* xtn = (xtn_t*)hak_getxtn(hak);*/ + /*if (xtn->sym_errstr) xtn->sym_errstr = hak_moveoop(hak, xtn->sym_errstr);*/ } /* ========================================================================= */ -static int handle_logopt (hcl_t* hcl, const hcl_bch_t* logstr) +static int handle_logopt (hak_t* hak, const hak_bch_t* logstr) { - const hcl_bch_t* cm, * flt; - hcl_bitmask_t logmask; - hcl_oow_t tlen, i; - hcl_bcs_t fname; + const hak_bch_t* cm, * flt; + hak_bitmask_t logmask; + hak_oow_t tlen, i; + hak_bcs_t fname; static struct { const char* name; int op; /* 0: bitwise-OR, 1: bitwise-AND */ - hcl_bitmask_t mask; + hak_bitmask_t mask; } xtab[] = { { "", 0, 0 }, - { "app", 0, HCL_LOG_APP }, - { "compiler", 0, HCL_LOG_COMPILER }, - { "vm", 0, HCL_LOG_VM }, - { "mnemonic", 0, HCL_LOG_MNEMONIC }, - { "gc", 0, HCL_LOG_GC }, - { "ic", 0, HCL_LOG_IC }, - { "primitive", 0, HCL_LOG_PRIMITIVE }, + { "app", 0, HAK_LOG_APP }, + { "compiler", 0, HAK_LOG_COMPILER }, + { "vm", 0, HAK_LOG_VM }, + { "mnemonic", 0, HAK_LOG_MNEMONIC }, + { "gc", 0, HAK_LOG_GC }, + { "ic", 0, HAK_LOG_IC }, + { "primitive", 0, HAK_LOG_PRIMITIVE }, /* select a specific level */ - { "fatal", 0, HCL_LOG_FATAL }, - { "error", 0, HCL_LOG_ERROR }, - { "warn", 0, HCL_LOG_WARN }, - { "info", 0, HCL_LOG_INFO }, - { "debug", 0, HCL_LOG_DEBUG }, + { "fatal", 0, HAK_LOG_FATAL }, + { "error", 0, HAK_LOG_ERROR }, + { "warn", 0, HAK_LOG_WARN }, + { "info", 0, HAK_LOG_INFO }, + { "debug", 0, HAK_LOG_DEBUG }, /* select a specific level or higher */ - { "fatal+", 0, HCL_LOG_FATAL }, - { "error+", 0, HCL_LOG_FATAL | HCL_LOG_ERROR }, - { "warn+", 0, HCL_LOG_FATAL | HCL_LOG_ERROR | HCL_LOG_WARN }, - { "info+", 0, HCL_LOG_FATAL | HCL_LOG_ERROR | HCL_LOG_WARN | HCL_LOG_INFO }, - { "debug+", 0, HCL_LOG_FATAL | HCL_LOG_ERROR | HCL_LOG_WARN | HCL_LOG_INFO | HCL_LOG_DEBUG }, + { "fatal+", 0, HAK_LOG_FATAL }, + { "error+", 0, HAK_LOG_FATAL | HAK_LOG_ERROR }, + { "warn+", 0, HAK_LOG_FATAL | HAK_LOG_ERROR | HAK_LOG_WARN }, + { "info+", 0, HAK_LOG_FATAL | HAK_LOG_ERROR | HAK_LOG_WARN | HAK_LOG_INFO }, + { "debug+", 0, HAK_LOG_FATAL | HAK_LOG_ERROR | HAK_LOG_WARN | HAK_LOG_INFO | HAK_LOG_DEBUG }, /* select a specific level or lower */ - { "fatal-", 0, HCL_LOG_FATAL | HCL_LOG_ERROR | HCL_LOG_WARN | HCL_LOG_INFO | HCL_LOG_DEBUG }, - { "error-", 0, HCL_LOG_ERROR | HCL_LOG_WARN | HCL_LOG_INFO | HCL_LOG_DEBUG }, - { "warn-", 0, HCL_LOG_WARN | HCL_LOG_INFO | HCL_LOG_DEBUG }, - { "info-", 0, HCL_LOG_INFO | HCL_LOG_DEBUG }, - { "debug-", 0, HCL_LOG_DEBUG }, + { "fatal-", 0, HAK_LOG_FATAL | HAK_LOG_ERROR | HAK_LOG_WARN | HAK_LOG_INFO | HAK_LOG_DEBUG }, + { "error-", 0, HAK_LOG_ERROR | HAK_LOG_WARN | HAK_LOG_INFO | HAK_LOG_DEBUG }, + { "warn-", 0, HAK_LOG_WARN | HAK_LOG_INFO | HAK_LOG_DEBUG }, + { "info-", 0, HAK_LOG_INFO | HAK_LOG_DEBUG }, + { "debug-", 0, HAK_LOG_DEBUG }, /* exclude a specific level */ - { "-fatal", 1, ~(hcl_bitmask_t)HCL_LOG_FATAL }, - { "-error", 1, ~(hcl_bitmask_t)HCL_LOG_ERROR }, - { "-warn", 1, ~(hcl_bitmask_t)HCL_LOG_WARN }, - { "-info", 1, ~(hcl_bitmask_t)HCL_LOG_INFO }, - { "-debug", 1, ~(hcl_bitmask_t)HCL_LOG_DEBUG }, + { "-fatal", 1, ~(hak_bitmask_t)HAK_LOG_FATAL }, + { "-error", 1, ~(hak_bitmask_t)HAK_LOG_ERROR }, + { "-warn", 1, ~(hak_bitmask_t)HAK_LOG_WARN }, + { "-info", 1, ~(hak_bitmask_t)HAK_LOG_INFO }, + { "-debug", 1, ~(hak_bitmask_t)HAK_LOG_DEBUG }, }; - cm = hcl_find_bchar_in_bcstr(logstr, ','); + cm = hak_find_bchar_in_bcstr(logstr, ','); if (cm) { fname.len = cm - logstr; @@ -216,12 +216,12 @@ static int handle_logopt (hcl_t* hcl, const hcl_bch_t* logstr) { flt = cm + 1; - cm = hcl_find_bchar_in_bcstr(flt, ','); - tlen = (cm)? (cm - flt): hcl_count_bcstr(flt); + cm = hak_find_bchar_in_bcstr(flt, ','); + tlen = (cm)? (cm - flt): hak_count_bcstr(flt); - for (i = 0; i < HCL_COUNTOF(xtab); i++) + for (i = 0; i < HAK_COUNTOF(xtab); i++) { - if (hcl_comp_bchars_bcstr(flt, tlen, xtab[i].name) == 0) + if (hak_comp_bchars_bcstr(flt, tlen, xtab[i].name) == 0) { if (xtab[i].op) logmask &= xtab[i].mask; else logmask |= xtab[i].mask; @@ -229,7 +229,7 @@ static int handle_logopt (hcl_t* hcl, const hcl_bch_t* logstr) } } - if (i >= HCL_COUNTOF(xtab)) + if (i >= HAK_COUNTOF(xtab)) { fprintf (stderr, "ERROR: unrecognized value - [%.*s] - [%s]\n", (int)tlen, flt, logstr); return -1; @@ -238,39 +238,39 @@ static int handle_logopt (hcl_t* hcl, const hcl_bch_t* logstr) while (cm); - if (!(logmask & HCL_LOG_ALL_TYPES)) logmask |= HCL_LOG_ALL_TYPES; /* no types specified. force to all types */ - if (!(logmask & HCL_LOG_ALL_LEVELS)) logmask |= HCL_LOG_ALL_LEVELS; /* no levels specified. force to all levels */ + if (!(logmask & HAK_LOG_ALL_TYPES)) logmask |= HAK_LOG_ALL_TYPES; /* no types specified. force to all types */ + if (!(logmask & HAK_LOG_ALL_LEVELS)) logmask |= HAK_LOG_ALL_LEVELS; /* no levels specified. force to all levels */ } else { - logmask = HCL_LOG_ALL_LEVELS | HCL_LOG_ALL_TYPES; - fname.len = hcl_count_bcstr(logstr); + logmask = HAK_LOG_ALL_LEVELS | HAK_LOG_ALL_TYPES; + fname.len = hak_count_bcstr(logstr); } - fname.ptr = (hcl_bch_t*)logstr; - hcl_setoption (hcl, HCL_LOG_TARGET_BCS, &fname); - hcl_setoption (hcl, HCL_LOG_MASK, &logmask); + fname.ptr = (hak_bch_t*)logstr; + hak_setoption (hak, HAK_LOG_TARGET_BCS, &fname); + hak_setoption (hak, HAK_LOG_MASK, &logmask); return 0; } -#if defined(HCL_BUILD_DEBUG) -static int handle_dbgopt (hcl_t* hcl, const hcl_bch_t* str) +#if defined(HAK_BUILD_DEBUG) +static int handle_dbgopt (hak_t* hak, const hak_bch_t* str) { - /*xtn_t* xtn = (xtn_t*)hcl_getxtn(hcl);*/ - const hcl_bch_t* cm, * flt; - hcl_oow_t len; - hcl_bitmask_t trait, dbgopt = 0; + /*xtn_t* xtn = (xtn_t*)hak_getxtn(hak);*/ + const hak_bch_t* cm, * flt; + hak_oow_t len; + hak_bitmask_t trait, dbgopt = 0; cm = str - 1; do { flt = cm + 1; - cm = hcl_find_bchar_in_bcstr(flt, ','); - len = cm? (cm - flt): hcl_count_bcstr(flt); + cm = hak_find_bchar_in_bcstr(flt, ','); + len = cm? (cm - flt): hak_count_bcstr(flt); if (len == 0) continue; - else if (hcl_comp_bchars_bcstr(flt, len, "gc") == 0) dbgopt |= HCL_TRAIT_DEBUG_GC; - else if (hcl_comp_bchars_bcstr(flt, len, "bigint") == 0) dbgopt |= HCL_TRAIT_DEBUG_BIGINT; + else if (hak_comp_bchars_bcstr(flt, len, "gc") == 0) dbgopt |= HAK_TRAIT_DEBUG_GC; + else if (hak_comp_bchars_bcstr(flt, len, "bigint") == 0) dbgopt |= HAK_TRAIT_DEBUG_BIGINT; else { fprintf (stderr, "ERROR: unknown debug option value - %.*s\n", (int)len, flt); @@ -279,9 +279,9 @@ static int handle_dbgopt (hcl_t* hcl, const hcl_bch_t* str) } while (cm); - hcl_getoption (hcl, HCL_TRAIT, &trait); + hak_getoption (hak, HAK_TRAIT, &trait); trait |= dbgopt; - hcl_setoption (hcl, HCL_TRAIT, &trait); + hak_setoption (hak, HAK_TRAIT, &trait); return 0; } #endif @@ -302,19 +302,19 @@ typedef void(*signal_handler_t)(int); #if defined(_WIN32) || defined(__DOS__) || defined(__OS2__) static void handle_sigint (int sig) { - if (g_hcl) hcl_abort (g_hcl); + if (g_hak) hak_abort (g_hak); } #elif defined(macintosh) /* TODO */ #elif defined(SA_SIGINFO) static void handle_sigint (int sig, siginfo_t* siginfo, void* ctx) { - if (g_hcl) hcl_abort (g_hcl); + if (g_hak) hak_abort (g_hak); } #else static void handle_sigint (int sig) { - if (g_hcl) hcl_abort (g_hcl); + if (g_hak) hak_abort (g_hak); } #endif @@ -363,8 +363,8 @@ static void set_signal_to_default (int sig) static void print_info (void) { -#if defined(HCL_CONFIGURE_CMD) && defined(HCL_CONFIGURE_ARGS) - printf ("Configured with: %s %s\n", HCL_CONFIGURE_CMD, HCL_CONFIGURE_ARGS); +#if defined(HAK_CONFIGURE_CMD) && defined(HAK_CONFIGURE_ARGS) + printf ("Configured with: %s %s\n", HAK_CONFIGURE_CMD, HAK_CONFIGURE_ARGS); #elif defined(_WIN32) printf("Built for windows\n"); #else @@ -372,177 +372,177 @@ static void print_info (void) #endif } -static void print_synerr (hcl_t* hcl) +static void print_synerr (hak_t* hak) { - hcl_synerr_t synerr; + hak_synerr_t synerr; xtn_t* xtn; - xtn = (xtn_t*)hcl_getxtn(hcl); - hcl_getsynerr (hcl, &synerr); + xtn = (xtn_t*)hak_getxtn(hak); + hak_getsynerr (hak, &synerr); - hcl_logbfmt (hcl,HCL_LOG_STDERR, "ERROR: "); + hak_logbfmt (hak,HAK_LOG_STDERR, "ERROR: "); if (synerr.loc.file) - hcl_logbfmt (hcl, HCL_LOG_STDERR, "%js", synerr.loc.file); + hak_logbfmt (hak, HAK_LOG_STDERR, "%js", synerr.loc.file); else - hcl_logbfmt (hcl, HCL_LOG_STDERR, "%hs", xtn->cci_path); + hak_logbfmt (hak, HAK_LOG_STDERR, "%hs", xtn->cci_path); - hcl_logbfmt (hcl, HCL_LOG_STDERR, "[%zu,%zu] %js", + hak_logbfmt (hak, HAK_LOG_STDERR, "[%zu,%zu] %js", synerr.loc.line, synerr.loc.colm, - (hcl_geterrmsg(hcl) != hcl_geterrstr(hcl)? hcl_geterrmsg(hcl): hcl_geterrstr(hcl)) + (hak_geterrmsg(hak) != hak_geterrstr(hak)? hak_geterrmsg(hak): hak_geterrstr(hak)) ); if (synerr.tgt.len > 0) - hcl_logbfmt (hcl, HCL_LOG_STDERR, " - %.*js", synerr.tgt.len, synerr.tgt.val); + hak_logbfmt (hak, HAK_LOG_STDERR, " - %.*js", synerr.tgt.len, synerr.tgt.val); - hcl_logbfmt (hcl, HCL_LOG_STDERR, "\n"); + hak_logbfmt (hak, HAK_LOG_STDERR, "\n"); } -static void print_other_error (hcl_t* hcl) +static void print_other_error (hak_t* hak) { xtn_t* xtn; - hcl_loc_t loc; + hak_loc_t loc; - xtn = (xtn_t*)hcl_getxtn(hcl); - hcl_geterrloc(hcl, &loc); + xtn = (xtn_t*)hak_getxtn(hak); + hak_geterrloc(hak, &loc); - hcl_logbfmt (hcl,HCL_LOG_STDERR, "ERROR: "); + hak_logbfmt (hak,HAK_LOG_STDERR, "ERROR: "); if (loc.file) - hcl_logbfmt (hcl, HCL_LOG_STDERR, "%js", loc.file); + hak_logbfmt (hak, HAK_LOG_STDERR, "%js", loc.file); else - hcl_logbfmt (hcl, HCL_LOG_STDERR, "%hs", xtn->cci_path); + hak_logbfmt (hak, HAK_LOG_STDERR, "%hs", xtn->cci_path); - hcl_logbfmt (hcl, HCL_LOG_STDERR, "[%zu,%zu] %js", loc.line, loc.colm, hcl_geterrmsg(hcl)); + hak_logbfmt (hak, HAK_LOG_STDERR, "[%zu,%zu] %js", loc.line, loc.colm, hak_geterrmsg(hak)); - hcl_logbfmt (hcl, HCL_LOG_STDERR, "\n"); + hak_logbfmt (hak, HAK_LOG_STDERR, "\n"); } -static void print_error (hcl_t* hcl, const hcl_bch_t* msghdr) +static void print_error (hak_t* hak, const hak_bch_t* msghdr) { - if (HCL_ERRNUM(hcl) == HCL_ESYNERR) print_synerr (hcl); - else print_other_error (hcl); - /*else hcl_logbfmt (hcl, HCL_LOG_STDERR, "ERROR: %hs - [%d] %js\n", msghdr, hcl_geterrnum(hcl), hcl_geterrmsg(hcl));*/ + if (HAK_ERRNUM(hak) == HAK_ESYNERR) print_synerr (hak); + else print_other_error (hak); + /*else hak_logbfmt (hak, HAK_LOG_STDERR, "ERROR: %hs - [%d] %js\n", msghdr, hak_geterrnum(hak), hak_geterrmsg(hak));*/ } #if defined(USE_ISOCLINE) -static void print_incomplete_expression_error (hcl_t* hcl) +static void print_incomplete_expression_error (hak_t* hak) { /* isocline is supposed to return a full expression. * if something is pending in the feed side, the input isn't complete yet */ xtn_t* xtn; - hcl_loc_t loc; + hak_loc_t loc; - xtn = hcl_getxtn(hcl); - hcl_getfeedloc (hcl, &loc); + xtn = hak_getxtn(hak); + hak_getfeedloc (hak, &loc); - hcl_logbfmt (hcl, HCL_LOG_STDERR, "ERROR: "); + hak_logbfmt (hak, HAK_LOG_STDERR, "ERROR: "); if (loc.file) - hcl_logbfmt (hcl, HCL_LOG_STDERR, "%js", loc.file); + hak_logbfmt (hak, HAK_LOG_STDERR, "%js", loc.file); else - hcl_logbfmt (hcl, HCL_LOG_STDERR, "%hs", xtn->cci_path); + hak_logbfmt (hak, HAK_LOG_STDERR, "%hs", xtn->cci_path); /* if the input is like this * a := 2; c := { * the second expression is incompelete. however, the whole input is not executed. * the number of compiled expressions so far is in xtn->feed.ncompexprs, however */ - hcl_logbfmt (hcl, HCL_LOG_STDERR, "[%zu,%zu] incomplete expression\n", loc.line, loc.colm); + hak_logbfmt (hak, HAK_LOG_STDERR, "[%zu,%zu] incomplete expression\n", loc.line, loc.colm); } #endif -static void show_prompt (hcl_t* hcl, int level) +static void show_prompt (hak_t* hak, int level) { /* TODO: different prompt per level */ - hcl_resetfeedloc (hcl); /* restore the line number to 1 in the interactive mode */ + hak_resetfeedloc (hak); /* restore the line number to 1 in the interactive mode */ #if !defined(USE_ISOCLINE) - hcl_logbfmt (hcl, HCL_LOG_STDOUT, "HCL> "); - hcl_logbfmt (hcl, HCL_LOG_STDOUT, HCL_NULL); /* flushing */ + hak_logbfmt (hak, HAK_LOG_STDOUT, "HAK> "); + hak_logbfmt (hak, HAK_LOG_STDOUT, HAK_NULL); /* flushing */ #endif } -static hcl_oop_t execute_in_interactive_mode (hcl_t* hcl) +static hak_oop_t execute_in_interactive_mode (hak_t* hak) { - hcl_oop_t retv; + hak_oop_t retv; - hcl_decode (hcl, hcl_getcode(hcl), 0, hcl_getbclen(hcl)); - HCL_LOG0 (hcl, HCL_LOG_MNEMONIC, "------------------------------------------\n"); - g_hcl = hcl; + hak_decode (hak, hak_getcode(hak), 0, hak_getbclen(hak)); + HAK_LOG0 (hak, HAK_LOG_MNEMONIC, "------------------------------------------\n"); + g_hak = hak; /*setup_tick ();*/ - retv = hcl_execute(hcl); + retv = hak_execute(hak); /* flush pending output data in the interactive mode(e.g. printf without a newline) */ - hcl_flushudio (hcl); + hak_flushudio (hak); if (!retv) { - print_error (hcl, "execute"); + print_error (hak, "execute"); } else { /* print the result in the interactive mode regardless 'verbose' */ - hcl_logbfmt (hcl, HCL_LOG_STDOUT, "%O\n", retv); /* TODO: show this go to the output handler?? */ + hak_logbfmt (hak, HAK_LOG_STDOUT, "%O\n", retv); /* TODO: show this go to the output handler?? */ /* * print the value of ERRSTR. - hcl_oop_cons_t cons = hcl_getatsysdic(hcl, xtn->sym_errstr); + hak_oop_cons_t cons = hak_getatsysdic(hak, xtn->sym_errstr); if (cons) { - HCL_ASSERT(hcl, HCL_IS_CONS(hcl, cons)); - HCL_ASSERT(hcl, HCL_CONS_CAR(cons) == xtn->sym_errstr); - hcl_print (hcl, HCL_CONS_CDR(cons)); + HAK_ASSERT(hak, HAK_IS_CONS(hak, cons)); + HAK_ASSERT(hak, HAK_CONS_CAR(cons) == xtn->sym_errstr); + hak_print (hak, HAK_CONS_CDR(cons)); } */ } /*cancel_tick();*/ - g_hcl = HCL_NULL; + g_hak = HAK_NULL; return retv; } -static hcl_oop_t execute_in_batch_mode(hcl_t* hcl, int verbose) +static hak_oop_t execute_in_batch_mode(hak_t* hak, int verbose) { - hcl_oop_t retv; + hak_oop_t retv; - hcl_decode(hcl, hcl_getcode(hcl), 0, hcl_getbclen(hcl)); - HCL_LOG3(hcl, HCL_LOG_MNEMONIC, "BYTECODES bclen=%zu lflen=%zu ngtmprs=%zu\n", hcl_getbclen(hcl), hcl_getlflen(hcl), hcl_getngtmprs(hcl)); - g_hcl = hcl; + hak_decode(hak, hak_getcode(hak), 0, hak_getbclen(hak)); + HAK_LOG3(hak, HAK_LOG_MNEMONIC, "BYTECODES bclen=%zu lflen=%zu ngtmprs=%zu\n", hak_getbclen(hak), hak_getlflen(hak), hak_getngtmprs(hak)); + g_hak = hak; /*setup_tick ();*/ /* TESTING */ #if 0 { - hcl_code_t xcode; - hcl_ptlc_t mem; + hak_code_t xcode; + hak_ptlc_t mem; - memset (&xcode, 0, HCL_SIZEOF(xcode)); - memset (&mem, 0, HCL_SIZEOF(mem)); + memset (&xcode, 0, HAK_SIZEOF(xcode)); + memset (&mem, 0, HAK_SIZEOF(mem)); - hcl_marshalcodetomem(hcl, &hcl->code, &mem); - hcl_unmarshalcodefrommem(hcl, &xcode, (const hcl_ptl_t*)&mem); - hcl_freemem (hcl, mem.ptr); + hak_marshalcodetomem(hak, &hak->code, &mem); + hak_unmarshalcodefrommem(hak, &xcode, (const hak_ptl_t*)&mem); + hak_freemem (hak, mem.ptr); - hcl_decode(hcl, &xcode, 0, xcode.bc.len); - hcl_purgecode (hcl, &xcode); + hak_decode(hak, &xcode, 0, xcode.bc.len); + hak_purgecode (hak, &xcode); } #endif /* END TESTING */ - retv = hcl_execute(hcl); - hcl_flushudio (hcl); + retv = hak_execute(hak); + hak_flushudio (hak); - if (!retv) print_error (hcl, "execute"); - else if (verbose) hcl_logbfmt (hcl, HCL_LOG_STDERR, "EXECUTION OK - EXITED WITH %O\n", retv); + if (!retv) print_error (hak, "execute"); + else if (verbose) hak_logbfmt (hak, HAK_LOG_STDERR, "EXECUTION OK - EXITED WITH %O\n", retv); /*cancel_tick();*/ - g_hcl = HCL_NULL; - /*hcl_dumpsymtab (hcl);*/ + g_hak = HAK_NULL; + /*hak_dumpsymtab (hak);*/ return retv; } -static int on_fed_cnode_in_interactive_mode (hcl_t* hcl, hcl_cnode_t* obj) +static int on_fed_cnode_in_interactive_mode (hak_t* hak, hak_cnode_t* obj) { - xtn_t* xtn = (xtn_t*)hcl_getxtn(hcl); + xtn_t* xtn = (xtn_t*)hak_getxtn(hak); int flags = 0; /* in the interactive, the compile error must not break the input loop. @@ -555,12 +555,12 @@ static int on_fed_cnode_in_interactive_mode (hcl_t* hcl, hcl_cnode_t* obj) { /* the first expression in the current user input line. * arrange to clear byte-codes before compiling the expression. */ - flags = HCL_COMPILE_CLEAR_CODE | HCL_COMPILE_CLEAR_FUNBLK; + flags = HAK_COMPILE_CLEAR_CODE | HAK_COMPILE_CLEAR_FUNBLK; } - if (hcl_compile(hcl, obj, flags) <= -1) + if (hak_compile(hak, obj, flags) <= -1) { - /*print_error(hcl, "compile"); */ + /*print_error(hak, "compile"); */ xtn->feed.pos = xtn->feed.len; /* arrange to discard the rest of the line */ return -1; /* this causes the feed function to fail and the error hander for to print the error message */ @@ -570,14 +570,14 @@ static int on_fed_cnode_in_interactive_mode (hcl_t* hcl, hcl_cnode_t* obj) return 0; } -static int on_fed_cnode_in_batch_mode (hcl_t* hcl, hcl_cnode_t* obj) +static int on_fed_cnode_in_batch_mode (hak_t* hak, hak_cnode_t* obj) { - /*xtn_t* xtn = (xtn_t*)hcl_getxtn(hcl);*/ - return hcl_compile(hcl, obj, 0); + /*xtn_t* xtn = (xtn_t*)hak_getxtn(hak);*/ + return hak_compile(hak, obj, 0); } #if defined(USE_ISOCLINE) -static int get_line (hcl_t* hcl, xtn_t* xtn, FILE* fp) +static int get_line (hak_t* hak, xtn_t* xtn, FILE* fp) { char* inp, * p; static int inited = 0; @@ -586,7 +586,7 @@ static int get_line (hcl_t* hcl, xtn_t* xtn, FILE* fp) { ic_style_def("kbd","gray underline"); // you can define your own styles ic_style_def("ic-prompt","ansi-maroon"); // or re-define system styles - ic_set_history (HCL_NULL, -1); + ic_set_history (HAK_NULL, -1); ic_enable_multiline (1); ic_enable_multiline_indent (1); ic_set_matching_braces ("()[]{}"); @@ -601,27 +601,27 @@ static int get_line (hcl_t* hcl, xtn_t* xtn, FILE* fp) xtn->feed.len = 0; if (xtn->feed.ptr) { - HCL_ASSERT(hcl, xtn->feed.ptr != xtn->feed.buf); + HAK_ASSERT(hak, xtn->feed.ptr != xtn->feed.buf); ic_free (xtn->feed.ptr); - xtn->feed.ptr = HCL_NULL; + xtn->feed.ptr = HAK_NULL; } - inp = ic_readline("HCL"); + inp = ic_readline("HAK"); if (inp == NULL) { /* TODO: check if it's an error or Eof */ xtn->feed.eof = 1; - HCL_ASSERT(hcl, xtn->feed.pos == 0); - HCL_ASSERT(hcl, xtn->feed.len == 0); + HAK_ASSERT(hak, xtn->feed.pos == 0); + HAK_ASSERT(hak, xtn->feed.len == 0); return 0; } - xtn->feed.len = hcl_count_bcstr(inp); + xtn->feed.len = hak_count_bcstr(inp); xtn->feed.ptr = inp; return 1; } #else -static int get_line (hcl_t* hcl, xtn_t* xtn, FILE* fp) +static int get_line (hak_t* hak, xtn_t* xtn, FILE* fp) { if (xtn->feed.eof) return 0; @@ -636,7 +636,7 @@ static int get_line (hcl_t* hcl, xtn_t* xtn, FILE* fp) { if (ferror(fp)) { - hcl_logbfmt (hcl, HCL_LOG_STDERR, "ERROR: failed to read - %hs - %hs\n", xtn->cci_path, strerror(errno)); + hak_logbfmt (hak, HAK_LOG_STDERR, "ERROR: failed to read - %hs - %hs\n", xtn->cci_path, strerror(errno)); return -1; } @@ -646,31 +646,31 @@ static int get_line (hcl_t* hcl, xtn_t* xtn, FILE* fp) break; } - xtn->feed.buf[xtn->feed.len++] = (hcl_bch_t)(unsigned int)ch; - if (ch == '\n' || xtn->feed.len >= HCL_COUNTOF(xtn->feed.buf)) break; + xtn->feed.buf[xtn->feed.len++] = (hak_bch_t)(unsigned int)ch; + if (ch == '\n' || xtn->feed.len >= HAK_COUNTOF(xtn->feed.buf)) break; } return 1; } #endif -static int feed_loop (hcl_t* hcl, xtn_t* xtn, int verbose) +static int feed_loop (hak_t* hak, xtn_t* xtn, int verbose) { - FILE* fp = HCL_NULL; + FILE* fp = HAK_NULL; int is_tty; #if defined(_WIN32) && defined(__STDC_WANT_SECURE_LIB__) errno_t err = fopen_s(&fp, xtn->cci_path, FOPEN_R_FLAGS); if (err != 0) { - hcl_logbfmt(hcl, HCL_LOG_STDERR, "ERROR: failed to open - %hs - %hs\n", xtn->cci_path, strerror(err)); + hak_logbfmt(hak, HAK_LOG_STDERR, "ERROR: failed to open - %hs - %hs\n", xtn->cci_path, strerror(err)); goto oops; } #else fp = fopen(xtn->cci_path, FOPEN_R_FLAGS); if (!fp) { - hcl_logbfmt (hcl, HCL_LOG_STDERR, "ERROR: failed to open - %hs - %hs\n", xtn->cci_path, strerror(errno)); + hak_logbfmt (hak, HAK_LOG_STDERR, "ERROR: failed to open - %hs - %hs\n", xtn->cci_path, strerror(errno)); goto oops; } #endif @@ -683,70 +683,70 @@ static int feed_loop (hcl_t* hcl, xtn_t* xtn, int verbose) /* override the default cnode handler. the default one simply * compiles the expression node without execution */ - /*if (hcl_beginfeed(hcl, is_tty? on_fed_cnode_in_interactive_mode: HCL_NULL) <= -1)*/ - if (hcl_beginfeed(hcl, is_tty? on_fed_cnode_in_interactive_mode: on_fed_cnode_in_batch_mode) <= -1) + /*if (hak_beginfeed(hak, is_tty? on_fed_cnode_in_interactive_mode: HAK_NULL) <= -1)*/ + if (hak_beginfeed(hak, is_tty? on_fed_cnode_in_interactive_mode: on_fed_cnode_in_batch_mode) <= -1) { - hcl_logbfmt (hcl, HCL_LOG_STDERR, "ERROR: cannot begin feed - [%d] %js\n", hcl_geterrnum(hcl), hcl_geterrmsg(hcl)); + hak_logbfmt (hak, HAK_LOG_STDERR, "ERROR: cannot begin feed - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak)); goto oops; } if (is_tty) { /* interactive mode */ - show_prompt (hcl, 0); + show_prompt (hak, 0); while (1) { int n; - hcl_oow_t pos; - hcl_oow_t len; + hak_oow_t pos; + hak_oow_t len; #if defined(USE_ISOCLINE) int lf_injected = 0; #endif /* read a line regardless of the actual expression */ - n = get_line(hcl, xtn, fp); + n = get_line(hak, xtn, fp); if (n <= -1) goto oops; if (n == 0) break; /* feed the line */ pos = xtn->feed.pos; - /* update xtn->feed.pos before calling hcl_feedbchars() so that the callback sees the updated value */ + /* update xtn->feed.pos before calling hak_feedbchars() so that the callback sees the updated value */ xtn->feed.pos = xtn->feed.len; len = xtn->feed.len - pos; - n = hcl_feedbchars(hcl, &xtn->feed.ptr[pos], len); + n = hak_feedbchars(hak, &xtn->feed.ptr[pos], len); #if defined(USE_ISOCLINE) chars_fed: #endif if (n <= -1) { - print_error (hcl, "feed"); /* syntax error or something - mostly compile error */ + print_error (hak, "feed"); /* syntax error or something - mostly compile error */ #if defined(USE_ISOCLINE) reset_on_feed_error: #endif - hcl_resetfeed (hcl); - hcl_clearcode (hcl); /* clear the compiled code but not executed yet in advance */ + hak_resetfeed (hak); + hak_clearcode (hak); /* clear the compiled code but not executed yet in advance */ xtn->feed.ncompexprs = 0; /* next time, on_fed_cnode_in_interactive_mode() clears code and fnblks */ - /*if (len > 0)*/ show_prompt (hcl, 0); /* show prompt after error */ + /*if (len > 0)*/ show_prompt (hak, 0); /* show prompt after error */ } else { - if (!hcl_feedpending(hcl)) + if (!hak_feedpending(hak)) { if (xtn->feed.ncompexprs > 0) { - if (hcl_getbclen(hcl) > 0) execute_in_interactive_mode (hcl); + if (hak_getbclen(hak) > 0) execute_in_interactive_mode (hak); xtn->feed.ncompexprs = 0; } else { - HCL_ASSERT(hcl, hcl_getbclen(hcl) == 0); + HAK_ASSERT(hak, hak_getbclen(hak) == 0); /* usually this part is reached if the input string is * one or more whilespaces and/or comments only */ } - show_prompt (hcl, 0); /* show prompt after execution */ + show_prompt (hak, 0); /* show prompt after execution */ } #if defined(USE_ISOCLINE) else if (!lf_injected) @@ -756,12 +756,12 @@ static int feed_loop (hcl_t* hcl, xtn_t* xtn, int verbose) * the ending line-feed in the returned input string. inject one to the feed */ static const char lf = '\n'; lf_injected = 1; - n = hcl_feedbchars(hcl, &lf, 1); + n = hak_feedbchars(hak, &lf, 1); goto chars_fed; } else { - print_incomplete_expression_error (hcl); + print_incomplete_expression_error (hak); goto reset_on_feed_error; } #endif @@ -773,7 +773,7 @@ static int feed_loop (hcl_t* hcl, xtn_t* xtn, int verbose) * this results in the OS prompt on the same line as this program's prompt. * however ISOCLINE prints a newline upon ctrl-D. print \n when ISOCLINE is * not used */ - hcl_logbfmt (hcl, HCL_LOG_STDOUT, "\n"); + hak_logbfmt (hak, HAK_LOG_STDOUT, "\n"); #endif } else @@ -781,16 +781,16 @@ static int feed_loop (hcl_t* hcl, xtn_t* xtn, int verbose) /* non-interactive mode */ while (1) { - hcl_bch_t buf[1024]; - hcl_oow_t xlen; + hak_bch_t buf[1024]; + hak_oow_t xlen; - xlen = fread(buf, HCL_SIZEOF(buf[0]), HCL_COUNTOF(buf), fp); - if (xlen > 0 && hcl_feedbchars(hcl, buf, xlen) <= -1) goto endfeed_error; - if (xlen < HCL_COUNTOF(buf)) + xlen = fread(buf, HAK_SIZEOF(buf[0]), HAK_COUNTOF(buf), fp); + if (xlen > 0 && hak_feedbchars(hak, buf, xlen) <= -1) goto endfeed_error; + if (xlen < HAK_COUNTOF(buf)) { if (ferror(fp)) { - hcl_logbfmt (hcl, HCL_LOG_STDERR, "ERROR: failed to read - %hs - %hs\n", xtn->cci_path, strerror(errno)); + hak_logbfmt (hak, HAK_LOG_STDERR, "ERROR: failed to read - %hs - %hs\n", xtn->cci_path, strerror(errno)); goto oops; } break; @@ -798,15 +798,15 @@ static int feed_loop (hcl_t* hcl, xtn_t* xtn, int verbose) } } - if (hcl_endfeed(hcl) <= -1) + if (hak_endfeed(hak) <= -1) { endfeed_error: - print_error (hcl, "endfeed"); + print_error (hak, "endfeed"); goto oops; /* TODO: proceed or just exit? */ } fclose (fp); - if (!is_tty && hcl_getbclen(hcl) > 0) execute_in_batch_mode (hcl, verbose); + if (!is_tty && hak_getbclen(hak) > 0) execute_in_batch_mode (hak, verbose); return 0; oops: @@ -819,14 +819,14 @@ oops: int main (int argc, char* argv[]) { - hcl_t* hcl = HCL_NULL; + hak_t* hak = HAK_NULL; xtn_t* xtn; - hcl_cb_t hclcb; + hak_cb_t hakcb; - hcl_bci_t c; - static hcl_bopt_lng_t lopt[] = + hak_bci_t c; + static hak_bopt_lng_t lopt[] = { -#if defined(HCL_BUILD_DEBUG) +#if defined(HAK_BUILD_DEBUG) { ":debug", '\0' }, #endif { ":heapsize", '\0' }, @@ -834,22 +834,22 @@ int main (int argc, char* argv[]) { "info", '\0' }, { ":modlibdirs", '\0' }, - { HCL_NULL, '\0' } + { HAK_NULL, '\0' } }; - static hcl_bopt_t opt = + static hak_bopt_t opt = { "l:v", lopt }; - const char* logopt = HCL_NULL; - hcl_oow_t heapsize = DEFAULT_HEAPSIZE; + const char* logopt = HAK_NULL; + hak_oow_t heapsize = DEFAULT_HEAPSIZE; int verbose = 0; int show_info = 0; - const char* modlibdirs = HCL_NULL; + const char* modlibdirs = HAK_NULL; -#if defined(HCL_BUILD_DEBUG) - const char* dbgopt = HCL_NULL; +#if defined(HAK_BUILD_DEBUG) + const char* dbgopt = HAK_NULL; #endif setlocale (LC_ALL, ""); @@ -864,7 +864,7 @@ int main (int argc, char* argv[]) return -1; } - while ((c = hcl_getbopt(argc, argv, &opt)) != HCL_BCI_EOF) + while ((c = hak_getbopt(argc, argv, &opt)) != HAK_BCI_EOF) { switch (c) { @@ -877,24 +877,24 @@ int main (int argc, char* argv[]) break; case '\0': - if (hcl_comp_bcstr(opt.lngopt, "heapsize") == 0) + if (hak_comp_bcstr(opt.lngopt, "heapsize") == 0) { - heapsize = strtoul(opt.arg, HCL_NULL, 0); + heapsize = strtoul(opt.arg, HAK_NULL, 0); break; } - #if defined(HCL_BUILD_DEBUG) - else if (hcl_comp_bcstr(opt.lngopt, "debug") == 0) + #if defined(HAK_BUILD_DEBUG) + else if (hak_comp_bcstr(opt.lngopt, "debug") == 0) { dbgopt = opt.arg; break; } #endif - else if (hcl_comp_bcstr(opt.lngopt, "info") == 0) + else if (hak_comp_bcstr(opt.lngopt, "info") == 0) { show_info = 1; break; } - else if (hcl_comp_bcstr(opt.lngopt, "modlibdirs") == 0) + else if (hak_comp_bcstr(opt.lngopt, "modlibdirs") == 0) { modlibdirs = opt.arg; break; @@ -918,77 +918,77 @@ int main (int argc, char* argv[]) if ((opt.ind + 1) != argc && (opt.ind + 2) != argc && !show_info) goto print_usage; #endif - hcl = hcl_openstd(HCL_SIZEOF(xtn_t), HCL_NULL); - if (HCL_UNLIKELY(!hcl)) + hak = hak_openstd(HAK_SIZEOF(xtn_t), HAK_NULL); + if (HAK_UNLIKELY(!hak)) { - printf ("ERROR: cannot open hcl\n"); + printf ("ERROR: cannot open hak\n"); goto oops; } - xtn = (xtn_t*)hcl_getxtn(hcl); + xtn = (xtn_t*)hak_getxtn(hak); { - hcl_oow_t tab_size; + hak_oow_t tab_size; tab_size = 5000; - hcl_setoption (hcl, HCL_SYMTAB_SIZE, &tab_size); + hak_setoption (hak, HAK_SYMTAB_SIZE, &tab_size); tab_size = 5000; - hcl_setoption (hcl, HCL_SYSDIC_SIZE, &tab_size); + hak_setoption (hak, HAK_SYSDIC_SIZE, &tab_size); tab_size = 600; /* TODO: choose a better stack size or make this user specifiable */ - hcl_setoption (hcl, HCL_PROCSTK_SIZE, &tab_size); + hak_setoption (hak, HAK_PROCSTK_SIZE, &tab_size); } { - hcl_bitmask_t trait = 0; + hak_bitmask_t trait = 0; - /*trait |= HCL_TRAIT_NOGC;*/ - trait |= HCL_TRAIT_AWAIT_PROCS; - trait |= HCL_TRAIT_LANG_ENABLE_EOL; - hcl_setoption (hcl, HCL_TRAIT, &trait); + /*trait |= HAK_TRAIT_NOGC;*/ + trait |= HAK_TRAIT_AWAIT_PROCS; + trait |= HAK_TRAIT_LANG_ENABLE_EOL; + hak_setoption (hak, HAK_TRAIT, &trait); } if (modlibdirs) { - #if defined(HCL_OOCH_IS_UCH) - hcl_ooch_t* tmp; - tmp = hcl_dupbtoucstr(hcl, modlibdirs, HCL_NULL); - if (HCL_UNLIKELY(!tmp)) + #if defined(HAK_OOCH_IS_UCH) + hak_ooch_t* tmp; + tmp = hak_dupbtoucstr(hak, modlibdirs, HAK_NULL); + if (HAK_UNLIKELY(!tmp)) { - hcl_logbfmt (hcl, HCL_LOG_STDERR,"ERROR: cannot duplicate modlibdirs - [%d] %js\n", hcl_geterrnum(hcl), hcl_geterrmsg(hcl)); + hak_logbfmt (hak, HAK_LOG_STDERR,"ERROR: cannot duplicate modlibdirs - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak)); goto oops; } - if (hcl_setoption(hcl, HCL_MOD_LIBDIRS, tmp) <= -1) + if (hak_setoption(hak, HAK_MOD_LIBDIRS, tmp) <= -1) { - hcl_logbfmt (hcl, HCL_LOG_STDERR,"ERROR: cannot set modlibdirs - [%d] %js\n", hcl_geterrnum(hcl), hcl_geterrmsg(hcl)); - hcl_freemem (hcl, tmp); + hak_logbfmt (hak, HAK_LOG_STDERR,"ERROR: cannot set modlibdirs - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak)); + hak_freemem (hak, tmp); goto oops; } - hcl_freemem (hcl, tmp); + hak_freemem (hak, tmp); #else - if (hcl_setoption(hcl, HCL_MOD_LIBDIRS, modlibdirs) <= -1) + if (hak_setoption(hak, HAK_MOD_LIBDIRS, modlibdirs) <= -1) { - hcl_logbfmt (hcl, HCL_LOG_STDERR,"ERROR: cannot set modlibdirs - [%d] %js\n", hcl_geterrnum(hcl), hcl_geterrmsg(hcl)); + hak_logbfmt (hak, HAK_LOG_STDERR,"ERROR: cannot set modlibdirs - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak)); goto oops; } #endif } - memset (&hclcb, 0, HCL_SIZEOF(hclcb)); - hclcb.on_gc = on_gc_hcl; - hclcb.vm_startup = vm_startup; - hclcb.vm_cleanup = vm_cleanup; - /*hclcb.vm_checkbc = vm_checkbc;*/ - hcl_regcb (hcl, &hclcb); + memset (&hakcb, 0, HAK_SIZEOF(hakcb)); + hakcb.on_gc = on_gc_hak; + hakcb.vm_startup = vm_startup; + hakcb.vm_cleanup = vm_cleanup; + /*hakcb.vm_checkbc = vm_checkbc;*/ + hak_regcb (hak, &hakcb); if (logopt) { - if (handle_logopt(hcl, logopt) <= -1) goto oops; + if (handle_logopt(hak, logopt) <= -1) goto oops; } -#if defined(HCL_BUILD_DEBUG) +#if defined(HAK_BUILD_DEBUG) if (dbgopt) { - if (handle_dbgopt(hcl, dbgopt) <= -1) goto oops; + if (handle_dbgopt(hak, dbgopt) <= -1) goto oops; } #endif @@ -998,30 +998,30 @@ int main (int argc, char* argv[]) return 0; } - if (hcl_ignite(hcl, heapsize) <= -1) + if (hak_ignite(hak, heapsize) <= -1) { - hcl_logbfmt (hcl, HCL_LOG_STDERR, "cannot ignite hcl - [%d] %js\n", hcl_geterrnum(hcl), hcl_geterrmsg(hcl)); + hak_logbfmt (hak, HAK_LOG_STDERR, "cannot ignite hak - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak)); goto oops; } - if (hcl_addbuiltinprims(hcl) <= -1) + if (hak_addbuiltinprims(hak) <= -1) { - hcl_logbfmt (hcl, HCL_LOG_STDERR, "cannot add builtin primitives - [%d] %js\n", hcl_geterrnum(hcl), hcl_geterrmsg(hcl)); + hak_logbfmt (hak, HAK_LOG_STDERR, "cannot add builtin primitives - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak)); goto oops; } xtn->cci_path = argv[opt.ind++]; /* input source code file */ if (opt.ind < argc) xtn->udo_path = argv[opt.ind++]; - if (hcl_attachcciostdwithbcstr(hcl, xtn->cci_path) <= -1) + if (hak_attachcciostdwithbcstr(hak, xtn->cci_path) <= -1) { - hcl_logbfmt (hcl, HCL_LOG_STDERR, "ERROR: cannot attach source input stream - [%d] %js\n", hcl_geterrnum(hcl), hcl_geterrmsg(hcl)); + hak_logbfmt (hak, HAK_LOG_STDERR, "ERROR: cannot attach source input stream - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak)); goto oops; } - if (hcl_attachudiostdwithbcstr(hcl, "", xtn->udo_path) <= -1) /* TODO: add udi path */ + if (hak_attachudiostdwithbcstr(hak, "", xtn->udo_path) <= -1) /* TODO: add udi path */ { - hcl_logbfmt (hcl, HCL_LOG_STDERR, "ERROR: cannot attach user data streams - [%d] %js\n", hcl_geterrnum(hcl), hcl_geterrmsg(hcl)); + hak_logbfmt (hak, HAK_LOG_STDERR, "ERROR: cannot attach user data streams - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak)); goto oops; } @@ -1034,22 +1034,22 @@ int main (int argc, char* argv[]) // in the INTERACTIVE mode, the compiler generates MAKE_FUNCTION for lambda functions. // in the non-INTERACTIVE mode, the compiler generates MAKE_BLOCK for lambda functions. { - hcl_bitmask_t trait; - hcl_getoption (hcl, HCL_TRAIT, &trait); - trait |= HCL_TRAIT_INTERACTIVE; - hcl_setoption (hcl, HCL_TRAIT, &trait); + hak_bitmask_t trait; + hak_getoption (hak, HAK_TRAIT, &trait); + trait |= HAK_TRAIT_INTERACTIVE; + hak_setoption (hak, HAK_TRAIT, &trait); } #endif - if (feed_loop(hcl, xtn, verbose) <= -1) goto oops; + if (feed_loop(hak, xtn, verbose) <= -1) goto oops; set_signal_to_default (SIGINT); - hcl_close (hcl); + hak_close (hak); return 0; oops: set_signal_to_default (SIGINT); /* harmless to call multiple times without set_signal() */ - if (hcl) hcl_close (hcl); + if (hak) hak_close (hak); return -1; } diff --git a/bin/hclx.c b/bin/hakx.c similarity index 59% rename from bin/hclx.c rename to bin/hakx.c index 03c5ca1..e49f616 100644 --- a/bin/hclx.c +++ b/bin/hakx.c @@ -24,12 +24,12 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include @@ -59,13 +59,13 @@ typedef struct server_xtn_t server_xtn_t; struct server_xtn_t { int logfd; - hcl_bitmask_t logmask; + hak_bitmask_t logmask; int logfd_istty; struct { - hcl_bch_t buf[4096]; - hcl_oow_t len; + hak_bch_t buf[4096]; + hak_oow_t len; } logbuf; @@ -79,35 +79,35 @@ typedef server_xtn_t json_xtn_t; /* ========================================================================= */ -static void* sys_alloc (hcl_mmgr_t* mmgr, hcl_oow_t size) +static void* sys_alloc (hak_mmgr_t* mmgr, hak_oow_t size) { return malloc(size); } -static void* sys_realloc (hcl_mmgr_t* mmgr, void* ptr, hcl_oow_t size) +static void* sys_realloc (hak_mmgr_t* mmgr, void* ptr, hak_oow_t size) { return realloc(ptr, size); } -static void sys_free (hcl_mmgr_t* mmgr, void* ptr) +static void sys_free (hak_mmgr_t* mmgr, void* ptr) { free (ptr); } -static hcl_mmgr_t sys_mmgr = +static hak_mmgr_t sys_mmgr = { sys_alloc, sys_realloc, sys_free, - HCL_NULL + HAK_NULL }; /* ========================================================================= */ -static int write_all (int fd, const hcl_bch_t* ptr, hcl_oow_t len) +static int write_all (int fd, const hak_bch_t* ptr, hak_oow_t len) { while (len > 0) { - hcl_ooi_t wr; + hak_ooi_t wr; wr = write(fd, ptr, len); @@ -138,15 +138,15 @@ static int write_all (int fd, const hcl_bch_t* ptr, hcl_oow_t len) } -static int write_log (server_xtn_t* xtn, int fd, const hcl_bch_t* ptr, hcl_oow_t len) +static int write_log (server_xtn_t* xtn, int fd, const hak_bch_t* ptr, hak_oow_t len) { while (len > 0) { if (xtn->logbuf.len > 0) { - hcl_oow_t rcapa, cplen; + hak_oow_t rcapa, cplen; - rcapa = HCL_COUNTOF(xtn->logbuf.buf) - xtn->logbuf.len; + rcapa = HAK_COUNTOF(xtn->logbuf.buf) - xtn->logbuf.len; cplen = (len >= rcapa)? rcapa: len; memcpy (&xtn->logbuf.buf[xtn->logbuf.len], ptr, cplen); @@ -154,7 +154,7 @@ static int write_log (server_xtn_t* xtn, int fd, const hcl_bch_t* ptr, hcl_oow_t ptr += cplen; len -= cplen; - if (xtn->logbuf.len >= HCL_COUNTOF(xtn->logbuf.buf)) + if (xtn->logbuf.len >= HAK_COUNTOF(xtn->logbuf.buf)) { write_all(fd, xtn->logbuf.buf, xtn->logbuf.len); xtn->logbuf.len = 0; @@ -162,9 +162,9 @@ static int write_log (server_xtn_t* xtn, int fd, const hcl_bch_t* ptr, hcl_oow_t } else { - hcl_oow_t rcapa; + hak_oow_t rcapa; - rcapa = HCL_COUNTOF(xtn->logbuf.buf); + rcapa = HAK_COUNTOF(xtn->logbuf.buf); if (len >= rcapa) { write_all (fd, ptr, rcapa); @@ -194,24 +194,24 @@ static void flush_log (server_xtn_t* xtn, int fd) } } -static void log_write (server_xtn_t* xtn, hcl_oow_t wid, hcl_bitmask_t mask, const hcl_ooch_t* msg, hcl_oow_t len) +static void log_write (server_xtn_t* xtn, hak_oow_t wid, hak_bitmask_t mask, const hak_ooch_t* msg, hak_oow_t len) { - hcl_bch_t buf[256]; - hcl_oow_t ucslen, bcslen; - hcl_oow_t msgidx; + hak_bch_t buf[256]; + hak_oow_t ucslen, bcslen; + hak_oow_t msgidx; int n, logfd; - if (mask & HCL_LOG_STDERR) + if (mask & HAK_LOG_STDERR) { /* the messages that go to STDERR don't get masked out */ logfd = 2; } else { - if (!(xtn->logmask & mask & ~HCL_LOG_ALL_LEVELS)) return; /* check log types */ - if (!(xtn->logmask & mask & ~HCL_LOG_ALL_TYPES)) return; /* check log levels */ + if (!(xtn->logmask & mask & ~HAK_LOG_ALL_LEVELS)) return; /* check log types */ + if (!(xtn->logmask & mask & ~HAK_LOG_ALL_TYPES)) return; /* check log levels */ - if (mask & HCL_LOG_STDOUT) logfd = 1; + if (mask & HAK_LOG_STDOUT) logfd = 1; else { logfd = xtn->logfd; @@ -221,7 +221,7 @@ static void log_write (server_xtn_t* xtn, hcl_oow_t wid, hcl_bitmask_t mask, con /* TODO: beautify the log message. * do classification based on mask. */ - if (!(mask & (HCL_LOG_STDOUT | HCL_LOG_STDERR))) + if (!(mask & (HAK_LOG_STDOUT | HAK_LOG_STDERR))) { time_t now; char ts[32]; @@ -250,7 +250,7 @@ static void log_write (server_xtn_t* xtn, hcl_oow_t wid, hcl_bitmask_t mask, con write_log (xtn, logfd, ts, tslen); - if (wid != HCL_SERVER_WID_INVALID) + if (wid != HAK_SERVER_WID_INVALID) { /* TODO: check if the underlying snprintf support %zd */ tslen = snprintf (ts, sizeof(ts), "[%zu] ", wid); @@ -260,19 +260,19 @@ static void log_write (server_xtn_t* xtn, hcl_oow_t wid, hcl_bitmask_t mask, con if (logfd == xtn->logfd && xtn->logfd_istty) { - if (mask & HCL_LOG_FATAL) write_log (xtn, logfd, "\x1B[1;31m", 7); - else if (mask & HCL_LOG_ERROR) write_log (xtn, logfd, "\x1B[1;32m", 7); - else if (mask & HCL_LOG_WARN) write_log (xtn, logfd, "\x1B[1;33m", 7); + if (mask & HAK_LOG_FATAL) write_log (xtn, logfd, "\x1B[1;31m", 7); + else if (mask & HAK_LOG_ERROR) write_log (xtn, logfd, "\x1B[1;32m", 7); + else if (mask & HAK_LOG_WARN) write_log (xtn, logfd, "\x1B[1;33m", 7); } -#if defined(HCL_OOCH_IS_UCH) +#if defined(HAK_OOCH_IS_UCH) msgidx = 0; while (len > 0) { ucslen = len; - bcslen = HCL_COUNTOF(buf); + bcslen = HAK_COUNTOF(buf); - n = hcl_conv_oochars_to_bchars_with_cmgr(&msg[msgidx], &ucslen, buf, &bcslen, hcl_get_utf8_cmgr()); + n = hak_conv_oochars_to_bchars_with_cmgr(&msg[msgidx], &ucslen, buf, &bcslen, hak_get_utf8_cmgr()); if (n == 0 || n == -2) { /* n = 0: @@ -281,7 +281,7 @@ static void log_write (server_xtn_t* xtn, hcl_oow_t wid, hcl_bitmask_t mask, con * buffer not sufficient. not all got converted yet. * write what have been converted this round. */ - /*HCL_ASSERT (hcl, ucslen > 0); */ /* if this fails, the buffer size must be increased */ + /*HAK_ASSERT (hak, ucslen > 0); */ /* if this fails, the buffer size must be increased */ /*assert (ucslen > 0);*/ /* attempt to write all converted characters */ @@ -309,7 +309,7 @@ static void log_write (server_xtn_t* xtn, hcl_oow_t wid, hcl_bitmask_t mask, con if (logfd == xtn->logfd && xtn->logfd_istty) { - if (mask & (HCL_LOG_FATAL | HCL_LOG_ERROR | HCL_LOG_WARN)) write_log (xtn, logfd, "\x1B[0m", 4); + if (mask & (HAK_LOG_FATAL | HAK_LOG_ERROR | HAK_LOG_WARN)) write_log (xtn, logfd, "\x1B[0m", 4); } flush_log (xtn, logfd); @@ -317,25 +317,25 @@ static void log_write (server_xtn_t* xtn, hcl_oow_t wid, hcl_bitmask_t mask, con /* ========================================================================= */ -static void server_log_write (hcl_server_t* server, hcl_oow_t wid, hcl_bitmask_t mask, const hcl_ooch_t* msg, hcl_oow_t len) +static void server_log_write (hak_server_t* server, hak_oow_t wid, hak_bitmask_t mask, const hak_ooch_t* msg, hak_oow_t len) { - log_write ((server_xtn_t*)hcl_server_getxtn(server), wid, mask, msg, len); + log_write ((server_xtn_t*)hak_server_getxtn(server), wid, mask, msg, len); } -static void client_log_write (hcl_client_t* client, hcl_bitmask_t mask, const hcl_ooch_t* msg, hcl_oow_t len) +static void client_log_write (hak_client_t* client, hak_bitmask_t mask, const hak_ooch_t* msg, hak_oow_t len) { - log_write ((client_xtn_t*)hcl_client_getxtn(client), HCL_SERVER_WID_INVALID, mask, msg, len); + log_write ((client_xtn_t*)hak_client_getxtn(client), HAK_SERVER_WID_INVALID, mask, msg, len); } -static void json_log_write (hcl_json_t* json, hcl_bitmask_t mask, const hcl_ooch_t* msg, hcl_oow_t len) +static void json_log_write (hak_json_t* json, hak_bitmask_t mask, const hak_ooch_t* msg, hak_oow_t len) { - log_write ((json_xtn_t*)hcl_json_getxtn(json), HCL_SERVER_WID_INVALID, mask, msg, len); + log_write ((json_xtn_t*)hak_json_getxtn(json), HAK_SERVER_WID_INVALID, mask, msg, len); } /* ========================================================================= */ -static hcl_server_t* g_server = HCL_NULL; -static hcl_client_t* g_client = HCL_NULL; +static hak_server_t* g_server = HAK_NULL; +static hak_client_t* g_client = HAK_NULL; /* ========================================================================= */ @@ -343,8 +343,8 @@ typedef void (*signal_handler_t) (int, siginfo_t*, void*); static void handle_sigint (int sig, siginfo_t* siginfo, void* ctx) { - if (g_server) hcl_server_stop (g_server); - if (g_client) hcl_client_stop (g_client); + if (g_server) hak_server_stop (g_server); + if (g_client) hak_client_stop (g_client); } static void set_signal (int sig, signal_handler_t handler) @@ -386,13 +386,13 @@ static void set_signal_to_default (int sig) /* ========================================================================= */ -static int handle_logopt (server_xtn_t* xtn, const hcl_bch_t* str) +static int handle_logopt (server_xtn_t* xtn, const hak_bch_t* str) { - hcl_bch_t* xstr = (hcl_bch_t*)str; - hcl_bch_t* cm, * flt; - hcl_bitmask_t logmask; + hak_bch_t* xstr = (hak_bch_t*)str; + hak_bch_t* cm, * flt; + hak_bitmask_t logmask; - cm = hcl_find_bchar_in_bcstr(xstr, ','); + cm = hak_find_bchar_in_bcstr(xstr, ','); if (cm) { /* i duplicate this string for open() below as open() doesn't @@ -404,7 +404,7 @@ static int handle_logopt (server_xtn_t* xtn, const hcl_bch_t* str) return -1; } - cm = hcl_find_bchar_in_bcstr(xstr, ','); + cm = hak_find_bchar_in_bcstr(xstr, ','); *cm = '\0'; logmask = xtn->logmask; @@ -412,28 +412,28 @@ static int handle_logopt (server_xtn_t* xtn, const hcl_bch_t* str) { flt = cm + 1; - cm = hcl_find_bchar_in_bcstr(flt, ','); + cm = hak_find_bchar_in_bcstr(flt, ','); if (cm) *cm = '\0'; - if (hcl_comp_bcstr(flt, "app") == 0) logmask |= HCL_LOG_APP; - else if (hcl_comp_bcstr(flt, "compiler") == 0) logmask |= HCL_LOG_COMPILER; - else if (hcl_comp_bcstr(flt, "vm") == 0) logmask |= HCL_LOG_VM; - else if (hcl_comp_bcstr(flt, "mnemonic") == 0) logmask |= HCL_LOG_MNEMONIC; - else if (hcl_comp_bcstr(flt, "gc") == 0) logmask |= HCL_LOG_GC; - else if (hcl_comp_bcstr(flt, "ic") == 0) logmask |= HCL_LOG_IC; - else if (hcl_comp_bcstr(flt, "primitive") == 0) logmask |= HCL_LOG_PRIMITIVE; + if (hak_comp_bcstr(flt, "app") == 0) logmask |= HAK_LOG_APP; + else if (hak_comp_bcstr(flt, "compiler") == 0) logmask |= HAK_LOG_COMPILER; + else if (hak_comp_bcstr(flt, "vm") == 0) logmask |= HAK_LOG_VM; + else if (hak_comp_bcstr(flt, "mnemonic") == 0) logmask |= HAK_LOG_MNEMONIC; + else if (hak_comp_bcstr(flt, "gc") == 0) logmask |= HAK_LOG_GC; + else if (hak_comp_bcstr(flt, "ic") == 0) logmask |= HAK_LOG_IC; + else if (hak_comp_bcstr(flt, "primitive") == 0) logmask |= HAK_LOG_PRIMITIVE; - else if (hcl_comp_bcstr(flt, "fatal") == 0) logmask |= HCL_LOG_FATAL; - else if (hcl_comp_bcstr(flt, "error") == 0) logmask |= HCL_LOG_ERROR; - else if (hcl_comp_bcstr(flt, "warn") == 0) logmask |= HCL_LOG_WARN; - else if (hcl_comp_bcstr(flt, "info") == 0) logmask |= HCL_LOG_INFO; - else if (hcl_comp_bcstr(flt, "debug") == 0) logmask |= HCL_LOG_DEBUG; + else if (hak_comp_bcstr(flt, "fatal") == 0) logmask |= HAK_LOG_FATAL; + else if (hak_comp_bcstr(flt, "error") == 0) logmask |= HAK_LOG_ERROR; + else if (hak_comp_bcstr(flt, "warn") == 0) logmask |= HAK_LOG_WARN; + else if (hak_comp_bcstr(flt, "info") == 0) logmask |= HAK_LOG_INFO; + else if (hak_comp_bcstr(flt, "debug") == 0) logmask |= HAK_LOG_DEBUG; - else if (hcl_comp_bcstr(flt, "fatal+") == 0) logmask |= HCL_LOG_FATAL; - else if (hcl_comp_bcstr(flt, "error+") == 0) logmask |= HCL_LOG_FATAL | HCL_LOG_ERROR; - else if (hcl_comp_bcstr(flt, "warn+") == 0) logmask |= HCL_LOG_FATAL | HCL_LOG_ERROR | HCL_LOG_WARN; - else if (hcl_comp_bcstr(flt, "info+") == 0) logmask |= HCL_LOG_FATAL | HCL_LOG_ERROR | HCL_LOG_WARN | HCL_LOG_INFO; - else if (hcl_comp_bcstr(flt, "debug+") == 0) logmask |= HCL_LOG_FATAL | HCL_LOG_ERROR | HCL_LOG_WARN | HCL_LOG_INFO | HCL_LOG_DEBUG; + else if (hak_comp_bcstr(flt, "fatal+") == 0) logmask |= HAK_LOG_FATAL; + else if (hak_comp_bcstr(flt, "error+") == 0) logmask |= HAK_LOG_FATAL | HAK_LOG_ERROR; + else if (hak_comp_bcstr(flt, "warn+") == 0) logmask |= HAK_LOG_FATAL | HAK_LOG_ERROR | HAK_LOG_WARN; + else if (hak_comp_bcstr(flt, "info+") == 0) logmask |= HAK_LOG_FATAL | HAK_LOG_ERROR | HAK_LOG_WARN | HAK_LOG_INFO; + else if (hak_comp_bcstr(flt, "debug+") == 0) logmask |= HAK_LOG_FATAL | HAK_LOG_ERROR | HAK_LOG_WARN | HAK_LOG_INFO | HAK_LOG_DEBUG; else { @@ -444,12 +444,12 @@ static int handle_logopt (server_xtn_t* xtn, const hcl_bch_t* str) } while (cm); - if (!(logmask & HCL_LOG_ALL_TYPES)) logmask |= HCL_LOG_ALL_TYPES; /* no types specified. force to all types */ - if (!(logmask & HCL_LOG_ALL_LEVELS)) logmask |= HCL_LOG_ALL_LEVELS; /* no levels specified. force to all levels */ + if (!(logmask & HAK_LOG_ALL_TYPES)) logmask |= HAK_LOG_ALL_TYPES; /* no types specified. force to all types */ + if (!(logmask & HAK_LOG_ALL_LEVELS)) logmask |= HAK_LOG_ALL_LEVELS; /* no levels specified. force to all levels */ } else { - logmask = HCL_LOG_ALL_LEVELS | HCL_LOG_ALL_TYPES; + logmask = HAK_LOG_ALL_LEVELS | HAK_LOG_ALL_TYPES; } xtn->logfd = open(xstr, O_CREAT | O_WRONLY | O_APPEND , 0644); @@ -469,34 +469,34 @@ static int handle_logopt (server_xtn_t* xtn, const hcl_bch_t* str) return 0; } -static int server_handle_logopt (hcl_server_t* server, const hcl_bch_t* str) +static int server_handle_logopt (hak_server_t* server, const hak_bch_t* str) { - return handle_logopt((server_xtn_t*)hcl_server_getxtn(server), str); + return handle_logopt((server_xtn_t*)hak_server_getxtn(server), str); } -static int client_handle_logopt (hcl_client_t* client, const hcl_bch_t* str) +static int client_handle_logopt (hak_client_t* client, const hak_bch_t* str) { - return handle_logopt((client_xtn_t*)hcl_client_getxtn(client), str); + return handle_logopt((client_xtn_t*)hak_client_getxtn(client), str); } -#if defined(HCL_BUILD_DEBUG) -static int handle_dbgopt (hcl_server_t* server, const char* str) +#if defined(HAK_BUILD_DEBUG) +static int handle_dbgopt (hak_server_t* server, const char* str) { - const hcl_bch_t* cm, * flt; - hcl_oow_t len; - hcl_bitmask_t trait; + const hak_bch_t* cm, * flt; + hak_oow_t len; + hak_bitmask_t trait; - hcl_server_getoption (server, HCL_SERVER_TRAIT, &trait); + hak_server_getoption (server, HAK_SERVER_TRAIT, &trait); cm = str - 1; do { flt = cm + 1; - cm = hcl_find_bchar_in_bcstr(flt, ','); - len = cm? (cm - flt): hcl_count_bcstr(flt); - if (hcl_comp_bchars_bcstr(flt, len, "gc") == 0) trait |= HCL_SERVER_TRAIT_DEBUG_GC; - else if (hcl_comp_bchars_bcstr(flt, len, "bigint") == 0) trait |= HCL_SERVER_TRAIT_DEBUG_BIGINT; + cm = hak_find_bchar_in_bcstr(flt, ','); + len = cm? (cm - flt): hak_count_bcstr(flt); + if (hak_comp_bchars_bcstr(flt, len, "gc") == 0) trait |= HAK_SERVER_TRAIT_DEBUG_GC; + else if (hak_comp_bchars_bcstr(flt, len, "bigint") == 0) trait |= HAK_SERVER_TRAIT_DEBUG_BIGINT; else { fprintf (stderr, "ERROR: unknown debug option value - %.*s\n", (int)len, flt); @@ -505,22 +505,22 @@ static int handle_dbgopt (hcl_server_t* server, const char* str) } while (cm); - hcl_server_setoption (server, HCL_SERVER_TRAIT, &trait); + hak_server_setoption (server, HAK_SERVER_TRAIT, &trait); return 0; } #endif -static int handle_incpath (hcl_server_t* server, const char* str) +static int handle_incpath (hak_server_t* server, const char* str) { -#if defined(HCL_OOCH_IS_UCH) - hcl_ooch_t incpath[HCL_PATH_MAX + 1]; - hcl_oow_t bcslen, ucslen; +#if defined(HAK_OOCH_IS_UCH) + hak_ooch_t incpath[HAK_PATH_MAX + 1]; + hak_oow_t bcslen, ucslen; - ucslen = HCL_COUNTOF(incpath); - if (hcl_conv_bcstr_to_ucstr_with_cmgr(str, &bcslen, incpath, &ucslen, hcl_server_getcmgr(server), 1) <= -1) return -1; - return hcl_server_setoption(server, HCL_SERVER_SCRIPT_INCLUDE_PATH, incpath); + ucslen = HAK_COUNTOF(incpath); + if (hak_conv_bcstr_to_ucstr_with_cmgr(str, &bcslen, incpath, &ucslen, hak_server_getcmgr(server), 1) <= -1) return -1; + return hak_server_setoption(server, HAK_SERVER_SCRIPT_INCLUDE_PATH, incpath); #else - return hcl_server_setoption(server, HCL_SERVER_SCRIPT_INCLUDE_PATH, str); + return hak_server_setoption(server, HAK_SERVER_SCRIPT_INCLUDE_PATH, str); #endif } @@ -531,8 +531,8 @@ static int handle_incpath (hcl_server_t* server, const char* str) static int server_main (const char* outer, int argc, char* argv[]) { - hcl_bci_t c; - static hcl_bopt_lng_t lopt[] = + hak_bci_t c; + static hak_bopt_lng_t lopt[] = { { ":log", 'l' }, { ":worker-max-count", '\0' }, @@ -541,30 +541,30 @@ static int server_main (const char* outer, int argc, char* argv[]) { ":actor-heap-size", 'm' }, { ":actor-max-runtime", '\0' }, { ":script-include-path", '\0' }, - #if defined(HCL_BUILD_DEBUG) + #if defined(HAK_BUILD_DEBUG) { ":debug", '\0' }, /* NOTE: there is no short option for --debug */ #endif - { HCL_NULL, '\0' } + { HAK_NULL, '\0' } }; - static hcl_bopt_t opt = + static hak_bopt_t opt = { "l:m:", lopt }; - hcl_server_t* server; + hak_server_t* server; server_xtn_t* xtn; - hcl_server_prim_t server_prim; + hak_server_prim_t server_prim; int n; - const char* logopt = HCL_NULL; - const char* dbgopt = HCL_NULL; - const char* incpath = HCL_NULL; - hcl_oow_t worker_max_count = 0; - hcl_oow_t worker_stack_size = MIN_ACTOR_HEAP_SIZE; - hcl_ntime_t worker_idle_timeout = { 0, 0 }; - hcl_oow_t actor_heap_size = MIN_ACTOR_HEAP_SIZE; - hcl_ntime_t actor_max_runtime = { 0, 0 }; + const char* logopt = HAK_NULL; + const char* dbgopt = HAK_NULL; + const char* incpath = HAK_NULL; + hak_oow_t worker_max_count = 0; + hak_oow_t worker_stack_size = MIN_ACTOR_HEAP_SIZE; + hak_ntime_t worker_idle_timeout = { 0, 0 }; + hak_oow_t actor_heap_size = MIN_ACTOR_HEAP_SIZE; + hak_ntime_t actor_max_runtime = { 0, 0 }; setlocale (LC_ALL, ""); @@ -575,7 +575,7 @@ static int server_main (const char* outer, int argc, char* argv[]) return -1; } - while ((c = hcl_getbopt(argc, argv, &opt)) != HCL_BCI_EOF) + while ((c = hak_getbopt(argc, argv, &opt)) != HAK_BCI_EOF) { switch (c) { @@ -584,34 +584,34 @@ static int server_main (const char* outer, int argc, char* argv[]) break; case 'm': - actor_heap_size = strtoul(opt.arg, HCL_NULL, 0); + actor_heap_size = strtoul(opt.arg, HAK_NULL, 0); if (actor_heap_size > 0 && actor_heap_size <= MIN_ACTOR_HEAP_SIZE) actor_heap_size = MIN_ACTOR_HEAP_SIZE; break; case '\0': - if (hcl_comp_bcstr(opt.lngopt, "worker-max-count") == 0) + if (hak_comp_bcstr(opt.lngopt, "worker-max-count") == 0) { - worker_max_count = strtoul(opt.arg, HCL_NULL, 0); + worker_max_count = strtoul(opt.arg, HAK_NULL, 0); } - else if (hcl_comp_bcstr(opt.lngopt, "worker-stack-size") == 0) + else if (hak_comp_bcstr(opt.lngopt, "worker-stack-size") == 0) { - worker_stack_size = strtoul(opt.arg, HCL_NULL, 0); + worker_stack_size = strtoul(opt.arg, HAK_NULL, 0); if (worker_stack_size <= MIN_WORKER_STACK_SIZE) worker_stack_size = MIN_WORKER_STACK_SIZE; } - else if (hcl_comp_bcstr(opt.lngopt, "worker-idle-timeout") == 0) + else if (hak_comp_bcstr(opt.lngopt, "worker-idle-timeout") == 0) { - worker_idle_timeout.sec = strtoul(opt.arg, HCL_NULL, 0); + worker_idle_timeout.sec = strtoul(opt.arg, HAK_NULL, 0); } - else if (hcl_comp_bcstr(opt.lngopt, "actor-max-runtime") == 0) + else if (hak_comp_bcstr(opt.lngopt, "actor-max-runtime") == 0) { - actor_max_runtime.sec = strtoul(opt.arg, HCL_NULL, 0); + actor_max_runtime.sec = strtoul(opt.arg, HAK_NULL, 0); } - else if (hcl_comp_bcstr(opt.lngopt, "script-include-path") == 0) + else if (hak_comp_bcstr(opt.lngopt, "script-include-path") == 0) { incpath = opt.arg; } - #if defined(HCL_BUILD_DEBUG) - else if (hcl_comp_bcstr(opt.lngopt, "debug") == 0) + #if defined(HAK_BUILD_DEBUG) + else if (hak_comp_bcstr(opt.lngopt, "debug") == 0) { dbgopt = opt.arg; } @@ -634,17 +634,17 @@ static int server_main (const char* outer, int argc, char* argv[]) if (opt.ind >= argc) goto print_usage; - memset (&server_prim, 0, HCL_SIZEOF(server_prim)); + memset (&server_prim, 0, HAK_SIZEOF(server_prim)); server_prim.log_write = server_log_write; - server = hcl_server_open(&sys_mmgr, HCL_SIZEOF(server_xtn_t), &server_prim, HCL_NULL); + server = hak_server_open(&sys_mmgr, HAK_SIZEOF(server_xtn_t), &server_prim, HAK_NULL); if (!server) { fprintf (stderr, "cannot open server\n"); return -1; } - xtn = (server_xtn_t*)hcl_server_getxtn(server); + xtn = (server_xtn_t*)hak_server_getxtn(server); xtn->logfd = -1; xtn->logfd_istty = 0; @@ -655,10 +655,10 @@ static int server_main (const char* outer, int argc, char* argv[]) else { /* default logging mask when no logging option is set */ - xtn->logmask = HCL_LOG_ALL_TYPES | HCL_LOG_ERROR | HCL_LOG_FATAL; + xtn->logmask = HAK_LOG_ALL_TYPES | HAK_LOG_ERROR | HAK_LOG_FATAL; } -#if defined(HCL_BUILD_DEBUG) +#if defined(HAK_BUILD_DEBUG) if (dbgopt) { if (handle_dbgopt(server, dbgopt) <= -1) goto oops; @@ -670,17 +670,17 @@ static int server_main (const char* outer, int argc, char* argv[]) if (handle_incpath(server, incpath) <= -1) goto oops; } - hcl_server_setoption (server, HCL_SERVER_WORKER_MAX_COUNT, &worker_max_count); - hcl_server_setoption (server, HCL_SERVER_WORKER_STACK_SIZE, &worker_stack_size); - hcl_server_setoption (server, HCL_SERVER_WORKER_IDLE_TIMEOUT, &worker_idle_timeout); - hcl_server_setoption (server, HCL_SERVER_ACTOR_HEAP_SIZE, &actor_heap_size); - hcl_server_setoption (server, HCL_SERVER_ACTOR_MAX_RUNTIME, &actor_max_runtime); + hak_server_setoption (server, HAK_SERVER_WORKER_MAX_COUNT, &worker_max_count); + hak_server_setoption (server, HAK_SERVER_WORKER_STACK_SIZE, &worker_stack_size); + hak_server_setoption (server, HAK_SERVER_WORKER_IDLE_TIMEOUT, &worker_idle_timeout); + hak_server_setoption (server, HAK_SERVER_ACTOR_HEAP_SIZE, &actor_heap_size); + hak_server_setoption (server, HAK_SERVER_ACTOR_MAX_RUNTIME, &actor_max_runtime); g_server = server; set_signal (SIGINT, handle_sigint); set_signal_to_ignore (SIGPIPE); - n = hcl_server_start(server, argv[opt.ind]); + n = hak_server_start(server, argv[opt.ind]); set_signal_to_default (SIGINT); set_signal_to_default (SIGPIPE); @@ -688,7 +688,7 @@ static int server_main (const char* outer, int argc, char* argv[]) if (n <= -1) { - hcl_server_logbfmt (server, HCL_LOG_APP | HCL_LOG_FATAL, "server error[%d] - %js\n", hcl_server_geterrnum(server), hcl_server_geterrmsg(server)); + hak_server_logbfmt (server, HAK_LOG_APP | HAK_LOG_FATAL, "server error[%d] - %js\n", hak_server_geterrnum(server), hak_server_geterrmsg(server)); } if (xtn->logfd >= 0) @@ -698,58 +698,58 @@ static int server_main (const char* outer, int argc, char* argv[]) xtn->logfd_istty = 0; } - hcl_server_close (server); + hak_server_close (server); return n; oops: - if (server) hcl_server_close (server); + if (server) hak_server_close (server); return -1; } /* -------------------------------------------------------------- */ -static int client_on_packet (hcl_client_t* client, hcl_xpkt_type_t type, const void* data, hcl_oow_t len) +static int client_on_packet (hak_client_t* client, hak_xpkt_type_t type, const void* data, hak_oow_t len) { - if (type == HCL_XPKT_STDOUT) + if (type == HAK_XPKT_STDOUT) { if (len > 0) fprintf (stdout, "%.*s", (int)len, data); } - else if (type == HCL_XPKT_STDERR) + else if (type == HAK_XPKT_STDERR) { if (len > 0) fprintf (stderr, "%.*s", (int)len, data); } - else if (type == HCL_XPKT_ERROR) + else if (type == HAK_XPKT_ERROR) { /* error notification */ if (len > 0) fprintf (stderr, "ERROR: %.*s\n", (int)len, data); } - else if (type == HCL_XPKT_RETVAL) + else if (type == HAK_XPKT_RETVAL) { if (len > 0) fprintf (stderr, "RETURN VALUE: %.*s\n", (int)len, data); - hcl_client_stop (client); + hak_client_stop (client); } return 1; } static int client_main (const char* outer, int argc, char* argv[]) { - hcl_bci_t c; - static hcl_bopt_lng_t lopt[] = + hak_bci_t c; + static hak_bopt_lng_t lopt[] = { { ":log", 'l' }, { "shutwr", '\0' }, - { HCL_NULL, '\0' } + { HAK_NULL, '\0' } }; - static hcl_bopt_t opt = + static hak_bopt_t opt = { "l:", lopt }; - hcl_client_t* client; + hak_client_t* client; client_xtn_t* xtn; - hcl_client_prim_t client_prim; + hak_client_prim_t client_prim; int n; - const char* logopt = HCL_NULL; + const char* logopt = HAK_NULL; int shut_wr_after_req = 0; setlocale (LC_ALL, ""); @@ -764,7 +764,7 @@ static int client_main (const char* outer, int argc, char* argv[]) return -1; } - while ((c = hcl_getbopt(argc, argv, &opt)) != HCL_BCI_EOF) + while ((c = hak_getbopt(argc, argv, &opt)) != HAK_BCI_EOF) { switch (c) { @@ -773,7 +773,7 @@ static int client_main (const char* outer, int argc, char* argv[]) break; case '\0': - if (hcl_comp_bcstr(opt.lngopt, "shutwr") == 0) + if (hak_comp_bcstr(opt.lngopt, "shutwr") == 0) { shut_wr_after_req = 1; } @@ -799,18 +799,18 @@ static int client_main (const char* outer, int argc, char* argv[]) /* needs 2 fixed arguments */ if (opt.ind + 1 >= argc) goto print_usage; - memset (&client_prim, 0, HCL_SIZEOF(client_prim)); + memset (&client_prim, 0, HAK_SIZEOF(client_prim)); client_prim.log_write = client_log_write; client_prim.on_packet = client_on_packet; - client = hcl_client_open(&sys_mmgr, HCL_SIZEOF(client_xtn_t), &client_prim, HCL_NULL); + client = hak_client_open(&sys_mmgr, HAK_SIZEOF(client_xtn_t), &client_prim, HAK_NULL); if (!client) { fprintf (stderr, "cannot open client\n"); return -1; } - xtn = (client_xtn_t*)hcl_client_getxtn(client); + xtn = (client_xtn_t*)hak_client_getxtn(client); xtn->logfd = -1; xtn->logfd_istty = 0; @@ -821,17 +821,17 @@ static int client_main (const char* outer, int argc, char* argv[]) else { /* default logging mask when no logging option is set */ - xtn->logmask = HCL_LOG_ALL_TYPES | HCL_LOG_ERROR | HCL_LOG_FATAL; + xtn->logmask = HAK_LOG_ALL_TYPES | HAK_LOG_ERROR | HAK_LOG_FATAL; } g_client = client; set_signal (SIGINT, handle_sigint); set_signal_to_ignore (SIGPIPE); - n = hcl_client_start(client, argv[opt.ind], /*argv[opt.ind + 1],*/ shut_wr_after_req); + n = hak_client_start(client, argv[opt.ind], /*argv[opt.ind + 1],*/ shut_wr_after_req); if (n <= -1) { - fprintf (stderr, "ERROR: %s\n", hcl_client_geterrbmsg(client)); + fprintf (stderr, "ERROR: %s\n", hak_client_geterrbmsg(client)); goto oops; } @@ -846,50 +846,50 @@ static int client_main (const char* outer, int argc, char* argv[]) xtn->logfd_istty = 0; } - hcl_client_close (client); + hak_client_close (client); return n; oops: - if (client) hcl_client_close (client); + if (client) hak_client_close (client); return -1; } /* -------------------------------------------------------------- */ -static int json_inst_cb (hcl_json_t* json, hcl_json_inst_t it, const hcl_oocs_t* str) +static int json_inst_cb (hak_json_t* json, hak_json_inst_t it, const hak_oocs_t* str) { - json_xtn_t* json_xtn = (json_xtn_t*)hcl_json_getxtn(json); + json_xtn_t* json_xtn = (json_xtn_t*)hak_json_getxtn(json); switch (it) { - case HCL_JSON_INST_START_ARRAY: + case HAK_JSON_INST_START_ARRAY: json_xtn->json_depth++; - hcl_json_logbfmt (json, HCL_LOG_INFO | HCL_LOG_APP, "[\n"); + hak_json_logbfmt (json, HAK_LOG_INFO | HAK_LOG_APP, "[\n"); break; - case HCL_JSON_INST_END_ARRAY: + case HAK_JSON_INST_END_ARRAY: json_xtn->json_depth--; - hcl_json_logbfmt (json, HCL_LOG_INFO | HCL_LOG_APP, "]\n"); + hak_json_logbfmt (json, HAK_LOG_INFO | HAK_LOG_APP, "]\n"); break; - case HCL_JSON_INST_START_DIC: + case HAK_JSON_INST_START_DIC: json_xtn->json_depth++; - hcl_json_logbfmt (json, HCL_LOG_INFO | HCL_LOG_APP, "{\n"); + hak_json_logbfmt (json, HAK_LOG_INFO | HAK_LOG_APP, "{\n"); break; - case HCL_JSON_INST_END_DIC: + case HAK_JSON_INST_END_DIC: json_xtn->json_depth--; - hcl_json_logbfmt (json, HCL_LOG_INFO | HCL_LOG_APP, "}\n"); + hak_json_logbfmt (json, HAK_LOG_INFO | HAK_LOG_APP, "}\n"); break; - case HCL_JSON_INST_KEY: - hcl_json_logbfmt (json, HCL_LOG_INFO | HCL_LOG_APP, "%.*js: ", str->len, str->ptr); + case HAK_JSON_INST_KEY: + hak_json_logbfmt (json, HAK_LOG_INFO | HAK_LOG_APP, "%.*js: ", str->len, str->ptr); break; - case HCL_JSON_INST_CHARACTER: - case HCL_JSON_INST_STRING: - case HCL_JSON_INST_NUMBER: - case HCL_JSON_INST_TRUE: - case HCL_JSON_INST_FALSE: - case HCL_JSON_INST_NIL: - hcl_json_logbfmt (json, HCL_LOG_INFO | HCL_LOG_APP, "%.*js\n", str->len, str->ptr); + case HAK_JSON_INST_CHARACTER: + case HAK_JSON_INST_STRING: + case HAK_JSON_INST_NUMBER: + case HAK_JSON_INST_TRUE: + case HAK_JSON_INST_FALSE: + case HAK_JSON_INST_NIL: + hak_json_logbfmt (json, HAK_LOG_INFO | HAK_LOG_APP, "%.*js\n", str->len, str->ptr); break; } @@ -898,36 +898,36 @@ static int json_inst_cb (hcl_json_t* json, hcl_json_inst_t it, const hcl_oocs_t* int json_main (const char* outer, int argc, char* argv[]) { - hcl_json_t* json; - hcl_json_prim_t json_prim; + hak_json_t* json; + hak_json_prim_t json_prim; json_xtn_t* json_xtn; - hcl_oow_t xlen; + hak_oow_t xlen; const char* p; /* TODO: enhance this to accept parameters from command line */ - memset (&json_prim, 0, HCL_SIZEOF(json_prim)); + memset (&json_prim, 0, HAK_SIZEOF(json_prim)); json_prim.log_write = json_log_write; json_prim.instcb = json_inst_cb; - json = hcl_json_open (&sys_mmgr, HCL_SIZEOF(json_xtn_t), &json_prim, NULL); + json = hak_json_open (&sys_mmgr, HAK_SIZEOF(json_xtn_t), &json_prim, NULL); - json_xtn = (json_xtn_t*)hcl_json_getxtn(json); - json_xtn->logmask = HCL_LOG_ALL_LEVELS | HCL_LOG_ALL_TYPES; + json_xtn = (json_xtn_t*)hak_json_getxtn(json); + json_xtn->logmask = HAK_LOG_ALL_LEVELS | HAK_LOG_ALL_TYPES; p = "[ \"ab\\xab\\uC88B\\uC544\\uC6A9c\", \"kaden\", \"iron\", true, { \"null\": \"a\\1bc\", \"123\": \"AA20AA\", \"10\": -0.123, \"way\": '\\uC88A' } ]"; /*p = "{ \"result\": \"SUCCESS\", \"message\": \"1 clients\", \"sessions\": [] }";*/ - if (hcl_json_feed(json, p, strlen(p), &xlen) <= -1) + if (hak_json_feed(json, p, strlen(p), &xlen) <= -1) { - hcl_json_logbfmt (json, HCL_LOG_FATAL | HCL_LOG_APP, "ERROR: unable to process - %js\n", hcl_json_geterrmsg(json)); + hak_json_logbfmt (json, HAK_LOG_FATAL | HAK_LOG_APP, "ERROR: unable to process - %js\n", hak_json_geterrmsg(json)); } else if (json_xtn->json_depth != 0) { - hcl_json_logbfmt (json, HCL_LOG_FATAL | HCL_LOG_APP, "ERROR: incomplete input\n"); + hak_json_logbfmt (json, HAK_LOG_FATAL | HAK_LOG_APP, "ERROR: incomplete input\n"); } - hcl_json_close (json); + hak_json_close (json); return 0; } @@ -943,7 +943,7 @@ int main (int argc, char* argv[]) int n; const char* argv0; - argv0 = hcl_get_base_name_from_bcstr_path(argv[0]); + argv0 = hak_get_base_name_from_bcstr_path(argv[0]); if (argc < 2) { diff --git a/configure b/configure index 43be987..4374329 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for hcl 0.1.0. +# Generated by GNU Autoconf 2.72 for hak 0.1.0. # # Report bugs to . # @@ -612,12 +612,12 @@ MFLAGS= MAKEFLAGS= # Identity of this package. -PACKAGE_NAME='hcl' -PACKAGE_TARNAME='hcl' +PACKAGE_NAME='hak' +PACKAGE_TARNAME='hak' PACKAGE_VERSION='0.1.0' -PACKAGE_STRING='hcl 0.1.0' +PACKAGE_STRING='hak 0.1.0' PACKAGE_BUGREPORT='Chung, Hyung-Hwan (hyunghwan.chung@gmail.com)' -PACKAGE_URL='http://code.miflux.com/hyung-hwan/hcl' +PACKAGE_URL='http://code.miflux.com/hyung-hwan/hak' # Factoring default headers for most tests. ac_includes_default="\ @@ -655,15 +655,15 @@ ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS -HCL_LIB_QUADMATH_REQUIRED_FALSE -HCL_LIB_QUADMATH_REQUIRED_TRUE -HCL_SYS_LIB_SEARCH_PATH_SPEC -HCL_PROJECT_URL -HCL_PROJECT_AUTHOR -ENABLE_HCLGO_FALSE -ENABLE_HCLGO_TRUE -ENABLE_HCLX_FALSE -ENABLE_HCLX_TRUE +HAK_LIB_QUADMATH_REQUIRED_FALSE +HAK_LIB_QUADMATH_REQUIRED_TRUE +HAK_SYS_LIB_SEARCH_PATH_SPEC +HAK_PROJECT_URL +HAK_PROJECT_AUTHOR +ENABLE_HAKGO_FALSE +ENABLE_HAKGO_TRUE +ENABLE_HAKX_FALSE +ENABLE_HAKX_TRUE ENABLE_LIBUNWIND_FALSE ENABLE_LIBUNWIND_TRUE ENABLE_LIBLTDL_FALSE @@ -839,8 +839,8 @@ enable_static_module enable_libltdl enable_libunwind enable_pthread_flags -enable_hclx -enable_hclgo +enable_hakx +enable_hakgo ' ac_precious_vars='build_alias host_alias @@ -1400,7 +1400,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -'configure' configures hcl 0.1.0 to adapt to many kinds of systems. +'configure' configures hak 0.1.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1449,7 +1449,7 @@ Fine tuning of the installation directories: --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/hcl] + --docdir=DIR documentation root [DATAROOTDIR/doc/hak] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] @@ -1471,7 +1471,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of hcl 0.1.0:";; + short | recursive ) echo "Configuration of hak 0.1.0:";; esac cat <<\_ACEOF @@ -1507,8 +1507,8 @@ Optional Features: --enable-libltdl use libltdl(default. no) --enable-libunwind use libunwind(default. no) --enable-pthread-flags add thread flags to CFLAGS, LIBS(default. yes) - --enable-hclx build libhclx(default. no) - --enable-hclgo build the go wrapper(default. no) + --enable-hakx build libhakx(default. no) + --enable-hakgo build the go wrapper(default. no) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1533,7 +1533,7 @@ Use these variables to override the choices made by 'configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . -hcl home page: . +hak home page: . _ACEOF ac_status=$? fi @@ -1597,7 +1597,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -hcl configure 0.1.0 +hak configure 0.1.0 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. @@ -2162,7 +2162,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by hcl $as_me 0.1.0, which was +It was created by hak $as_me 0.1.0, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -2936,7 +2936,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -ac_config_headers="$ac_config_headers lib/hcl-cfg.h" +ac_config_headers="$ac_config_headers lib/hak-cfg.h" @@ -3647,7 +3647,7 @@ fi # Define the identity of the package. - PACKAGE='hcl' + PACKAGE='hak' VERSION='0.1.0' @@ -15144,7 +15144,7 @@ then fi fi -CFLAGS="$CFLAGS -DHCL_HAVE_CFG_H" +CFLAGS="$CFLAGS -DHAK_HAVE_CFG_H" CFLAGS="$CFLAGS -D_LARGEFILE64_SOURCE" @@ -18689,7 +18689,7 @@ printf "%s\n" "$ac_res" >&6; } symbolname=`echo socklen_t | sed "s/[^a-zA-Z0-9_]/_/g" | tr "a-z" "A-Z"` if eval "test \"\${ax_cv_decl_${typename}_signed}\" = \"yes\""; then -printf "%s\n" "#define HCL_SOCKLEN_T_IS_SIGNED 1" >>confdefs.h +printf "%s\n" "#define HAK_SOCKLEN_T_IS_SIGNED 1" >>confdefs.h elif eval "test \"\${ax_cv_decl_${typename}_signed}\" = \"no\""; then printf %s "" @@ -18775,7 +18775,7 @@ printf "%s\n" "$ac_res" >&6; } symbolname=`echo sa_family_t | sed "s/[^a-zA-Z0-9_]/_/g" | tr "a-z" "A-Z"` if eval "test \"\${ax_cv_decl_${typename}_signed}\" = \"yes\""; then -printf "%s\n" "#define HCL_SA_FAMILY_T_IS_SIGNED 1" >>confdefs.h +printf "%s\n" "#define HAK_SA_FAMILY_T_IS_SIGNED 1" >>confdefs.h elif eval "test \"\${ax_cv_decl_${typename}_signed}\" = \"no\""; then printf %s "" @@ -18798,7 +18798,7 @@ fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_offsetof_sa_family" >&5 printf "%s\n" "$ac_cv_offsetof_sa_family" >&6; } -printf "%s\n" "#define HCL_OFFSETOF_SA_FAMILY ${ac_cv_offsetof_sa_family}" >>confdefs.h +printf "%s\n" "#define HAK_OFFSETOF_SA_FAMILY ${ac_cv_offsetof_sa_family}" >>confdefs.h else @@ -19077,7 +19077,7 @@ printf "%s\n" "$ac_res" >&6; } symbolname=`echo socklen_t | sed "s/[^a-zA-Z0-9_]/_/g" | tr "a-z" "A-Z"` if eval "test \"\${ax_cv_decl_${typename}_signed}\" = \"yes\""; then -printf "%s\n" "#define HCL_SOCKLEN_T_IS_SIGNED 1" >>confdefs.h +printf "%s\n" "#define HAK_SOCKLEN_T_IS_SIGNED 1" >>confdefs.h elif eval "test \"\${ax_cv_decl_${typename}_signed}\" = \"no\""; then printf %s "" @@ -19165,7 +19165,7 @@ printf "%s\n" "$ac_res" >&6; } symbolname=`echo sa_family_t | sed "s/[^a-zA-Z0-9_]/_/g" | tr "a-z" "A-Z"` if eval "test \"\${ax_cv_decl_${typename}_signed}\" = \"yes\""; then -printf "%s\n" "#define HCL_SA_FAMILY_T_IS_SIGNED 1" >>confdefs.h +printf "%s\n" "#define HAK_SA_FAMILY_T_IS_SIGNED 1" >>confdefs.h elif eval "test \"\${ax_cv_decl_${typename}_signed}\" = \"no\""; then printf %s "" @@ -19188,7 +19188,7 @@ fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_offsetof_sa_family" >&5 printf "%s\n" "$ac_cv_offsetof_sa_family" >&6; } -printf "%s\n" "#define HCL_OFFSETOF_SA_FAMILY ${ac_cv_offsetof_sa_family}" >>confdefs.h +printf "%s\n" "#define HAK_OFFSETOF_SA_FAMILY ${ac_cv_offsetof_sa_family}" >>confdefs.h fi @@ -19270,7 +19270,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -hcl_lib_quadmath_required="" +hak_lib_quadmath_required="" if test ${ac_cv_sizeof___float128} -gt 0 then ac_fn_c_check_func "$LINENO" "quadmath_snprintf" "ac_cv_func_quadmath_snprintf" @@ -19344,7 +19344,7 @@ then : QUADMATH_LIBS="-lquadmath" LIBM="-lquadmath $LIBM" - hcl_lib_quadmath_required="yes" + hak_lib_quadmath_required="yes" printf "%s\n" "#define HAVE_QUADMATH_SNPRINTF 1" >>confdefs.h @@ -19493,135 +19493,135 @@ fi -printf "%s\n" "#define HCL_SIZEOF_CHAR ${ac_cv_sizeof_char}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_CHAR ${ac_cv_sizeof_char}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF_SHORT ${ac_cv_sizeof_short}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_SHORT ${ac_cv_sizeof_short}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF_INT ${ac_cv_sizeof_int}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_INT ${ac_cv_sizeof_int}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF_LONG ${ac_cv_sizeof_long}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_LONG ${ac_cv_sizeof_long}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF_LONG_LONG ${ac_cv_sizeof_long_long}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_LONG_LONG ${ac_cv_sizeof_long_long}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF___INT8 ${ac_cv_sizeof___int8}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF___INT8 ${ac_cv_sizeof___int8}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF___INT16 ${ac_cv_sizeof___int16}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF___INT16 ${ac_cv_sizeof___int16}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF___INT32 ${ac_cv_sizeof___int32}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF___INT32 ${ac_cv_sizeof___int32}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF___INT64 ${ac_cv_sizeof___int64}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF___INT64 ${ac_cv_sizeof___int64}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF___INT128 ${ac_cv_sizeof___int128}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF___INT128 ${ac_cv_sizeof___int128}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF___INT128_T ${ac_cv_sizeof___int128_t}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF___INT128_T ${ac_cv_sizeof___int128_t}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF___UINT128_T ${ac_cv_sizeof___uint128_t}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF___UINT128_T ${ac_cv_sizeof___uint128_t}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF_VOID_P ${ac_cv_sizeof_void_p}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_VOID_P ${ac_cv_sizeof_void_p}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF_FLOAT ${ac_cv_sizeof_float}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_FLOAT ${ac_cv_sizeof_float}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF_DOUBLE ${ac_cv_sizeof_double}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_DOUBLE ${ac_cv_sizeof_double}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF_LONG_DOUBLE ${ac_cv_sizeof_long_double}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_LONG_DOUBLE ${ac_cv_sizeof_long_double}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF___FLOAT128 ${ac_cv_sizeof___float128}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF___FLOAT128 ${ac_cv_sizeof___float128}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF_WCHAR_T ${ac_cv_sizeof_wchar_t}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_WCHAR_T ${ac_cv_sizeof_wchar_t}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF_OFF_T ${ac_cv_sizeof_off_t}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_OFF_T ${ac_cv_sizeof_off_t}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF_OFF64_T ${ac_cv_sizeof_off64_t}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_OFF64_T ${ac_cv_sizeof_off64_t}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF_MBSTATE_T ${ac_cv_sizeof_mbstate_t}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_MBSTATE_T ${ac_cv_sizeof_mbstate_t}" >>confdefs.h -printf "%s\n" "#define HCL_MBLEN_MAX ${ax_cv_numvalof_MB_LEN_MAX}" >>confdefs.h +printf "%s\n" "#define HAK_MBLEN_MAX ${ax_cv_numvalof_MB_LEN_MAX}" >>confdefs.h if test ${ax_cv_numvalof_PATH_MAX} -gt 0 then -printf "%s\n" "#define HCL_PATH_MAX ${ax_cv_numvalof_PATH_MAX}" >>confdefs.h +printf "%s\n" "#define HAK_PATH_MAX ${ax_cv_numvalof_PATH_MAX}" >>confdefs.h fi -printf "%s\n" "#define HCL_SIZEOF_STRUCT_SOCKADDR_IN ${ac_cv_sizeof_struct_sockaddr_in}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_STRUCT_SOCKADDR_IN ${ac_cv_sizeof_struct_sockaddr_in}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF_STRUCT_SOCKADDR_IN6 ${ac_cv_sizeof_struct_sockaddr_in6}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_STRUCT_SOCKADDR_IN6 ${ac_cv_sizeof_struct_sockaddr_in6}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF_STRUCT_SOCKADDR_LL ${ac_cv_sizeof_struct_sockaddr_ll}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_STRUCT_SOCKADDR_LL ${ac_cv_sizeof_struct_sockaddr_ll}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF_STRUCT_SOCKADDR_UN ${ac_cv_sizeof_struct_sockaddr_un}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_STRUCT_SOCKADDR_UN ${ac_cv_sizeof_struct_sockaddr_un}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF_STRUCT_SOCKADDR_DL ${ac_cv_sizeof_struct_sockaddr_dl}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_STRUCT_SOCKADDR_DL ${ac_cv_sizeof_struct_sockaddr_dl}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF_SOCKLEN_T ${ac_cv_sizeof_socklen_t}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_SOCKLEN_T ${ac_cv_sizeof_socklen_t}" >>confdefs.h -printf "%s\n" "#define HCL_SIZEOF_SA_FAMILY_T ${ac_cv_sizeof_sa_family_t}" >>confdefs.h +printf "%s\n" "#define HAK_SIZEOF_SA_FAMILY_T ${ac_cv_sizeof_sa_family_t}" >>confdefs.h -hcl_package_version_major="`echo ${PACKAGE_VERSION} | cut -d. -f1`" -hcl_package_version_minor="`echo ${PACKAGE_VERSION} | cut -d. -f2`" -hcl_package_version_patch="`echo ${PACKAGE_VERSION} | cut -d. -f3`" -PACKAGE_VERSION_MAJOR=${hcl_package_version_major} +hak_package_version_major="`echo ${PACKAGE_VERSION} | cut -d. -f1`" +hak_package_version_minor="`echo ${PACKAGE_VERSION} | cut -d. -f2`" +hak_package_version_patch="`echo ${PACKAGE_VERSION} | cut -d. -f3`" +PACKAGE_VERSION_MAJOR=${hak_package_version_major} -PACKAGE_VERSION_MINOR=${hcl_package_version_minor} +PACKAGE_VERSION_MINOR=${hak_package_version_minor} -PACKAGE_VERSION_PATCH=${hcl_package_version_patch} +PACKAGE_VERSION_PATCH=${hak_package_version_patch} -printf "%s\n" "#define HCL_PACKAGE_VERSION \"${PACKAGE_VERSION}\"" >>confdefs.h +printf "%s\n" "#define HAK_PACKAGE_VERSION \"${PACKAGE_VERSION}\"" >>confdefs.h -printf "%s\n" "#define HCL_PACKAGE_VERSION_MAJOR ${hcl_package_version_major}" >>confdefs.h +printf "%s\n" "#define HAK_PACKAGE_VERSION_MAJOR ${hak_package_version_major}" >>confdefs.h -printf "%s\n" "#define HCL_PACKAGE_VERSION_MINOR ${hcl_package_version_minor}" >>confdefs.h +printf "%s\n" "#define HAK_PACKAGE_VERSION_MINOR ${hak_package_version_minor}" >>confdefs.h -printf "%s\n" "#define HCL_PACKAGE_VERSION_PATCH ${hcl_package_version_patch}" >>confdefs.h +printf "%s\n" "#define HAK_PACKAGE_VERSION_PATCH ${hak_package_version_patch}" >>confdefs.h -printf "%s\n" "#define HCL_PACKAGE_AUTHOR \"${PACKAGE_BUGREPORT}\"" >>confdefs.h +printf "%s\n" "#define HAK_PACKAGE_AUTHOR \"${PACKAGE_BUGREPORT}\"" >>confdefs.h -printf "%s\n" "#define HCL_PACKAGE_NAME \"${PACKAGE_NAME}\"" >>confdefs.h +printf "%s\n" "#define HAK_PACKAGE_NAME \"${PACKAGE_NAME}\"" >>confdefs.h -printf "%s\n" "#define HCL_PACKAGE_URL \"${PACKAGE_URL}\"" >>confdefs.h +printf "%s\n" "#define HAK_PACKAGE_URL \"${PACKAGE_URL}\"" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 @@ -19851,11 +19851,11 @@ printf "%s\n" "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) -printf "%s\n" "#define HCL_ENDIAN_BIG /**/" >>confdefs.h +printf "%s\n" "#define HAK_ENDIAN_BIG /**/" >>confdefs.h ;; #( no) -printf "%s\n" "#define HCL_ENDIAN_LITTLE /**/" >>confdefs.h +printf "%s\n" "#define HAK_ENDIAN_LITTLE /**/" >>confdefs.h ;; #( universal) @@ -19864,7 +19864,7 @@ printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) -printf "%s\n" "#define HCL_ENDIAN_UNKNOWN /**/" >>confdefs.h +printf "%s\n" "#define HAK_ENDIAN_UNKNOWN /**/" >>confdefs.h ;; esac @@ -19882,14 +19882,14 @@ if test "x$enable_debug" = "xyes" then CFLAGS="$CFLAGS -g -D_DEBUG -UNDEBUG -U_FORTIFY_SOURCE" -printf "%s\n" "#define HCL_BUILD_DEBUG 1" >>confdefs.h +printf "%s\n" "#define HAK_BUILD_DEBUG 1" >>confdefs.h BUILD_MODE="debug" else CFLAGS="$CFLAGS -DNDEBUG -U_DEBUG -U_FORTIFY_SOURCE" -printf "%s\n" "#define HCL_BUILD_RELEASE 1" >>confdefs.h +printf "%s\n" "#define HAK_BUILD_RELEASE 1" >>confdefs.h BUILD_MODE="release" @@ -19908,40 +19908,40 @@ fi if test "${enable_wide_char}" = "yes:4" then -printf "%s\n" "#define HCL_WIDE_CHAR_SIZE 4" >>confdefs.h +printf "%s\n" "#define HAK_WIDE_CHAR_SIZE 4" >>confdefs.h -printf "%s\n" "#define HCL_ENABLE_WIDE_CHAR 1" >>confdefs.h +printf "%s\n" "#define HAK_ENABLE_WIDE_CHAR 1" >>confdefs.h elif test "${enable_wide_char}" = "yes:2" then -printf "%s\n" "#define HCL_WIDE_CHAR_SIZE 2" >>confdefs.h +printf "%s\n" "#define HAK_WIDE_CHAR_SIZE 2" >>confdefs.h -printf "%s\n" "#define HCL_ENABLE_WIDE_CHAR 1" >>confdefs.h +printf "%s\n" "#define HAK_ENABLE_WIDE_CHAR 1" >>confdefs.h elif test "${enable_wide_char}" = "yes" then -printf "%s\n" "#define HCL_WIDE_CHAR_SIZE 1" >>confdefs.h +printf "%s\n" "#define HAK_WIDE_CHAR_SIZE 1" >>confdefs.h -printf "%s\n" "#define HCL_ENABLE_WIDE_CHAR 1" >>confdefs.h +printf "%s\n" "#define HAK_ENABLE_WIDE_CHAR 1" >>confdefs.h elif test "${enable_wide_char}" = "no:4" then -printf "%s\n" "#define HCL_WIDE_CHAR_SIZE 4" >>confdefs.h +printf "%s\n" "#define HAK_WIDE_CHAR_SIZE 4" >>confdefs.h elif test "${enable_wide_char}" = "no:2" then -printf "%s\n" "#define HCL_WIDE_CHAR_SIZE 2" >>confdefs.h +printf "%s\n" "#define HAK_WIDE_CHAR_SIZE 2" >>confdefs.h else -printf "%s\n" "#define HCL_WIDE_CHAR_SIZE 1" >>confdefs.h +printf "%s\n" "#define HAK_WIDE_CHAR_SIZE 1" >>confdefs.h fi @@ -19958,7 +19958,7 @@ fi if test "${enable_full_liw}" = "yes" then -printf "%s\n" "#define HCL_ENABLE_FULL_LIW 1" >>confdefs.h +printf "%s\n" "#define HAK_ENABLE_FULL_LIW 1" >>confdefs.h fi @@ -19980,7 +19980,7 @@ fi if test "x${enable_dynamic_module}" = "xyes" then -printf "%s\n" "#define HCL_ENABLE_DYNAMIC_MODULE 1" >>confdefs.h +printf "%s\n" "#define HAK_ENABLE_DYNAMIC_MODULE 1" >>confdefs.h fi if test "x${enable_dynamic_module}" = "xyes"; then @@ -20011,7 +20011,7 @@ fi if test "x${enable_static_module}" = "xyes" then -printf "%s\n" "#define HCL_ENABLE_STATIC_MODULE 1" >>confdefs.h +printf "%s\n" "#define HAK_ENABLE_STATIC_MODULE 1" >>confdefs.h fi if test "x${enable_static_module}" = "xyes"; then @@ -20056,7 +20056,7 @@ then if test "x${ac_cv_header_ltdl_h}" = "xyes" -a "${LTDL_LIBS}" != "" then -printf "%s\n" "#define HCL_ENABLE_LIBLTDL /**/" >>confdefs.h +printf "%s\n" "#define HAK_ENABLE_LIBLTDL /**/" >>confdefs.h else enable_libltdl="no" @@ -20086,7 +20086,7 @@ then if test "x${ac_cv_header_libunwind_h}" = "xyes" -a "${UNWIND_LIBS}" != "" then -printf "%s\n" "#define HCL_ENABLE_LIBUNWIND /**/" >>confdefs.h +printf "%s\n" "#define HAK_ENABLE_LIBUNWIND /**/" >>confdefs.h else enable_libunwind="no" @@ -20116,71 +20116,71 @@ then LIBS="$LIBS $PTHREAD_LIBS" fi -# Check whether --enable-hclx was given. -if test ${enable_hclx+y} +# Check whether --enable-hakx was given. +if test ${enable_hakx+y} then : - enableval=$enable_hclx; enable_hclx=$enableval + enableval=$enable_hakx; enable_hakx=$enableval else case e in #( - e) enable_hclx=no + e) enable_hakx=no ;; esac fi - if test "x${enable_hclx}" = "xyes"; then - ENABLE_HCLX_TRUE= - ENABLE_HCLX_FALSE='#' + if test "x${enable_hakx}" = "xyes"; then + ENABLE_HAKX_TRUE= + ENABLE_HAKX_FALSE='#' else - ENABLE_HCLX_TRUE='#' - ENABLE_HCLX_FALSE= + ENABLE_HAKX_TRUE='#' + ENABLE_HAKX_FALSE= fi -# Check whether --enable-hclgo was given. -if test ${enable_hclgo+y} +# Check whether --enable-hakgo was given. +if test ${enable_hakgo+y} then : - enableval=$enable_hclgo; enable_hclgo=$enableval + enableval=$enable_hakgo; enable_hakgo=$enableval else case e in #( - e) enable_hclgo=no + e) enable_hakgo=no ;; esac fi - if test "x${enable_hclgo}" = "xyes"; then - ENABLE_HCLGO_TRUE= - ENABLE_HCLGO_FALSE='#' + if test "x${enable_hakgo}" = "xyes"; then + ENABLE_HAKGO_TRUE= + ENABLE_HAKGO_FALSE='#' else - ENABLE_HCLGO_TRUE='#' - ENABLE_HCLGO_FALSE= + ENABLE_HAKGO_TRUE='#' + ENABLE_HAKGO_FALSE= fi -HCL_PROJECT_AUTHOR="${PACKAGE_BUGREPORT}" +HAK_PROJECT_AUTHOR="${PACKAGE_BUGREPORT}" -HCL_PROJECT_URL="${PACKAGE_URL}" +HAK_PROJECT_URL="${PACKAGE_URL}" -HCL_SYS_LIB_SEARCH_PATH_SPEC="${sys_lib_search_path_spec}" +HAK_SYS_LIB_SEARCH_PATH_SPEC="${sys_lib_search_path_spec}" - if test "x${hcl_lib_quadmath_required}" = "xyes"; then - HCL_LIB_QUADMATH_REQUIRED_TRUE= - HCL_LIB_QUADMATH_REQUIRED_FALSE='#' + if test "x${hak_lib_quadmath_required}" = "xyes"; then + HAK_LIB_QUADMATH_REQUIRED_TRUE= + HAK_LIB_QUADMATH_REQUIRED_FALSE='#' else - HCL_LIB_QUADMATH_REQUIRED_TRUE='#' - HCL_LIB_QUADMATH_REQUIRED_FALSE= + HAK_LIB_QUADMATH_REQUIRED_TRUE='#' + HAK_LIB_QUADMATH_REQUIRED_FALSE= fi if test `expr " $0" : " '.*"` = 0; then - hcl_configure_cmd="'$0'" + hak_configure_cmd="'$0'" else - hcl_configure_cmd="$0" + hak_configure_cmd="$0" fi -printf "%s\n" "#define HCL_CONFIGURE_ARGS \"$ac_configure_args\"" >>confdefs.h +printf "%s\n" "#define HAK_CONFIGURE_ARGS \"$ac_configure_args\"" >>confdefs.h -printf "%s\n" "#define HCL_CONFIGURE_CMD \"$hcl_configure_cmd\"" >>confdefs.h +printf "%s\n" "#define HAK_CONFIGURE_CMD \"$hak_configure_cmd\"" >>confdefs.h ac_config_files="$ac_config_files Makefile lib/Makefile mod/Makefile bin/Makefile pas/Makefile t/Makefile" @@ -20367,16 +20367,16 @@ if test -z "${ENABLE_LIBUNWIND_TRUE}" && test -z "${ENABLE_LIBUNWIND_FALSE}"; th as_fn_error $? "conditional \"ENABLE_LIBUNWIND\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${ENABLE_HCLX_TRUE}" && test -z "${ENABLE_HCLX_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_HCLX\" was never defined. +if test -z "${ENABLE_HAKX_TRUE}" && test -z "${ENABLE_HAKX_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_HAKX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${ENABLE_HCLGO_TRUE}" && test -z "${ENABLE_HCLGO_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_HCLGO\" was never defined. +if test -z "${ENABLE_HAKGO_TRUE}" && test -z "${ENABLE_HAKGO_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_HAKGO\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${HCL_LIB_QUADMATH_REQUIRED_TRUE}" && test -z "${HCL_LIB_QUADMATH_REQUIRED_FALSE}"; then - as_fn_error $? "conditional \"HCL_LIB_QUADMATH_REQUIRED\" was never defined. +if test -z "${HAK_LIB_QUADMATH_REQUIRED_TRUE}" && test -z "${HAK_LIB_QUADMATH_REQUIRED_FALSE}"; then + as_fn_error $? "conditional \"HAK_LIB_QUADMATH_REQUIRED\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi @@ -20772,7 +20772,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by hcl $as_me 0.1.0, which was +This file was extended by hak $as_me 0.1.0, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -20833,7 +20833,7 @@ Configuration commands: $config_commands Report bugs to . -hcl home page: ." +hak home page: ." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` @@ -20841,7 +20841,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -hcl config.status 0.1.0 +hak config.status 0.1.0 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" @@ -21255,7 +21255,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 for ac_config_target in $ac_config_targets do case $ac_config_target in - "lib/hcl-cfg.h") CONFIG_HEADERS="$CONFIG_HEADERS lib/hcl-cfg.h" ;; + "lib/hak-cfg.h") CONFIG_HEADERS="$CONFIG_HEADERS lib/hak-cfg.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; diff --git a/configure.ac b/configure.ac index 944b401..d4914d8 100644 --- a/configure.ac +++ b/configure.ac @@ -1,8 +1,8 @@ AC_PREREQ([2.71]) -AC_INIT([hcl],[0.1.0],[Chung, Hyung-Hwan (hyunghwan.chung@gmail.com)],[],[http://code.miflux.com/hyung-hwan/hcl]) +AC_INIT([hak],[0.1.0],[Chung, Hyung-Hwan (hyunghwan.chung@gmail.com)],[],[http://code.miflux.com/hyung-hwan/hak]) -AC_CONFIG_HEADERS([lib/hcl-cfg.h]) +AC_CONFIG_HEADERS([lib/hak-cfg.h]) AC_CONFIG_AUX_DIR([ac]) AC_CONFIG_MACRO_DIR([m4]) @@ -40,7 +40,7 @@ then fi dnl indicate the existence of config.h -CFLAGS="$CFLAGS -DHCL_HAVE_CFG_H" +CFLAGS="$CFLAGS -DHAK_HAVE_CFG_H" dnl make visible the 64-bit interface to the file system CFLAGS="$CFLAGS -D_LARGEFILE64_SOURCE" @@ -283,7 +283,7 @@ then if test ${ac_cv_sizeof_socklen_t} -gt 0 then AX_CHECK_SIGN([socklen_t], - [ AC_DEFINE(HCL_SOCKLEN_T_IS_SIGNED, 1, [Define if socklen_t is signed]) ], + [ AC_DEFINE(HAK_SOCKLEN_T_IS_SIGNED, 1, [Define if socklen_t is signed]) ], [ AS_ECHO_N("") ], [#include #include ]) @@ -295,7 +295,7 @@ then if test ${ac_cv_sizeof_sa_family_t} -gt 0 then AX_CHECK_SIGN([sa_family_t], - [ AC_DEFINE(HCL_SA_FAMILY_T_IS_SIGNED, 1, [Define if sa_family_t is signed]) ], + [ AC_DEFINE(HAK_SA_FAMILY_T_IS_SIGNED, 1, [Define if sa_family_t is signed]) ], [ AS_ECHO_N("") ], [#include #include ]) @@ -308,7 +308,7 @@ then #include #include ], [ac_cv_offsteof_sa_family=0]) AC_MSG_RESULT([$ac_cv_offsetof_sa_family]) - AC_DEFINE_UNQUOTED(HCL_OFFSETOF_SA_FAMILY, ${ac_cv_offsetof_sa_family}, [offsetof(struct sockaddr, sa_family)]) + AC_DEFINE_UNQUOTED(HAK_OFFSETOF_SA_FAMILY, ${ac_cv_offsetof_sa_family}, [offsetof(struct sockaddr, sa_family)]) else AC_CHECK_SIZEOF(struct sockaddr_in,,[ @@ -339,7 +339,7 @@ else if test ${ac_cv_sizeof_socklen_t} -gt 0 then AX_CHECK_SIGN([socklen_t], - [ AC_DEFINE(HCL_SOCKLEN_T_IS_SIGNED, 1, [Define if socklen_t is signed]) ], + [ AC_DEFINE(HAK_SOCKLEN_T_IS_SIGNED, 1, [Define if socklen_t is signed]) ], [ AS_ECHO_N("") ], [#include #include ]) @@ -352,7 +352,7 @@ else if test ${ac_cv_sizeof_sa_family_t} -gt 0 then AX_CHECK_SIGN([sa_family_t], - [ AC_DEFINE(HCL_SA_FAMILY_T_IS_SIGNED, 1, [Define if sa_family_t is signed]) ], + [ AC_DEFINE(HAK_SA_FAMILY_T_IS_SIGNED, 1, [Define if sa_family_t is signed]) ], [ AS_ECHO_N("") ], [#include #include @@ -366,7 +366,7 @@ else #include #include ], [ac_cv_offsteof_sa_family=0]) AC_MSG_RESULT([$ac_cv_offsetof_sa_family]) - AC_DEFINE_UNQUOTED(HCL_OFFSETOF_SA_FAMILY, ${ac_cv_offsetof_sa_family}, [offsetof(struct sockaddr, sa_family)]) + AC_DEFINE_UNQUOTED(HAK_OFFSETOF_SA_FAMILY, ${ac_cv_offsetof_sa_family}, [offsetof(struct sockaddr, sa_family)]) fi dnl gcc 3.4.3 on opensolaris x86 gave this warning without -msse or @@ -378,7 +378,7 @@ dnl so i've added this check to determine if the compiler has dnl proper support for __int128_t. dnl dnl Changing ac_cv_sizeof___int128_t here doesn't corret SIZEOF___INT128_T -dnl since it's already generated. It only affects HCL_SIZEOF___INT128_T below. +dnl since it's already generated. It only affects HAK_SIZEOF___INT128_T below. if test ${ac_cv_sizeof___int128_t} -gt 0 then AC_MSG_CHECKING([__int128_t with % and va_arg]) @@ -423,7 +423,7 @@ fi dnl Quadmath functions may not be in the default c library. dnl Find a library containing them. Disable the float128 type dnl if they are not available. -hcl_lib_quadmath_required="" +hak_lib_quadmath_required="" if test ${ac_cv_sizeof___float128} -gt 0 then AC_CHECK_FUNCS([quadmath_snprintf]) @@ -442,7 +442,7 @@ then AC_CHECK_LIB([quadmath], [quadmath_snprintf], [ QUADMATH_LIBS="-lquadmath" LIBM="-lquadmath $LIBM" - hcl_lib_quadmath_required="yes" + hak_lib_quadmath_required="yes" AC_DEFINE(HAVE_QUADMATH_SNPRINTF, 1) ]) @@ -469,79 +469,79 @@ fi AC_SUBST(QUADMATH_LIBS) -AC_DEFINE_UNQUOTED(HCL_SIZEOF_CHAR, ${ac_cv_sizeof_char}, [sizeof(char)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF_SHORT, ${ac_cv_sizeof_short}, [sizeof(short)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF_INT, ${ac_cv_sizeof_int}, [sizeof(int)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF_LONG, ${ac_cv_sizeof_long}, [sizeof(long)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF_LONG_LONG, ${ac_cv_sizeof_long_long}, [sizeof(long long)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF___INT8, ${ac_cv_sizeof___int8}, [sizeof(__int8)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF___INT16, ${ac_cv_sizeof___int16}, [sizeof(__int16)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF___INT32, ${ac_cv_sizeof___int32}, [sizeof(__int32)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF___INT64, ${ac_cv_sizeof___int64}, [sizeof(__int64)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF___INT128, ${ac_cv_sizeof___int128}, [sizeof(__int128)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF___INT128_T, ${ac_cv_sizeof___int128_t}, [sizeof(__int128_t)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF___UINT128_T, ${ac_cv_sizeof___uint128_t}, [sizeof(__uint128_t)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF_VOID_P, ${ac_cv_sizeof_void_p}, [sizeof(void*)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF_FLOAT, ${ac_cv_sizeof_float}, [sizeof(float)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF_DOUBLE, ${ac_cv_sizeof_double}, [sizeof(double)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF_LONG_DOUBLE, ${ac_cv_sizeof_long_double}, [sizeof(long double)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF___FLOAT128, ${ac_cv_sizeof___float128}, [sizeof(__float128)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_CHAR, ${ac_cv_sizeof_char}, [sizeof(char)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_SHORT, ${ac_cv_sizeof_short}, [sizeof(short)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_INT, ${ac_cv_sizeof_int}, [sizeof(int)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_LONG, ${ac_cv_sizeof_long}, [sizeof(long)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_LONG_LONG, ${ac_cv_sizeof_long_long}, [sizeof(long long)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF___INT8, ${ac_cv_sizeof___int8}, [sizeof(__int8)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF___INT16, ${ac_cv_sizeof___int16}, [sizeof(__int16)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF___INT32, ${ac_cv_sizeof___int32}, [sizeof(__int32)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF___INT64, ${ac_cv_sizeof___int64}, [sizeof(__int64)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF___INT128, ${ac_cv_sizeof___int128}, [sizeof(__int128)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF___INT128_T, ${ac_cv_sizeof___int128_t}, [sizeof(__int128_t)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF___UINT128_T, ${ac_cv_sizeof___uint128_t}, [sizeof(__uint128_t)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_VOID_P, ${ac_cv_sizeof_void_p}, [sizeof(void*)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_FLOAT, ${ac_cv_sizeof_float}, [sizeof(float)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_DOUBLE, ${ac_cv_sizeof_double}, [sizeof(double)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_LONG_DOUBLE, ${ac_cv_sizeof_long_double}, [sizeof(long double)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF___FLOAT128, ${ac_cv_sizeof___float128}, [sizeof(__float128)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF_WCHAR_T, ${ac_cv_sizeof_wchar_t}, [sizeof(wchar_t)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF_OFF_T, ${ac_cv_sizeof_off_t}, [sizeof(off_t)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF_OFF64_T, ${ac_cv_sizeof_off64_t}, [sizeof(off64_t)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_WCHAR_T, ${ac_cv_sizeof_wchar_t}, [sizeof(wchar_t)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_OFF_T, ${ac_cv_sizeof_off_t}, [sizeof(off_t)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_OFF64_T, ${ac_cv_sizeof_off64_t}, [sizeof(off64_t)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF_MBSTATE_T, ${ac_cv_sizeof_mbstate_t}, [sizeof(mbstate_t)]) -AC_DEFINE_UNQUOTED(HCL_MBLEN_MAX, ${ax_cv_numvalof_MB_LEN_MAX}, [MB_LEN_MAX]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_MBSTATE_T, ${ac_cv_sizeof_mbstate_t}, [sizeof(mbstate_t)]) +AC_DEFINE_UNQUOTED(HAK_MBLEN_MAX, ${ax_cv_numvalof_MB_LEN_MAX}, [MB_LEN_MAX]) if test ${ax_cv_numvalof_PATH_MAX} -gt 0 then - AC_DEFINE_UNQUOTED(HCL_PATH_MAX, ${ax_cv_numvalof_PATH_MAX}, [PATH_MAX]) + AC_DEFINE_UNQUOTED(HAK_PATH_MAX, ${ax_cv_numvalof_PATH_MAX}, [PATH_MAX]) fi -AC_DEFINE_UNQUOTED(HCL_SIZEOF_STRUCT_SOCKADDR_IN, ${ac_cv_sizeof_struct_sockaddr_in}, [sizeof(struct sockaddr_in)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF_STRUCT_SOCKADDR_IN6, ${ac_cv_sizeof_struct_sockaddr_in6}, [sizeof(struct sockaddr_in6)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF_STRUCT_SOCKADDR_LL, ${ac_cv_sizeof_struct_sockaddr_ll}, [sizeof(struct sockaddr_ll)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF_STRUCT_SOCKADDR_UN, ${ac_cv_sizeof_struct_sockaddr_un}, [sizeof(struct sockaddr_un)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF_STRUCT_SOCKADDR_DL, ${ac_cv_sizeof_struct_sockaddr_dl}, [sizeof(struct sockaddr_dl)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_STRUCT_SOCKADDR_IN, ${ac_cv_sizeof_struct_sockaddr_in}, [sizeof(struct sockaddr_in)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_STRUCT_SOCKADDR_IN6, ${ac_cv_sizeof_struct_sockaddr_in6}, [sizeof(struct sockaddr_in6)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_STRUCT_SOCKADDR_LL, ${ac_cv_sizeof_struct_sockaddr_ll}, [sizeof(struct sockaddr_ll)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_STRUCT_SOCKADDR_UN, ${ac_cv_sizeof_struct_sockaddr_un}, [sizeof(struct sockaddr_un)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_STRUCT_SOCKADDR_DL, ${ac_cv_sizeof_struct_sockaddr_dl}, [sizeof(struct sockaddr_dl)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF_SOCKLEN_T, ${ac_cv_sizeof_socklen_t}, [sizeof(socklen_t)]) -AC_DEFINE_UNQUOTED(HCL_SIZEOF_SA_FAMILY_T, ${ac_cv_sizeof_sa_family_t}, [sizeof(sa_family_t)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_SOCKLEN_T, ${ac_cv_sizeof_socklen_t}, [sizeof(socklen_t)]) +AC_DEFINE_UNQUOTED(HAK_SIZEOF_SA_FAMILY_T, ${ac_cv_sizeof_sa_family_t}, [sizeof(sa_family_t)]) -hcl_package_version_major="`echo ${PACKAGE_VERSION} | cut -d. -f1`" -hcl_package_version_minor="`echo ${PACKAGE_VERSION} | cut -d. -f2`" -hcl_package_version_patch="`echo ${PACKAGE_VERSION} | cut -d. -f3`" -AC_SUBST(PACKAGE_VERSION_MAJOR, ${hcl_package_version_major}) -AC_SUBST(PACKAGE_VERSION_MINOR, ${hcl_package_version_minor}) -AC_SUBST(PACKAGE_VERSION_PATCH, ${hcl_package_version_patch}) +hak_package_version_major="`echo ${PACKAGE_VERSION} | cut -d. -f1`" +hak_package_version_minor="`echo ${PACKAGE_VERSION} | cut -d. -f2`" +hak_package_version_patch="`echo ${PACKAGE_VERSION} | cut -d. -f3`" +AC_SUBST(PACKAGE_VERSION_MAJOR, ${hak_package_version_major}) +AC_SUBST(PACKAGE_VERSION_MINOR, ${hak_package_version_minor}) +AC_SUBST(PACKAGE_VERSION_PATCH, ${hak_package_version_patch}) -AC_DEFINE_UNQUOTED(HCL_PACKAGE_VERSION, "${PACKAGE_VERSION}", [Package version]) -dnl AC_DEFINE_UNQUOTED(HCL_PACKAGE_VERSION_MAJOR, $(echo ${VERSION} | cut -d. -f1), [Major version number]) -dnl AC_DEFINE_UNQUOTED(HCL_PACKAGE_VERSION_MINOR, $(echo ${VERSION} | cut -d. -f2), [Minor version number]) -dnl AC_DEFINE_UNQUOTED(HCL_PACKAGE_VERSION_PATCH, $(echo ${VERSION} | cut -d. -f3), [Patch level]) -AC_DEFINE_UNQUOTED(HCL_PACKAGE_VERSION_MAJOR, ${hcl_package_version_major}, [Major version number]) -AC_DEFINE_UNQUOTED(HCL_PACKAGE_VERSION_MINOR, ${hcl_package_version_minor}, [Minor version number]) -AC_DEFINE_UNQUOTED(HCL_PACKAGE_VERSION_PATCH, ${hcl_package_version_patch}, [Patch level]) +AC_DEFINE_UNQUOTED(HAK_PACKAGE_VERSION, "${PACKAGE_VERSION}", [Package version]) +dnl AC_DEFINE_UNQUOTED(HAK_PACKAGE_VERSION_MAJOR, $(echo ${VERSION} | cut -d. -f1), [Major version number]) +dnl AC_DEFINE_UNQUOTED(HAK_PACKAGE_VERSION_MINOR, $(echo ${VERSION} | cut -d. -f2), [Minor version number]) +dnl AC_DEFINE_UNQUOTED(HAK_PACKAGE_VERSION_PATCH, $(echo ${VERSION} | cut -d. -f3), [Patch level]) +AC_DEFINE_UNQUOTED(HAK_PACKAGE_VERSION_MAJOR, ${hak_package_version_major}, [Major version number]) +AC_DEFINE_UNQUOTED(HAK_PACKAGE_VERSION_MINOR, ${hak_package_version_minor}, [Minor version number]) +AC_DEFINE_UNQUOTED(HAK_PACKAGE_VERSION_PATCH, ${hak_package_version_patch}, [Patch level]) -AC_DEFINE_UNQUOTED(HCL_PACKAGE_AUTHOR,"${PACKAGE_BUGREPORT}", [Author]) -AC_DEFINE_UNQUOTED(HCL_PACKAGE_NAME,"${PACKAGE_NAME}", [package name]) -AC_DEFINE_UNQUOTED(HCL_PACKAGE_URL, "${PACKAGE_URL}", [Project URL]) +AC_DEFINE_UNQUOTED(HAK_PACKAGE_AUTHOR,"${PACKAGE_BUGREPORT}", [Author]) +AC_DEFINE_UNQUOTED(HAK_PACKAGE_NAME,"${PACKAGE_NAME}", [package name]) +AC_DEFINE_UNQUOTED(HAK_PACKAGE_URL, "${PACKAGE_URL}", [Project URL]) AC_C_BIGENDIAN( - [AC_DEFINE([HCL_ENDIAN_BIG],[],[Big Endian])], - [AC_DEFINE([HCL_ENDIAN_LITTLE],[],[Little Endian])], - [AC_DEFINE([HCL_ENDIAN_UNKNOWN],[],[Unknown Endian])]) + [AC_DEFINE([HAK_ENDIAN_BIG],[],[Big Endian])], + [AC_DEFINE([HAK_ENDIAN_LITTLE],[],[Little Endian])], + [AC_DEFINE([HAK_ENDIAN_UNKNOWN],[],[Unknown Endian])]) AC_ARG_ENABLE([debug], [AS_HELP_STRING([--enable-debug],[build the library in the debug mode (default. no)])], enable_debug=$enableval,enable_debug=no) if test "x$enable_debug" = "xyes" then [CFLAGS="$CFLAGS -g -D_DEBUG -UNDEBUG -U_FORTIFY_SOURCE"] - AC_DEFINE([HCL_BUILD_DEBUG],[1],[build release/debug]) + AC_DEFINE([HAK_BUILD_DEBUG],[1],[build release/debug]) AC_SUBST(BUILD_MODE, "debug") else [CFLAGS="$CFLAGS -DNDEBUG -U_DEBUG -U_FORTIFY_SOURCE"] - AC_DEFINE([HCL_BUILD_RELEASE],[1],[build release/debug]) + AC_DEFINE([HAK_BUILD_RELEASE],[1],[build release/debug]) AC_SUBST(BUILD_MODE, "release") fi @@ -552,24 +552,24 @@ AC_ARG_ENABLE([wide-char], ) if test "${enable_wide_char}" = "yes:4" then - AC_DEFINE([HCL_WIDE_CHAR_SIZE],[4],[Wide-character type size]) - AC_DEFINE([HCL_ENABLE_WIDE_CHAR],[1],[Use the wide-character type as the default character type]) + AC_DEFINE([HAK_WIDE_CHAR_SIZE],[4],[Wide-character type size]) + AC_DEFINE([HAK_ENABLE_WIDE_CHAR],[1],[Use the wide-character type as the default character type]) elif test "${enable_wide_char}" = "yes:2" then - AC_DEFINE([HCL_WIDE_CHAR_SIZE],[2],[Wide-character type size]) - AC_DEFINE([HCL_ENABLE_WIDE_CHAR],[1],[Use the wide-character type as the default character type]) + AC_DEFINE([HAK_WIDE_CHAR_SIZE],[2],[Wide-character type size]) + AC_DEFINE([HAK_ENABLE_WIDE_CHAR],[1],[Use the wide-character type as the default character type]) elif test "${enable_wide_char}" = "yes" then - AC_DEFINE([HCL_WIDE_CHAR_SIZE],[1],[Wide-character type size]) - AC_DEFINE([HCL_ENABLE_WIDE_CHAR],[1],[Use the wide-character type as the default character type]) + AC_DEFINE([HAK_WIDE_CHAR_SIZE],[1],[Wide-character type size]) + AC_DEFINE([HAK_ENABLE_WIDE_CHAR],[1],[Use the wide-character type as the default character type]) elif test "${enable_wide_char}" = "no:4" then - AC_DEFINE([HCL_WIDE_CHAR_SIZE],[4],[Wide-character type size]) + AC_DEFINE([HAK_WIDE_CHAR_SIZE],[4],[Wide-character type size]) elif test "${enable_wide_char}" = "no:2" then - AC_DEFINE([HCL_WIDE_CHAR_SIZE],[2],[Wide-character type size]) + AC_DEFINE([HAK_WIDE_CHAR_SIZE],[2],[Wide-character type size]) else - AC_DEFINE([HCL_WIDE_CHAR_SIZE],[1],[Wide-character type size]) + AC_DEFINE([HAK_WIDE_CHAR_SIZE],[1],[Wide-character type size]) fi AC_ARG_ENABLE([full-liw], @@ -579,7 +579,7 @@ AC_ARG_ENABLE([full-liw], ) if test "${enable_full_liw}" = "yes" then - AC_DEFINE([HCL_ENABLE_FULL_LIW],[1],[Use a full word as a large integer word]) + AC_DEFINE([HAK_ENABLE_FULL_LIW],[1],[Use a full word as a large integer word]) fi dnl ===== enable-dynamic-module ===== @@ -595,7 +595,7 @@ fi if test "x${enable_dynamic_module}" = "xyes" then - AC_DEFINE([HCL_ENABLE_DYNAMIC_MODULE],[1],[enable dynamic module capability]) + AC_DEFINE([HAK_ENABLE_DYNAMIC_MODULE],[1],[enable dynamic module capability]) fi AM_CONDITIONAL(ENABLE_DYNAMIC_MODULE, test "x${enable_dynamic_module}" = "xyes") @@ -613,7 +613,7 @@ fi if test "x${enable_static_module}" = "xyes" then - AC_DEFINE([HCL_ENABLE_STATIC_MODULE],[1],[link modules statically into the main library]) + AC_DEFINE([HAK_ENABLE_STATIC_MODULE],[1],[link modules statically into the main library]) fi AM_CONDITIONAL(ENABLE_STATIC_MODULE, test "x${enable_static_module}" = "xyes") @@ -632,7 +632,7 @@ if test "x${enable_libltdl}" = "xyes" then if test "x${ac_cv_header_ltdl_h}" = "xyes" -a "${LTDL_LIBS}" != "" then - AC_DEFINE([HCL_ENABLE_LIBLTDL],[],[use libltdl when loading a dynamic module]) + AC_DEFINE([HAK_ENABLE_LIBLTDL],[],[use libltdl when loading a dynamic module]) else enable_libltdl="no" fi @@ -649,7 +649,7 @@ if test "x${enable_libunwind}" = "xyes" then if test "x${ac_cv_header_libunwind_h}" = "xyes" -a "${UNWIND_LIBS}" != "" then - AC_DEFINE([HCL_ENABLE_LIBUNWIND],[],[use libunwind for backtracing stack frames]) + AC_DEFINE([HAK_ENABLE_LIBUNWIND],[],[use libunwind for backtracing stack frames]) else enable_libunwind="no" fi @@ -667,38 +667,38 @@ then [LIBS="$LIBS $PTHREAD_LIBS"] fi -dnl ===== enable-hclx ===== -AC_ARG_ENABLE([hclx], - [AS_HELP_STRING([--enable-hclx],[build libhclx(default. no)])], - enable_hclx=$enableval, - enable_hclx=no +dnl ===== enable-hakx ===== +AC_ARG_ENABLE([hakx], + [AS_HELP_STRING([--enable-hakx],[build libhakx(default. no)])], + enable_hakx=$enableval, + enable_hakx=no ) -AM_CONDITIONAL(ENABLE_HCLX, test "x${enable_hclx}" = "xyes") +AM_CONDITIONAL(ENABLE_HAKX, test "x${enable_hakx}" = "xyes") -dnl ===== enable-hclgo ===== -AC_ARG_ENABLE([hclgo], - [AS_HELP_STRING([--enable-hclgo],[build the go wrapper(default. no)])], - enable_hclgo=$enableval, - enable_hclgo=no +dnl ===== enable-hakgo ===== +AC_ARG_ENABLE([hakgo], + [AS_HELP_STRING([--enable-hakgo],[build the go wrapper(default. no)])], + enable_hakgo=$enableval, + enable_hakgo=no ) -AM_CONDITIONAL(ENABLE_HCLGO, test "x${enable_hclgo}" = "xyes") +AM_CONDITIONAL(ENABLE_HAKGO, test "x${enable_hakgo}" = "xyes") dnl ==== subsititution of some key items ==== -AC_SUBST(HCL_PROJECT_AUTHOR, "${PACKAGE_BUGREPORT}") -AC_SUBST(HCL_PROJECT_URL, "${PACKAGE_URL}") -AC_SUBST(HCL_SYS_LIB_SEARCH_PATH_SPEC, ["${sys_lib_search_path_spec}"]) -AM_CONDITIONAL(HCL_LIB_QUADMATH_REQUIRED, test "x${hcl_lib_quadmath_required}" = "xyes") +AC_SUBST(HAK_PROJECT_AUTHOR, "${PACKAGE_BUGREPORT}") +AC_SUBST(HAK_PROJECT_URL, "${PACKAGE_URL}") +AC_SUBST(HAK_SYS_LIB_SEARCH_PATH_SPEC, ["${sys_lib_search_path_spec}"]) +AM_CONDITIONAL(HAK_LIB_QUADMATH_REQUIRED, test "x${hak_lib_quadmath_required}" = "xyes") dnl === configure arguments if test `expr " [$]0" : " '.*"` = 0; then - hcl_configure_cmd="'[$]0'" + hak_configure_cmd="'[$]0'" else - hcl_configure_cmd="[$]0" + hak_configure_cmd="[$]0" fi -AC_DEFINE_UNQUOTED(HCL_CONFIGURE_ARGS, ["$ac_configure_args"], [configure arguments]) -AC_DEFINE_UNQUOTED(HCL_CONFIGURE_CMD, ["$hcl_configure_cmd"], [configure command]) +AC_DEFINE_UNQUOTED(HAK_CONFIGURE_ARGS, ["$ac_configure_args"], [configure arguments]) +AC_DEFINE_UNQUOTED(HAK_CONFIGURE_CMD, ["$hak_configure_cmd"], [configure command]) AC_CONFIG_FILES([ Makefile diff --git a/go.mod b/go.mod index d494942..5242b84 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,3 @@ -module code.miflux.com/hyung-hwan/hcl +module code.miflux.com/hyung-hwan/hak go 1.20 diff --git a/go/cb.go b/go/cb.go index c4c4c06..b0ec507 100644 --- a/go/cb.go +++ b/go/cb.go @@ -1,8 +1,8 @@ -package hcl +package hak /* -#include -#include +#include +#include #include // for memcpy */ import "C" @@ -82,26 +82,26 @@ func (io *IOHandleTable) slot_to_io_handle(slot int) IOHandle { var io_tab IOHandleTable = IOHandleTable{} -//export hcl_go_cci_handler -func hcl_go_cci_handler(c *C.hcl_t, cmd C.hcl_io_cmd_t, arg unsafe.Pointer) C.int { +//export hak_go_cci_handler +func hak_go_cci_handler(c *C.hak_t, cmd C.hak_io_cmd_t, arg unsafe.Pointer) C.int { var ( - g *HCL + g *HAK err error ) g = c_to_go(c) switch cmd { - case C.HCL_IO_OPEN: + case C.HAK_IO_OPEN: var ( - ioarg *C.hcl_io_cciarg_t + ioarg *C.hak_io_cciarg_t name string fd int tptr unsafe.Pointer tlen C.size_t ) - ioarg = (*C.hcl_io_cciarg_t)(arg) + ioarg = (*C.hak_io_cciarg_t)(arg) if ioarg.includer == nil /* || ioarg.includer.name == nil */ { // main stream @@ -120,9 +120,9 @@ func hcl_go_cci_handler(c *C.hcl_t, cmd C.hcl_io_cmd_t, arg unsafe.Pointer) C.in } tlen = C.size_t(len(name)) // number of bytes in the string - tptr = C.hcl_allocmem(c, C.size_t(unsafe.Sizeof(fd)) + C.size_t(unsafe.Sizeof(tlen)) + tlen) + tptr = C.hak_allocmem(c, C.size_t(unsafe.Sizeof(fd)) + C.size_t(unsafe.Sizeof(tlen)) + tlen) if tptr == nil { - g.set_errmsg(C.HCL_ESYSMEM, "cci name allocation failure") + g.set_errmsg(C.HAK_ESYSMEM, "cci name allocation failure") return -1 } @@ -131,8 +131,8 @@ func hcl_go_cci_handler(c *C.hcl_t, cmd C.hcl_io_cmd_t, arg unsafe.Pointer) C.in } else { fd, err = g.io.cci.Open(g, name) if err != nil { - g.set_errmsg(C.HCL_EIOERR, err.Error()) - C.hcl_freemem(c, tptr) + g.set_errmsg(C.HAK_EIOERR, err.Error()) + C.hak_freemem(c, tptr) return -1 } } @@ -152,38 +152,38 @@ func hcl_go_cci_handler(c *C.hcl_t, cmd C.hcl_io_cmd_t, arg unsafe.Pointer) C.in ioarg.handle = tptr return 0 - case C.HCL_IO_CLOSE: + case C.HAK_IO_CLOSE: var ( fd int - ioarg *C.hcl_io_cciarg_t + ioarg *C.hak_io_cciarg_t ) - ioarg = (*C.hcl_io_cciarg_t)(arg) + ioarg = (*C.hak_io_cciarg_t)(arg) fd = *(*int)(ioarg.handle) // the descriptor at the beginning if fd >= 0 { g.io.cci.Close(fd) } - C.hcl_freemem(c, ioarg.handle) + C.hak_freemem(c, ioarg.handle) ioarg.handle = nil return 0 - case C.HCL_IO_READ: + case C.HAK_IO_READ: var ( - ioarg *C.hcl_io_cciarg_t + ioarg *C.hak_io_cciarg_t n int i int buf []rune - dummy C.hcl_uch_t + dummy C.hak_uch_t fd int ) - ioarg = (*C.hcl_io_cciarg_t)(arg) + ioarg = (*C.hak_io_cciarg_t)(arg) fd = *(*int)(ioarg.handle) // the descriptor at the beginning buf = make([]rune, 1024) // TODO: different size... n, err = g.io.cci.Read(fd, buf) if err != nil { - g.set_errmsg(C.HCL_EIOERR, err.Error()) + g.set_errmsg(C.HAK_EIOERR, err.Error()) return -1 } @@ -199,34 +199,34 @@ func hcl_go_cci_handler(c *C.hcl_t, cmd C.hcl_io_cmd_t, arg unsafe.Pointer) C.in // member fields. cgo treats union as byte aggregates. dst = uintptr(unsafe.Pointer(&ioarg.buf[0])) for i = 0; i < n; i++ { - //ioarg.buf.c[i] = C.hcl_uch_t(buf[i]) - *(*C.hcl_uch_t)(unsafe.Pointer(dst)) = C.hcl_uch_t(buf[i]) + //ioarg.buf.c[i] = C.hak_uch_t(buf[i]) + *(*C.hak_uch_t)(unsafe.Pointer(dst)) = C.hak_uch_t(buf[i]) dst += unsafe.Sizeof(dummy) } } - ioarg.xlen = C.hcl_oow_t(n) + ioarg.xlen = C.hak_oow_t(n) return 0 } - C.hcl_seterrnum(c, C.HCL_EIOERR) + C.hak_seterrnum(c, C.HAK_EIOERR) return -1 } -//export hcl_go_udi_handler -func hcl_go_udi_handler(c *C.hcl_t, cmd C.hcl_io_cmd_t, arg unsafe.Pointer) C.int { +//export hak_go_udi_handler +func hak_go_udi_handler(c *C.hak_t, cmd C.hak_io_cmd_t, arg unsafe.Pointer) C.int { var ( - g *HCL + g *HAK err error ) g = c_to_go(c) switch cmd { - case C.HCL_IO_OPEN: + case C.HAK_IO_OPEN: err = g.io.udi.Open(g) if err != nil { - g.set_errmsg(C.HCL_EIOERR, err.Error()) + g.set_errmsg(C.HAK_EIOERR, err.Error()) return -1 } @@ -234,47 +234,47 @@ func hcl_go_udi_handler(c *C.hcl_t, cmd C.hcl_io_cmd_t, arg unsafe.Pointer) C.in // mapping has been established and it doesn't handle multiple streams return 0 - case C.HCL_IO_CLOSE: + case C.HAK_IO_CLOSE: g.io.udi.Close() return 0 - case C.HCL_IO_READ: + case C.HAK_IO_READ: var ( - ioarg *C.hcl_io_udiarg_t + ioarg *C.hak_io_udiarg_t n int err error buf []rune ) - ioarg = (*C.hcl_io_udiarg_t)(arg) + ioarg = (*C.hak_io_udiarg_t)(arg) buf = make([]rune, 1024) // TODO: different size... n, err = g.io.udi.Read(buf) if err != nil { - g.set_errmsg(C.HCL_EIOERR, err.Error()) + g.set_errmsg(C.HAK_EIOERR, err.Error()) return -1 } ioarg.xlen = C.ulong(n) return 0 } - C.hcl_seterrnum(c, C.HCL_EIOERR) + C.hak_seterrnum(c, C.HAK_EIOERR) return -1 } -//export hcl_go_udo_handler -func hcl_go_udo_handler(c *C.hcl_t, cmd C.hcl_io_cmd_t, arg unsafe.Pointer) C.int { +//export hak_go_udo_handler +func hak_go_udo_handler(c *C.hak_t, cmd C.hak_io_cmd_t, arg unsafe.Pointer) C.int { var ( - g *HCL + g *HAK err error ) g = c_to_go(c) switch cmd { - case C.HCL_IO_OPEN: + case C.HAK_IO_OPEN: err = g.io.udo.Open(g) if err != nil { - g.set_errmsg(C.HCL_EIOERR, err.Error()) + g.set_errmsg(C.HAK_EIOERR, err.Error()) return -1 } @@ -282,61 +282,61 @@ func hcl_go_udo_handler(c *C.hcl_t, cmd C.hcl_io_cmd_t, arg unsafe.Pointer) C.in // mapping has been established and it doesn't handle multiple streams return 0 - case C.HCL_IO_CLOSE: + case C.HAK_IO_CLOSE: g.io.udo.Close() return 0 - case C.HCL_IO_WRITE: + case C.HAK_IO_WRITE: var ( - ioarg *C.hcl_io_udoarg_t + ioarg *C.hak_io_udoarg_t data []rune err error ) - ioarg = (*C.hcl_io_udoarg_t)(arg) - data = uchars_to_rune_slice((*C.hcl_uch_t)(ioarg.ptr), uintptr(ioarg.len)) + ioarg = (*C.hak_io_udoarg_t)(arg) + data = uchars_to_rune_slice((*C.hak_uch_t)(ioarg.ptr), uintptr(ioarg.len)) err = g.io.udo.Write(data) if err != nil { - g.set_errmsg(C.HCL_EIOERR, err.Error()) + g.set_errmsg(C.HAK_EIOERR, err.Error()) return -1 } - ioarg.xlen = C.hcl_oow_t(len(data)) + ioarg.xlen = C.hak_oow_t(len(data)) return 0 - case C.HCL_IO_WRITE_BYTES: + case C.HAK_IO_WRITE_BYTES: var ( - ioarg *C.hcl_io_udoarg_t + ioarg *C.hak_io_udoarg_t data []byte err error ) - ioarg = (*C.hcl_io_udoarg_t)(arg) + ioarg = (*C.hak_io_udoarg_t)(arg) data = unsafe.Slice((*byte)(ioarg.ptr), ioarg.len) err = g.io.udo.WriteBytes(data) if err != nil { - g.set_errmsg(C.HCL_EIOERR, err.Error()) + g.set_errmsg(C.HAK_EIOERR, err.Error()) return -1 } - ioarg.xlen = C.hcl_oow_t(len(data)) + ioarg.xlen = C.hak_oow_t(len(data)) return 0 - case C.HCL_IO_FLUSH: + case C.HAK_IO_FLUSH: var err error = g.io.udo.Flush() if err != nil { - g.set_errmsg(C.HCL_EIOERR, err.Error()) + g.set_errmsg(C.HAK_EIOERR, err.Error()) return -1 } return 0 } - C.hcl_seterrnum(c, C.HCL_EIOERR) + C.hak_seterrnum(c, C.HAK_EIOERR) return -1 } // ------------------------------------------------------ type CciFileHandler struct { - g *HCL + g *HAK } -func (p *CciFileHandler) Open(g *HCL, name string) (int, error) { +func (p *CciFileHandler) Open(g *HAK, name string) (int, error) { var ( f *os.File r *bufio.Reader @@ -398,12 +398,12 @@ func (p *CciFileHandler) Read(fd int, buf []rune) (int, error) { // ------------------------------------------------------ type UdiFileHandler struct { - g *HCL + g *HAK f *os.File r *bufio.Reader } -func (p *UdiFileHandler) Open(g *HCL) error { +func (p *UdiFileHandler) Open(g *HAK) error { var ( f *os.File // err error @@ -463,7 +463,7 @@ type UdoFileHandler struct { w *bufio.Writer } -func (p *UdoFileHandler) Open(g *HCL) error { +func (p *UdoFileHandler) Open(g *HAK) error { var ( f *os.File // err error diff --git a/go/hak.go b/go/hak.go new file mode 100644 index 0000000..73191c9 --- /dev/null +++ b/go/hak.go @@ -0,0 +1,487 @@ +package hak + +/* +#include +#include +#include // for C.free + +extern int hak_go_cci_handler (hak_t* hak, hak_io_cmd_t cmd, void* arg); +extern int hak_go_udi_handler (hak_t* hak, hak_io_cmd_t cmd, void* arg); +extern int hak_go_udo_handler (hak_t* hak, hak_io_cmd_t cmd, void* arg); + +int hak_cci_handler_for_go (hak_t* hak, hak_io_cmd_t cmd, void* arg) { + return hak_go_cci_handler(hak, cmd, arg); +} +int hak_udi_handler_for_go (hak_t* hak, hak_io_cmd_t cmd, void* arg) { + return hak_go_udi_handler(hak, cmd, arg); +} +int hak_udo_handler_for_go (hak_t* hak, hak_io_cmd_t cmd, void* arg) { + return hak_go_udo_handler(hak, cmd, arg); +} +*/ +import "C" + +import ( + "bufio" + "fmt" + "io" + "os" + "runtime" + "unsafe" +) + +type CciImpl interface { + Open(g *HAK, name string) (int, error) + Close(fd int) + Read(fd int, buf []rune) (int, error) +} + +type UdiImpl interface { + Open(g *HAK) error + Close() + Read(buf []rune) (int, error) +} + +type UdoImpl interface { + Open(g *HAK) error + Close() + Write(data []rune) error + WriteBytes(data []byte) error + Flush() error +} + +type HAK struct { + c *C.hak_t + inst_no int + io struct { + cci CciImpl + cci_main string + udi UdiImpl + udo UdoImpl + } +} + +type Ext struct { + inst_no int +} + +type Err struct { + Line uint + Colm uint + File string + Msg string + Tgt string +} + +type BitMask C.hak_bitmask_t + +const TRAIT_LANG_ENABLE_EOL BitMask = C.HAK_TRAIT_LANG_ENABLE_EOL + +var inst_table InstanceTable + +func deregister_instance(g *HAK) { + if g.inst_no >= 0 { + inst_table.delete_instance(g.inst_no) + g.inst_no = -1 + } +} + +func New() (*HAK, error) { + var c *C.hak_t + var g *HAK + var ext *Ext + var errnum C.hak_errnum_t + + c = C.hak_openstd(C.hak_oow_t(unsafe.Sizeof(*ext)), &errnum) + if c == nil { + var buf [64]C.hak_uch_t + var ptr *C.hak_uch_t + var err error + + ptr = C.hak_errnum_to_errucstr(errnum, &buf[0], C.hak_oow_t(cap(buf))) + err = fmt.Errorf("%s", string(ucstr_to_rune_slice(ptr))) + return nil, err + } + + ext = (*Ext)(unsafe.Pointer(C.hak_getxtn(c))) + + g = &HAK{c: c, inst_no: -1} + + runtime.SetFinalizer(g, deregister_instance) + g.inst_no = inst_table.add_instance(c, g) + ext.inst_no = g.inst_no + + return g, nil +} + +func (hak *HAK) Close() { + C.hak_close(hak.c) + deregister_instance(hak) +} + +func (hak *HAK) make_errinfo() *Err { + var loc C.hak_loc_t + var err Err + var errnum C.hak_errnum_t + + err.Msg = hak.get_errmsg() + + errnum = C.hak_geterrnum(hak.c) + if errnum == C.HAK_ESYNERR { + var synerr C.hak_synerr_t + C.hak_getsynerr(hak.c, &synerr) + loc = synerr.loc + + err.Tgt = string(uchars_to_rune_slice(&synerr.tgt.val[0], uintptr(synerr.tgt.len))) + } else { + C.hak_geterrloc(hak.c, &loc) + } + + err.Line = uint(loc.line) + err.Colm = uint(loc.colm) + if loc.file != nil { + err.File = string(ucstr_to_rune_slice(loc.file)) + } else { + err.File = hak.io.cci_main + } + return &err +} + +func (hak *HAK) GetTrait() BitMask { + var x C.int + var log_mask BitMask = 0 + + x = C.hak_getoption(hak.c, C.HAK_TRAIT, unsafe.Pointer(&log_mask)) + if x <= -1 { + // this must not happen + panic(fmt.Errorf("unable to get log mask - %s", hak.get_errmsg())) + } + + return log_mask +} + +func (hak *HAK) SetTrait(log_mask BitMask) { + var x C.int + + x = C.hak_setoption(hak.c, C.HAK_TRAIT, unsafe.Pointer(&log_mask)) + if x <= -1 { + // this must not happen + panic(fmt.Errorf("unable to set log mask - %s", hak.get_errmsg())) + } +} + +func (hak *HAK) GetLogMask() BitMask { + var x C.int + var log_mask BitMask = 0 + + x = C.hak_getoption(hak.c, C.HAK_LOG_MASK, unsafe.Pointer(&log_mask)) + if x <= -1 { + // this must not happen + panic(fmt.Errorf("unable to get log mask - %s", hak.get_errmsg())) + } + + return log_mask +} + +func (hak *HAK) SetLogMask(log_mask BitMask) { + var x C.int + + x = C.hak_setoption(hak.c, C.HAK_LOG_MASK, unsafe.Pointer(&log_mask)) + if x <= -1 { + // this must not happen + panic(fmt.Errorf("unable to set log mask - %s", hak.get_errmsg())) + } +} + +func (hak *HAK) GetLogTarget() string { + var x C.int + var tgt *C.char + + x = C.hak_getoption(hak.c, C.HAK_LOG_TARGET_BCSTR, unsafe.Pointer(&tgt)) + if x <= -1 { + // this must not happen + panic(fmt.Errorf("unable to set log target - %s", hak.get_errmsg())) + } + + return C.GoString(tgt) +} + +func (hak *HAK) SetLogTarget(target string) { + var x C.int + var tgt *C.char + + tgt = C.CString(target) // TODO: need error check? + defer C.free(unsafe.Pointer(tgt)) + + x = C.hak_setoption(hak.c, C.HAK_LOG_TARGET_BCSTR, unsafe.Pointer(tgt)) + if x <= -1 { + // this must not happen + panic(fmt.Errorf("unable to set log target - %s", hak.get_errmsg())) + } +} + +func (hak *HAK) Ignite(memsize uintptr) error { + var x C.int + + x = C.hak_ignite(hak.c, C.hak_oow_t(memsize)) + if x <= -1 { + //return fmt.Errorf("unable to ignite - %s", hak.get_errmsg()) + return hak.make_errinfo() + } + + return nil +} + +func (hak *HAK) AddBuiltinPrims() error { + var x C.int + + x = C.hak_addbuiltinprims(hak.c) + if x <= -1 { + //return fmt.Errorf("unable to add built-in primitives - %s", hak.get_errmsg()) + return hak.make_errinfo() + } + return nil +} + +// the name of the main cci stream is required because: +// - the main stream is not handled by this IO handler +// - the feeder must read the main stream and pass data. +// - the inclusion of another file from the main stream requires the path information of the main strea. +func (hak *HAK) AttachCCIO(cci CciImpl, main_cci_name string) error { + var x C.int + var old_cci CciImpl + var old_cci_name string + + old_cci = hak.io.cci + old_cci_name = hak.io.cci_main + + hak.io.cci = cci + hak.io.cci_main = main_cci_name + + x = C.hak_attachccio(hak.c, C.hak_io_impl_t(C.hak_cci_handler_for_go)) + if x <= -1 { + // restore the io handler set due to attachment failure + hak.io.cci_main = old_cci_name + hak.io.cci = old_cci + //return fmt.Errorf("unable to attach source input stream handler - %s", hak.get_errmsg()) + return hak.make_errinfo() + } + return nil +} + +func (hak *HAK) AttachUDIO(udi UdiImpl, udo UdoImpl) error { + var x C.int + var os UdiImpl + var op UdoImpl + + os = hak.io.udi + op = hak.io.udo + + hak.io.udi = udi + hak.io.udo = udo + + x = C.hak_attachudio(hak.c, + C.hak_io_impl_t(C.hak_udi_handler_for_go), + C.hak_io_impl_t(C.hak_udo_handler_for_go)) + if x <= -1 { + //restore the io handlers set due to attachment failure + hak.io.udi = os + hak.io.udo = op + //return fmt.Errorf("unable to attach user data stream handlers - %s", hak.get_errmsg()) + return hak.make_errinfo() + } + return nil +} + +func (hak *HAK) BeginFeed() error { + var x C.int + + x = C.hak_beginfeed(hak.c, nil) + if x <= -1 { + //return fmt.Errorf("unable to begin feeding - %s", hak.get_errmsg()) + return hak.make_errinfo() + } + + return nil +} + +func (hak *HAK) EndFeed() error { + var x C.int + + x = C.hak_endfeed(hak.c) + if x <= -1 { + //return fmt.Errorf("unable to end feeding - %s", hak.get_errmsg()) + return hak.make_errinfo() + } + + return nil +} + +func (hak *HAK) FeedString(str string) error { + var x C.int + var q []C.hak_uch_t + + q = string_to_uchars(str) + x = C.hak_feed(hak.c, &q[0], C.hak_oow_t(len(q))) + if x <= -1 { + //return fmt.Errorf("unable to feed string - %s", hak.get_errmsg()) + return hak.make_errinfo() + } + return nil +} + +func (hak *HAK) FeedRunes(str []rune) error { + var x C.int + var q []C.hak_uch_t + + q = rune_slice_to_uchars(str) + x = C.hak_feed(hak.c, &q[0], C.hak_oow_t(len(q))) + if x <= -1 { + //return fmt.Errorf("unable to feed runes - %s", hak.get_errmsg()) + return hak.make_errinfo() + } + return nil +} + +func (hak *HAK) FeedFromReader(rdr io.Reader) error { + var err error + var n int + var x C.int + var buf [1024]byte + + for { + n, err = rdr.Read(buf[:]) + if err == io.EOF { + break + } else if err != nil { + //return fmt.Errorf("unable to read bytes - %s", err.Error()) + return &Err{File: hak.io.cci_main, Msg: err.Error()} + } + + x = C.hak_feedbchars(hak.c, (*C.hak_bch_t)(unsafe.Pointer(&buf[0])), C.hak_oow_t(n)) + if x <= -1 { + //return fmt.Errorf("unable to feed bytes - %s", hak.get_errmsg()) + return hak.make_errinfo() + } + } + + return nil +} + +func (hak *HAK) FeedFromFile(file string) error { + var f *os.File + var err error + + f, err = os.Open(file) + if err != nil { + //return fmt.Errorf("unable to open %s - %s", file, err.Error()) + return &Err{File: file, Msg: err.Error()} + } + + defer f.Close() + return hak.FeedFromReader(bufio.NewReader(f)) +} + +func (hak *HAK) Execute() error { + var x C.hak_oop_t + + x = C.hak_execute(hak.c) + if x == nil { + //return fmt.Errorf("unable to execute - %s", hak.get_errmsg()) + return hak.make_errinfo() + } + + // TODO: wrap C.hak_oop_t in a go type + // and make this function to return 'x' in the wrapper + return nil +} + +func (hak *HAK) Decode() error { + var x C.int + + x = C.hak_decode(hak.c, C.hak_getcode(hak.c), 0, C.hak_getbclen(hak.c)) + if x <= -1 { + //return fmt.Errorf("unable to decode byte codes - %s", hak.get_errmsg()) + return hak.make_errinfo() + } + + return nil +} + +func (hak *HAK) get_errmsg() string { + return C.GoString(C.hak_geterrbmsg(hak.c)) +} + +func (hak *HAK) set_errmsg(num C.hak_errnum_t, msg string) { + var ptr *C.char + ptr = C.CString(msg) + defer C.free(unsafe.Pointer(ptr)) + C.hak_seterrbmsg(hak.c, num, ptr) +} + +// ----------------------------------------------------------- + +func ucstr_to_rune_slice(str *C.hak_uch_t) []rune { + return uchars_to_rune_slice(str, uintptr(C.hak_count_ucstr(str))) +} + +func uchars_to_rune_slice(str *C.hak_uch_t, len uintptr) []rune { + var res []rune + var i uintptr + var ptr uintptr + + // TODO: proper encoding... + ptr = uintptr(unsafe.Pointer(str)) + res = make([]rune, len) + for i = 0; i < len; i++ { + res[i] = rune(*(*C.hak_uch_t)(unsafe.Pointer(ptr))) + ptr += unsafe.Sizeof(*str) + } + return res +} + +func string_to_uchars(str string) []C.hak_uch_t { + var r []rune + var c []C.hak_uch_t + var i int + + // TODO: proper encoding + r = []rune(str) + c = make([]C.hak_uch_t, len(r), len(r)) + for i = 0; i < len(r); i++ { + c[i] = C.hak_uch_t(r[i]) + } + + return c +} + +func rune_slice_to_uchars(r []rune) []C.hak_uch_t { + var c []C.hak_uch_t + var i int + + // TODO: proper encoding + c = make([]C.hak_uch_t, len(r), len(r)) + for i = 0; i < len(r); i++ { + c[i] = C.hak_uch_t(r[i]) + } + return c +} + +func c_to_go(c *C.hak_t) *HAK { + var ext *Ext + var inst Instance + + ext = (*Ext)(unsafe.Pointer(C.hak_getxtn(c))) + inst = inst_table.slot_to_instance(ext.inst_no) + return inst.g +} + +// ----------------------------------------------------------- + +func (err* Err) Error() string { + if err.Tgt == "" { + return fmt.Sprintf("%s[%d,%d] %s", err.File, err.Line, err.Colm, err.Msg) + } else { + } + return fmt.Sprintf("%s[%d,%d] %s - %s", err.File, err.Line, err.Colm, err.Msg, err.Tgt) +} diff --git a/go/hcl.go b/go/hcl.go deleted file mode 100644 index c06807c..0000000 --- a/go/hcl.go +++ /dev/null @@ -1,487 +0,0 @@ -package hcl - -/* -#include -#include -#include // for C.free - -extern int hcl_go_cci_handler (hcl_t* hcl, hcl_io_cmd_t cmd, void* arg); -extern int hcl_go_udi_handler (hcl_t* hcl, hcl_io_cmd_t cmd, void* arg); -extern int hcl_go_udo_handler (hcl_t* hcl, hcl_io_cmd_t cmd, void* arg); - -int hcl_cci_handler_for_go (hcl_t* hcl, hcl_io_cmd_t cmd, void* arg) { - return hcl_go_cci_handler(hcl, cmd, arg); -} -int hcl_udi_handler_for_go (hcl_t* hcl, hcl_io_cmd_t cmd, void* arg) { - return hcl_go_udi_handler(hcl, cmd, arg); -} -int hcl_udo_handler_for_go (hcl_t* hcl, hcl_io_cmd_t cmd, void* arg) { - return hcl_go_udo_handler(hcl, cmd, arg); -} -*/ -import "C" - -import ( - "bufio" - "fmt" - "io" - "os" - "runtime" - "unsafe" -) - -type CciImpl interface { - Open(g *HCL, name string) (int, error) - Close(fd int) - Read(fd int, buf []rune) (int, error) -} - -type UdiImpl interface { - Open(g *HCL) error - Close() - Read(buf []rune) (int, error) -} - -type UdoImpl interface { - Open(g *HCL) error - Close() - Write(data []rune) error - WriteBytes(data []byte) error - Flush() error -} - -type HCL struct { - c *C.hcl_t - inst_no int - io struct { - cci CciImpl - cci_main string - udi UdiImpl - udo UdoImpl - } -} - -type Ext struct { - inst_no int -} - -type Err struct { - Line uint - Colm uint - File string - Msg string - Tgt string -} - -type BitMask C.hcl_bitmask_t - -const TRAIT_LANG_ENABLE_EOL BitMask = C.HCL_TRAIT_LANG_ENABLE_EOL - -var inst_table InstanceTable - -func deregister_instance(g *HCL) { - if g.inst_no >= 0 { - inst_table.delete_instance(g.inst_no) - g.inst_no = -1 - } -} - -func New() (*HCL, error) { - var c *C.hcl_t - var g *HCL - var ext *Ext - var errnum C.hcl_errnum_t - - c = C.hcl_openstd(C.hcl_oow_t(unsafe.Sizeof(*ext)), &errnum) - if c == nil { - var buf [64]C.hcl_uch_t - var ptr *C.hcl_uch_t - var err error - - ptr = C.hcl_errnum_to_errucstr(errnum, &buf[0], C.hcl_oow_t(cap(buf))) - err = fmt.Errorf("%s", string(ucstr_to_rune_slice(ptr))) - return nil, err - } - - ext = (*Ext)(unsafe.Pointer(C.hcl_getxtn(c))) - - g = &HCL{c: c, inst_no: -1} - - runtime.SetFinalizer(g, deregister_instance) - g.inst_no = inst_table.add_instance(c, g) - ext.inst_no = g.inst_no - - return g, nil -} - -func (hcl *HCL) Close() { - C.hcl_close(hcl.c) - deregister_instance(hcl) -} - -func (hcl *HCL) make_errinfo() *Err { - var loc C.hcl_loc_t - var err Err - var errnum C.hcl_errnum_t - - err.Msg = hcl.get_errmsg() - - errnum = C.hcl_geterrnum(hcl.c) - if errnum == C.HCL_ESYNERR { - var synerr C.hcl_synerr_t - C.hcl_getsynerr(hcl.c, &synerr) - loc = synerr.loc - - err.Tgt = string(uchars_to_rune_slice(&synerr.tgt.val[0], uintptr(synerr.tgt.len))) - } else { - C.hcl_geterrloc(hcl.c, &loc) - } - - err.Line = uint(loc.line) - err.Colm = uint(loc.colm) - if loc.file != nil { - err.File = string(ucstr_to_rune_slice(loc.file)) - } else { - err.File = hcl.io.cci_main - } - return &err -} - -func (hcl *HCL) GetTrait() BitMask { - var x C.int - var log_mask BitMask = 0 - - x = C.hcl_getoption(hcl.c, C.HCL_TRAIT, unsafe.Pointer(&log_mask)) - if x <= -1 { - // this must not happen - panic(fmt.Errorf("unable to get log mask - %s", hcl.get_errmsg())) - } - - return log_mask -} - -func (hcl *HCL) SetTrait(log_mask BitMask) { - var x C.int - - x = C.hcl_setoption(hcl.c, C.HCL_TRAIT, unsafe.Pointer(&log_mask)) - if x <= -1 { - // this must not happen - panic(fmt.Errorf("unable to set log mask - %s", hcl.get_errmsg())) - } -} - -func (hcl *HCL) GetLogMask() BitMask { - var x C.int - var log_mask BitMask = 0 - - x = C.hcl_getoption(hcl.c, C.HCL_LOG_MASK, unsafe.Pointer(&log_mask)) - if x <= -1 { - // this must not happen - panic(fmt.Errorf("unable to get log mask - %s", hcl.get_errmsg())) - } - - return log_mask -} - -func (hcl *HCL) SetLogMask(log_mask BitMask) { - var x C.int - - x = C.hcl_setoption(hcl.c, C.HCL_LOG_MASK, unsafe.Pointer(&log_mask)) - if x <= -1 { - // this must not happen - panic(fmt.Errorf("unable to set log mask - %s", hcl.get_errmsg())) - } -} - -func (hcl *HCL) GetLogTarget() string { - var x C.int - var tgt *C.char - - x = C.hcl_getoption(hcl.c, C.HCL_LOG_TARGET_BCSTR, unsafe.Pointer(&tgt)) - if x <= -1 { - // this must not happen - panic(fmt.Errorf("unable to set log target - %s", hcl.get_errmsg())) - } - - return C.GoString(tgt) -} - -func (hcl *HCL) SetLogTarget(target string) { - var x C.int - var tgt *C.char - - tgt = C.CString(target) // TODO: need error check? - defer C.free(unsafe.Pointer(tgt)) - - x = C.hcl_setoption(hcl.c, C.HCL_LOG_TARGET_BCSTR, unsafe.Pointer(tgt)) - if x <= -1 { - // this must not happen - panic(fmt.Errorf("unable to set log target - %s", hcl.get_errmsg())) - } -} - -func (hcl *HCL) Ignite(memsize uintptr) error { - var x C.int - - x = C.hcl_ignite(hcl.c, C.hcl_oow_t(memsize)) - if x <= -1 { - //return fmt.Errorf("unable to ignite - %s", hcl.get_errmsg()) - return hcl.make_errinfo() - } - - return nil -} - -func (hcl *HCL) AddBuiltinPrims() error { - var x C.int - - x = C.hcl_addbuiltinprims(hcl.c) - if x <= -1 { - //return fmt.Errorf("unable to add built-in primitives - %s", hcl.get_errmsg()) - return hcl.make_errinfo() - } - return nil -} - -// the name of the main cci stream is required because: -// - the main stream is not handled by this IO handler -// - the feeder must read the main stream and pass data. -// - the inclusion of another file from the main stream requires the path information of the main strea. -func (hcl *HCL) AttachCCIO(cci CciImpl, main_cci_name string) error { - var x C.int - var old_cci CciImpl - var old_cci_name string - - old_cci = hcl.io.cci - old_cci_name = hcl.io.cci_main - - hcl.io.cci = cci - hcl.io.cci_main = main_cci_name - - x = C.hcl_attachccio(hcl.c, C.hcl_io_impl_t(C.hcl_cci_handler_for_go)) - if x <= -1 { - // restore the io handler set due to attachment failure - hcl.io.cci_main = old_cci_name - hcl.io.cci = old_cci - //return fmt.Errorf("unable to attach source input stream handler - %s", hcl.get_errmsg()) - return hcl.make_errinfo() - } - return nil -} - -func (hcl *HCL) AttachUDIO(udi UdiImpl, udo UdoImpl) error { - var x C.int - var os UdiImpl - var op UdoImpl - - os = hcl.io.udi - op = hcl.io.udo - - hcl.io.udi = udi - hcl.io.udo = udo - - x = C.hcl_attachudio(hcl.c, - C.hcl_io_impl_t(C.hcl_udi_handler_for_go), - C.hcl_io_impl_t(C.hcl_udo_handler_for_go)) - if x <= -1 { - //restore the io handlers set due to attachment failure - hcl.io.udi = os - hcl.io.udo = op - //return fmt.Errorf("unable to attach user data stream handlers - %s", hcl.get_errmsg()) - return hcl.make_errinfo() - } - return nil -} - -func (hcl *HCL) BeginFeed() error { - var x C.int - - x = C.hcl_beginfeed(hcl.c, nil) - if x <= -1 { - //return fmt.Errorf("unable to begin feeding - %s", hcl.get_errmsg()) - return hcl.make_errinfo() - } - - return nil -} - -func (hcl *HCL) EndFeed() error { - var x C.int - - x = C.hcl_endfeed(hcl.c) - if x <= -1 { - //return fmt.Errorf("unable to end feeding - %s", hcl.get_errmsg()) - return hcl.make_errinfo() - } - - return nil -} - -func (hcl *HCL) FeedString(str string) error { - var x C.int - var q []C.hcl_uch_t - - q = string_to_uchars(str) - x = C.hcl_feed(hcl.c, &q[0], C.hcl_oow_t(len(q))) - if x <= -1 { - //return fmt.Errorf("unable to feed string - %s", hcl.get_errmsg()) - return hcl.make_errinfo() - } - return nil -} - -func (hcl *HCL) FeedRunes(str []rune) error { - var x C.int - var q []C.hcl_uch_t - - q = rune_slice_to_uchars(str) - x = C.hcl_feed(hcl.c, &q[0], C.hcl_oow_t(len(q))) - if x <= -1 { - //return fmt.Errorf("unable to feed runes - %s", hcl.get_errmsg()) - return hcl.make_errinfo() - } - return nil -} - -func (hcl *HCL) FeedFromReader(rdr io.Reader) error { - var err error - var n int - var x C.int - var buf [1024]byte - - for { - n, err = rdr.Read(buf[:]) - if err == io.EOF { - break - } else if err != nil { - //return fmt.Errorf("unable to read bytes - %s", err.Error()) - return &Err{File: hcl.io.cci_main, Msg: err.Error()} - } - - x = C.hcl_feedbchars(hcl.c, (*C.hcl_bch_t)(unsafe.Pointer(&buf[0])), C.hcl_oow_t(n)) - if x <= -1 { - //return fmt.Errorf("unable to feed bytes - %s", hcl.get_errmsg()) - return hcl.make_errinfo() - } - } - - return nil -} - -func (hcl *HCL) FeedFromFile(file string) error { - var f *os.File - var err error - - f, err = os.Open(file) - if err != nil { - //return fmt.Errorf("unable to open %s - %s", file, err.Error()) - return &Err{File: file, Msg: err.Error()} - } - - defer f.Close() - return hcl.FeedFromReader(bufio.NewReader(f)) -} - -func (hcl *HCL) Execute() error { - var x C.hcl_oop_t - - x = C.hcl_execute(hcl.c) - if x == nil { - //return fmt.Errorf("unable to execute - %s", hcl.get_errmsg()) - return hcl.make_errinfo() - } - - // TODO: wrap C.hcl_oop_t in a go type - // and make this function to return 'x' in the wrapper - return nil -} - -func (hcl *HCL) Decode() error { - var x C.int - - x = C.hcl_decode(hcl.c, C.hcl_getcode(hcl.c), 0, C.hcl_getbclen(hcl.c)) - if x <= -1 { - //return fmt.Errorf("unable to decode byte codes - %s", hcl.get_errmsg()) - return hcl.make_errinfo() - } - - return nil -} - -func (hcl *HCL) get_errmsg() string { - return C.GoString(C.hcl_geterrbmsg(hcl.c)) -} - -func (hcl *HCL) set_errmsg(num C.hcl_errnum_t, msg string) { - var ptr *C.char - ptr = C.CString(msg) - defer C.free(unsafe.Pointer(ptr)) - C.hcl_seterrbmsg(hcl.c, num, ptr) -} - -// ----------------------------------------------------------- - -func ucstr_to_rune_slice(str *C.hcl_uch_t) []rune { - return uchars_to_rune_slice(str, uintptr(C.hcl_count_ucstr(str))) -} - -func uchars_to_rune_slice(str *C.hcl_uch_t, len uintptr) []rune { - var res []rune - var i uintptr - var ptr uintptr - - // TODO: proper encoding... - ptr = uintptr(unsafe.Pointer(str)) - res = make([]rune, len) - for i = 0; i < len; i++ { - res[i] = rune(*(*C.hcl_uch_t)(unsafe.Pointer(ptr))) - ptr += unsafe.Sizeof(*str) - } - return res -} - -func string_to_uchars(str string) []C.hcl_uch_t { - var r []rune - var c []C.hcl_uch_t - var i int - - // TODO: proper encoding - r = []rune(str) - c = make([]C.hcl_uch_t, len(r), len(r)) - for i = 0; i < len(r); i++ { - c[i] = C.hcl_uch_t(r[i]) - } - - return c -} - -func rune_slice_to_uchars(r []rune) []C.hcl_uch_t { - var c []C.hcl_uch_t - var i int - - // TODO: proper encoding - c = make([]C.hcl_uch_t, len(r), len(r)) - for i = 0; i < len(r); i++ { - c[i] = C.hcl_uch_t(r[i]) - } - return c -} - -func c_to_go(c *C.hcl_t) *HCL { - var ext *Ext - var inst Instance - - ext = (*Ext)(unsafe.Pointer(C.hcl_getxtn(c))) - inst = inst_table.slot_to_instance(ext.inst_no) - return inst.g -} - -// ----------------------------------------------------------- - -func (err* Err) Error() string { - if err.Tgt == "" { - return fmt.Sprintf("%s[%d,%d] %s", err.File, err.Line, err.Colm, err.Msg) - } else { - } - return fmt.Sprintf("%s[%d,%d] %s - %s", err.File, err.Line, err.Colm, err.Msg, err.Tgt) -} diff --git a/go/inst.go b/go/inst.go index 817435e..1d683e9 100644 --- a/go/inst.go +++ b/go/inst.go @@ -1,7 +1,7 @@ -package hcl +package hak /* -#include +#include */ import "C" import ( @@ -9,8 +9,8 @@ import ( ) type Instance struct { - c *C.hcl_t // c object - g *HCL // go object + c *C.hak_t // c object + g *HAK // go object } type InstanceTable struct { @@ -19,7 +19,7 @@ type InstanceTable struct { free_slots []int } -func (itab *InstanceTable) add_instance(c *C.hcl_t, g *HCL) int { +func (itab *InstanceTable) add_instance(c *C.hak_t, g *HAK) int { itab.mtx.Lock() defer itab.mtx.Unlock() diff --git a/lang.txt b/lang.txt index eb0f247..dea8d4f 100644 --- a/lang.txt +++ b/lang.txt @@ -1,7 +1,7 @@ ## TODO: can we allow commas between arguments in xlist/mlist to make it more like conventional programming langauges? make literal frame in the compiler not use object momory. ask VM to take the byte codes and create literal frame using object memory - -> hcl->code.lit.arr must be composed of plain data. not using object memory + -> hak->code.lit.arr must be composed of plain data. not using object memory -> it must ask VM(locally via a function call, remotely via some communication) to create objects in the object memory static class -> collect class info(variables information) in the compiler dyna-class -> compiler doesn't know about classes in advance diff --git a/lib/Makefile.am b/lib/Makefile.am index 3397e35..89d88c6 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -33,13 +33,13 @@ endif if WIN32 # you must adjust the value of DEFAULT_MODPOSTFIX according # to the first number in -version-info above -CPPFLAGS_PFMOD = -DHCL_DEFAULT_PFMODPREFIX=\"libhcl-\" -DHCL_DEFAULT_PFMODPOSTFIX=\"-1.dll\" +CPPFLAGS_PFMOD = -DHAK_DEFAULT_PFMODPREFIX=\"libhak-\" -DHAK_DEFAULT_PFMODPOSTFIX=\"-1.dll\" else -CPPFLAGS_PFMOD = -DHCL_DEFAULT_PFMODPREFIX=\"$(libdir)/libhcl-\" +CPPFLAGS_PFMOD = -DHAK_DEFAULT_PFMODPREFIX=\"$(libdir)/libhak-\" if MACOSX -CPPFLAGS_PFMOD += -DHCL_DEFAULT_PFMODPOSTFIX=\".dylib\" +CPPFLAGS_PFMOD += -DHAK_DEFAULT_PFMODPOSTFIX=\".dylib\" else -CPPFLAGS_PFMOD += -DHCL_DEFAULT_PFMODPOSTFIX=\".so\" +CPPFLAGS_PFMOD += -DHAK_DEFAULT_PFMODPOSTFIX=\".so\" endif endif @@ -47,22 +47,22 @@ pkgincludedir = $(includedir) pkglibdir = $(libdir) pkginclude_HEADERS = \ - hcl.h \ - hcl-chr.h \ - hcl-cmgr.h \ - hcl-cmn.h \ - hcl-fmt.h \ - hcl-opt.h \ - hcl-pac1.h \ - hcl-rbt.h \ - hcl-str.h \ - hcl-upac.h \ - hcl-utl.h \ - hcl-xma.h + hak.h \ + hak-chr.h \ + hak-cmgr.h \ + hak-cmn.h \ + hak-fmt.h \ + hak-opt.h \ + hak-pac1.h \ + hak-rbt.h \ + hak-str.h \ + hak-upac.h \ + hak-utl.h \ + hak-xma.h -pkglib_LTLIBRARIES = libhcl.la -libhcl_la_SOURCES = \ - hcl-prv.h \ +pkglib_LTLIBRARIES = libhak.la +libhak_la_SOURCES = \ + hak-prv.h \ bigint.c \ chr.c \ cmgr.c \ @@ -76,7 +76,7 @@ libhcl_la_SOURCES = \ fmt-imp.h \ fmt.c \ gc.c \ - hcl.c \ + hak.c \ heap.c \ mb8.c \ number.c \ @@ -97,23 +97,23 @@ libhcl_la_SOURCES = \ utl.c \ xchg.c \ xma.c -libhcl_la_CPPFLAGS = $(CPPFLAGS_LIB_COMMON) -libhcl_la_LDFLAGS = $(LDFLAGS_LIB_COMMON) -libhcl_la_LIBADD = $(LIBADD_LIB_COMMON) +libhak_la_CPPFLAGS = $(CPPFLAGS_LIB_COMMON) +libhak_la_LDFLAGS = $(LDFLAGS_LIB_COMMON) +libhak_la_LIBADD = $(LIBADD_LIB_COMMON) if ENABLE_STATIC_MODULE -libhcl_la_LIBADD += ../mod/libhcl-core.la -libhcl_la_LIBADD += ../mod/libhcl-dic.la -libhcl_la_LIBADD += ../mod/libhcl-sys.la +libhak_la_LIBADD += ../mod/libhak-core.la +libhak_la_LIBADD += ../mod/libhak-dic.la +libhak_la_LIBADD += ../mod/libhak-sys.la endif -if ENABLE_HCLX -pkglib_LTLIBRARIES += libhclx.la -pkginclude_HEADERS += hcl-x.h hcl-tmr.h hcl-json.h -libhclx_la_SOURCES = \ - hcl-json.h \ - hcl-tmr.h \ - hcl-x.h \ +if ENABLE_HAKX +pkglib_LTLIBRARIES += libhakx.la +pkginclude_HEADERS += hak-x.h hak-tmr.h hak-json.h +libhakx_la_SOURCES = \ + hak-json.h \ + hak-tmr.h \ + hak-x.h \ json.c \ tmr.c \ x-client.c \ @@ -122,20 +122,20 @@ libhclx_la_SOURCES = \ x-sys.c \ x-utl.c \ x-utl-sa.h -libhclx_la_CPPFLAGS = $(CPPFLAGS_LIB_COMMON) $(CPPFLAGS_PFMOD) -libhclx_la_LDFLAGS = $(LDFLAGS_LIB_COMMON) -libhclx_la_LIBADD = libhcl.la $(LIBADD_LIB_COMMON) +libhakx_la_CPPFLAGS = $(CPPFLAGS_LIB_COMMON) $(CPPFLAGS_PFMOD) +libhakx_la_LDFLAGS = $(LDFLAGS_LIB_COMMON) +libhakx_la_LIBADD = libhak.la $(LIBADD_LIB_COMMON) endif install-data-hook: - @echo "#ifndef _HCL_CFG_H_" > "$(DESTDIR)$(pkgincludedir)/hcl-cfg.h" - @echo "#define _HCL_CFG_H_" >> "$(DESTDIR)$(pkgincludedir)/hcl-cfg.h" - @$(EGREP) "#define[ ]+HCL_" "$(abs_builddir)/hcl-cfg.h" >> "$(DESTDIR)$(pkgincludedir)/hcl-cfg.h" - @echo "#endif" >> "$(DESTDIR)$(pkgincludedir)/hcl-cfg.h" - @rm -f "$(DESTDIR)$(pkgincludedir)/hcl-cfg.h.in" - @$(SED) 's|/\*#define HCL_HAVE_CFG_H\*/|#define HCL_HAVE_CFG_H|' "$(srcdir)/hcl-cmn.h" > "$(DESTDIR)$(pkgincludedir)/hcl-cmn.h" + @echo "#ifndef _HAK_CFG_H_" > "$(DESTDIR)$(pkgincludedir)/hak-cfg.h" + @echo "#define _HAK_CFG_H_" >> "$(DESTDIR)$(pkgincludedir)/hak-cfg.h" + @$(EGREP) "#define[ ]+HAK_" "$(abs_builddir)/hak-cfg.h" >> "$(DESTDIR)$(pkgincludedir)/hak-cfg.h" + @echo "#endif" >> "$(DESTDIR)$(pkgincludedir)/hak-cfg.h" + @rm -f "$(DESTDIR)$(pkgincludedir)/hak-cfg.h.in" + @$(SED) 's|/\*#define HAK_HAVE_CFG_H\*/|#define HAK_HAVE_CFG_H|' "$(srcdir)/hak-cmn.h" > "$(DESTDIR)$(pkgincludedir)/hak-cmn.h" uninstall-hook: - @rm -f "$(DESTDIR)$(pkgincludedir)/hcl-cfg.h" + @rm -f "$(DESTDIR)$(pkgincludedir)/hak-cfg.h" diff --git a/lib/Makefile.in b/lib/Makefile.in index dc3f1cb..ece3373 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -92,13 +92,13 @@ host_triplet = @host@ @ENABLE_LIBLTDL_TRUE@am__append_1 = $(LTDL_LIBS) @ENABLE_LIBLTDL_FALSE@am__append_2 = $(DL_LIBS) @ENABLE_LIBUNWIND_TRUE@am__append_3 = $(UNWIND_LIBS) -@MACOSX_TRUE@@WIN32_FALSE@am__append_4 = -DHCL_DEFAULT_PFMODPOSTFIX=\".dylib\" -@MACOSX_FALSE@@WIN32_FALSE@am__append_5 = -DHCL_DEFAULT_PFMODPOSTFIX=\".so\" -@ENABLE_STATIC_MODULE_TRUE@am__append_6 = ../mod/libhcl-core.la \ -@ENABLE_STATIC_MODULE_TRUE@ ../mod/libhcl-dic.la \ -@ENABLE_STATIC_MODULE_TRUE@ ../mod/libhcl-sys.la -@ENABLE_HCLX_TRUE@am__append_7 = libhclx.la -@ENABLE_HCLX_TRUE@am__append_8 = hcl-x.h hcl-tmr.h hcl-json.h +@MACOSX_TRUE@@WIN32_FALSE@am__append_4 = -DHAK_DEFAULT_PFMODPOSTFIX=\".dylib\" +@MACOSX_FALSE@@WIN32_FALSE@am__append_5 = -DHAK_DEFAULT_PFMODPOSTFIX=\".so\" +@ENABLE_STATIC_MODULE_TRUE@am__append_6 = ../mod/libhak-core.la \ +@ENABLE_STATIC_MODULE_TRUE@ ../mod/libhak-dic.la \ +@ENABLE_STATIC_MODULE_TRUE@ ../mod/libhak-sys.la +@ENABLE_HAKX_TRUE@am__append_7 = libhakx.la +@ENABLE_HAKX_TRUE@am__append_8 = hak-x.h hak-tmr.h hak-json.h subdir = lib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \ @@ -111,7 +111,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ DIST_COMMON = $(srcdir)/Makefile.am $(am__pkginclude_HEADERS_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = hcl-cfg.h +CONFIG_HEADER = hak-cfg.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -149,40 +149,40 @@ am__DEPENDENCIES_1 = @ENABLE_LIBUNWIND_TRUE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1) am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \ $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_4) -libhcl_la_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__append_6) -am_libhcl_la_OBJECTS = libhcl_la-bigint.lo libhcl_la-chr.lo \ - libhcl_la-cmgr.lo libhcl_la-cnode.lo libhcl_la-comp.lo \ - libhcl_la-debug.lo libhcl_la-decode.lo libhcl_la-dic.lo \ - libhcl_la-err.lo libhcl_la-exec.lo libhcl_la-fmt.lo \ - libhcl_la-gc.lo libhcl_la-hcl.lo libhcl_la-heap.lo \ - libhcl_la-mb8.lo libhcl_la-number.lo libhcl_la-obj.lo \ - libhcl_la-opt.lo libhcl_la-prim.lo libhcl_la-print.lo \ - libhcl_la-rbt.lo libhcl_la-read.lo libhcl_la-std.lo \ - libhcl_la-str.lo libhcl_la-sym.lo libhcl_la-utf16.lo \ - libhcl_la-utf8.lo libhcl_la-utl.lo libhcl_la-xchg.lo \ - libhcl_la-xma.lo -libhcl_la_OBJECTS = $(am_libhcl_la_OBJECTS) +libhak_la_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__append_6) +am_libhak_la_OBJECTS = libhak_la-bigint.lo libhak_la-chr.lo \ + libhak_la-cmgr.lo libhak_la-cnode.lo libhak_la-comp.lo \ + libhak_la-debug.lo libhak_la-decode.lo libhak_la-dic.lo \ + libhak_la-err.lo libhak_la-exec.lo libhak_la-fmt.lo \ + libhak_la-gc.lo libhak_la-hak.lo libhak_la-heap.lo \ + libhak_la-mb8.lo libhak_la-number.lo libhak_la-obj.lo \ + libhak_la-opt.lo libhak_la-prim.lo libhak_la-print.lo \ + libhak_la-rbt.lo libhak_la-read.lo libhak_la-std.lo \ + libhak_la-str.lo libhak_la-sym.lo libhak_la-utf16.lo \ + libhak_la-utf8.lo libhak_la-utl.lo libhak_la-xchg.lo \ + libhak_la-xma.lo +libhak_la_OBJECTS = $(am_libhak_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = -libhcl_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ +libhak_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libhcl_la_LDFLAGS) $(LDFLAGS) -o $@ -@ENABLE_HCLX_TRUE@libhclx_la_DEPENDENCIES = libhcl.la \ -@ENABLE_HCLX_TRUE@ $(am__DEPENDENCIES_5) -am__libhclx_la_SOURCES_DIST = hcl-json.h hcl-tmr.h hcl-x.h json.c \ + $(libhak_la_LDFLAGS) $(LDFLAGS) -o $@ +@ENABLE_HAKX_TRUE@libhakx_la_DEPENDENCIES = libhak.la \ +@ENABLE_HAKX_TRUE@ $(am__DEPENDENCIES_5) +am__libhakx_la_SOURCES_DIST = hak-json.h hak-tmr.h hak-x.h json.c \ tmr.c x-client.c x-proto.c x-server.c x-sys.c x-utl.c \ x-utl-sa.h -@ENABLE_HCLX_TRUE@am_libhclx_la_OBJECTS = libhclx_la-json.lo \ -@ENABLE_HCLX_TRUE@ libhclx_la-tmr.lo libhclx_la-x-client.lo \ -@ENABLE_HCLX_TRUE@ libhclx_la-x-proto.lo libhclx_la-x-server.lo \ -@ENABLE_HCLX_TRUE@ libhclx_la-x-sys.lo libhclx_la-x-utl.lo -libhclx_la_OBJECTS = $(am_libhclx_la_OBJECTS) -libhclx_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ +@ENABLE_HAKX_TRUE@am_libhakx_la_OBJECTS = libhakx_la-json.lo \ +@ENABLE_HAKX_TRUE@ libhakx_la-tmr.lo libhakx_la-x-client.lo \ +@ENABLE_HAKX_TRUE@ libhakx_la-x-proto.lo libhakx_la-x-server.lo \ +@ENABLE_HAKX_TRUE@ libhakx_la-x-sys.lo libhakx_la-x-utl.lo +libhakx_la_OBJECTS = $(am_libhakx_la_OBJECTS) +libhakx_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libhclx_la_LDFLAGS) $(LDFLAGS) -o $@ -@ENABLE_HCLX_TRUE@am_libhclx_la_rpath = -rpath $(pkglibdir) + $(libhakx_la_LDFLAGS) $(LDFLAGS) -o $@ +@ENABLE_HAKX_TRUE@am_libhakx_la_rpath = -rpath $(pkglibdir) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -198,28 +198,28 @@ am__v_at_1 = DEFAULT_INCLUDES = depcomp = $(SHELL) $(top_srcdir)/ac/depcomp am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/libhcl_la-bigint.Plo \ - ./$(DEPDIR)/libhcl_la-chr.Plo ./$(DEPDIR)/libhcl_la-cmgr.Plo \ - ./$(DEPDIR)/libhcl_la-cnode.Plo ./$(DEPDIR)/libhcl_la-comp.Plo \ - ./$(DEPDIR)/libhcl_la-debug.Plo \ - ./$(DEPDIR)/libhcl_la-decode.Plo ./$(DEPDIR)/libhcl_la-dic.Plo \ - ./$(DEPDIR)/libhcl_la-err.Plo ./$(DEPDIR)/libhcl_la-exec.Plo \ - ./$(DEPDIR)/libhcl_la-fmt.Plo ./$(DEPDIR)/libhcl_la-gc.Plo \ - ./$(DEPDIR)/libhcl_la-hcl.Plo ./$(DEPDIR)/libhcl_la-heap.Plo \ - ./$(DEPDIR)/libhcl_la-mb8.Plo ./$(DEPDIR)/libhcl_la-number.Plo \ - ./$(DEPDIR)/libhcl_la-obj.Plo ./$(DEPDIR)/libhcl_la-opt.Plo \ - ./$(DEPDIR)/libhcl_la-prim.Plo ./$(DEPDIR)/libhcl_la-print.Plo \ - ./$(DEPDIR)/libhcl_la-rbt.Plo ./$(DEPDIR)/libhcl_la-read.Plo \ - ./$(DEPDIR)/libhcl_la-std.Plo ./$(DEPDIR)/libhcl_la-str.Plo \ - ./$(DEPDIR)/libhcl_la-sym.Plo ./$(DEPDIR)/libhcl_la-utf16.Plo \ - ./$(DEPDIR)/libhcl_la-utf8.Plo ./$(DEPDIR)/libhcl_la-utl.Plo \ - ./$(DEPDIR)/libhcl_la-xchg.Plo ./$(DEPDIR)/libhcl_la-xma.Plo \ - ./$(DEPDIR)/libhclx_la-json.Plo ./$(DEPDIR)/libhclx_la-tmr.Plo \ - ./$(DEPDIR)/libhclx_la-x-client.Plo \ - ./$(DEPDIR)/libhclx_la-x-proto.Plo \ - ./$(DEPDIR)/libhclx_la-x-server.Plo \ - ./$(DEPDIR)/libhclx_la-x-sys.Plo \ - ./$(DEPDIR)/libhclx_la-x-utl.Plo +am__depfiles_remade = ./$(DEPDIR)/libhak_la-bigint.Plo \ + ./$(DEPDIR)/libhak_la-chr.Plo ./$(DEPDIR)/libhak_la-cmgr.Plo \ + ./$(DEPDIR)/libhak_la-cnode.Plo ./$(DEPDIR)/libhak_la-comp.Plo \ + ./$(DEPDIR)/libhak_la-debug.Plo \ + ./$(DEPDIR)/libhak_la-decode.Plo ./$(DEPDIR)/libhak_la-dic.Plo \ + ./$(DEPDIR)/libhak_la-err.Plo ./$(DEPDIR)/libhak_la-exec.Plo \ + ./$(DEPDIR)/libhak_la-fmt.Plo ./$(DEPDIR)/libhak_la-gc.Plo \ + ./$(DEPDIR)/libhak_la-hak.Plo ./$(DEPDIR)/libhak_la-heap.Plo \ + ./$(DEPDIR)/libhak_la-mb8.Plo ./$(DEPDIR)/libhak_la-number.Plo \ + ./$(DEPDIR)/libhak_la-obj.Plo ./$(DEPDIR)/libhak_la-opt.Plo \ + ./$(DEPDIR)/libhak_la-prim.Plo ./$(DEPDIR)/libhak_la-print.Plo \ + ./$(DEPDIR)/libhak_la-rbt.Plo ./$(DEPDIR)/libhak_la-read.Plo \ + ./$(DEPDIR)/libhak_la-std.Plo ./$(DEPDIR)/libhak_la-str.Plo \ + ./$(DEPDIR)/libhak_la-sym.Plo ./$(DEPDIR)/libhak_la-utf16.Plo \ + ./$(DEPDIR)/libhak_la-utf8.Plo ./$(DEPDIR)/libhak_la-utl.Plo \ + ./$(DEPDIR)/libhak_la-xchg.Plo ./$(DEPDIR)/libhak_la-xma.Plo \ + ./$(DEPDIR)/libhakx_la-json.Plo ./$(DEPDIR)/libhakx_la-tmr.Plo \ + ./$(DEPDIR)/libhakx_la-x-client.Plo \ + ./$(DEPDIR)/libhakx_la-x-proto.Plo \ + ./$(DEPDIR)/libhakx_la-x-server.Plo \ + ./$(DEPDIR)/libhakx_la-x-sys.Plo \ + ./$(DEPDIR)/libhakx_la-x-utl.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -239,19 +239,19 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = -SOURCES = $(libhcl_la_SOURCES) $(libhclx_la_SOURCES) -DIST_SOURCES = $(libhcl_la_SOURCES) $(am__libhclx_la_SOURCES_DIST) +SOURCES = $(libhak_la_SOURCES) $(libhakx_la_SOURCES) +DIST_SOURCES = $(libhak_la_SOURCES) $(am__libhakx_la_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac -am__pkginclude_HEADERS_DIST = hcl.h hcl-chr.h hcl-cmgr.h hcl-cmn.h \ - hcl-fmt.h hcl-opt.h hcl-pac1.h hcl-rbt.h hcl-str.h hcl-upac.h \ - hcl-utl.h hcl-xma.h hcl-x.h hcl-tmr.h hcl-json.h +am__pkginclude_HEADERS_DIST = hak.h hak-chr.h hak-cmgr.h hak-cmn.h \ + hak-fmt.h hak-opt.h hak-pac1.h hak-rbt.h hak-str.h hak-upac.h \ + hak-utl.h hak-xma.h hak-x.h hak-tmr.h hak-json.h HEADERS = $(pkginclude_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ - hcl-cfg.h.in + hak-cfg.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. @@ -268,7 +268,7 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/hcl-cfg.h.in \ +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/hak-cfg.h.in \ $(top_srcdir)/ac/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgincludedir = $(includedir) @@ -305,9 +305,9 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GREP = @GREP@ -HCL_PROJECT_AUTHOR = @HCL_PROJECT_AUTHOR@ -HCL_PROJECT_URL = @HCL_PROJECT_URL@ -HCL_SYS_LIB_SEARCH_PATH_SPEC = @HCL_SYS_LIB_SEARCH_PATH_SPEC@ +HAK_PROJECT_AUTHOR = @HAK_PROJECT_AUTHOR@ +HAK_PROJECT_URL = @HAK_PROJECT_URL@ +HAK_SYS_LIB_SEARCH_PATH_SPEC = @HAK_SYS_LIB_SEARCH_PATH_SPEC@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -431,20 +431,20 @@ LDFLAGS_LIB_COMMON = $(LDFLAGS_ALL_COMMON) -version-info 1:0:0 -no-undefined LIBADD_LIB_COMMON = $(LIBM) $(am__append_1) $(am__append_2) \ $(am__append_3) @WIN32_FALSE@CPPFLAGS_PFMOD = \ -@WIN32_FALSE@ -DHCL_DEFAULT_PFMODPREFIX=\"$(libdir)/libhcl-\" \ +@WIN32_FALSE@ -DHAK_DEFAULT_PFMODPREFIX=\"$(libdir)/libhak-\" \ @WIN32_FALSE@ $(am__append_4) $(am__append_5) # you must adjust the value of DEFAULT_MODPOSTFIX according # to the first number in -version-info above -@WIN32_TRUE@CPPFLAGS_PFMOD = -DHCL_DEFAULT_PFMODPREFIX=\"libhcl-\" \ -@WIN32_TRUE@ -DHCL_DEFAULT_PFMODPOSTFIX=\"-1.dll\" \ +@WIN32_TRUE@CPPFLAGS_PFMOD = -DHAK_DEFAULT_PFMODPREFIX=\"libhak-\" \ +@WIN32_TRUE@ -DHAK_DEFAULT_PFMODPOSTFIX=\"-1.dll\" \ @WIN32_TRUE@ $(am__append_4) $(am__append_5) -pkginclude_HEADERS = hcl.h hcl-chr.h hcl-cmgr.h hcl-cmn.h hcl-fmt.h \ - hcl-opt.h hcl-pac1.h hcl-rbt.h hcl-str.h hcl-upac.h hcl-utl.h \ - hcl-xma.h $(am__append_8) -pkglib_LTLIBRARIES = libhcl.la $(am__append_7) -libhcl_la_SOURCES = \ - hcl-prv.h \ +pkginclude_HEADERS = hak.h hak-chr.h hak-cmgr.h hak-cmn.h hak-fmt.h \ + hak-opt.h hak-pac1.h hak-rbt.h hak-str.h hak-upac.h hak-utl.h \ + hak-xma.h $(am__append_8) +pkglib_LTLIBRARIES = libhak.la $(am__append_7) +libhak_la_SOURCES = \ + hak-prv.h \ bigint.c \ chr.c \ cmgr.c \ @@ -458,7 +458,7 @@ libhcl_la_SOURCES = \ fmt-imp.h \ fmt.c \ gc.c \ - hcl.c \ + hak.c \ heap.c \ mb8.c \ number.c \ @@ -480,26 +480,26 @@ libhcl_la_SOURCES = \ xchg.c \ xma.c -libhcl_la_CPPFLAGS = $(CPPFLAGS_LIB_COMMON) -libhcl_la_LDFLAGS = $(LDFLAGS_LIB_COMMON) -libhcl_la_LIBADD = $(LIBADD_LIB_COMMON) $(am__append_6) -@ENABLE_HCLX_TRUE@libhclx_la_SOURCES = \ -@ENABLE_HCLX_TRUE@ hcl-json.h \ -@ENABLE_HCLX_TRUE@ hcl-tmr.h \ -@ENABLE_HCLX_TRUE@ hcl-x.h \ -@ENABLE_HCLX_TRUE@ json.c \ -@ENABLE_HCLX_TRUE@ tmr.c \ -@ENABLE_HCLX_TRUE@ x-client.c \ -@ENABLE_HCLX_TRUE@ x-proto.c \ -@ENABLE_HCLX_TRUE@ x-server.c \ -@ENABLE_HCLX_TRUE@ x-sys.c \ -@ENABLE_HCLX_TRUE@ x-utl.c \ -@ENABLE_HCLX_TRUE@ x-utl-sa.h +libhak_la_CPPFLAGS = $(CPPFLAGS_LIB_COMMON) +libhak_la_LDFLAGS = $(LDFLAGS_LIB_COMMON) +libhak_la_LIBADD = $(LIBADD_LIB_COMMON) $(am__append_6) +@ENABLE_HAKX_TRUE@libhakx_la_SOURCES = \ +@ENABLE_HAKX_TRUE@ hak-json.h \ +@ENABLE_HAKX_TRUE@ hak-tmr.h \ +@ENABLE_HAKX_TRUE@ hak-x.h \ +@ENABLE_HAKX_TRUE@ json.c \ +@ENABLE_HAKX_TRUE@ tmr.c \ +@ENABLE_HAKX_TRUE@ x-client.c \ +@ENABLE_HAKX_TRUE@ x-proto.c \ +@ENABLE_HAKX_TRUE@ x-server.c \ +@ENABLE_HAKX_TRUE@ x-sys.c \ +@ENABLE_HAKX_TRUE@ x-utl.c \ +@ENABLE_HAKX_TRUE@ x-utl-sa.h -@ENABLE_HCLX_TRUE@libhclx_la_CPPFLAGS = $(CPPFLAGS_LIB_COMMON) $(CPPFLAGS_PFMOD) -@ENABLE_HCLX_TRUE@libhclx_la_LDFLAGS = $(LDFLAGS_LIB_COMMON) -@ENABLE_HCLX_TRUE@libhclx_la_LIBADD = libhcl.la $(LIBADD_LIB_COMMON) -all: hcl-cfg.h +@ENABLE_HAKX_TRUE@libhakx_la_CPPFLAGS = $(CPPFLAGS_LIB_COMMON) $(CPPFLAGS_PFMOD) +@ENABLE_HAKX_TRUE@libhakx_la_LDFLAGS = $(LDFLAGS_LIB_COMMON) +@ENABLE_HAKX_TRUE@libhakx_la_LIBADD = libhak.la $(LIBADD_LIB_COMMON) +all: hak-cfg.h $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: @@ -534,20 +534,20 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): -hcl-cfg.h: stamp-h1 +hak-cfg.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 -stamp-h1: $(srcdir)/hcl-cfg.h.in $(top_builddir)/config.status +stamp-h1: $(srcdir)/hak-cfg.h.in $(top_builddir)/config.status $(AM_V_at)rm -f stamp-h1 - $(AM_V_GEN)cd $(top_builddir) && $(SHELL) ./config.status lib/hcl-cfg.h -$(srcdir)/hcl-cfg.h.in: $(am__configure_deps) + $(AM_V_GEN)cd $(top_builddir) && $(SHELL) ./config.status lib/hak-cfg.h +$(srcdir)/hak-cfg.h.in: $(am__configure_deps) $(AM_V_GEN)($(am__cd) $(top_srcdir) && $(AUTOHEADER)) $(AM_V_at)rm -f stamp-h1 $(AM_V_at)touch $@ distclean-hdr: - -rm -f hcl-cfg.h stamp-h1 + -rm -f hak-cfg.h stamp-h1 install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @@ -582,11 +582,11 @@ clean-pkglibLTLIBRARIES: echo rm -f $${locs}; \ $(am__rm_f) $${locs} -libhcl.la: $(libhcl_la_OBJECTS) $(libhcl_la_DEPENDENCIES) $(EXTRA_libhcl_la_DEPENDENCIES) - $(AM_V_CCLD)$(libhcl_la_LINK) -rpath $(pkglibdir) $(libhcl_la_OBJECTS) $(libhcl_la_LIBADD) $(LIBS) +libhak.la: $(libhak_la_OBJECTS) $(libhak_la_DEPENDENCIES) $(EXTRA_libhak_la_DEPENDENCIES) + $(AM_V_CCLD)$(libhak_la_LINK) -rpath $(pkglibdir) $(libhak_la_OBJECTS) $(libhak_la_LIBADD) $(LIBS) -libhclx.la: $(libhclx_la_OBJECTS) $(libhclx_la_DEPENDENCIES) $(EXTRA_libhclx_la_DEPENDENCIES) - $(AM_V_CCLD)$(libhclx_la_LINK) $(am_libhclx_la_rpath) $(libhclx_la_OBJECTS) $(libhclx_la_LIBADD) $(LIBS) +libhakx.la: $(libhakx_la_OBJECTS) $(libhakx_la_DEPENDENCIES) $(EXTRA_libhakx_la_DEPENDENCIES) + $(AM_V_CCLD)$(libhakx_la_LINK) $(am_libhakx_la_rpath) $(libhakx_la_OBJECTS) $(libhakx_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -594,43 +594,43 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-bigint.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-chr.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-cmgr.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-cnode.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-comp.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-debug.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-decode.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-dic.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-err.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-exec.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-fmt.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-gc.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-hcl.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-heap.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-mb8.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-number.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-obj.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-opt.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-prim.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-print.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-rbt.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-read.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-std.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-str.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-sym.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-utf16.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-utf8.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-utl.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-xchg.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-xma.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhclx_la-json.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhclx_la-tmr.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhclx_la-x-client.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhclx_la-x-proto.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhclx_la-x-server.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhclx_la-x-sys.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhclx_la-x-utl.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-bigint.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-chr.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-cmgr.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-cnode.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-comp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-debug.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-decode.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-dic.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-err.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-exec.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-fmt.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-gc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-hak.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-heap.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-mb8.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-number.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-obj.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-opt.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-prim.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-print.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-rbt.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-read.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-std.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-str.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-sym.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-utf16.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-utf8.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-utl.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-xchg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_la-xma.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhakx_la-json.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhakx_la-tmr.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhakx_la-x-client.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhakx_la-x-proto.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhakx_la-x-server.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhakx_la-x-sys.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhakx_la-x-utl.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @@ -662,264 +662,264 @@ am--depfiles: $(am__depfiles_remade) @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< -libhcl_la-bigint.lo: bigint.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-bigint.lo -MD -MP -MF $(DEPDIR)/libhcl_la-bigint.Tpo -c -o libhcl_la-bigint.lo `test -f 'bigint.c' || echo '$(srcdir)/'`bigint.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-bigint.Tpo $(DEPDIR)/libhcl_la-bigint.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bigint.c' object='libhcl_la-bigint.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-bigint.lo: bigint.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-bigint.lo -MD -MP -MF $(DEPDIR)/libhak_la-bigint.Tpo -c -o libhak_la-bigint.lo `test -f 'bigint.c' || echo '$(srcdir)/'`bigint.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-bigint.Tpo $(DEPDIR)/libhak_la-bigint.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bigint.c' object='libhak_la-bigint.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-bigint.lo `test -f 'bigint.c' || echo '$(srcdir)/'`bigint.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-bigint.lo `test -f 'bigint.c' || echo '$(srcdir)/'`bigint.c -libhcl_la-chr.lo: chr.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-chr.lo -MD -MP -MF $(DEPDIR)/libhcl_la-chr.Tpo -c -o libhcl_la-chr.lo `test -f 'chr.c' || echo '$(srcdir)/'`chr.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-chr.Tpo $(DEPDIR)/libhcl_la-chr.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='chr.c' object='libhcl_la-chr.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-chr.lo: chr.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-chr.lo -MD -MP -MF $(DEPDIR)/libhak_la-chr.Tpo -c -o libhak_la-chr.lo `test -f 'chr.c' || echo '$(srcdir)/'`chr.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-chr.Tpo $(DEPDIR)/libhak_la-chr.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='chr.c' object='libhak_la-chr.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-chr.lo `test -f 'chr.c' || echo '$(srcdir)/'`chr.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-chr.lo `test -f 'chr.c' || echo '$(srcdir)/'`chr.c -libhcl_la-cmgr.lo: cmgr.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-cmgr.lo -MD -MP -MF $(DEPDIR)/libhcl_la-cmgr.Tpo -c -o libhcl_la-cmgr.lo `test -f 'cmgr.c' || echo '$(srcdir)/'`cmgr.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-cmgr.Tpo $(DEPDIR)/libhcl_la-cmgr.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cmgr.c' object='libhcl_la-cmgr.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-cmgr.lo: cmgr.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-cmgr.lo -MD -MP -MF $(DEPDIR)/libhak_la-cmgr.Tpo -c -o libhak_la-cmgr.lo `test -f 'cmgr.c' || echo '$(srcdir)/'`cmgr.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-cmgr.Tpo $(DEPDIR)/libhak_la-cmgr.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cmgr.c' object='libhak_la-cmgr.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-cmgr.lo `test -f 'cmgr.c' || echo '$(srcdir)/'`cmgr.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-cmgr.lo `test -f 'cmgr.c' || echo '$(srcdir)/'`cmgr.c -libhcl_la-cnode.lo: cnode.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-cnode.lo -MD -MP -MF $(DEPDIR)/libhcl_la-cnode.Tpo -c -o libhcl_la-cnode.lo `test -f 'cnode.c' || echo '$(srcdir)/'`cnode.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-cnode.Tpo $(DEPDIR)/libhcl_la-cnode.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cnode.c' object='libhcl_la-cnode.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-cnode.lo: cnode.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-cnode.lo -MD -MP -MF $(DEPDIR)/libhak_la-cnode.Tpo -c -o libhak_la-cnode.lo `test -f 'cnode.c' || echo '$(srcdir)/'`cnode.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-cnode.Tpo $(DEPDIR)/libhak_la-cnode.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cnode.c' object='libhak_la-cnode.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-cnode.lo `test -f 'cnode.c' || echo '$(srcdir)/'`cnode.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-cnode.lo `test -f 'cnode.c' || echo '$(srcdir)/'`cnode.c -libhcl_la-comp.lo: comp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-comp.lo -MD -MP -MF $(DEPDIR)/libhcl_la-comp.Tpo -c -o libhcl_la-comp.lo `test -f 'comp.c' || echo '$(srcdir)/'`comp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-comp.Tpo $(DEPDIR)/libhcl_la-comp.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='comp.c' object='libhcl_la-comp.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-comp.lo: comp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-comp.lo -MD -MP -MF $(DEPDIR)/libhak_la-comp.Tpo -c -o libhak_la-comp.lo `test -f 'comp.c' || echo '$(srcdir)/'`comp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-comp.Tpo $(DEPDIR)/libhak_la-comp.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='comp.c' object='libhak_la-comp.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-comp.lo `test -f 'comp.c' || echo '$(srcdir)/'`comp.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-comp.lo `test -f 'comp.c' || echo '$(srcdir)/'`comp.c -libhcl_la-debug.lo: debug.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-debug.lo -MD -MP -MF $(DEPDIR)/libhcl_la-debug.Tpo -c -o libhcl_la-debug.lo `test -f 'debug.c' || echo '$(srcdir)/'`debug.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-debug.Tpo $(DEPDIR)/libhcl_la-debug.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='debug.c' object='libhcl_la-debug.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-debug.lo: debug.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-debug.lo -MD -MP -MF $(DEPDIR)/libhak_la-debug.Tpo -c -o libhak_la-debug.lo `test -f 'debug.c' || echo '$(srcdir)/'`debug.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-debug.Tpo $(DEPDIR)/libhak_la-debug.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='debug.c' object='libhak_la-debug.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-debug.lo `test -f 'debug.c' || echo '$(srcdir)/'`debug.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-debug.lo `test -f 'debug.c' || echo '$(srcdir)/'`debug.c -libhcl_la-decode.lo: decode.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-decode.lo -MD -MP -MF $(DEPDIR)/libhcl_la-decode.Tpo -c -o libhcl_la-decode.lo `test -f 'decode.c' || echo '$(srcdir)/'`decode.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-decode.Tpo $(DEPDIR)/libhcl_la-decode.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='decode.c' object='libhcl_la-decode.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-decode.lo: decode.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-decode.lo -MD -MP -MF $(DEPDIR)/libhak_la-decode.Tpo -c -o libhak_la-decode.lo `test -f 'decode.c' || echo '$(srcdir)/'`decode.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-decode.Tpo $(DEPDIR)/libhak_la-decode.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='decode.c' object='libhak_la-decode.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-decode.lo `test -f 'decode.c' || echo '$(srcdir)/'`decode.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-decode.lo `test -f 'decode.c' || echo '$(srcdir)/'`decode.c -libhcl_la-dic.lo: dic.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-dic.lo -MD -MP -MF $(DEPDIR)/libhcl_la-dic.Tpo -c -o libhcl_la-dic.lo `test -f 'dic.c' || echo '$(srcdir)/'`dic.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-dic.Tpo $(DEPDIR)/libhcl_la-dic.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dic.c' object='libhcl_la-dic.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-dic.lo: dic.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-dic.lo -MD -MP -MF $(DEPDIR)/libhak_la-dic.Tpo -c -o libhak_la-dic.lo `test -f 'dic.c' || echo '$(srcdir)/'`dic.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-dic.Tpo $(DEPDIR)/libhak_la-dic.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dic.c' object='libhak_la-dic.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-dic.lo `test -f 'dic.c' || echo '$(srcdir)/'`dic.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-dic.lo `test -f 'dic.c' || echo '$(srcdir)/'`dic.c -libhcl_la-err.lo: err.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-err.lo -MD -MP -MF $(DEPDIR)/libhcl_la-err.Tpo -c -o libhcl_la-err.lo `test -f 'err.c' || echo '$(srcdir)/'`err.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-err.Tpo $(DEPDIR)/libhcl_la-err.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='err.c' object='libhcl_la-err.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-err.lo: err.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-err.lo -MD -MP -MF $(DEPDIR)/libhak_la-err.Tpo -c -o libhak_la-err.lo `test -f 'err.c' || echo '$(srcdir)/'`err.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-err.Tpo $(DEPDIR)/libhak_la-err.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='err.c' object='libhak_la-err.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-err.lo `test -f 'err.c' || echo '$(srcdir)/'`err.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-err.lo `test -f 'err.c' || echo '$(srcdir)/'`err.c -libhcl_la-exec.lo: exec.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-exec.lo -MD -MP -MF $(DEPDIR)/libhcl_la-exec.Tpo -c -o libhcl_la-exec.lo `test -f 'exec.c' || echo '$(srcdir)/'`exec.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-exec.Tpo $(DEPDIR)/libhcl_la-exec.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='exec.c' object='libhcl_la-exec.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-exec.lo: exec.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-exec.lo -MD -MP -MF $(DEPDIR)/libhak_la-exec.Tpo -c -o libhak_la-exec.lo `test -f 'exec.c' || echo '$(srcdir)/'`exec.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-exec.Tpo $(DEPDIR)/libhak_la-exec.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='exec.c' object='libhak_la-exec.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-exec.lo `test -f 'exec.c' || echo '$(srcdir)/'`exec.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-exec.lo `test -f 'exec.c' || echo '$(srcdir)/'`exec.c -libhcl_la-fmt.lo: fmt.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-fmt.lo -MD -MP -MF $(DEPDIR)/libhcl_la-fmt.Tpo -c -o libhcl_la-fmt.lo `test -f 'fmt.c' || echo '$(srcdir)/'`fmt.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-fmt.Tpo $(DEPDIR)/libhcl_la-fmt.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fmt.c' object='libhcl_la-fmt.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-fmt.lo: fmt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-fmt.lo -MD -MP -MF $(DEPDIR)/libhak_la-fmt.Tpo -c -o libhak_la-fmt.lo `test -f 'fmt.c' || echo '$(srcdir)/'`fmt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-fmt.Tpo $(DEPDIR)/libhak_la-fmt.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fmt.c' object='libhak_la-fmt.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-fmt.lo `test -f 'fmt.c' || echo '$(srcdir)/'`fmt.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-fmt.lo `test -f 'fmt.c' || echo '$(srcdir)/'`fmt.c -libhcl_la-gc.lo: gc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-gc.lo -MD -MP -MF $(DEPDIR)/libhcl_la-gc.Tpo -c -o libhcl_la-gc.lo `test -f 'gc.c' || echo '$(srcdir)/'`gc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-gc.Tpo $(DEPDIR)/libhcl_la-gc.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gc.c' object='libhcl_la-gc.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-gc.lo: gc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-gc.lo -MD -MP -MF $(DEPDIR)/libhak_la-gc.Tpo -c -o libhak_la-gc.lo `test -f 'gc.c' || echo '$(srcdir)/'`gc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-gc.Tpo $(DEPDIR)/libhak_la-gc.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gc.c' object='libhak_la-gc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-gc.lo `test -f 'gc.c' || echo '$(srcdir)/'`gc.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-gc.lo `test -f 'gc.c' || echo '$(srcdir)/'`gc.c -libhcl_la-hcl.lo: hcl.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-hcl.lo -MD -MP -MF $(DEPDIR)/libhcl_la-hcl.Tpo -c -o libhcl_la-hcl.lo `test -f 'hcl.c' || echo '$(srcdir)/'`hcl.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-hcl.Tpo $(DEPDIR)/libhcl_la-hcl.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hcl.c' object='libhcl_la-hcl.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-hak.lo: hak.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-hak.lo -MD -MP -MF $(DEPDIR)/libhak_la-hak.Tpo -c -o libhak_la-hak.lo `test -f 'hak.c' || echo '$(srcdir)/'`hak.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-hak.Tpo $(DEPDIR)/libhak_la-hak.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hak.c' object='libhak_la-hak.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-hcl.lo `test -f 'hcl.c' || echo '$(srcdir)/'`hcl.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-hak.lo `test -f 'hak.c' || echo '$(srcdir)/'`hak.c -libhcl_la-heap.lo: heap.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-heap.lo -MD -MP -MF $(DEPDIR)/libhcl_la-heap.Tpo -c -o libhcl_la-heap.lo `test -f 'heap.c' || echo '$(srcdir)/'`heap.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-heap.Tpo $(DEPDIR)/libhcl_la-heap.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='heap.c' object='libhcl_la-heap.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-heap.lo: heap.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-heap.lo -MD -MP -MF $(DEPDIR)/libhak_la-heap.Tpo -c -o libhak_la-heap.lo `test -f 'heap.c' || echo '$(srcdir)/'`heap.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-heap.Tpo $(DEPDIR)/libhak_la-heap.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='heap.c' object='libhak_la-heap.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-heap.lo `test -f 'heap.c' || echo '$(srcdir)/'`heap.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-heap.lo `test -f 'heap.c' || echo '$(srcdir)/'`heap.c -libhcl_la-mb8.lo: mb8.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-mb8.lo -MD -MP -MF $(DEPDIR)/libhcl_la-mb8.Tpo -c -o libhcl_la-mb8.lo `test -f 'mb8.c' || echo '$(srcdir)/'`mb8.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-mb8.Tpo $(DEPDIR)/libhcl_la-mb8.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mb8.c' object='libhcl_la-mb8.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-mb8.lo: mb8.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-mb8.lo -MD -MP -MF $(DEPDIR)/libhak_la-mb8.Tpo -c -o libhak_la-mb8.lo `test -f 'mb8.c' || echo '$(srcdir)/'`mb8.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-mb8.Tpo $(DEPDIR)/libhak_la-mb8.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mb8.c' object='libhak_la-mb8.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-mb8.lo `test -f 'mb8.c' || echo '$(srcdir)/'`mb8.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-mb8.lo `test -f 'mb8.c' || echo '$(srcdir)/'`mb8.c -libhcl_la-number.lo: number.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-number.lo -MD -MP -MF $(DEPDIR)/libhcl_la-number.Tpo -c -o libhcl_la-number.lo `test -f 'number.c' || echo '$(srcdir)/'`number.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-number.Tpo $(DEPDIR)/libhcl_la-number.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='number.c' object='libhcl_la-number.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-number.lo: number.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-number.lo -MD -MP -MF $(DEPDIR)/libhak_la-number.Tpo -c -o libhak_la-number.lo `test -f 'number.c' || echo '$(srcdir)/'`number.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-number.Tpo $(DEPDIR)/libhak_la-number.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='number.c' object='libhak_la-number.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-number.lo `test -f 'number.c' || echo '$(srcdir)/'`number.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-number.lo `test -f 'number.c' || echo '$(srcdir)/'`number.c -libhcl_la-obj.lo: obj.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-obj.lo -MD -MP -MF $(DEPDIR)/libhcl_la-obj.Tpo -c -o libhcl_la-obj.lo `test -f 'obj.c' || echo '$(srcdir)/'`obj.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-obj.Tpo $(DEPDIR)/libhcl_la-obj.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='obj.c' object='libhcl_la-obj.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-obj.lo: obj.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-obj.lo -MD -MP -MF $(DEPDIR)/libhak_la-obj.Tpo -c -o libhak_la-obj.lo `test -f 'obj.c' || echo '$(srcdir)/'`obj.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-obj.Tpo $(DEPDIR)/libhak_la-obj.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='obj.c' object='libhak_la-obj.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-obj.lo `test -f 'obj.c' || echo '$(srcdir)/'`obj.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-obj.lo `test -f 'obj.c' || echo '$(srcdir)/'`obj.c -libhcl_la-opt.lo: opt.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-opt.lo -MD -MP -MF $(DEPDIR)/libhcl_la-opt.Tpo -c -o libhcl_la-opt.lo `test -f 'opt.c' || echo '$(srcdir)/'`opt.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-opt.Tpo $(DEPDIR)/libhcl_la-opt.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='opt.c' object='libhcl_la-opt.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-opt.lo: opt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-opt.lo -MD -MP -MF $(DEPDIR)/libhak_la-opt.Tpo -c -o libhak_la-opt.lo `test -f 'opt.c' || echo '$(srcdir)/'`opt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-opt.Tpo $(DEPDIR)/libhak_la-opt.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='opt.c' object='libhak_la-opt.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-opt.lo `test -f 'opt.c' || echo '$(srcdir)/'`opt.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-opt.lo `test -f 'opt.c' || echo '$(srcdir)/'`opt.c -libhcl_la-prim.lo: prim.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-prim.lo -MD -MP -MF $(DEPDIR)/libhcl_la-prim.Tpo -c -o libhcl_la-prim.lo `test -f 'prim.c' || echo '$(srcdir)/'`prim.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-prim.Tpo $(DEPDIR)/libhcl_la-prim.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='prim.c' object='libhcl_la-prim.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-prim.lo: prim.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-prim.lo -MD -MP -MF $(DEPDIR)/libhak_la-prim.Tpo -c -o libhak_la-prim.lo `test -f 'prim.c' || echo '$(srcdir)/'`prim.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-prim.Tpo $(DEPDIR)/libhak_la-prim.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='prim.c' object='libhak_la-prim.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-prim.lo `test -f 'prim.c' || echo '$(srcdir)/'`prim.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-prim.lo `test -f 'prim.c' || echo '$(srcdir)/'`prim.c -libhcl_la-print.lo: print.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-print.lo -MD -MP -MF $(DEPDIR)/libhcl_la-print.Tpo -c -o libhcl_la-print.lo `test -f 'print.c' || echo '$(srcdir)/'`print.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-print.Tpo $(DEPDIR)/libhcl_la-print.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='print.c' object='libhcl_la-print.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-print.lo: print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-print.lo -MD -MP -MF $(DEPDIR)/libhak_la-print.Tpo -c -o libhak_la-print.lo `test -f 'print.c' || echo '$(srcdir)/'`print.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-print.Tpo $(DEPDIR)/libhak_la-print.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='print.c' object='libhak_la-print.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-print.lo `test -f 'print.c' || echo '$(srcdir)/'`print.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-print.lo `test -f 'print.c' || echo '$(srcdir)/'`print.c -libhcl_la-rbt.lo: rbt.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-rbt.lo -MD -MP -MF $(DEPDIR)/libhcl_la-rbt.Tpo -c -o libhcl_la-rbt.lo `test -f 'rbt.c' || echo '$(srcdir)/'`rbt.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-rbt.Tpo $(DEPDIR)/libhcl_la-rbt.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rbt.c' object='libhcl_la-rbt.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-rbt.lo: rbt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-rbt.lo -MD -MP -MF $(DEPDIR)/libhak_la-rbt.Tpo -c -o libhak_la-rbt.lo `test -f 'rbt.c' || echo '$(srcdir)/'`rbt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-rbt.Tpo $(DEPDIR)/libhak_la-rbt.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rbt.c' object='libhak_la-rbt.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-rbt.lo `test -f 'rbt.c' || echo '$(srcdir)/'`rbt.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-rbt.lo `test -f 'rbt.c' || echo '$(srcdir)/'`rbt.c -libhcl_la-read.lo: read.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-read.lo -MD -MP -MF $(DEPDIR)/libhcl_la-read.Tpo -c -o libhcl_la-read.lo `test -f 'read.c' || echo '$(srcdir)/'`read.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-read.Tpo $(DEPDIR)/libhcl_la-read.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='read.c' object='libhcl_la-read.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-read.lo: read.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-read.lo -MD -MP -MF $(DEPDIR)/libhak_la-read.Tpo -c -o libhak_la-read.lo `test -f 'read.c' || echo '$(srcdir)/'`read.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-read.Tpo $(DEPDIR)/libhak_la-read.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='read.c' object='libhak_la-read.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-read.lo `test -f 'read.c' || echo '$(srcdir)/'`read.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-read.lo `test -f 'read.c' || echo '$(srcdir)/'`read.c -libhcl_la-std.lo: std.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-std.lo -MD -MP -MF $(DEPDIR)/libhcl_la-std.Tpo -c -o libhcl_la-std.lo `test -f 'std.c' || echo '$(srcdir)/'`std.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-std.Tpo $(DEPDIR)/libhcl_la-std.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='std.c' object='libhcl_la-std.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-std.lo: std.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-std.lo -MD -MP -MF $(DEPDIR)/libhak_la-std.Tpo -c -o libhak_la-std.lo `test -f 'std.c' || echo '$(srcdir)/'`std.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-std.Tpo $(DEPDIR)/libhak_la-std.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='std.c' object='libhak_la-std.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-std.lo `test -f 'std.c' || echo '$(srcdir)/'`std.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-std.lo `test -f 'std.c' || echo '$(srcdir)/'`std.c -libhcl_la-str.lo: str.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-str.lo -MD -MP -MF $(DEPDIR)/libhcl_la-str.Tpo -c -o libhcl_la-str.lo `test -f 'str.c' || echo '$(srcdir)/'`str.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-str.Tpo $(DEPDIR)/libhcl_la-str.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='str.c' object='libhcl_la-str.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-str.lo: str.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-str.lo -MD -MP -MF $(DEPDIR)/libhak_la-str.Tpo -c -o libhak_la-str.lo `test -f 'str.c' || echo '$(srcdir)/'`str.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-str.Tpo $(DEPDIR)/libhak_la-str.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='str.c' object='libhak_la-str.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-str.lo `test -f 'str.c' || echo '$(srcdir)/'`str.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-str.lo `test -f 'str.c' || echo '$(srcdir)/'`str.c -libhcl_la-sym.lo: sym.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-sym.lo -MD -MP -MF $(DEPDIR)/libhcl_la-sym.Tpo -c -o libhcl_la-sym.lo `test -f 'sym.c' || echo '$(srcdir)/'`sym.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-sym.Tpo $(DEPDIR)/libhcl_la-sym.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sym.c' object='libhcl_la-sym.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-sym.lo: sym.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-sym.lo -MD -MP -MF $(DEPDIR)/libhak_la-sym.Tpo -c -o libhak_la-sym.lo `test -f 'sym.c' || echo '$(srcdir)/'`sym.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-sym.Tpo $(DEPDIR)/libhak_la-sym.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sym.c' object='libhak_la-sym.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-sym.lo `test -f 'sym.c' || echo '$(srcdir)/'`sym.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-sym.lo `test -f 'sym.c' || echo '$(srcdir)/'`sym.c -libhcl_la-utf16.lo: utf16.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-utf16.lo -MD -MP -MF $(DEPDIR)/libhcl_la-utf16.Tpo -c -o libhcl_la-utf16.lo `test -f 'utf16.c' || echo '$(srcdir)/'`utf16.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-utf16.Tpo $(DEPDIR)/libhcl_la-utf16.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utf16.c' object='libhcl_la-utf16.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-utf16.lo: utf16.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-utf16.lo -MD -MP -MF $(DEPDIR)/libhak_la-utf16.Tpo -c -o libhak_la-utf16.lo `test -f 'utf16.c' || echo '$(srcdir)/'`utf16.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-utf16.Tpo $(DEPDIR)/libhak_la-utf16.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utf16.c' object='libhak_la-utf16.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-utf16.lo `test -f 'utf16.c' || echo '$(srcdir)/'`utf16.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-utf16.lo `test -f 'utf16.c' || echo '$(srcdir)/'`utf16.c -libhcl_la-utf8.lo: utf8.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-utf8.lo -MD -MP -MF $(DEPDIR)/libhcl_la-utf8.Tpo -c -o libhcl_la-utf8.lo `test -f 'utf8.c' || echo '$(srcdir)/'`utf8.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-utf8.Tpo $(DEPDIR)/libhcl_la-utf8.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utf8.c' object='libhcl_la-utf8.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-utf8.lo: utf8.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-utf8.lo -MD -MP -MF $(DEPDIR)/libhak_la-utf8.Tpo -c -o libhak_la-utf8.lo `test -f 'utf8.c' || echo '$(srcdir)/'`utf8.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-utf8.Tpo $(DEPDIR)/libhak_la-utf8.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utf8.c' object='libhak_la-utf8.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-utf8.lo `test -f 'utf8.c' || echo '$(srcdir)/'`utf8.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-utf8.lo `test -f 'utf8.c' || echo '$(srcdir)/'`utf8.c -libhcl_la-utl.lo: utl.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-utl.lo -MD -MP -MF $(DEPDIR)/libhcl_la-utl.Tpo -c -o libhcl_la-utl.lo `test -f 'utl.c' || echo '$(srcdir)/'`utl.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-utl.Tpo $(DEPDIR)/libhcl_la-utl.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utl.c' object='libhcl_la-utl.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-utl.lo: utl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-utl.lo -MD -MP -MF $(DEPDIR)/libhak_la-utl.Tpo -c -o libhak_la-utl.lo `test -f 'utl.c' || echo '$(srcdir)/'`utl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-utl.Tpo $(DEPDIR)/libhak_la-utl.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utl.c' object='libhak_la-utl.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-utl.lo `test -f 'utl.c' || echo '$(srcdir)/'`utl.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-utl.lo `test -f 'utl.c' || echo '$(srcdir)/'`utl.c -libhcl_la-xchg.lo: xchg.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-xchg.lo -MD -MP -MF $(DEPDIR)/libhcl_la-xchg.Tpo -c -o libhcl_la-xchg.lo `test -f 'xchg.c' || echo '$(srcdir)/'`xchg.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-xchg.Tpo $(DEPDIR)/libhcl_la-xchg.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xchg.c' object='libhcl_la-xchg.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-xchg.lo: xchg.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-xchg.lo -MD -MP -MF $(DEPDIR)/libhak_la-xchg.Tpo -c -o libhak_la-xchg.lo `test -f 'xchg.c' || echo '$(srcdir)/'`xchg.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-xchg.Tpo $(DEPDIR)/libhak_la-xchg.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xchg.c' object='libhak_la-xchg.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-xchg.lo `test -f 'xchg.c' || echo '$(srcdir)/'`xchg.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-xchg.lo `test -f 'xchg.c' || echo '$(srcdir)/'`xchg.c -libhcl_la-xma.lo: xma.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-xma.lo -MD -MP -MF $(DEPDIR)/libhcl_la-xma.Tpo -c -o libhcl_la-xma.lo `test -f 'xma.c' || echo '$(srcdir)/'`xma.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-xma.Tpo $(DEPDIR)/libhcl_la-xma.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xma.c' object='libhcl_la-xma.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_la-xma.lo: xma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhak_la-xma.lo -MD -MP -MF $(DEPDIR)/libhak_la-xma.Tpo -c -o libhak_la-xma.lo `test -f 'xma.c' || echo '$(srcdir)/'`xma.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_la-xma.Tpo $(DEPDIR)/libhak_la-xma.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xma.c' object='libhak_la-xma.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-xma.lo `test -f 'xma.c' || echo '$(srcdir)/'`xma.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhak_la-xma.lo `test -f 'xma.c' || echo '$(srcdir)/'`xma.c -libhclx_la-json.lo: json.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhclx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhclx_la-json.lo -MD -MP -MF $(DEPDIR)/libhclx_la-json.Tpo -c -o libhclx_la-json.lo `test -f 'json.c' || echo '$(srcdir)/'`json.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhclx_la-json.Tpo $(DEPDIR)/libhclx_la-json.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='json.c' object='libhclx_la-json.lo' libtool=yes @AMDEPBACKSLASH@ +libhakx_la-json.lo: json.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhakx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhakx_la-json.lo -MD -MP -MF $(DEPDIR)/libhakx_la-json.Tpo -c -o libhakx_la-json.lo `test -f 'json.c' || echo '$(srcdir)/'`json.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhakx_la-json.Tpo $(DEPDIR)/libhakx_la-json.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='json.c' object='libhakx_la-json.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhclx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhclx_la-json.lo `test -f 'json.c' || echo '$(srcdir)/'`json.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhakx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhakx_la-json.lo `test -f 'json.c' || echo '$(srcdir)/'`json.c -libhclx_la-tmr.lo: tmr.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhclx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhclx_la-tmr.lo -MD -MP -MF $(DEPDIR)/libhclx_la-tmr.Tpo -c -o libhclx_la-tmr.lo `test -f 'tmr.c' || echo '$(srcdir)/'`tmr.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhclx_la-tmr.Tpo $(DEPDIR)/libhclx_la-tmr.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tmr.c' object='libhclx_la-tmr.lo' libtool=yes @AMDEPBACKSLASH@ +libhakx_la-tmr.lo: tmr.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhakx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhakx_la-tmr.lo -MD -MP -MF $(DEPDIR)/libhakx_la-tmr.Tpo -c -o libhakx_la-tmr.lo `test -f 'tmr.c' || echo '$(srcdir)/'`tmr.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhakx_la-tmr.Tpo $(DEPDIR)/libhakx_la-tmr.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tmr.c' object='libhakx_la-tmr.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhclx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhclx_la-tmr.lo `test -f 'tmr.c' || echo '$(srcdir)/'`tmr.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhakx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhakx_la-tmr.lo `test -f 'tmr.c' || echo '$(srcdir)/'`tmr.c -libhclx_la-x-client.lo: x-client.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhclx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhclx_la-x-client.lo -MD -MP -MF $(DEPDIR)/libhclx_la-x-client.Tpo -c -o libhclx_la-x-client.lo `test -f 'x-client.c' || echo '$(srcdir)/'`x-client.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhclx_la-x-client.Tpo $(DEPDIR)/libhclx_la-x-client.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='x-client.c' object='libhclx_la-x-client.lo' libtool=yes @AMDEPBACKSLASH@ +libhakx_la-x-client.lo: x-client.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhakx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhakx_la-x-client.lo -MD -MP -MF $(DEPDIR)/libhakx_la-x-client.Tpo -c -o libhakx_la-x-client.lo `test -f 'x-client.c' || echo '$(srcdir)/'`x-client.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhakx_la-x-client.Tpo $(DEPDIR)/libhakx_la-x-client.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='x-client.c' object='libhakx_la-x-client.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhclx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhclx_la-x-client.lo `test -f 'x-client.c' || echo '$(srcdir)/'`x-client.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhakx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhakx_la-x-client.lo `test -f 'x-client.c' || echo '$(srcdir)/'`x-client.c -libhclx_la-x-proto.lo: x-proto.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhclx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhclx_la-x-proto.lo -MD -MP -MF $(DEPDIR)/libhclx_la-x-proto.Tpo -c -o libhclx_la-x-proto.lo `test -f 'x-proto.c' || echo '$(srcdir)/'`x-proto.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhclx_la-x-proto.Tpo $(DEPDIR)/libhclx_la-x-proto.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='x-proto.c' object='libhclx_la-x-proto.lo' libtool=yes @AMDEPBACKSLASH@ +libhakx_la-x-proto.lo: x-proto.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhakx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhakx_la-x-proto.lo -MD -MP -MF $(DEPDIR)/libhakx_la-x-proto.Tpo -c -o libhakx_la-x-proto.lo `test -f 'x-proto.c' || echo '$(srcdir)/'`x-proto.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhakx_la-x-proto.Tpo $(DEPDIR)/libhakx_la-x-proto.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='x-proto.c' object='libhakx_la-x-proto.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhclx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhclx_la-x-proto.lo `test -f 'x-proto.c' || echo '$(srcdir)/'`x-proto.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhakx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhakx_la-x-proto.lo `test -f 'x-proto.c' || echo '$(srcdir)/'`x-proto.c -libhclx_la-x-server.lo: x-server.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhclx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhclx_la-x-server.lo -MD -MP -MF $(DEPDIR)/libhclx_la-x-server.Tpo -c -o libhclx_la-x-server.lo `test -f 'x-server.c' || echo '$(srcdir)/'`x-server.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhclx_la-x-server.Tpo $(DEPDIR)/libhclx_la-x-server.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='x-server.c' object='libhclx_la-x-server.lo' libtool=yes @AMDEPBACKSLASH@ +libhakx_la-x-server.lo: x-server.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhakx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhakx_la-x-server.lo -MD -MP -MF $(DEPDIR)/libhakx_la-x-server.Tpo -c -o libhakx_la-x-server.lo `test -f 'x-server.c' || echo '$(srcdir)/'`x-server.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhakx_la-x-server.Tpo $(DEPDIR)/libhakx_la-x-server.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='x-server.c' object='libhakx_la-x-server.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhclx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhclx_la-x-server.lo `test -f 'x-server.c' || echo '$(srcdir)/'`x-server.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhakx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhakx_la-x-server.lo `test -f 'x-server.c' || echo '$(srcdir)/'`x-server.c -libhclx_la-x-sys.lo: x-sys.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhclx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhclx_la-x-sys.lo -MD -MP -MF $(DEPDIR)/libhclx_la-x-sys.Tpo -c -o libhclx_la-x-sys.lo `test -f 'x-sys.c' || echo '$(srcdir)/'`x-sys.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhclx_la-x-sys.Tpo $(DEPDIR)/libhclx_la-x-sys.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='x-sys.c' object='libhclx_la-x-sys.lo' libtool=yes @AMDEPBACKSLASH@ +libhakx_la-x-sys.lo: x-sys.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhakx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhakx_la-x-sys.lo -MD -MP -MF $(DEPDIR)/libhakx_la-x-sys.Tpo -c -o libhakx_la-x-sys.lo `test -f 'x-sys.c' || echo '$(srcdir)/'`x-sys.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhakx_la-x-sys.Tpo $(DEPDIR)/libhakx_la-x-sys.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='x-sys.c' object='libhakx_la-x-sys.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhclx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhclx_la-x-sys.lo `test -f 'x-sys.c' || echo '$(srcdir)/'`x-sys.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhakx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhakx_la-x-sys.lo `test -f 'x-sys.c' || echo '$(srcdir)/'`x-sys.c -libhclx_la-x-utl.lo: x-utl.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhclx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhclx_la-x-utl.lo -MD -MP -MF $(DEPDIR)/libhclx_la-x-utl.Tpo -c -o libhclx_la-x-utl.lo `test -f 'x-utl.c' || echo '$(srcdir)/'`x-utl.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhclx_la-x-utl.Tpo $(DEPDIR)/libhclx_la-x-utl.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='x-utl.c' object='libhclx_la-x-utl.lo' libtool=yes @AMDEPBACKSLASH@ +libhakx_la-x-utl.lo: x-utl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhakx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhakx_la-x-utl.lo -MD -MP -MF $(DEPDIR)/libhakx_la-x-utl.Tpo -c -o libhakx_la-x-utl.lo `test -f 'x-utl.c' || echo '$(srcdir)/'`x-utl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhakx_la-x-utl.Tpo $(DEPDIR)/libhakx_la-x-utl.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='x-utl.c' object='libhakx_la-x-utl.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhclx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhclx_la-x-utl.lo `test -f 'x-utl.c' || echo '$(srcdir)/'`x-utl.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhakx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhakx_la-x-utl.lo `test -f 'x-utl.c' || echo '$(srcdir)/'`x-utl.c mostlyclean-libtool: -rm -f *.lo @@ -1034,7 +1034,7 @@ distdir-am: $(DISTFILES) done check-am: all-am check: check-am -all-am: Makefile $(LTLIBRARIES) $(HEADERS) hcl-cfg.h +all-am: Makefile $(LTLIBRARIES) $(HEADERS) hak-cfg.h installdirs: for dir in "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(pkgincludedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ @@ -1075,43 +1075,43 @@ clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am - -rm -f ./$(DEPDIR)/libhcl_la-bigint.Plo - -rm -f ./$(DEPDIR)/libhcl_la-chr.Plo - -rm -f ./$(DEPDIR)/libhcl_la-cmgr.Plo - -rm -f ./$(DEPDIR)/libhcl_la-cnode.Plo - -rm -f ./$(DEPDIR)/libhcl_la-comp.Plo - -rm -f ./$(DEPDIR)/libhcl_la-debug.Plo - -rm -f ./$(DEPDIR)/libhcl_la-decode.Plo - -rm -f ./$(DEPDIR)/libhcl_la-dic.Plo - -rm -f ./$(DEPDIR)/libhcl_la-err.Plo - -rm -f ./$(DEPDIR)/libhcl_la-exec.Plo - -rm -f ./$(DEPDIR)/libhcl_la-fmt.Plo - -rm -f ./$(DEPDIR)/libhcl_la-gc.Plo - -rm -f ./$(DEPDIR)/libhcl_la-hcl.Plo - -rm -f ./$(DEPDIR)/libhcl_la-heap.Plo - -rm -f ./$(DEPDIR)/libhcl_la-mb8.Plo - -rm -f ./$(DEPDIR)/libhcl_la-number.Plo - -rm -f ./$(DEPDIR)/libhcl_la-obj.Plo - -rm -f ./$(DEPDIR)/libhcl_la-opt.Plo - -rm -f ./$(DEPDIR)/libhcl_la-prim.Plo - -rm -f ./$(DEPDIR)/libhcl_la-print.Plo - -rm -f ./$(DEPDIR)/libhcl_la-rbt.Plo - -rm -f ./$(DEPDIR)/libhcl_la-read.Plo - -rm -f ./$(DEPDIR)/libhcl_la-std.Plo - -rm -f ./$(DEPDIR)/libhcl_la-str.Plo - -rm -f ./$(DEPDIR)/libhcl_la-sym.Plo - -rm -f ./$(DEPDIR)/libhcl_la-utf16.Plo - -rm -f ./$(DEPDIR)/libhcl_la-utf8.Plo - -rm -f ./$(DEPDIR)/libhcl_la-utl.Plo - -rm -f ./$(DEPDIR)/libhcl_la-xchg.Plo - -rm -f ./$(DEPDIR)/libhcl_la-xma.Plo - -rm -f ./$(DEPDIR)/libhclx_la-json.Plo - -rm -f ./$(DEPDIR)/libhclx_la-tmr.Plo - -rm -f ./$(DEPDIR)/libhclx_la-x-client.Plo - -rm -f ./$(DEPDIR)/libhclx_la-x-proto.Plo - -rm -f ./$(DEPDIR)/libhclx_la-x-server.Plo - -rm -f ./$(DEPDIR)/libhclx_la-x-sys.Plo - -rm -f ./$(DEPDIR)/libhclx_la-x-utl.Plo + -rm -f ./$(DEPDIR)/libhak_la-bigint.Plo + -rm -f ./$(DEPDIR)/libhak_la-chr.Plo + -rm -f ./$(DEPDIR)/libhak_la-cmgr.Plo + -rm -f ./$(DEPDIR)/libhak_la-cnode.Plo + -rm -f ./$(DEPDIR)/libhak_la-comp.Plo + -rm -f ./$(DEPDIR)/libhak_la-debug.Plo + -rm -f ./$(DEPDIR)/libhak_la-decode.Plo + -rm -f ./$(DEPDIR)/libhak_la-dic.Plo + -rm -f ./$(DEPDIR)/libhak_la-err.Plo + -rm -f ./$(DEPDIR)/libhak_la-exec.Plo + -rm -f ./$(DEPDIR)/libhak_la-fmt.Plo + -rm -f ./$(DEPDIR)/libhak_la-gc.Plo + -rm -f ./$(DEPDIR)/libhak_la-hak.Plo + -rm -f ./$(DEPDIR)/libhak_la-heap.Plo + -rm -f ./$(DEPDIR)/libhak_la-mb8.Plo + -rm -f ./$(DEPDIR)/libhak_la-number.Plo + -rm -f ./$(DEPDIR)/libhak_la-obj.Plo + -rm -f ./$(DEPDIR)/libhak_la-opt.Plo + -rm -f ./$(DEPDIR)/libhak_la-prim.Plo + -rm -f ./$(DEPDIR)/libhak_la-print.Plo + -rm -f ./$(DEPDIR)/libhak_la-rbt.Plo + -rm -f ./$(DEPDIR)/libhak_la-read.Plo + -rm -f ./$(DEPDIR)/libhak_la-std.Plo + -rm -f ./$(DEPDIR)/libhak_la-str.Plo + -rm -f ./$(DEPDIR)/libhak_la-sym.Plo + -rm -f ./$(DEPDIR)/libhak_la-utf16.Plo + -rm -f ./$(DEPDIR)/libhak_la-utf8.Plo + -rm -f ./$(DEPDIR)/libhak_la-utl.Plo + -rm -f ./$(DEPDIR)/libhak_la-xchg.Plo + -rm -f ./$(DEPDIR)/libhak_la-xma.Plo + -rm -f ./$(DEPDIR)/libhakx_la-json.Plo + -rm -f ./$(DEPDIR)/libhakx_la-tmr.Plo + -rm -f ./$(DEPDIR)/libhakx_la-x-client.Plo + -rm -f ./$(DEPDIR)/libhakx_la-x-proto.Plo + -rm -f ./$(DEPDIR)/libhakx_la-x-server.Plo + -rm -f ./$(DEPDIR)/libhakx_la-x-sys.Plo + -rm -f ./$(DEPDIR)/libhakx_la-x-utl.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-tags @@ -1158,43 +1158,43 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/libhcl_la-bigint.Plo - -rm -f ./$(DEPDIR)/libhcl_la-chr.Plo - -rm -f ./$(DEPDIR)/libhcl_la-cmgr.Plo - -rm -f ./$(DEPDIR)/libhcl_la-cnode.Plo - -rm -f ./$(DEPDIR)/libhcl_la-comp.Plo - -rm -f ./$(DEPDIR)/libhcl_la-debug.Plo - -rm -f ./$(DEPDIR)/libhcl_la-decode.Plo - -rm -f ./$(DEPDIR)/libhcl_la-dic.Plo - -rm -f ./$(DEPDIR)/libhcl_la-err.Plo - -rm -f ./$(DEPDIR)/libhcl_la-exec.Plo - -rm -f ./$(DEPDIR)/libhcl_la-fmt.Plo - -rm -f ./$(DEPDIR)/libhcl_la-gc.Plo - -rm -f ./$(DEPDIR)/libhcl_la-hcl.Plo - -rm -f ./$(DEPDIR)/libhcl_la-heap.Plo - -rm -f ./$(DEPDIR)/libhcl_la-mb8.Plo - -rm -f ./$(DEPDIR)/libhcl_la-number.Plo - -rm -f ./$(DEPDIR)/libhcl_la-obj.Plo - -rm -f ./$(DEPDIR)/libhcl_la-opt.Plo - -rm -f ./$(DEPDIR)/libhcl_la-prim.Plo - -rm -f ./$(DEPDIR)/libhcl_la-print.Plo - -rm -f ./$(DEPDIR)/libhcl_la-rbt.Plo - -rm -f ./$(DEPDIR)/libhcl_la-read.Plo - -rm -f ./$(DEPDIR)/libhcl_la-std.Plo - -rm -f ./$(DEPDIR)/libhcl_la-str.Plo - -rm -f ./$(DEPDIR)/libhcl_la-sym.Plo - -rm -f ./$(DEPDIR)/libhcl_la-utf16.Plo - -rm -f ./$(DEPDIR)/libhcl_la-utf8.Plo - -rm -f ./$(DEPDIR)/libhcl_la-utl.Plo - -rm -f ./$(DEPDIR)/libhcl_la-xchg.Plo - -rm -f ./$(DEPDIR)/libhcl_la-xma.Plo - -rm -f ./$(DEPDIR)/libhclx_la-json.Plo - -rm -f ./$(DEPDIR)/libhclx_la-tmr.Plo - -rm -f ./$(DEPDIR)/libhclx_la-x-client.Plo - -rm -f ./$(DEPDIR)/libhclx_la-x-proto.Plo - -rm -f ./$(DEPDIR)/libhclx_la-x-server.Plo - -rm -f ./$(DEPDIR)/libhclx_la-x-sys.Plo - -rm -f ./$(DEPDIR)/libhclx_la-x-utl.Plo + -rm -f ./$(DEPDIR)/libhak_la-bigint.Plo + -rm -f ./$(DEPDIR)/libhak_la-chr.Plo + -rm -f ./$(DEPDIR)/libhak_la-cmgr.Plo + -rm -f ./$(DEPDIR)/libhak_la-cnode.Plo + -rm -f ./$(DEPDIR)/libhak_la-comp.Plo + -rm -f ./$(DEPDIR)/libhak_la-debug.Plo + -rm -f ./$(DEPDIR)/libhak_la-decode.Plo + -rm -f ./$(DEPDIR)/libhak_la-dic.Plo + -rm -f ./$(DEPDIR)/libhak_la-err.Plo + -rm -f ./$(DEPDIR)/libhak_la-exec.Plo + -rm -f ./$(DEPDIR)/libhak_la-fmt.Plo + -rm -f ./$(DEPDIR)/libhak_la-gc.Plo + -rm -f ./$(DEPDIR)/libhak_la-hak.Plo + -rm -f ./$(DEPDIR)/libhak_la-heap.Plo + -rm -f ./$(DEPDIR)/libhak_la-mb8.Plo + -rm -f ./$(DEPDIR)/libhak_la-number.Plo + -rm -f ./$(DEPDIR)/libhak_la-obj.Plo + -rm -f ./$(DEPDIR)/libhak_la-opt.Plo + -rm -f ./$(DEPDIR)/libhak_la-prim.Plo + -rm -f ./$(DEPDIR)/libhak_la-print.Plo + -rm -f ./$(DEPDIR)/libhak_la-rbt.Plo + -rm -f ./$(DEPDIR)/libhak_la-read.Plo + -rm -f ./$(DEPDIR)/libhak_la-std.Plo + -rm -f ./$(DEPDIR)/libhak_la-str.Plo + -rm -f ./$(DEPDIR)/libhak_la-sym.Plo + -rm -f ./$(DEPDIR)/libhak_la-utf16.Plo + -rm -f ./$(DEPDIR)/libhak_la-utf8.Plo + -rm -f ./$(DEPDIR)/libhak_la-utl.Plo + -rm -f ./$(DEPDIR)/libhak_la-xchg.Plo + -rm -f ./$(DEPDIR)/libhak_la-xma.Plo + -rm -f ./$(DEPDIR)/libhakx_la-json.Plo + -rm -f ./$(DEPDIR)/libhakx_la-tmr.Plo + -rm -f ./$(DEPDIR)/libhakx_la-x-client.Plo + -rm -f ./$(DEPDIR)/libhakx_la-x-proto.Plo + -rm -f ./$(DEPDIR)/libhakx_la-x-server.Plo + -rm -f ./$(DEPDIR)/libhakx_la-x-sys.Plo + -rm -f ./$(DEPDIR)/libhakx_la-x-utl.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -1237,15 +1237,15 @@ uninstall-am: uninstall-pkgincludeHEADERS uninstall-pkglibLTLIBRARIES install-data-hook: - @echo "#ifndef _HCL_CFG_H_" > "$(DESTDIR)$(pkgincludedir)/hcl-cfg.h" - @echo "#define _HCL_CFG_H_" >> "$(DESTDIR)$(pkgincludedir)/hcl-cfg.h" - @$(EGREP) "#define[ ]+HCL_" "$(abs_builddir)/hcl-cfg.h" >> "$(DESTDIR)$(pkgincludedir)/hcl-cfg.h" - @echo "#endif" >> "$(DESTDIR)$(pkgincludedir)/hcl-cfg.h" - @rm -f "$(DESTDIR)$(pkgincludedir)/hcl-cfg.h.in" - @$(SED) 's|/\*#define HCL_HAVE_CFG_H\*/|#define HCL_HAVE_CFG_H|' "$(srcdir)/hcl-cmn.h" > "$(DESTDIR)$(pkgincludedir)/hcl-cmn.h" + @echo "#ifndef _HAK_CFG_H_" > "$(DESTDIR)$(pkgincludedir)/hak-cfg.h" + @echo "#define _HAK_CFG_H_" >> "$(DESTDIR)$(pkgincludedir)/hak-cfg.h" + @$(EGREP) "#define[ ]+HAK_" "$(abs_builddir)/hak-cfg.h" >> "$(DESTDIR)$(pkgincludedir)/hak-cfg.h" + @echo "#endif" >> "$(DESTDIR)$(pkgincludedir)/hak-cfg.h" + @rm -f "$(DESTDIR)$(pkgincludedir)/hak-cfg.h.in" + @$(SED) 's|/\*#define HAK_HAVE_CFG_H\*/|#define HAK_HAVE_CFG_H|' "$(srcdir)/hak-cmn.h" > "$(DESTDIR)$(pkgincludedir)/hak-cmn.h" uninstall-hook: - @rm -f "$(DESTDIR)$(pkgincludedir)/hcl-cfg.h" + @rm -f "$(DESTDIR)$(pkgincludedir)/hak-cfg.h" # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/lib/bigint.c b/lib/bigint.c index 95e2e0f..6114ed0 100644 --- a/lib/bigint.c +++ b/lib/bigint.c @@ -22,12 +22,12 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "hcl-prv.h" +#include "hak-prv.h" -#if (HCL_LIW_BITS == HCL_OOW_BITS) +#if (HAK_LIW_BITS == HAK_OOW_BITS) /* nothing special */ -#elif (HCL_LIW_BITS == HCL_OOHW_BITS) -# define MAKE_WORD(hw1,hw2) ((hcl_oow_t)(hw1) | (hcl_oow_t)(hw2) << HCL_LIW_BITS) +#elif (HAK_LIW_BITS == HAK_OOHW_BITS) +# define MAKE_WORD(hw1,hw2) ((hak_oow_t)(hw1) | (hak_oow_t)(hw2) << HAK_LIW_BITS) #else # error UNSUPPORTED LIW BIT SIZE #endif @@ -45,7 +45,7 @@ static const char* _digitc_array[] = }; /* exponent table for pow2 between 1 and 32 inclusive. */ -static hcl_uint8_t _exp_tab[32] = +static hak_uint8_t _exp_tab[32] = { 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, @@ -53,7 +53,7 @@ static hcl_uint8_t _exp_tab[32] = 0, 0, 0, 0, 0, 0, 0, 5 }; -static const hcl_uint8_t debruijn_32[32] = +static const hak_uint8_t debruijn_32[32] = { 0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8, @@ -61,7 +61,7 @@ static const hcl_uint8_t debruijn_32[32] = 26, 12, 18, 6, 11, 5, 10, 9 }; -static const hcl_uint8_t debruijn_64[64] = +static const hak_uint8_t debruijn_64[64] = { 0, 1, 2, 53, 3, 7, 54, 27, 4, 38, 41, 8, 34, 55, 48, 28, @@ -73,89 +73,89 @@ static const hcl_uint8_t debruijn_64[64] = 50, 31, 19, 15, 30, 14, 13, 12 }; -#define make_pbigint(hcl, ptr, len) (hcl_instantiate(hcl, hcl->c_large_positive_integer, ptr, len)) -#define make_nbigint(hcl, ptr, len) (hcl_instantiate(hcl, hcl->c_large_negative_integer, ptr, len)) +#define make_pbigint(hak, ptr, len) (hak_instantiate(hak, hak->c_large_positive_integer, ptr, len)) +#define make_nbigint(hak, ptr, len) (hak_instantiate(hak, hak->c_large_negative_integer, ptr, len)) -#if defined(HCL_HAVE_UINT32_T) -# define LOG2_FOR_POW2_32(x) (debruijn_32[(hcl_uint32_t)((hcl_uint32_t)(x) * 0x077CB531) >> 27]) +#if defined(HAK_HAVE_UINT32_T) +# define LOG2_FOR_POW2_32(x) (debruijn_32[(hak_uint32_t)((hak_uint32_t)(x) * 0x077CB531) >> 27]) #endif -#if defined(HCL_HAVE_UINT64_T) -# define LOG2_FOR_POW2_64(x) (debruijn_64[(hcl_uint64_t)((hcl_uint64_t)(x) * 0x022fdd63cc95386d) >> 58]) +#if defined(HAK_HAVE_UINT64_T) +# define LOG2_FOR_POW2_64(x) (debruijn_64[(hak_uint64_t)((hak_uint64_t)(x) * 0x022fdd63cc95386d) >> 58]) #endif -#if defined(HCL_HAVE_UINT32_T) && (HCL_SIZEOF_OOW_T == HCL_SIZEOF_UINT32_T) +#if defined(HAK_HAVE_UINT32_T) && (HAK_SIZEOF_OOW_T == HAK_SIZEOF_UINT32_T) # define LOG2_FOR_POW2(x) LOG2_FOR_POW2_32(x) -#elif defined(HCL_HAVE_UINT64_T) && (HCL_SIZEOF_OOW_T == HCL_SIZEOF_UINT64_T) +#elif defined(HAK_HAVE_UINT64_T) && (HAK_SIZEOF_OOW_T == HAK_SIZEOF_UINT64_T) # define LOG2_FOR_POW2(x) LOG2_FOR_POW2_64(x) #else -# define LOG2_FOR_POW2(x) hcl_get_pos_of_msb_set_pow2(x) +# define LOG2_FOR_POW2(x) hak_get_pos_of_msb_set_pow2(x) #endif -#if (HCL_SIZEOF_OOW_T == HCL_SIZEOF_INT) && defined(HCL_HAVE_BUILTIN_UADD_OVERFLOW) +#if (HAK_SIZEOF_OOW_T == HAK_SIZEOF_INT) && defined(HAK_HAVE_BUILTIN_UADD_OVERFLOW) # define oow_add_overflow(a,b,c) __builtin_uadd_overflow(a,b,c) -#elif (HCL_SIZEOF_OOW_T == HCL_SIZEOF_LONG) && defined(HCL_HAVE_BUILTIN_UADDL_OVERFLOW) +#elif (HAK_SIZEOF_OOW_T == HAK_SIZEOF_LONG) && defined(HAK_HAVE_BUILTIN_UADDL_OVERFLOW) # define oow_add_overflow(a,b,c) __builtin_uaddl_overflow(a,b,c) -#elif (HCL_SIZEOF_OOW_T == HCL_SIZEOF_LONG_LONG) && defined(HCL_HAVE_BUILTIN_UADDLL_OVERFLOW) +#elif (HAK_SIZEOF_OOW_T == HAK_SIZEOF_LONG_LONG) && defined(HAK_HAVE_BUILTIN_UADDLL_OVERFLOW) # define oow_add_overflow(a,b,c) __builtin_uaddll_overflow(a,b,c) #else -static HCL_INLINE int oow_add_overflow (hcl_oow_t a, hcl_oow_t b, hcl_oow_t* c) +static HAK_INLINE int oow_add_overflow (hak_oow_t a, hak_oow_t b, hak_oow_t* c) { *c = a + b; - return b > HCL_TYPE_MAX(hcl_oow_t) - a; + return b > HAK_TYPE_MAX(hak_oow_t) - a; } #endif -#if (HCL_SIZEOF_OOW_T == HCL_SIZEOF_INT) && defined(HCL_HAVE_BUILTIN_UMUL_OVERFLOW) +#if (HAK_SIZEOF_OOW_T == HAK_SIZEOF_INT) && defined(HAK_HAVE_BUILTIN_UMUL_OVERFLOW) # define oow_mul_overflow(a,b,c) __builtin_umul_overflow(a,b,c) -#elif (HCL_SIZEOF_OOW_T == HCL_SIZEOF_LONG) && defined(HCL_HAVE_BUILTIN_UMULL_OVERFLOW) +#elif (HAK_SIZEOF_OOW_T == HAK_SIZEOF_LONG) && defined(HAK_HAVE_BUILTIN_UMULL_OVERFLOW) # define oow_mul_overflow(a,b,c) __builtin_umull_overflow(a,b,c) -#elif (HCL_SIZEOF_OOW_T == HCL_SIZEOF_LONG_LONG) && defined(HCL_HAVE_BUILTIN_UMULLL_OVERFLOW) +#elif (HAK_SIZEOF_OOW_T == HAK_SIZEOF_LONG_LONG) && defined(HAK_HAVE_BUILTIN_UMULLL_OVERFLOW) # define oow_mul_overflow(a,b,c) __builtin_umulll_overflow(a,b,c) #else -static HCL_INLINE int oow_mul_overflow (hcl_oow_t a, hcl_oow_t b, hcl_oow_t* c) +static HAK_INLINE int oow_mul_overflow (hak_oow_t a, hak_oow_t b, hak_oow_t* c) { -#if (HCL_SIZEOF_UINTMAX_T > HCL_SIZEOF_OOW_T) - hcl_uintmax_t k; - k = (hcl_uintmax_t)a * (hcl_uintmax_t)b; - *c = (hcl_oow_t)k; - return (k >> HCL_OOW_BITS) > 0; - /*return k > HCL_TYPE_MAX(hcl_oow_t);*/ +#if (HAK_SIZEOF_UINTMAX_T > HAK_SIZEOF_OOW_T) + hak_uintmax_t k; + k = (hak_uintmax_t)a * (hak_uintmax_t)b; + *c = (hak_oow_t)k; + return (k >> HAK_OOW_BITS) > 0; + /*return k > HAK_TYPE_MAX(hak_oow_t);*/ #else *c = a * b; - return b != 0 && a > HCL_TYPE_MAX(hcl_oow_t) / b; /* works for unsigned types only */ + return b != 0 && a > HAK_TYPE_MAX(hak_oow_t) / b; /* works for unsigned types only */ #endif } #endif -#if (HCL_SIZEOF_OOI_T == HCL_SIZEOF_INT) && defined(HCL_HAVE_BUILTIN_SMUL_OVERFLOW) -# define shcli_mul_overflow(hcl,a,b,c) __builtin_smul_overflow(a,b,c) -#elif (HCL_SIZEOF_OOI_T == HCL_SIZEOF_LONG) && defined(HCL_HAVE_BUILTIN_SMULL_OVERFLOW) -# define shcli_mul_overflow(hcl,a,b,c) __builtin_smull_overflow(a,b,c) -#elif (HCL_SIZEOF_OOI_T == HCL_SIZEOF_LONG_LONG) && defined(HCL_HAVE_BUILTIN_SMULLL_OVERFLOW) -# define shcli_mul_overflow(hcl,a,b,c) __builtin_smulll_overflow(a,b,c) +#if (HAK_SIZEOF_OOI_T == HAK_SIZEOF_INT) && defined(HAK_HAVE_BUILTIN_SMUL_OVERFLOW) +# define shaki_mul_overflow(hak,a,b,c) __builtin_smul_overflow(a,b,c) +#elif (HAK_SIZEOF_OOI_T == HAK_SIZEOF_LONG) && defined(HAK_HAVE_BUILTIN_SMULL_OVERFLOW) +# define shaki_mul_overflow(hak,a,b,c) __builtin_smull_overflow(a,b,c) +#elif (HAK_SIZEOF_OOI_T == HAK_SIZEOF_LONG_LONG) && defined(HAK_HAVE_BUILTIN_SMULLL_OVERFLOW) +# define shaki_mul_overflow(hak,a,b,c) __builtin_smulll_overflow(a,b,c) #else -static HCL_INLINE int shcli_mul_overflow (hcl_t* hcl, hcl_ooi_t a, hcl_ooi_t b, hcl_ooi_t* c) +static HAK_INLINE int shaki_mul_overflow (hak_t* hak, hak_ooi_t a, hak_ooi_t b, hak_ooi_t* c) { /* take note that this function is not supposed to handle - * the whole hcl_ooi_t range. it handles the shcli subrange */ + * the whole hak_ooi_t range. it handles the shaki subrange */ -#if (HCL_SIZEOF_UINTMAX_T > HCL_SIZEOF_OOI_T) - hcl_intmax_t k; +#if (HAK_SIZEOF_UINTMAX_T > HAK_SIZEOF_OOI_T) + hak_intmax_t k; - HCL_ASSERT (hcl, HCL_IN_SMOOI_RANGE(a)); - HCL_ASSERT (hcl, HCL_IN_SMOOI_RANGE(b)); + HAK_ASSERT (hak, HAK_IN_SMOOI_RANGE(a)); + HAK_ASSERT (hak, HAK_IN_SMOOI_RANGE(b)); - k = (hcl_intmax_t)a * (hcl_intmax_t)b; - *c = (hcl_ooi_t)k; + k = (hak_intmax_t)a * (hak_intmax_t)b; + *c = (hak_ooi_t)k; - return k > HCL_TYPE_MAX(hcl_ooi_t) || k < HCL_TYPE_MIN(hcl_ooi_t); + return k > HAK_TYPE_MAX(hak_ooi_t) || k < HAK_TYPE_MIN(hak_ooi_t); #else - hcl_ooi_t ua, ub; + hak_ooi_t ua, ub; - HCL_ASSERT (hcl, HCL_IN_SMOOI_RANGE(a)); - HCL_ASSERT (hcl, HCL_IN_SMOOI_RANGE(b)); + HAK_ASSERT (hak, HAK_IN_SMOOI_RANGE(a)); + HAK_ASSERT (hak, HAK_IN_SMOOI_RANGE(b)); *c = a * b; @@ -165,92 +165,92 @@ static HCL_INLINE int shcli_mul_overflow (hcl_t* hcl, hcl_ooi_t a, hcl_ooi_t b, /* though this fomula basically works for unsigned types in principle, * the values used here are all absolute values and they fall in * a safe range to apply this fomula. the safe range is guaranteed because - * the sources are supposed to be shclis. */ - return ub != 0 && ua > HCL_TYPE_MAX(hcl_ooi_t) / ub; + * the sources are supposed to be shakis. */ + return ub != 0 && ua > HAK_TYPE_MAX(hak_ooi_t) / ub; #endif } #endif -#if (HCL_SIZEOF_LIW_T == HCL_SIZEOF_INT) && defined(HCL_HAVE_BUILTIN_UADD_OVERFLOW) +#if (HAK_SIZEOF_LIW_T == HAK_SIZEOF_INT) && defined(HAK_HAVE_BUILTIN_UADD_OVERFLOW) # define liw_add_overflow(a,b,c) __builtin_uadd_overflow(a,b,c) -#elif (HCL_SIZEOF_LIW_T == HCL_SIZEOF_LONG) && defined(HCL_HAVE_BUILTIN_UADDL_OVERFLOW) +#elif (HAK_SIZEOF_LIW_T == HAK_SIZEOF_LONG) && defined(HAK_HAVE_BUILTIN_UADDL_OVERFLOW) # define liw_add_overflow(a,b,c) __builtin_uaddl_overflow(a,b,c) -#elif (HCL_SIZEOF_LIW_T == HCL_SIZEOF_LONG_LONG) && defined(HCL_HAVE_BUILTIN_UADDLL_OVERFLOW) +#elif (HAK_SIZEOF_LIW_T == HAK_SIZEOF_LONG_LONG) && defined(HAK_HAVE_BUILTIN_UADDLL_OVERFLOW) # define liw_add_overflow(a,b,c) __builtin_uaddll_overflow(a,b,c) #else -static HCL_INLINE int liw_add_overflow (hcl_liw_t a, hcl_liw_t b, hcl_liw_t* c) +static HAK_INLINE int liw_add_overflow (hak_liw_t a, hak_liw_t b, hak_liw_t* c) { *c = a + b; - return b > HCL_TYPE_MAX(hcl_liw_t) - a; + return b > HAK_TYPE_MAX(hak_liw_t) - a; } #endif -#if (HCL_SIZEOF_LIW_T == HCL_SIZEOF_INT) && defined(HCL_HAVE_BUILTIN_UMUL_OVERFLOW) +#if (HAK_SIZEOF_LIW_T == HAK_SIZEOF_INT) && defined(HAK_HAVE_BUILTIN_UMUL_OVERFLOW) # define liw_mul_overflow(a,b,c) __builtin_umul_overflow(a,b,c) -#elif (HCL_SIZEOF_LIW_T == HCL_SIZEOF_LONG) && defined(HCL_HAVE_BUILTIN_UMULL_OVERFLOW) +#elif (HAK_SIZEOF_LIW_T == HAK_SIZEOF_LONG) && defined(HAK_HAVE_BUILTIN_UMULL_OVERFLOW) # define liw_mul_overflow(a,b,c) __builtin_uaddl_overflow(a,b,c) -#elif (HCL_SIZEOF_LIW_T == HCL_SIZEOF_LONG_LONG) && defined(HCL_HAVE_BUILTIN_UMULLL_OVERFLOW) +#elif (HAK_SIZEOF_LIW_T == HAK_SIZEOF_LONG_LONG) && defined(HAK_HAVE_BUILTIN_UMULLL_OVERFLOW) # define liw_mul_overflow(a,b,c) __builtin_uaddll_overflow(a,b,c) #else -static HCL_INLINE int liw_mul_overflow (hcl_liw_t a, hcl_liw_t b, hcl_liw_t* c) +static HAK_INLINE int liw_mul_overflow (hak_liw_t a, hak_liw_t b, hak_liw_t* c) { -#if (HCL_SIZEOF_UINTMAX_T > HCL_SIZEOF_LIW_T) - hcl_uintmax_t k; - k = (hcl_uintmax_t)a * (hcl_uintmax_t)b; - *c = (hcl_liw_t)k; - return (k >> HCL_LIW_BITS) > 0; - /*return k > HCL_TYPE_MAX(hcl_liw_t);*/ +#if (HAK_SIZEOF_UINTMAX_T > HAK_SIZEOF_LIW_T) + hak_uintmax_t k; + k = (hak_uintmax_t)a * (hak_uintmax_t)b; + *c = (hak_liw_t)k; + return (k >> HAK_LIW_BITS) > 0; + /*return k > HAK_TYPE_MAX(hak_liw_t);*/ #else *c = a * b; - return b != 0 && a > HCL_TYPE_MAX(hcl_liw_t) / b; /* works for unsigned types only */ + return b != 0 && a > HAK_TYPE_MAX(hak_liw_t) / b; /* works for unsigned types only */ #endif } #endif -static int is_normalized_integer (hcl_t* hcl, hcl_oop_t oop) +static int is_normalized_integer (hak_t* hak, hak_oop_t oop) { - if (HCL_OOP_IS_SMOOI(oop)) return 1; - if (HCL_IS_BIGINT(hcl,oop)) + if (HAK_OOP_IS_SMOOI(oop)) return 1; + if (HAK_IS_BIGINT(hak,oop)) { - hcl_oow_t sz; - sz = HCL_OBJ_GET_SIZE(oop); - HCL_ASSERT (hcl, sz >= 1); - return HCL_OBJ_GET_LIWORD_VAL(oop, sz - 1) != 0; + hak_oow_t sz; + sz = HAK_OBJ_GET_SIZE(oop); + HAK_ASSERT (hak, sz >= 1); + return HAK_OBJ_GET_LIWORD_VAL(oop, sz - 1) != 0; } return 0; } -static HCL_INLINE int bigint_to_oow_noseterr (hcl_t* hcl, hcl_oop_t num, hcl_oow_t* w) +static HAK_INLINE int bigint_to_oow_noseterr (hak_t* hak, hak_oop_t num, hak_oow_t* w) { - HCL_ASSERT (hcl, HCL_IS_BIGINT(hcl,num)); + HAK_ASSERT (hak, HAK_IS_BIGINT(hak,num)); -#if (HCL_LIW_BITS == HCL_OOW_BITS) - HCL_ASSERT (hcl, HCL_OBJ_GET_SIZE(num) >= 1); - if (HCL_OBJ_GET_SIZE(num) == 1) +#if (HAK_LIW_BITS == HAK_OOW_BITS) + HAK_ASSERT (hak, HAK_OBJ_GET_SIZE(num) >= 1); + if (HAK_OBJ_GET_SIZE(num) == 1) { - *w = HCL_OBJ_GET_WORD_VAL(num, 0); - return HCL_IS_NBIGINT(hcl,num)? -1: 1; + *w = HAK_OBJ_GET_WORD_VAL(num, 0); + return HAK_IS_NBIGINT(hak,num)? -1: 1; } -#elif (HCL_LIW_BITS == HCL_OOHW_BITS) +#elif (HAK_LIW_BITS == HAK_OOHW_BITS) /* this function must be called with a real large integer. * a real large integer is at least 2 half-word long. * you must not call this function with an unnormalized * large integer. */ - HCL_ASSERT (hcl, HCL_OBJ_GET_SIZE(num) >= 2); - if (HCL_OBJ_GET_SIZE(num) == 2) + HAK_ASSERT (hak, HAK_OBJ_GET_SIZE(num) >= 2); + if (HAK_OBJ_GET_SIZE(num) == 2) { - *w = MAKE_WORD(HCL_OBJ_GET_HALFWORD_VAL(num, 0), HCL_OBJ_GET_HALFWORD_VAL(num, 1)); - return HCL_IS_NBIGINT(hcl,num)? -1: 1; + *w = MAKE_WORD(HAK_OBJ_GET_HALFWORD_VAL(num, 0), HAK_OBJ_GET_HALFWORD_VAL(num, 1)); + return HAK_IS_NBIGINT(hak,num)? -1: 1; } - if (HCL_OBJ_GET_SIZE(num) == 1) + if (HAK_OBJ_GET_SIZE(num) == 1) { /* if someone create a big number with a small integer, * it can just be one half-word */ - *w = HCL_OBJ_GET_HALFWORD_VAL(num, 0); - return HCL_IS_NBIGINT(hcl,num)? -1: 1; + *w = HAK_OBJ_GET_HALFWORD_VAL(num, 0); + return HAK_IS_NBIGINT(hak,num)? -1: 1; } #else # error UNSUPPORTED LIW BIT SIZE @@ -259,19 +259,19 @@ static HCL_INLINE int bigint_to_oow_noseterr (hcl_t* hcl, hcl_oop_t num, hcl_oow return 0; /* not convertable */ } -static HCL_INLINE int integer_to_oow_noseterr (hcl_t* hcl, hcl_oop_t x, hcl_oow_t* w) +static HAK_INLINE int integer_to_oow_noseterr (hak_t* hak, hak_oop_t x, hak_oow_t* w) { /* return value - * 1 - a positive number including 0 that can fit into hcl_oow_t - * -1 - a negative number whose absolute value can fit into hcl_oow_t + * 1 - a positive number including 0 that can fit into hak_oow_t + * -1 - a negative number whose absolute value can fit into hak_oow_t * 0 - number too large or too small */ - if (HCL_OOP_IS_SMOOI(x)) + if (HAK_OOP_IS_SMOOI(x)) { - hcl_ooi_t v; + hak_ooi_t v; - v = HCL_OOP_TO_SMOOI(x); + v = HAK_OOP_TO_SMOOI(x); if (v < 0) { *w = -v; @@ -284,17 +284,17 @@ static HCL_INLINE int integer_to_oow_noseterr (hcl_t* hcl, hcl_oop_t x, hcl_oow_ } } - HCL_ASSERT (hcl, hcl_isbigint(hcl, x)); - return bigint_to_oow_noseterr(hcl, x, w); + HAK_ASSERT (hak, hak_isbigint(hak, x)); + return bigint_to_oow_noseterr(hak, x, w); } -int hcl_inttooow_noseterr (hcl_t* hcl, hcl_oop_t x, hcl_oow_t* w) +int hak_inttooow_noseterr (hak_t* hak, hak_oop_t x, hak_oow_t* w) { - if (HCL_OOP_IS_SMOOI(x)) + if (HAK_OOP_IS_SMOOI(x)) { - hcl_ooi_t v; + hak_ooi_t v; - v = HCL_OOP_TO_SMOOI(x); + v = HAK_OOP_TO_SMOOI(x); if (v < 0) { *w = -v; @@ -308,20 +308,20 @@ int hcl_inttooow_noseterr (hcl_t* hcl, hcl_oop_t x, hcl_oow_t* w) } /* 0 -> too big, too small, or not an integer */ - return hcl_isbigint(hcl, x)? bigint_to_oow_noseterr(hcl, x, w): 0; + return hak_isbigint(hak, x)? bigint_to_oow_noseterr(hak, x, w): 0; } -int hcl_inttooow (hcl_t* hcl, hcl_oop_t x, hcl_oow_t* w) +int hak_inttooow (hak_t* hak, hak_oop_t x, hak_oow_t* w) { - if (HCL_OOP_IS_SMOOI(x)) + if (HAK_OOP_IS_SMOOI(x)) { - hcl_ooi_t v; + hak_ooi_t v; - v = HCL_OOP_TO_SMOOI(x); + v = HAK_OOP_TO_SMOOI(x); if (v < 0) { *w = -v; - hcl_seterrnum (hcl, HCL_ERANGE); + hak_seterrnum (hak, HAK_ERANGE); return -1; /* negative number negated - kind of an error */ } else @@ -331,40 +331,40 @@ int hcl_inttooow (hcl_t* hcl, hcl_oop_t x, hcl_oow_t* w) } } - if (hcl_isbigint(hcl, x)) + if (hak_isbigint(hak, x)) { int n; - if ((n = bigint_to_oow_noseterr(hcl, x, w)) <= 0) hcl_seterrnum (hcl, HCL_ERANGE); + if ((n = bigint_to_oow_noseterr(hak, x, w)) <= 0) hak_seterrnum (hak, HAK_ERANGE); return n; } - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O", x); + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O", x); return 0; /* not convertable - too big, too small, or not integer */ } -int hcl_inttoooi_noseterr (hcl_t* hcl, hcl_oop_t x, hcl_ooi_t* i) +int hak_inttoooi_noseterr (hak_t* hak, hak_oop_t x, hak_ooi_t* i) { - if (HCL_OOP_IS_SMOOI(x)) + if (HAK_OOP_IS_SMOOI(x)) { - *i = HCL_OOP_TO_SMOOI(x); + *i = HAK_OOP_TO_SMOOI(x); return (*i < 0)? -1: 1; } - if (hcl_isbigint(hcl, x)) + if (hak_isbigint(hak, x)) { - hcl_oow_t w; + hak_oow_t w; int n; - n = bigint_to_oow_noseterr(hcl, x, &w); + n = bigint_to_oow_noseterr(hak, x, &w); if (n < 0) { - HCL_STATIC_ASSERT (HCL_TYPE_MAX(hcl_ooi_t) + HCL_TYPE_MIN(hcl_ooi_t) == -1); /* assume 2's complement */ - if (w > (hcl_oow_t)HCL_TYPE_MAX(hcl_ooi_t) + 1) return 0; /* too small */ - *i = (w <= (hcl_oow_t)HCL_TYPE_MAX(hcl_ooi_t))? -(hcl_ooi_t)w: HCL_TYPE_MIN(hcl_ooi_t); /* negate back */ + HAK_STATIC_ASSERT (HAK_TYPE_MAX(hak_ooi_t) + HAK_TYPE_MIN(hak_ooi_t) == -1); /* assume 2's complement */ + if (w > (hak_oow_t)HAK_TYPE_MAX(hak_ooi_t) + 1) return 0; /* too small */ + *i = (w <= (hak_oow_t)HAK_TYPE_MAX(hak_ooi_t))? -(hak_ooi_t)w: HAK_TYPE_MIN(hak_ooi_t); /* negate back */ } else if (n > 0) { - if (w > HCL_TYPE_MAX(hcl_ooi_t)) return 0; /* too big */ + if (w > HAK_TYPE_MAX(hak_ooi_t)) return 0; /* too big */ *i = w; } @@ -374,87 +374,87 @@ int hcl_inttoooi_noseterr (hcl_t* hcl, hcl_oop_t x, hcl_ooi_t* i) return 0; /* not integer */ } -int hcl_inttoooi (hcl_t* hcl, hcl_oop_t x, hcl_ooi_t* i) +int hak_inttoooi (hak_t* hak, hak_oop_t x, hak_ooi_t* i) { - if (HCL_OOP_IS_SMOOI(x)) + if (HAK_OOP_IS_SMOOI(x)) { - *i = HCL_OOP_TO_SMOOI(x); + *i = HAK_OOP_TO_SMOOI(x); return (*i < 0)? -1: 1; } - if (hcl_isbigint(hcl, x)) + if (hak_isbigint(hak, x)) { - hcl_oow_t w; + hak_oow_t w; int n; - n = bigint_to_oow_noseterr(hcl, x, &w); + n = bigint_to_oow_noseterr(hak, x, &w); if (n < 0) { - HCL_STATIC_ASSERT (HCL_TYPE_MAX(hcl_ooi_t) + HCL_TYPE_MIN(hcl_ooi_t) == -1); /* assume 2's complement */ - if (w > (hcl_oow_t)HCL_TYPE_MAX(hcl_ooi_t) + 1) + HAK_STATIC_ASSERT (HAK_TYPE_MAX(hak_ooi_t) + HAK_TYPE_MIN(hak_ooi_t) == -1); /* assume 2's complement */ + if (w > (hak_oow_t)HAK_TYPE_MAX(hak_ooi_t) + 1) { - hcl_seterrnum (hcl, HCL_ERANGE); + hak_seterrnum (hak, HAK_ERANGE); return 0; /* too small */ } - *i = (w <= (hcl_oow_t)HCL_TYPE_MAX(hcl_ooi_t))? -(hcl_ooi_t)w: HCL_TYPE_MIN(hcl_ooi_t); /* negate back */ + *i = (w <= (hak_oow_t)HAK_TYPE_MAX(hak_ooi_t))? -(hak_ooi_t)w: HAK_TYPE_MIN(hak_ooi_t); /* negate back */ } else if (n > 0) { - if (w > HCL_TYPE_MAX(hcl_ooi_t)) + if (w > HAK_TYPE_MAX(hak_ooi_t)) { - hcl_seterrnum (hcl, HCL_ERANGE); + hak_seterrnum (hak, HAK_ERANGE); return 0; /* too big */ } *i = w; } else { - hcl_seterrnum (hcl, HCL_ERANGE); + hak_seterrnum (hak, HAK_ERANGE); } return n; } - hcl_seterrbfmt (hcl, HCL_EINVAL, "not an integer - %O", x); + hak_seterrbfmt (hak, HAK_EINVAL, "not an integer - %O", x); return 0; /* not integer */ } -#if (HCL_SIZEOF_UINTMAX_T == HCL_SIZEOF_OOW_T) +#if (HAK_SIZEOF_UINTMAX_T == HAK_SIZEOF_OOW_T) - /* do nothing. required macros are defined in hcl.h */ + /* do nothing. required macros are defined in hak.h */ -#elif (HCL_SIZEOF_UINTMAX_T == HCL_SIZEOF_OOW_T * 2) || (HCL_SIZEOF_UINTMAX_T == HCL_SIZEOF_OOW_T * 4) -static HCL_INLINE int bigint_to_uintmax_noseterr (hcl_t* hcl, hcl_oop_t num, hcl_uintmax_t* w) +#elif (HAK_SIZEOF_UINTMAX_T == HAK_SIZEOF_OOW_T * 2) || (HAK_SIZEOF_UINTMAX_T == HAK_SIZEOF_OOW_T * 4) +static HAK_INLINE int bigint_to_uintmax_noseterr (hak_t* hak, hak_oop_t num, hak_uintmax_t* w) { - HCL_ASSERT (hcl, HCL_OOP_IS_POINTER(num)); - HCL_ASSERT (hcl, HCL_IS_PBIGINT(hcl, num) || HCL_IS_NBIGINT(hcl, num)); + HAK_ASSERT (hak, HAK_OOP_IS_POINTER(num)); + HAK_ASSERT (hak, HAK_IS_PBIGINT(hak, num) || HAK_IS_NBIGINT(hak, num)); -#if (HCL_LIW_BITS == HCL_OOW_BITS) - HCL_ASSERT (hcl, HCL_OBJ_GET_SIZE(num) >= 1); +#if (HAK_LIW_BITS == HAK_OOW_BITS) + HAK_ASSERT (hak, HAK_OBJ_GET_SIZE(num) >= 1); - switch (HCL_OBJ_GET_SIZE(num)) + switch (HAK_OBJ_GET_SIZE(num)) { case 1: - *w = (hcl_uintmax_t)HCL_OBJ_GET_WORD_VAL(num, 0); + *w = (hak_uintmax_t)HAK_OBJ_GET_WORD_VAL(num, 0); goto done; case 2: - *w = ((hcl_uintmax_t)HCL_OBJ_GET_WORD_VAL(num, 0) << HCL_LIW_BITS) | - ((hcl_uintmax_t)HCL_OBJ_GET_WORD_VAL(num, 1)); + *w = ((hak_uintmax_t)HAK_OBJ_GET_WORD_VAL(num, 0) << HAK_LIW_BITS) | + ((hak_uintmax_t)HAK_OBJ_GET_WORD_VAL(num, 1)); goto done; - #if (HCL_SIZEOF_UINTMAX_T >= HCL_SIZEOF_OOW_T * 4) + #if (HAK_SIZEOF_UINTMAX_T >= HAK_SIZEOF_OOW_T * 4) case 3: - *w = ((hcl_uintmax_t)HCL_OBJ_GET_WORD_VAL(num, 0) << (HCL_LIW_BITS * 2)) | - ((hcl_uintmax_t)HCL_OBJ_GET_WORD_VAL(num, 1) << (HCL_LIW_BITS * 1)) | - ((hcl_uintmax_t)HCL_OBJ_GET_WORD_VAL(num, 2)) + *w = ((hak_uintmax_t)HAK_OBJ_GET_WORD_VAL(num, 0) << (HAK_LIW_BITS * 2)) | + ((hak_uintmax_t)HAK_OBJ_GET_WORD_VAL(num, 1) << (HAK_LIW_BITS * 1)) | + ((hak_uintmax_t)HAK_OBJ_GET_WORD_VAL(num, 2)) goto done; case 4: - *w = ((hcl_uintmax_t)HCL_OBJ_GET_WORD_VAL(num, 0) << (HCL_LIW_BITS * 3)) | - ((hcl_uintmax_t)HCL_OBJ_GET_WORD_VAL(num, 1) << (HCL_LIW_BITS * 2)) | - ((hcl_uintmax_t)HCL_OBJ_GET_WORD_VAL(num, 2) << (HCL_LIW_BITS * 1)) | - ((hcl_uintmax_t)HCL_OBJ_GET_WORD_VAL(num, 3)) + *w = ((hak_uintmax_t)HAK_OBJ_GET_WORD_VAL(num, 0) << (HAK_LIW_BITS * 3)) | + ((hak_uintmax_t)HAK_OBJ_GET_WORD_VAL(num, 1) << (HAK_LIW_BITS * 2)) | + ((hak_uintmax_t)HAK_OBJ_GET_WORD_VAL(num, 2) << (HAK_LIW_BITS * 1)) | + ((hak_uintmax_t)HAK_OBJ_GET_WORD_VAL(num, 3)) goto done; #endif @@ -462,41 +462,41 @@ static HCL_INLINE int bigint_to_uintmax_noseterr (hcl_t* hcl, hcl_oop_t num, hcl return 0; /* not convertable */ } -#elif (HCL_LIW_BITS == HCL_OOHW_BITS) - HCL_ASSERT (hcl, HCL_OBJ_GET_SIZE(num) >= 2); - switch (HCL_OBJ_GET_SIZE(num)) +#elif (HAK_LIW_BITS == HAK_OOHW_BITS) + HAK_ASSERT (hak, HAK_OBJ_GET_SIZE(num) >= 2); + switch (HAK_OBJ_GET_SIZE(num)) { case 2: - *w = ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 0) << HCL_LIW_BITS) | - ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 1)); + *w = ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 0) << HAK_LIW_BITS) | + ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 1)); goto done; case 4: - *w = ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 0) << (HCL_LIW_BITS * 3)) | - ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 1) << (HCL_LIW_BITS * 2)) | - ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 2) << (HCL_LIW_BITS * 1)) | - ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 3)); + *w = ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 0) << (HAK_LIW_BITS * 3)) | + ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 1) << (HAK_LIW_BITS * 2)) | + ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 2) << (HAK_LIW_BITS * 1)) | + ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 3)); goto done; - #if (HCL_SIZEOF_UINTMAX_T >= HCL_SIZEOF_OOW_T * 4) + #if (HAK_SIZEOF_UINTMAX_T >= HAK_SIZEOF_OOW_T * 4) case 6: - *w = ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 0) << (HCL_LIW_BITS * 5)) | - ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 1) << (HCL_LIW_BITS * 4)) | - ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 2) << (HCL_LIW_BITS * 3)) | - ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 3) << (HCL_LIW_BITS * 2)) | - ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 4) << (HCL_LIW_BITS * 1)) | - ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 5)); + *w = ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 0) << (HAK_LIW_BITS * 5)) | + ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 1) << (HAK_LIW_BITS * 4)) | + ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 2) << (HAK_LIW_BITS * 3)) | + ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 3) << (HAK_LIW_BITS * 2)) | + ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 4) << (HAK_LIW_BITS * 1)) | + ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 5)); goto done; case 8: - *w = ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 0) << (HCL_LIW_BITS * 7)) | - ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 1) << (HCL_LIW_BITS * 6)) | - ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 2) << (HCL_LIW_BITS * 5)) | - ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 3) << (HCL_LIW_BITS * 4)) | - ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 4) << (HCL_LIW_BITS * 3)) | - ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 5) << (HCL_LIW_BITS * 2)) | - ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 6) << (HCL_LIW_BITS * 1)) | - ((hcl_uintmax_t)HCL_OBJ_GET_HALFWORD_VAL(num, 7)); + *w = ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 0) << (HAK_LIW_BITS * 7)) | + ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 1) << (HAK_LIW_BITS * 6)) | + ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 2) << (HAK_LIW_BITS * 5)) | + ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 3) << (HAK_LIW_BITS * 4)) | + ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 4) << (HAK_LIW_BITS * 3)) | + ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 5) << (HAK_LIW_BITS * 2)) | + ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 6) << (HAK_LIW_BITS * 1)) | + ((hak_uintmax_t)HAK_OBJ_GET_HALFWORD_VAL(num, 7)); goto done; #endif @@ -508,16 +508,16 @@ static HCL_INLINE int bigint_to_uintmax_noseterr (hcl_t* hcl, hcl_oop_t num, hcl #endif done: - return (HCL_IS_NBIGINT(hcl, num))? -1: 1; + return (HAK_IS_NBIGINT(hak, num))? -1: 1; } -int hcl_inttouintmax_noseterr (hcl_t* hcl, hcl_oop_t x, hcl_uintmax_t* w) +int hak_inttouintmax_noseterr (hak_t* hak, hak_oop_t x, hak_uintmax_t* w) { - if (HCL_OOP_IS_SMOOI(x)) + if (HAK_OOP_IS_SMOOI(x)) { - hcl_ooi_t v; + hak_ooi_t v; - v = HCL_OOP_TO_SMOOI(x); + v = HAK_OOP_TO_SMOOI(x); if (v < 0) { *w = -v; @@ -530,18 +530,18 @@ int hcl_inttouintmax_noseterr (hcl_t* hcl, hcl_oop_t x, hcl_uintmax_t* w) } } - if (hcl_isbigint(hcl, x)) return bigint_to_uintmax_noseterr(hcl, x, w); + if (hak_isbigint(hak, x)) return bigint_to_uintmax_noseterr(hak, x, w); return 0; /* not convertable - too big, too small, or not an integer */ } -int hcl_inttouintmax (hcl_t* hcl, hcl_oop_t x, hcl_uintmax_t* w) +int hak_inttouintmax (hak_t* hak, hak_oop_t x, hak_uintmax_t* w) { - if (HCL_OOP_IS_SMOOI(x)) + if (HAK_OOP_IS_SMOOI(x)) { - hcl_ooi_t v; + hak_ooi_t v; - v = HCL_OOP_TO_SMOOI(x); + v = HAK_OOP_TO_SMOOI(x); if (v < 0) { *w = -v; @@ -554,42 +554,42 @@ int hcl_inttouintmax (hcl_t* hcl, hcl_oop_t x, hcl_uintmax_t* w) } } - if (hcl_isbigint(hcl, x)) + if (hak_isbigint(hak, x)) { int n; - n = bigint_to_uintmax_noseterr(hcl, x, w); - if (n <= 0) hcl_seterrnum(hcl, HCL_ERANGE); + n = bigint_to_uintmax_noseterr(hak, x, w); + if (n <= 0) hak_seterrnum(hak, HAK_ERANGE); return n; } - hcl_seterrbfmt (hcl, HCL_EINVAL, "not an integer - %O", x); + hak_seterrbfmt (hak, HAK_EINVAL, "not an integer - %O", x); return 0; /* not convertable - too big, too small, or not an integer */ } -int hcl_inttointmax_noseterr (hcl_t* hcl, hcl_oop_t x, hcl_intmax_t* i) +int hak_inttointmax_noseterr (hak_t* hak, hak_oop_t x, hak_intmax_t* i) { - if (HCL_OOP_IS_SMOOI(x)) + if (HAK_OOP_IS_SMOOI(x)) { - *i = HCL_OOP_TO_SMOOI(x); + *i = HAK_OOP_TO_SMOOI(x); return (*i < 0)? -1: 1; } - if (hcl_isbigint(hcl, x)) + if (hak_isbigint(hak, x)) { int n; - hcl_uintmax_t w; + hak_uintmax_t w; - n = bigint_to_uintmax_noseterr(hcl, x, &w); + n = bigint_to_uintmax_noseterr(hak, x, &w); if (n < 0) { /* negative number negated to a positve number */ - HCL_STATIC_ASSERT (HCL_TYPE_MAX(hcl_intmax_t) + HCL_TYPE_MIN(hcl_intmax_t) == -1); /* assume 2's complement */ - if (w > (hcl_uintmax_t)HCL_TYPE_MAX(hcl_intmax_t) + 1) return 0; /* not convertable - too small */ - *i = (w <= (hcl_uintmax_t)HCL_TYPE_MAX(hcl_intmax_t))? -(hcl_intmax_t)w: HCL_TYPE_MIN(hcl_intmax_t); /* negate back */ + HAK_STATIC_ASSERT (HAK_TYPE_MAX(hak_intmax_t) + HAK_TYPE_MIN(hak_intmax_t) == -1); /* assume 2's complement */ + if (w > (hak_uintmax_t)HAK_TYPE_MAX(hak_intmax_t) + 1) return 0; /* not convertable - too small */ + *i = (w <= (hak_uintmax_t)HAK_TYPE_MAX(hak_intmax_t))? -(hak_intmax_t)w: HAK_TYPE_MIN(hak_intmax_t); /* negate back */ } else if (n > 0) { - if (w > HCL_TYPE_MAX(hcl_intmax_t)) return 0; /* not convertable - too big */ + if (w > HAK_TYPE_MAX(hak_intmax_t)) return 0; /* not convertable - too big */ *i = w; } @@ -599,48 +599,48 @@ int hcl_inttointmax_noseterr (hcl_t* hcl, hcl_oop_t x, hcl_intmax_t* i) return 0; /* not convertable - not an integer */ } -int hcl_inttointmax (hcl_t* hcl, hcl_oop_t x, hcl_intmax_t* i) +int hak_inttointmax (hak_t* hak, hak_oop_t x, hak_intmax_t* i) { - if (HCL_OOP_IS_SMOOI(x)) + if (HAK_OOP_IS_SMOOI(x)) { - *i = HCL_OOP_TO_SMOOI(x); + *i = HAK_OOP_TO_SMOOI(x); return (*i < 0)? -1: 1; } - if (hcl_isbigint(hcl, x)) + if (hak_isbigint(hak, x)) { int n; - hcl_uintmax_t w; + hak_uintmax_t w; - n = bigint_to_uintmax_noseterr(hcl, x, &w); + n = bigint_to_uintmax_noseterr(hak, x, &w); if (n < 0) { /* negative number negated to a positve number */ - HCL_STATIC_ASSERT (HCL_TYPE_MAX(hcl_intmax_t) + HCL_TYPE_MIN(hcl_intmax_t) == -1); /* assume 2's complement */ - if (w > (hcl_uintmax_t)HCL_TYPE_MAX(hcl_intmax_t) + 1) + HAK_STATIC_ASSERT (HAK_TYPE_MAX(hak_intmax_t) + HAK_TYPE_MIN(hak_intmax_t) == -1); /* assume 2's complement */ + if (w > (hak_uintmax_t)HAK_TYPE_MAX(hak_intmax_t) + 1) { - hcl_seterrnum (hcl, HCL_ERANGE); + hak_seterrnum (hak, HAK_ERANGE); return 0; /* not convertable. too small */ } - *i = (w <= (hcl_uintmax_t)HCL_TYPE_MAX(hcl_intmax_t))? -(hcl_intmax_t)w: HCL_TYPE_MIN(hcl_intmax_t); /* negate back */ + *i = (w <= (hak_uintmax_t)HAK_TYPE_MAX(hak_intmax_t))? -(hak_intmax_t)w: HAK_TYPE_MIN(hak_intmax_t); /* negate back */ } else if (n > 0) { - if (w > HCL_TYPE_MAX(hcl_intmax_t)) + if (w > HAK_TYPE_MAX(hak_intmax_t)) { - hcl_seterrnum (hcl, HCL_ERANGE); + hak_seterrnum (hak, HAK_ERANGE); return 0; /* not convertable. too big */ } *i = w; } else { - hcl_seterrnum (hcl, HCL_ERANGE); + hak_seterrnum (hak, HAK_ERANGE); } return n; } - hcl_seterrbfmt (hcl, HCL_EINVAL, "not an integer - %O", x); + hak_seterrbfmt (hak, HAK_EINVAL, "not an integer - %O", x); return 0; /* not convertable - too big, too small, or not an integer */ } @@ -648,300 +648,300 @@ int hcl_inttointmax (hcl_t* hcl, hcl_oop_t x, hcl_intmax_t* i) # error UNSUPPORTED UINTMAX SIZE #endif -static HCL_INLINE hcl_oop_t make_bigint_with_oow (hcl_t* hcl, hcl_oow_t w) +static HAK_INLINE hak_oop_t make_bigint_with_oow (hak_t* hak, hak_oow_t w) { -#if (HCL_LIW_BITS == HCL_OOW_BITS) - HCL_ASSERT (hcl, HCL_SIZEOF(hcl_oow_t) == HCL_SIZEOF(hcl_liw_t)); - return make_pbigint(hcl, &w, 1); -#elif (HCL_LIW_BITS == HCL_OOHW_BITS) - hcl_liw_t hw[2]; - hw[0] = w /*& HCL_LBMASK(hcl_oow_t,HCL_LIW_BITS)*/; - hw[1] = w >> HCL_LIW_BITS; - return make_pbigint(hcl, hw, (hw[1] > 0? 2: 1)); +#if (HAK_LIW_BITS == HAK_OOW_BITS) + HAK_ASSERT (hak, HAK_SIZEOF(hak_oow_t) == HAK_SIZEOF(hak_liw_t)); + return make_pbigint(hak, &w, 1); +#elif (HAK_LIW_BITS == HAK_OOHW_BITS) + hak_liw_t hw[2]; + hw[0] = w /*& HAK_LBMASK(hak_oow_t,HAK_LIW_BITS)*/; + hw[1] = w >> HAK_LIW_BITS; + return make_pbigint(hak, hw, (hw[1] > 0? 2: 1)); #else # error UNSUPPORTED LIW BIT SIZE #endif } -static HCL_INLINE hcl_oop_t make_bigint_with_ooi (hcl_t* hcl, hcl_ooi_t i) +static HAK_INLINE hak_oop_t make_bigint_with_ooi (hak_t* hak, hak_ooi_t i) { -#if (HCL_LIW_BITS == HCL_OOW_BITS) - hcl_oow_t w; +#if (HAK_LIW_BITS == HAK_OOW_BITS) + hak_oow_t w; - HCL_STATIC_ASSERT (hcl, HCL_SIZEOF(hcl_oow_t) == HCL_SIZEOF(hcl_liw_t)); + HAK_STATIC_ASSERT (hak, HAK_SIZEOF(hak_oow_t) == HAK_SIZEOF(hak_liw_t)); if (i >= 0) { w = i; - return make_pbigint(hcl, &w, 1); + return make_pbigint(hak, &w, 1); } else { - w = (i == HCL_TYPE_MIN(hcl_ooi_t))? ((hcl_oow_t)HCL_TYPE_MAX(hcl_ooi_t) + 1): -i; - return make_nbigint(hcl, &w, 1); + w = (i == HAK_TYPE_MIN(hak_ooi_t))? ((hak_oow_t)HAK_TYPE_MAX(hak_ooi_t) + 1): -i; + return make_nbigint(hak, &w, 1); } -#elif (HCL_LIW_BITS == HCL_OOHW_BITS) - hcl_liw_t hw[2]; - hcl_oow_t w; +#elif (HAK_LIW_BITS == HAK_OOHW_BITS) + hak_liw_t hw[2]; + hak_oow_t w; - HCL_STATIC_ASSERT (HCL_SIZEOF(hcl_oohw_t) == HCL_SIZEOF(hcl_liw_t)); + HAK_STATIC_ASSERT (HAK_SIZEOF(hak_oohw_t) == HAK_SIZEOF(hak_liw_t)); if (i >= 0) { w = i; - hw[0] = w /*& HCL_LBMASK(hcl_oow_t,HCL_LIW_BITS)*/; - hw[1] = w >> HCL_LIW_BITS; - return make_pbigint(hcl, hw, (hw[1] > 0? 2: 1)); + hw[0] = w /*& HAK_LBMASK(hak_oow_t,HAK_LIW_BITS)*/; + hw[1] = w >> HAK_LIW_BITS; + return make_pbigint(hak, hw, (hw[1] > 0? 2: 1)); } else { w = -i; - w = (i == HCL_TYPE_MIN(hcl_ooi_t))? ((hcl_oow_t)HCL_TYPE_MAX(hcl_ooi_t) + 1): -i; - hw[0] = w /*& HCL_LBMASK(hcl_oow_t,HCL_LIW_BITS)*/; - hw[1] = w >> HCL_LIW_BITS; - return make_nbigint(hcl, hw, (hw[1] > 0? 2: 1)); + w = (i == HAK_TYPE_MIN(hak_ooi_t))? ((hak_oow_t)HAK_TYPE_MAX(hak_ooi_t) + 1): -i; + hw[0] = w /*& HAK_LBMASK(hak_oow_t,HAK_LIW_BITS)*/; + hw[1] = w >> HAK_LIW_BITS; + return make_nbigint(hak, hw, (hw[1] > 0? 2: 1)); } #else # error UNSUPPORTED LIW BIT SIZE #endif } -static HCL_INLINE hcl_oop_t make_bloated_bigint_with_ooi (hcl_t* hcl, hcl_ooi_t i, hcl_oow_t extra) +static HAK_INLINE hak_oop_t make_bloated_bigint_with_ooi (hak_t* hak, hak_ooi_t i, hak_oow_t extra) { -#if (HCL_LIW_BITS == HCL_OOW_BITS) - hcl_oow_t w; - hcl_oop_t z; +#if (HAK_LIW_BITS == HAK_OOW_BITS) + hak_oow_t w; + hak_oop_t z; - HCL_ASSERT (hcl, extra <= HCL_OBJ_SIZE_MAX - 1); - HCL_STATIC_ASSERT (hcl, HCL_SIZEOF(hcl_oow_t) == HCL_SIZEOF(hcl_liw_t)); + HAK_ASSERT (hak, extra <= HAK_OBJ_SIZE_MAX - 1); + HAK_STATIC_ASSERT (hak, HAK_SIZEOF(hak_oow_t) == HAK_SIZEOF(hak_liw_t)); if (i >= 0) { w = i; - z = make_pbigint(hcl, HCL_NULL, 1 + extra); + z = make_pbigint(hak, HAK_NULL, 1 + extra); } else { - w = (i == HCL_TYPE_MIN(hcl_ooi_t))? ((hcl_oow_t)HCL_TYPE_MAX(hcl_ooi_t) + 1): -i; - z = make_nbigint(hcl, HCL_NULL, 1 + extra); + w = (i == HAK_TYPE_MIN(hak_ooi_t))? ((hak_oow_t)HAK_TYPE_MAX(hak_ooi_t) + 1): -i; + z = make_nbigint(hak, HAK_NULL, 1 + extra); } - if (HCL_UNLIKELY(!z)) return HCL_NULL; - HCL_OBJ_SET_LIWORD_VAL (z, 0, w); + if (HAK_UNLIKELY(!z)) return HAK_NULL; + HAK_OBJ_SET_LIWORD_VAL (z, 0, w); return z; -#elif (HCL_LIW_BITS == HCL_OOHW_BITS) - hcl_liw_t hw[2]; - hcl_oow_t w; - hcl_oop_t z; +#elif (HAK_LIW_BITS == HAK_OOHW_BITS) + hak_liw_t hw[2]; + hak_oow_t w; + hak_oop_t z; - HCL_ASSERT (hcl, extra <= HCL_OBJ_SIZE_MAX - 2); + HAK_ASSERT (hak, extra <= HAK_OBJ_SIZE_MAX - 2); if (i >= 0) { w = i; - hw[0] = w /*& HCL_LBMASK(hcl_oow_t,HCL_LIW_BITS)*/; - hw[1] = w >> HCL_LIW_BITS; - z = make_pbigint(hcl, HCL_NULL, (hw[1] > 0? 2: 1) + extra); + hw[0] = w /*& HAK_LBMASK(hak_oow_t,HAK_LIW_BITS)*/; + hw[1] = w >> HAK_LIW_BITS; + z = make_pbigint(hak, HAK_NULL, (hw[1] > 0? 2: 1) + extra); } else { - w = (i == HCL_TYPE_MIN(hcl_ooi_t))? ((hcl_oow_t)HCL_TYPE_MAX(hcl_ooi_t) + 1): -i; - hw[0] = w /*& HCL_LBMASK(hcl_oow_t,HCL_LIW_BITS)*/; - hw[1] = w >> HCL_LIW_BITS; - z = make_nbigint(hcl, HCL_NULL, (hw[1] > 0? 2: 1) + extra); + w = (i == HAK_TYPE_MIN(hak_ooi_t))? ((hak_oow_t)HAK_TYPE_MAX(hak_ooi_t) + 1): -i; + hw[0] = w /*& HAK_LBMASK(hak_oow_t,HAK_LIW_BITS)*/; + hw[1] = w >> HAK_LIW_BITS; + z = make_nbigint(hak, HAK_NULL, (hw[1] > 0? 2: 1) + extra); } - if (HCL_UNLIKELY(!z)) return HCL_NULL; - HCL_OBJ_SET_LIWORD_VAL (z, 0, hw[0]); - if (hw[1] > 0) HCL_OBJ_SET_LIWORD_VAL (z, 1, hw[1]); + if (HAK_UNLIKELY(!z)) return HAK_NULL; + HAK_OBJ_SET_LIWORD_VAL (z, 0, hw[0]); + if (hw[1] > 0) HAK_OBJ_SET_LIWORD_VAL (z, 1, hw[1]); return z; #else # error UNSUPPORTED LIW BIT SIZE #endif } -static HCL_INLINE hcl_oop_t make_bigint_with_intmax (hcl_t* hcl, hcl_intmax_t v) +static HAK_INLINE hak_oop_t make_bigint_with_intmax (hak_t* hak, hak_intmax_t v) { - hcl_oow_t len; - hcl_liw_t buf[HCL_SIZEOF_INTMAX_T / HCL_SIZEOF_LIW_T]; - hcl_uintmax_t ui; - hcl_oop_class_t _class; + hak_oow_t len; + hak_liw_t buf[HAK_SIZEOF_INTMAX_T / HAK_SIZEOF_LIW_T]; + hak_uintmax_t ui; + hak_oop_class_t _class; /* this is not a generic function. it can't handle v - * if it's HCL_TYPE_MIN(hcl_intmax_t) */ - HCL_ASSERT (hcl, v > HCL_TYPE_MIN(hcl_intmax_t)); + * if it's HAK_TYPE_MIN(hak_intmax_t) */ + HAK_ASSERT (hak, v > HAK_TYPE_MIN(hak_intmax_t)); if (v >= 0) { ui = v; - _class = hcl->c_large_positive_integer; + _class = hak->c_large_positive_integer; } else { - ui = (v == HCL_TYPE_MIN(hcl_intmax_t))? ((hcl_uintmax_t)HCL_TYPE_MAX(hcl_intmax_t) + 1): -v; - _class = hcl->c_large_negative_integer; + ui = (v == HAK_TYPE_MIN(hak_intmax_t))? ((hak_uintmax_t)HAK_TYPE_MAX(hak_intmax_t) + 1): -v; + _class = hak->c_large_negative_integer; } len = 0; do { - buf[len++] = (hcl_liw_t)ui; - ui = ui >> HCL_LIW_BITS; + buf[len++] = (hak_liw_t)ui; + ui = ui >> HAK_LIW_BITS; } while (ui > 0); - return hcl_instantiate(hcl, _class, buf, len); + return hak_instantiate(hak, _class, buf, len); } -static HCL_INLINE hcl_oop_t make_bigint_with_uintmax (hcl_t* hcl, hcl_uintmax_t ui) +static HAK_INLINE hak_oop_t make_bigint_with_uintmax (hak_t* hak, hak_uintmax_t ui) { - hcl_oow_t len; - hcl_liw_t buf[HCL_SIZEOF_INTMAX_T / HCL_SIZEOF_LIW_T]; + hak_oow_t len; + hak_liw_t buf[HAK_SIZEOF_INTMAX_T / HAK_SIZEOF_LIW_T]; len = 0; do { - buf[len++] = (hcl_liw_t)ui; - ui = ui >> HCL_LIW_BITS; + buf[len++] = (hak_liw_t)ui; + ui = ui >> HAK_LIW_BITS; } while (ui > 0); - return make_pbigint(hcl, buf, len); + return make_pbigint(hak, buf, len); } -hcl_oop_t hcl_oowtoint (hcl_t* hcl, hcl_oow_t w) +hak_oop_t hak_oowtoint (hak_t* hak, hak_oow_t w) { - HCL_ASSERT (hcl, HCL_TYPE_IS_UNSIGNED(hcl_oow_t)); - /*if (HCL_IN_SMOOI_RANGE(w))*/ - if (w <= HCL_SMOOI_MAX) + HAK_ASSERT (hak, HAK_TYPE_IS_UNSIGNED(hak_oow_t)); + /*if (HAK_IN_SMOOI_RANGE(w))*/ + if (w <= HAK_SMOOI_MAX) { - return HCL_SMOOI_TO_OOP(w); + return HAK_SMOOI_TO_OOP(w); } else { - return make_bigint_with_oow(hcl, w); + return make_bigint_with_oow(hak, w); } } -hcl_oop_t hcl_ooitoint (hcl_t* hcl, hcl_ooi_t i) +hak_oop_t hak_ooitoint (hak_t* hak, hak_ooi_t i) { - if (HCL_IN_SMOOI_RANGE(i)) + if (HAK_IN_SMOOI_RANGE(i)) { - return HCL_SMOOI_TO_OOP(i); + return HAK_SMOOI_TO_OOP(i); } else { - return make_bigint_with_ooi(hcl, i); + return make_bigint_with_ooi(hak, i); } } -#if (HCL_SIZEOF_UINTMAX_T == HCL_SIZEOF_OOW_T) - /* do nothing. required macros are defined in hcl.h */ +#if (HAK_SIZEOF_UINTMAX_T == HAK_SIZEOF_OOW_T) + /* do nothing. required macros are defined in hak.h */ #else -hcl_oop_t hcl_intmaxtoint (hcl_t* hcl, hcl_intmax_t i) +hak_oop_t hak_intmaxtoint (hak_t* hak, hak_intmax_t i) { - if (HCL_IN_SMOOI_RANGE(i)) + if (HAK_IN_SMOOI_RANGE(i)) { - return HCL_SMOOI_TO_OOP(i); + return HAK_SMOOI_TO_OOP(i); } else { - return make_bigint_with_intmax(hcl, i); + return make_bigint_with_intmax(hak, i); } } -hcl_oop_t hcl_uintmaxtoint (hcl_t* hcl, hcl_uintmax_t i) +hak_oop_t hak_uintmaxtoint (hak_t* hak, hak_uintmax_t i) { - if (HCL_IN_SMOOI_RANGE(i)) + if (HAK_IN_SMOOI_RANGE(i)) { - return HCL_SMOOI_TO_OOP(i); + return HAK_SMOOI_TO_OOP(i); } else { - return make_bigint_with_uintmax(hcl, i); + return make_bigint_with_uintmax(hak, i); } } #endif -static HCL_INLINE hcl_oop_t expand_bigint (hcl_t* hcl, hcl_oop_t oop, hcl_oow_t inc) +static HAK_INLINE hak_oop_t expand_bigint (hak_t* hak, hak_oop_t oop, hak_oow_t inc) { - hcl_oop_t z; - hcl_oow_t i; - hcl_oow_t count; + hak_oop_t z; + hak_oow_t i; + hak_oow_t count; - HCL_ASSERT (hcl, HCL_OOP_IS_POINTER(oop)); - count = HCL_OBJ_GET_SIZE(oop); + HAK_ASSERT (hak, HAK_OOP_IS_POINTER(oop)); + count = HAK_OBJ_GET_SIZE(oop); - if (inc > HCL_OBJ_SIZE_MAX - count) + if (inc > HAK_OBJ_SIZE_MAX - count) { - hcl_seterrbfmt (hcl, HCL_EOOMEM, "unable to expand bigint %O by %zu liwords", oop, inc); /* TODO: is it a soft failure or a hard failure? is this error code proper? */ - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EOOMEM, "unable to expand bigint %O by %zu liwords", oop, inc); /* TODO: is it a soft failure or a hard failure? is this error code proper? */ + return HAK_NULL; } - hcl_pushvolat(hcl, &oop); - z = hcl_instantiate(hcl, (hcl_oop_class_t)HCL_OBJ_GET_CLASS(oop), HCL_NULL, count + inc); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!z)) + hak_pushvolat(hak, &oop); + z = hak_instantiate(hak, (hak_oop_class_t)HAK_OBJ_GET_CLASS(oop), HAK_NULL, count + inc); + hak_popvolat(hak); + if (HAK_UNLIKELY(!z)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), "unable to clone bigint %O for expansion - %s", oop, orgmsg); - return HCL_NULL; + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), "unable to clone bigint %O for expansion - %s", oop, orgmsg); + return HAK_NULL; } for (i = 0; i < count; i++) { - ((hcl_oop_liword_t)z)->slot[i] = ((hcl_oop_liword_t)oop)->slot[i]; + ((hak_oop_liword_t)z)->slot[i] = ((hak_oop_liword_t)oop)->slot[i]; } return z; } -static HCL_INLINE hcl_oop_t _clone_bigint (hcl_t* hcl, hcl_oop_t oop, hcl_oow_t count, hcl_oop_class_t _class) +static HAK_INLINE hak_oop_t _clone_bigint (hak_t* hak, hak_oop_t oop, hak_oow_t count, hak_oop_class_t _class) { - hcl_oop_t z; - hcl_oow_t i; + hak_oop_t z; + hak_oow_t i; - HCL_ASSERT (hcl, HCL_OOP_IS_POINTER(oop)); - if (count <= 0) count = HCL_OBJ_GET_SIZE(oop); + HAK_ASSERT (hak, HAK_OOP_IS_POINTER(oop)); + if (count <= 0) count = HAK_OBJ_GET_SIZE(oop); - hcl_pushvolat(hcl, &oop); - z = hcl_instantiate(hcl, _class, HCL_NULL, count); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + hak_pushvolat(hak, &oop); + z = hak_instantiate(hak, _class, HAK_NULL, count); + hak_popvolat(hak); + if (HAK_UNLIKELY(!z)) return HAK_NULL; for (i = 0; i < count; i++) { - ((hcl_oop_liword_t)z)->slot[i] = ((hcl_oop_liword_t)oop)->slot[i]; + ((hak_oop_liword_t)z)->slot[i] = ((hak_oop_liword_t)oop)->slot[i]; } return z; } -static HCL_INLINE hcl_oop_t clone_bigint (hcl_t* hcl, hcl_oop_t oop, hcl_oow_t count) +static HAK_INLINE hak_oop_t clone_bigint (hak_t* hak, hak_oop_t oop, hak_oow_t count) { - return _clone_bigint(hcl, oop, count, (hcl_oop_class_t)HCL_OBJ_GET_CLASS(oop)); + return _clone_bigint(hak, oop, count, (hak_oop_class_t)HAK_OBJ_GET_CLASS(oop)); } -static HCL_INLINE hcl_oop_t clone_bigint_negated (hcl_t* hcl, hcl_oop_t oop, hcl_oow_t count) +static HAK_INLINE hak_oop_t clone_bigint_negated (hak_t* hak, hak_oop_t oop, hak_oow_t count) { - hcl_oop_class_t _class; + hak_oop_class_t _class; - HCL_ASSERT (hcl, HCL_IS_BIGINT(hcl,oop)); + HAK_ASSERT (hak, HAK_IS_BIGINT(hak,oop)); - if (HCL_IS_PBIGINT(hcl, oop)) + if (HAK_IS_PBIGINT(hak, oop)) { - _class = hcl->c_large_negative_integer; + _class = hak->c_large_negative_integer; } else { - HCL_ASSERT (hcl, HCL_IS_NBIGINT(hcl, oop)); - _class = hcl->c_large_positive_integer; + HAK_ASSERT (hak, HAK_IS_NBIGINT(hak, oop)); + _class = hak->c_large_positive_integer; } - return _clone_bigint(hcl, oop, count, _class); + return _clone_bigint(hak, oop, count, _class); } -static HCL_INLINE hcl_oop_t clone_bigint_to_positive (hcl_t* hcl, hcl_oop_t oop, hcl_oow_t count) +static HAK_INLINE hak_oop_t clone_bigint_to_positive (hak_t* hak, hak_oop_t oop, hak_oow_t count) { - return _clone_bigint(hcl, oop, count, hcl->c_large_positive_integer); + return _clone_bigint(hak, oop, count, hak->c_large_positive_integer); } -static HCL_INLINE hcl_oow_t count_effective (hcl_liw_t* x, hcl_oow_t xs) +static HAK_INLINE hak_oow_t count_effective (hak_liw_t* x, hak_oow_t xs) { #if 0 while (xs > 1 && x[xs - 1] == 0) xs--; @@ -952,88 +952,88 @@ static HCL_INLINE hcl_oow_t count_effective (hcl_liw_t* x, hcl_oow_t xs) #endif } -static HCL_INLINE hcl_oow_t count_effective_digits (hcl_oop_t oop) +static HAK_INLINE hak_oow_t count_effective_digits (hak_oop_t oop) { - hcl_oow_t i; + hak_oow_t i; - for (i = HCL_OBJ_GET_SIZE(oop); i > 1; ) + for (i = HAK_OBJ_GET_SIZE(oop); i > 1; ) { --i; - if (((hcl_oop_liword_t)oop)->slot[i]) return i + 1; + if (((hak_oop_liword_t)oop)->slot[i]) return i + 1; } return 1; } -static hcl_oop_t normalize_bigint (hcl_t* hcl, hcl_oop_t oop) +static hak_oop_t normalize_bigint (hak_t* hak, hak_oop_t oop) { - hcl_oow_t count; + hak_oow_t count; - HCL_ASSERT (hcl, HCL_OOP_IS_POINTER(oop)); + HAK_ASSERT (hak, HAK_OOP_IS_POINTER(oop)); count = count_effective_digits(oop); -#if (HCL_LIW_BITS == HCL_OOW_BITS) +#if (HAK_LIW_BITS == HAK_OOW_BITS) if (count == 1) /* 1 word */ { - hcl_oow_t w; + hak_oow_t w; - w = ((hcl_oop_liword_t)oop)->slot[0]; - if (HCL_IS_PBIGINT(hcl, oop)) + w = ((hak_oop_liword_t)oop)->slot[0]; + if (HAK_IS_PBIGINT(hak, oop)) { - if (w <= HCL_SMOOI_MAX) return HCL_SMOOI_TO_OOP(w); + if (w <= HAK_SMOOI_MAX) return HAK_SMOOI_TO_OOP(w); } else { - HCL_ASSERT (hcl, -HCL_SMOOI_MAX == HCL_SMOOI_MIN); - HCL_ASSERT (hcl, HCL_IS_NBIGINT(hcl, oop)); - if (w <= HCL_SMOOI_MAX) return HCL_SMOOI_TO_OOP(-(hcl_ooi_t)w); + HAK_ASSERT (hak, -HAK_SMOOI_MAX == HAK_SMOOI_MIN); + HAK_ASSERT (hak, HAK_IS_NBIGINT(hak, oop)); + if (w <= HAK_SMOOI_MAX) return HAK_SMOOI_TO_OOP(-(hak_ooi_t)w); } } -#elif (HCL_LIW_BITS == HCL_OOHW_BITS) +#elif (HAK_LIW_BITS == HAK_OOHW_BITS) if (count == 1) /* 1 half-word */ { - if (HCL_IS_PBIGINT(hcl, oop)) + if (HAK_IS_PBIGINT(hak, oop)) { - return HCL_SMOOI_TO_OOP(((hcl_oop_liword_t)oop)->slot[0]); + return HAK_SMOOI_TO_OOP(((hak_oop_liword_t)oop)->slot[0]); } else { - HCL_ASSERT (hcl, HCL_IS_NBIGINT(hcl, oop)); - return HCL_SMOOI_TO_OOP(-(hcl_ooi_t)((hcl_oop_liword_t)oop)->slot[0]); + HAK_ASSERT (hak, HAK_IS_NBIGINT(hak, oop)); + return HAK_SMOOI_TO_OOP(-(hak_ooi_t)((hak_oop_liword_t)oop)->slot[0]); } } else if (count == 2) /* 2 half-words */ { - hcl_oow_t w; + hak_oow_t w; - w = MAKE_WORD(((hcl_oop_liword_t)oop)->slot[0], ((hcl_oop_liword_t)oop)->slot[1]); - if (HCL_IS_PBIGINT(hcl, oop)) + w = MAKE_WORD(((hak_oop_liword_t)oop)->slot[0], ((hak_oop_liword_t)oop)->slot[1]); + if (HAK_IS_PBIGINT(hak, oop)) { - if (w <= HCL_SMOOI_MAX) return HCL_SMOOI_TO_OOP(w); + if (w <= HAK_SMOOI_MAX) return HAK_SMOOI_TO_OOP(w); } else { - HCL_ASSERT (hcl, -HCL_SMOOI_MAX == HCL_SMOOI_MIN); - HCL_ASSERT (hcl, HCL_IS_NBIGINT(hcl, oop)); - if (w <= HCL_SMOOI_MAX) return HCL_SMOOI_TO_OOP(-(hcl_ooi_t)w); + HAK_ASSERT (hak, -HAK_SMOOI_MAX == HAK_SMOOI_MIN); + HAK_ASSERT (hak, HAK_IS_NBIGINT(hak, oop)); + if (w <= HAK_SMOOI_MAX) return HAK_SMOOI_TO_OOP(-(hak_ooi_t)w); } } #else # error UNSUPPORTED LIW BIT SIZE #endif - if (HCL_OBJ_GET_SIZE(oop) == count) + if (HAK_OBJ_GET_SIZE(oop) == count) { /* no compaction is needed. return it as it is */ return oop; } - return clone_bigint(hcl, oop, count); + return clone_bigint(hak, oop, count); } -static HCL_INLINE int is_less_unsigned_array (const hcl_liw_t* x, hcl_oow_t xs, const hcl_liw_t* y, hcl_oow_t ys) +static HAK_INLINE int is_less_unsigned_array (const hak_liw_t* x, hak_oow_t xs, const hak_liw_t* y, hak_oow_t ys) { - hcl_oow_t i; + hak_oow_t i; if (xs != ys) return xs < ys; for (i = xs; i > 0; ) @@ -1045,23 +1045,23 @@ static HCL_INLINE int is_less_unsigned_array (const hcl_liw_t* x, hcl_oow_t xs, return 0; } -static HCL_INLINE int is_less_unsigned (hcl_oop_t x, hcl_oop_t y) +static HAK_INLINE int is_less_unsigned (hak_oop_t x, hak_oop_t y) { return is_less_unsigned_array ( - ((hcl_oop_liword_t)x)->slot, HCL_OBJ_GET_SIZE(x), - ((hcl_oop_liword_t)y)->slot, HCL_OBJ_GET_SIZE(y)); + ((hak_oop_liword_t)x)->slot, HAK_OBJ_GET_SIZE(x), + ((hak_oop_liword_t)y)->slot, HAK_OBJ_GET_SIZE(y)); } -static HCL_INLINE int is_less (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +static HAK_INLINE int is_less (hak_t* hak, hak_oop_t x, hak_oop_t y) { - if (HCL_OBJ_GET_CLASS(x) != HCL_OBJ_GET_CLASS(y)) return HCL_IS_NBIGINT(hcl, x); - if (HCL_IS_PBIGINT(hcl, x)) return is_less_unsigned(x, y); + if (HAK_OBJ_GET_CLASS(x) != HAK_OBJ_GET_CLASS(y)) return HAK_IS_NBIGINT(hak, x); + if (HAK_IS_PBIGINT(hak, x)) return is_less_unsigned(x, y); return is_less_unsigned (y, x); } -static HCL_INLINE int is_greater_unsigned_array (const hcl_liw_t* x, hcl_oow_t xs, const hcl_liw_t* y, hcl_oow_t ys) +static HAK_INLINE int is_greater_unsigned_array (const hak_liw_t* x, hak_oow_t xs, const hak_liw_t* y, hak_oow_t ys) { - hcl_oow_t i; + hak_oow_t i; if (xs != ys) return xs > ys; for (i = xs; i > 0; ) @@ -1073,54 +1073,54 @@ static HCL_INLINE int is_greater_unsigned_array (const hcl_liw_t* x, hcl_oow_t x return 0; } -static HCL_INLINE int is_greater_unsigned (hcl_oop_t x, hcl_oop_t y) +static HAK_INLINE int is_greater_unsigned (hak_oop_t x, hak_oop_t y) { return is_greater_unsigned_array ( - ((hcl_oop_liword_t)x)->slot, HCL_OBJ_GET_SIZE(x), - ((hcl_oop_liword_t)y)->slot, HCL_OBJ_GET_SIZE(y)); + ((hak_oop_liword_t)x)->slot, HAK_OBJ_GET_SIZE(x), + ((hak_oop_liword_t)y)->slot, HAK_OBJ_GET_SIZE(y)); } -static HCL_INLINE int is_greater (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +static HAK_INLINE int is_greater (hak_t* hak, hak_oop_t x, hak_oop_t y) { - if (HCL_OBJ_GET_CLASS(x) != HCL_OBJ_GET_CLASS(y)) return HCL_IS_NBIGINT(hcl, y); - if (HCL_IS_PBIGINT(hcl, x)) return is_greater_unsigned (x, y); + if (HAK_OBJ_GET_CLASS(x) != HAK_OBJ_GET_CLASS(y)) return HAK_IS_NBIGINT(hak, y); + if (HAK_IS_PBIGINT(hak, x)) return is_greater_unsigned (x, y); return is_greater_unsigned (y, x); } -static HCL_INLINE int is_equal_unsigned_array (const hcl_liw_t* x, hcl_oow_t xs, const hcl_liw_t* y, hcl_oow_t ys) +static HAK_INLINE int is_equal_unsigned_array (const hak_liw_t* x, hak_oow_t xs, const hak_liw_t* y, hak_oow_t ys) { - return xs == ys && HCL_MEMCMP(x, y, xs * HCL_SIZEOF(*x)) == 0; + return xs == ys && HAK_MEMCMP(x, y, xs * HAK_SIZEOF(*x)) == 0; } -static HCL_INLINE int is_equal_unsigned (hcl_oop_t x, hcl_oop_t y) +static HAK_INLINE int is_equal_unsigned (hak_oop_t x, hak_oop_t y) { return is_equal_unsigned_array( - ((hcl_oop_liword_t)x)->slot, HCL_OBJ_GET_SIZE(x), - ((hcl_oop_liword_t)y)->slot, HCL_OBJ_GET_SIZE(y)); + ((hak_oop_liword_t)x)->slot, HAK_OBJ_GET_SIZE(x), + ((hak_oop_liword_t)y)->slot, HAK_OBJ_GET_SIZE(y)); } -static HCL_INLINE int is_equal (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +static HAK_INLINE int is_equal (hak_t* hak, hak_oop_t x, hak_oop_t y) { /* check if two large integers are equal to each other */ - /*return HCL_OBJ_GET_CLASS(x) == HCL_OBJ_GET_CLASS(y) && HCL_OBJ_GET_SIZE(x) == HCL_OBJ_GET_SIZE(y) && - HCL_MEMCMP(((hcl_oop_liword_t)x)->slot, ((hcl_oop_liword_t)y)->slot, HCL_OBJ_GET_SIZE(x) * HCL_SIZEOF(hcl_liw_t)) == 0;*/ - return HCL_OBJ_GET_CLASS(x) == HCL_OBJ_GET_CLASS(y) && HCL_OBJ_GET_SIZE(x) == HCL_OBJ_GET_SIZE(y) && is_equal_unsigned(x, y); + /*return HAK_OBJ_GET_CLASS(x) == HAK_OBJ_GET_CLASS(y) && HAK_OBJ_GET_SIZE(x) == HAK_OBJ_GET_SIZE(y) && + HAK_MEMCMP(((hak_oop_liword_t)x)->slot, ((hak_oop_liword_t)y)->slot, HAK_OBJ_GET_SIZE(x) * HAK_SIZEOF(hak_liw_t)) == 0;*/ + return HAK_OBJ_GET_CLASS(x) == HAK_OBJ_GET_CLASS(y) && HAK_OBJ_GET_SIZE(x) == HAK_OBJ_GET_SIZE(y) && is_equal_unsigned(x, y); } -static void complement2_unsigned_array (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_t xs, hcl_liw_t* z) +static void complement2_unsigned_array (hak_t* hak, const hak_liw_t* x, hak_oow_t xs, hak_liw_t* z) { - hcl_oow_t i; - hcl_lidw_t w; - hcl_lidw_t carry; + hak_oow_t i; + hak_lidw_t w; + hak_lidw_t carry; /* get 2's complement (~x + 1) */ carry = 1; for (i = 0; i < xs; i++) { - w = (hcl_lidw_t)(~x[i]) + carry; - /*w = (hcl_lidw_t)(x[i] ^ (~(hcl_liw_t)0)) + carry;*/ - carry = w >> HCL_LIW_BITS; + w = (hak_lidw_t)(~x[i]) + carry; + /*w = (hak_lidw_t)(x[i] ^ (~(hak_liw_t)0)) + carry;*/ + carry = w >> HAK_LIW_BITS; z[i] = w; } @@ -1132,14 +1132,14 @@ static void complement2_unsigned_array (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_ * this function is not designed to handle such a case. * in fact, 0 is a small integer and it must not stand a change * to be given to this function */ - HCL_ASSERT (hcl, carry == 0); + HAK_ASSERT (hak, carry == 0); } -static HCL_INLINE hcl_oow_t add_unsigned_array (const hcl_liw_t* x, hcl_oow_t xs, const hcl_liw_t* y, hcl_oow_t ys, hcl_liw_t* z) +static HAK_INLINE hak_oow_t add_unsigned_array (const hak_liw_t* x, hak_oow_t xs, const hak_liw_t* y, hak_oow_t ys, hak_liw_t* z) { #if 1 - register hcl_oow_t i; - hcl_lidw_t w; + register hak_oow_t i; + hak_lidw_t w; if (xs < ys) { @@ -1148,25 +1148,25 @@ static HCL_INLINE hcl_oow_t add_unsigned_array (const hcl_liw_t* x, hcl_oow_t xs xs = ys; ys = i; - i = (hcl_oow_t)x; + i = (hak_oow_t)x; x = y; - y = (hcl_liw_t*)i; + y = (hak_liw_t*)i; } w = 0; i = 0; while (i < ys) { - w += (hcl_lidw_t)x[i] + (hcl_lidw_t)y[i]; - z[i++] = w & HCL_LBMASK(hcl_lidw_t, HCL_LIW_BITS); - w >>= HCL_LIW_BITS; + w += (hak_lidw_t)x[i] + (hak_lidw_t)y[i]; + z[i++] = w & HAK_LBMASK(hak_lidw_t, HAK_LIW_BITS); + w >>= HAK_LIW_BITS; } while (w && i < xs) { w += x[i]; - z[i++] = w & HCL_LBMASK(hcl_lidw_t, HCL_LIW_BITS); - w >>= HCL_LIW_BITS; + z[i++] = w & HAK_LBMASK(hak_lidw_t, HAK_LIW_BITS); + w >>= HAK_LIW_BITS; } while (i < xs) @@ -1174,13 +1174,13 @@ static HCL_INLINE hcl_oow_t add_unsigned_array (const hcl_liw_t* x, hcl_oow_t xs z[i] = x[i]; i++; } - if (w) z[i++] = w & HCL_LBMASK(hcl_lidw_t, HCL_LIW_BITS); + if (w) z[i++] = w & HAK_LBMASK(hak_lidw_t, HAK_LIW_BITS); return i; #else - register hcl_oow_t i; - hcl_lidw_t w; - hcl_liw_t carry = 0; + register hak_oow_t i; + hak_lidw_t w; + hak_liw_t carry = 0; if (xs < ys) { @@ -1189,26 +1189,26 @@ static HCL_INLINE hcl_oow_t add_unsigned_array (const hcl_liw_t* x, hcl_oow_t xs xs = ys; ys = i; - i = (hcl_oow_t)x; + i = (hak_oow_t)x; x = y; - y = (hcl_liw_t*)i; + y = (hak_liw_t*)i; } for (i = 0; i < ys; i++) { - w = (hcl_lidw_t)x[i] + (hcl_lidw_t)y[i] + carry; - carry = w >> HCL_LIW_BITS; - z[i] = w /*& HCL_LBMASK(hcl_lidw_t, HCL_LIW_BITS) */; + w = (hak_lidw_t)x[i] + (hak_lidw_t)y[i] + carry; + carry = w >> HAK_LIW_BITS; + z[i] = w /*& HAK_LBMASK(hak_lidw_t, HAK_LIW_BITS) */; } if (x == z) { for (; carry && i < xs; i++) { - w = (hcl_lidw_t)x[i] + carry; - carry = w >> HCL_LIW_BITS; - z[i] = w /*& HCL_LBMASK(hcl_lidw_t, HCL_LIW_BITS) */; + w = (hak_lidw_t)x[i] + carry; + carry = w >> HAK_LIW_BITS; + z[i] = w /*& HAK_LBMASK(hak_lidw_t, HAK_LIW_BITS) */; } i = xs; } @@ -1216,9 +1216,9 @@ static HCL_INLINE hcl_oow_t add_unsigned_array (const hcl_liw_t* x, hcl_oow_t xs { for (; i < xs; i++) { - w = (hcl_lidw_t)x[i] + carry; - carry = w >> HCL_LIW_BITS; - z[i] = w /*& HCL_LBMASK(hcl_lidw_t, HCL_LIW_BITS)*/; + w = (hak_lidw_t)x[i] + carry; + carry = w >> HAK_LIW_BITS; + z[i] = w /*& HAK_LBMASK(hak_lidw_t, HAK_LIW_BITS)*/; } } @@ -1227,33 +1227,33 @@ static HCL_INLINE hcl_oow_t add_unsigned_array (const hcl_liw_t* x, hcl_oow_t xs #endif } -static HCL_INLINE hcl_oow_t subtract_unsigned_array (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_t xs, const hcl_liw_t* y, hcl_oow_t ys, hcl_liw_t* z) +static HAK_INLINE hak_oow_t subtract_unsigned_array (hak_t* hak, const hak_liw_t* x, hak_oow_t xs, const hak_liw_t* y, hak_oow_t ys, hak_liw_t* z) { #if 1 - hcl_oow_t i; - hcl_lidi_t w = 0; + hak_oow_t i; + hak_lidi_t w = 0; if (x == y) { - HCL_ASSERT (hcl, xs == ys); + HAK_ASSERT (hak, xs == ys); z[0] = 0; return 1; } - HCL_ASSERT (hcl, !is_less_unsigned_array(x, xs, y, ys)); + HAK_ASSERT (hak, !is_less_unsigned_array(x, xs, y, ys)); for (i = 0; i < ys; i++) { - w += (hcl_lidi_t)x[i] - (hcl_lidi_t)y[i]; - z[i] = w & HCL_LBMASK(hcl_lidw_t, HCL_LIW_BITS); - w >>= HCL_LIW_BITS; + w += (hak_lidi_t)x[i] - (hak_lidi_t)y[i]; + z[i] = w & HAK_LBMASK(hak_lidw_t, HAK_LIW_BITS); + w >>= HAK_LIW_BITS; } while (w && i < xs) { w += x[i]; - z[i++] = w & HCL_LBMASK(hcl_lidw_t, HCL_LIW_BITS); - w >>= HCL_LIW_BITS; + z[i++] = w & HAK_LBMASK(hak_lidw_t, HAK_LIW_BITS); + w >>= HAK_LIW_BITS; } while (i < xs) @@ -1266,32 +1266,32 @@ static HCL_INLINE hcl_oow_t subtract_unsigned_array (hcl_t* hcl, const hcl_liw_t return i; #else - hcl_oow_t i; - hcl_lidw_t w; - hcl_lidw_t borrow = 0; - hcl_lidw_t borrowed_word; + hak_oow_t i; + hak_lidw_t w; + hak_lidw_t borrow = 0; + hak_lidw_t borrowed_word; if (x == y) { - HCL_ASSERT (hcl, xs == ys); + HAK_ASSERT (hak, xs == ys); z[0] = 0; return 1; } - HCL_ASSERT (hcl, !is_less_unsigned_array(x, xs, y, ys)); + HAK_ASSERT (hak, !is_less_unsigned_array(x, xs, y, ys)); - borrowed_word = (hcl_lidw_t)1 << HCL_LIW_BITS; + borrowed_word = (hak_lidw_t)1 << HAK_LIW_BITS; for (i = 0; i < ys; i++) { - w = (hcl_lidw_t)y[i] + borrow; - if ((hcl_lidw_t)x[i] >= w) + w = (hak_lidw_t)y[i] + borrow; + if ((hak_lidw_t)x[i] >= w) { z[i] = x[i] - w; borrow = 0; } else { - z[i] = (borrowed_word + (hcl_lidw_t)x[i]) - w; + z[i] = (borrowed_word + (hak_lidw_t)x[i]) - w; borrow = 1; } } @@ -1300,53 +1300,53 @@ static HCL_INLINE hcl_oow_t subtract_unsigned_array (hcl_t* hcl, const hcl_liw_t { if (x[i] >= borrow) { - z[i] = x[i] - (hcl_liw_t)borrow; + z[i] = x[i] - (hak_liw_t)borrow; borrow = 0; } else { - z[i] = (borrowed_word + (hcl_lidw_t)x[i]) - borrow; + z[i] = (borrowed_word + (hak_lidw_t)x[i]) - borrow; borrow = 1; } } - HCL_ASSERT (hcl, borrow == 0); + HAK_ASSERT (hak, borrow == 0); while (i > 1 && z[i - 1] == 0) i--; return i; /* the number of effective digits in the result */ #endif } -static HCL_INLINE void multiply_unsigned_array (const hcl_liw_t* x, hcl_oow_t xs, const hcl_liw_t* y, hcl_oow_t ys, hcl_liw_t* z) +static HAK_INLINE void multiply_unsigned_array (const hak_liw_t* x, hak_oow_t xs, const hak_liw_t* y, hak_oow_t ys, hak_liw_t* z) { - hcl_lidw_t v; - hcl_oow_t pa; + hak_lidw_t v; + hak_oow_t pa; if (xs < ys) { - hcl_oow_t i; + hak_oow_t i; /* swap x and y */ i = xs; xs = ys; ys = i; - i = (hcl_oow_t)x; + i = (hak_oow_t)x; x = y; - y = (hcl_liw_t*)i; + y = (hak_liw_t*)i; } if (ys == 1) { - hcl_lidw_t dw; - hcl_liw_t carry = 0; - hcl_oow_t i; + hak_lidw_t dw; + hak_liw_t carry = 0; + hak_oow_t i; for (i = 0; i < xs; i++) { - dw = ((hcl_lidw_t)x[i] * y[0]) + carry; - carry = (hcl_liw_t)(dw >> HCL_LIW_BITS); - z[i] = (hcl_liw_t)dw; + dw = ((hak_lidw_t)x[i] * y[0]) + carry; + carry = (hak_liw_t)(dw >> HAK_LIW_BITS); + z[i] = (hak_liw_t)dw; } z[i] = carry; @@ -1354,7 +1354,7 @@ static HCL_INLINE void multiply_unsigned_array (const hcl_liw_t* x, hcl_oow_t xs } pa = xs; - if (pa <= ((hcl_oow_t)1 << (HCL_LIDW_BITS - (HCL_LIW_BITS * 2)))) + if (pa <= ((hak_oow_t)1 << (HAK_LIDW_BITS - (HAK_LIW_BITS * 2)))) { /* Comba(column-array) multiplication */ @@ -1363,7 +1363,7 @@ static HCL_INLINE void multiply_unsigned_array (const hcl_liw_t* x, hcl_oow_t xs * affected badly. so we need to use this method only if * the input is short enough. */ - hcl_oow_t pa, ix, iy, iz, tx, ty; + hak_oow_t pa, ix, iy, iz, tx, ty; pa = xs + ys; v = 0; @@ -1375,17 +1375,17 @@ static HCL_INLINE void multiply_unsigned_array (const hcl_liw_t* x, hcl_oow_t xs for (iz = 0; iz < iy; iz++) { - v = v + (hcl_lidw_t)x[tx + iz] * (hcl_lidw_t)y[ty - iz]; + v = v + (hak_lidw_t)x[tx + iz] * (hak_lidw_t)y[ty - iz]; } - z[ix] = (hcl_liw_t)v; - v = v >> HCL_LIW_BITS; + z[ix] = (hak_liw_t)v; + v = v >> HAK_LIW_BITS; } } else { - hcl_oow_t i, j; - hcl_liw_t carry; + hak_oow_t i, j; + hak_liw_t carry; for (i = 0; i < xs; i++) { @@ -1399,9 +1399,9 @@ static HCL_INLINE void multiply_unsigned_array (const hcl_liw_t* x, hcl_oow_t xs for (j = 0; j < ys; j++) { - v = (hcl_lidw_t)x[i] * (hcl_lidw_t)y[j] + (hcl_lidw_t)carry + (hcl_lidw_t)z[i + j]; - z[i + j] = (hcl_liw_t)v; - carry = (hcl_liw_t)(v >> HCL_LIW_BITS); + v = (hak_lidw_t)x[i] * (hak_lidw_t)y[j] + (hak_lidw_t)carry + (hak_lidw_t)z[i + j]; + z[i + j] = (hak_liw_t)v; + carry = (hak_liw_t)(v >> HAK_LIW_BITS); } z[i + j] = carry; @@ -1461,70 +1461,70 @@ static HCL_INLINE void multiply_unsigned_array (const hcl_liw_t* x, hcl_oow_t xs * -------------------------------------------------------------------- * * Multiplying by B is t same as shifting by DIGIT_BITS. - * DIGIT_BITS in this implementation is HCL_LIW_BITS - * B => 2^HCL_LIW_BITS - * X * B^n => X << (HCL_LIW_BITS * n) - * X * B^2n => X << (HCL_LIW_BITS * n * 2) + * DIGIT_BITS in this implementation is HAK_LIW_BITS + * B => 2^HAK_LIW_BITS + * X * B^n => X << (HAK_LIW_BITS * n) + * X * B^2n => X << (HAK_LIW_BITS * n * 2) * -------------------------------------------------------------------- */ -#if defined(HCL_BUILD_DEBUG) -#define CANNOT_KARATSUBA(hcl,xs,ys) \ - ((xs) < (hcl)->option.karatsuba_cutoff || (ys) < (hcl)->option.karatsuba_cutoff || \ +#if defined(HAK_BUILD_DEBUG) +#define CANNOT_KARATSUBA(hak,xs,ys) \ + ((xs) < (hak)->option.karatsuba_cutoff || (ys) < (hak)->option.karatsuba_cutoff || \ ((xs) > (ys) && (ys) <= (((xs) + 1) / 2)) || \ ((xs) < (ys) && (xs) <= (((ys) + 1) / 2))) #else -#define CANNOT_KARATSUBA(hcl,xs,ys) \ - ((xs) < HCL_KARATSUBA_CUTOFF || (ys) < HCL_KARATSUBA_CUTOFF || \ +#define CANNOT_KARATSUBA(hak,xs,ys) \ + ((xs) < HAK_KARATSUBA_CUTOFF || (ys) < HAK_KARATSUBA_CUTOFF || \ ((xs) > (ys) && (ys) <= (((xs) + 1) / 2)) || \ ((xs) < (ys) && (xs) <= (((ys) + 1) / 2))) #endif -static HCL_INLINE hcl_oow_t multiply_unsigned_array_karatsuba (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_t xs, const hcl_liw_t* y, hcl_oow_t ys, hcl_liw_t* z) +static HAK_INLINE hak_oow_t multiply_unsigned_array_karatsuba (hak_t* hak, const hak_liw_t* x, hak_oow_t xs, const hak_liw_t* y, hak_oow_t ys, hak_liw_t* z) { #if 1 - hcl_lidw_t nshifts; - hcl_lidw_t ndigits_xh, ndigits_xl; - hcl_lidw_t ndigits_yh, ndigits_yl; - hcl_liw_t* tmp[2] = { HCL_NULL, HCL_NULL}; - hcl_liw_t* zsp; - hcl_oow_t tmplen[2]; - hcl_oow_t xlen, zcapa; + hak_lidw_t nshifts; + hak_lidw_t ndigits_xh, ndigits_xl; + hak_lidw_t ndigits_yh, ndigits_yl; + hak_liw_t* tmp[2] = { HAK_NULL, HAK_NULL}; + hak_liw_t* zsp; + hak_oow_t tmplen[2]; + hak_oow_t xlen, zcapa; zcapa = xs + ys; /* the caller ensures this capacity for z at the minimum*/ if (xs < ys) { - hcl_oow_t i; + hak_oow_t i; /* swap x and y */ i = xs; xs = ys; ys = i; - i = (hcl_oow_t)x; + i = (hak_oow_t)x; x = y; - y = (hcl_liw_t*)i; + y = (hak_liw_t*)i; } if (ys == 1) { - hcl_lidw_t dw; - hcl_liw_t carry = 0; - hcl_oow_t i; + hak_lidw_t dw; + hak_liw_t carry = 0; + hak_oow_t i; for (i = 0; i < xs; i++) { - dw = ((hcl_lidw_t)x[i] * y[0]) + carry; - carry = (hcl_liw_t)(dw >> HCL_LIW_BITS); - z[i] = (hcl_liw_t)dw; + dw = ((hak_lidw_t)x[i] * y[0]) + carry; + carry = (hak_liw_t)(dw >> HAK_LIW_BITS); + z[i] = (hak_liw_t)dw; } z[i] = carry; return count_effective(z, xs + 1); } - /* calculate value of nshifts, that is 2^(HCL_LIW_BITS*nshifts) */ + /* calculate value of nshifts, that is 2^(HAK_LIW_BITS*nshifts) */ nshifts = (xs + 1) / 2; ndigits_xl = nshifts; /* ndigits of lower part of x */ @@ -1532,20 +1532,20 @@ static HCL_INLINE hcl_oow_t multiply_unsigned_array_karatsuba (hcl_t* hcl, const ndigits_yl = nshifts; /* ndigits of lower part of y */ ndigits_yh = ys - nshifts; /* ndigits of uppoer part of y */ - HCL_ASSERT (hcl, ndigits_xl >= ndigits_xh); - HCL_ASSERT (hcl, ndigits_yl >= ndigits_yh); + HAK_ASSERT (hak, ndigits_xl >= ndigits_xh); + HAK_ASSERT (hak, ndigits_yl >= ndigits_yh); /* make a temporary buffer for (b0 + b1) and (a1 * b1) */ tmplen[0] = ndigits_xh + ndigits_yh; tmplen[1] = ndigits_yl + ndigits_yh + 1; if (tmplen[1] < tmplen[0]) tmplen[1] = tmplen[0]; - tmp[1] = (hcl_liw_t*)hcl_callocmem(hcl, HCL_SIZEOF(hcl_liw_t) * tmplen[1]); /* TODO: should i use the object memory? if not, reuse the buffer and minimize memory allocation */ - if (HCL_UNLIKELY(!tmp[1])) goto oops; + tmp[1] = (hak_liw_t*)hak_callocmem(hak, HAK_SIZEOF(hak_liw_t) * tmplen[1]); /* TODO: should i use the object memory? if not, reuse the buffer and minimize memory allocation */ + if (HAK_UNLIKELY(!tmp[1])) goto oops; /* make a temporary for (a0 + a1) and (a0 * b0) */ tmplen[0] = ndigits_xl + ndigits_yl + 1; - tmp[0] = (hcl_liw_t*)hcl_callocmem(hcl, HCL_SIZEOF(hcl_liw_t) * tmplen[0]); - if (HCL_UNLIKELY(!tmp[0])) goto oops; + tmp[0] = (hak_liw_t*)hak_callocmem(hak, HAK_SIZEOF(hak_liw_t) * tmplen[0]); + if (HAK_UNLIKELY(!tmp[0])) goto oops; /* tmp[0] = a0 + a1 */ tmplen[0] = add_unsigned_array(x, ndigits_xl, x + nshifts, ndigits_xh, tmp[0]); @@ -1553,55 +1553,55 @@ static HCL_INLINE hcl_oow_t multiply_unsigned_array_karatsuba (hcl_t* hcl, const /* tmp[1] = b0 + b1 */ tmplen[1] = add_unsigned_array(y, ndigits_yl, y + nshifts, ndigits_yh, tmp[1]); - /*HCL_DEBUG6 (hcl, "karatsuba t %p u %p ndigits_xl %d ndigits_xh %d ndigits_yl %d ndigits_yh %d\n", tmp[0], tmp[1], (int)ndigits_xl, (int)ndigits_xh, (int)ndigits_yl, (int)ndigits_yh);*/ - /*HCL_DEBUG5 (hcl, "zcapa %d, tmplen[0] %d tmplen[1] %d nshifts %d total %d\n", (int)zcapa, (int)tmplen[0], (int)tmplen[1], (int)nshifts, (int)(tmplen[0] + tmplen[1] + nshifts));*/ + /*HAK_DEBUG6 (hak, "karatsuba t %p u %p ndigits_xl %d ndigits_xh %d ndigits_yl %d ndigits_yh %d\n", tmp[0], tmp[1], (int)ndigits_xl, (int)ndigits_xh, (int)ndigits_yl, (int)ndigits_yh);*/ + /*HAK_DEBUG5 (hak, "zcapa %d, tmplen[0] %d tmplen[1] %d nshifts %d total %d\n", (int)zcapa, (int)tmplen[0], (int)tmplen[1], (int)nshifts, (int)(tmplen[0] + tmplen[1] + nshifts));*/ /* place (a0 + a1) * (b0 + b1) at the shifted position */ zsp = z + nshifts; - if (CANNOT_KARATSUBA(hcl, tmplen[0], tmplen[1])) + if (CANNOT_KARATSUBA(hak, tmplen[0], tmplen[1])) { multiply_unsigned_array (tmp[0], tmplen[0], tmp[1], tmplen[1], zsp); xlen = count_effective(zsp, tmplen[0] + tmplen[1]); } else { - xlen = multiply_unsigned_array_karatsuba(hcl, tmp[0], tmplen[0], tmp[1], tmplen[1], zsp); + xlen = multiply_unsigned_array_karatsuba(hak, tmp[0], tmplen[0], tmp[1], tmplen[1], zsp); if (xlen == 0) goto oops; } /* tmp[0] = a0 * b0 */ tmplen[0] = ndigits_xl + ndigits_yl; - HCL_MEMSET (tmp[0], 0, sizeof(hcl_liw_t) * tmplen[0]); - if (CANNOT_KARATSUBA(hcl, ndigits_xl, ndigits_yl)) + HAK_MEMSET (tmp[0], 0, sizeof(hak_liw_t) * tmplen[0]); + if (CANNOT_KARATSUBA(hak, ndigits_xl, ndigits_yl)) { multiply_unsigned_array (x, ndigits_xl, y, ndigits_yl, tmp[0]); tmplen[0] = count_effective(tmp[0], tmplen[0]); } else { - tmplen[0] = multiply_unsigned_array_karatsuba(hcl, x, ndigits_xl, y, ndigits_yl, tmp[0]); + tmplen[0] = multiply_unsigned_array_karatsuba(hak, x, ndigits_xl, y, ndigits_yl, tmp[0]); if (tmplen[0] <= 0) goto oops; } /* tmp[1] = a1 * b1 */ tmplen[1] = ndigits_xh + ndigits_yh; - HCL_MEMSET (tmp[1], 0, sizeof(hcl_liw_t) * tmplen[1]); - if (CANNOT_KARATSUBA(hcl, ndigits_xh, ndigits_yh)) + HAK_MEMSET (tmp[1], 0, sizeof(hak_liw_t) * tmplen[1]); + if (CANNOT_KARATSUBA(hak, ndigits_xh, ndigits_yh)) { multiply_unsigned_array (x + nshifts, ndigits_xh, y + nshifts, ndigits_yh, tmp[1]); tmplen[1] = count_effective(tmp[1], tmplen[1]); } else { - tmplen[1] = multiply_unsigned_array_karatsuba(hcl, x + nshifts, ndigits_xh, y + nshifts, ndigits_yh, tmp[1]); + tmplen[1] = multiply_unsigned_array_karatsuba(hak, x + nshifts, ndigits_xh, y + nshifts, ndigits_yh, tmp[1]); if (tmplen[1] <= 0) goto oops; } /* (a0+a1)*(b0+b1) -(a0*b0) */ - xlen = subtract_unsigned_array(hcl, zsp, xlen, tmp[0], tmplen[0], zsp); + xlen = subtract_unsigned_array(hak, zsp, xlen, tmp[0], tmplen[0], zsp); /* (a0+a1)*(b0+b1) - (a0*b0) - (a1*b1) */ - xlen = subtract_unsigned_array(hcl, zsp, xlen, tmp[1], tmplen[1], zsp); + xlen = subtract_unsigned_array(hak, zsp, xlen, tmp[1], tmplen[1], zsp); /* a1b1 is in tmp[1]. add (a1b1 * B^2n) to the high part of 'z' */ zsp = z + (nshifts * 2); /* emulate shifting for "* B^2n". */ xlen = zcapa - (nshifts * 2); @@ -1610,58 +1610,58 @@ static HCL_INLINE hcl_oow_t multiply_unsigned_array_karatsuba (hcl_t* hcl, const /* z = z + a0b0. a0b0 is in tmp[0] */ xlen = add_unsigned_array(z, zcapa, tmp[0], tmplen[0], z); - hcl_freemem (hcl, tmp[1]); - hcl_freemem (hcl, tmp[0]); + hak_freemem (hak, tmp[1]); + hak_freemem (hak, tmp[0]); return count_effective(z, xlen); oops: - if (tmp[1]) hcl_freemem (hcl, tmp[1]); - if (tmp[0]) hcl_freemem (hcl, tmp[0]); + if (tmp[1]) hak_freemem (hak, tmp[1]); + if (tmp[0]) hak_freemem (hak, tmp[0]); return 0; #else - hcl_lidw_t nshifts; - hcl_lidw_t ndigits_xh, ndigits_xl; - hcl_lidw_t ndigits_yh, ndigits_yl; - hcl_liw_t* tmp[3] = { HCL_NULL, HCL_NULL, HCL_NULL }; - hcl_liw_t* zsp; - hcl_oow_t tmplen[3]; - hcl_oow_t xlen, zcapa; + hak_lidw_t nshifts; + hak_lidw_t ndigits_xh, ndigits_xl; + hak_lidw_t ndigits_yh, ndigits_yl; + hak_liw_t* tmp[3] = { HAK_NULL, HAK_NULL, HAK_NULL }; + hak_liw_t* zsp; + hak_oow_t tmplen[3]; + hak_oow_t xlen, zcapa; zcapa = xs + ys; /* the caller ensures this capacity for z at the minimum*/ if (xs < ys) { - hcl_oow_t i; + hak_oow_t i; /* swap x and y */ i = xs; xs = ys; ys = i; - i = (hcl_oow_t)x; + i = (hak_oow_t)x; x = y; - y = (hcl_liw_t*)i; + y = (hak_liw_t*)i; } if (ys == 1) { - hcl_lidw_t dw; - hcl_liw_t carry = 0; - hcl_oow_t i; + hak_lidw_t dw; + hak_liw_t carry = 0; + hak_oow_t i; for (i = 0; i < xs; i++) { - dw = ((hcl_lidw_t)x[i] * y[0]) + carry; - carry = (hcl_liw_t)(dw >> HCL_LIW_BITS); - z[i] = (hcl_liw_t)dw; + dw = ((hak_lidw_t)x[i] * y[0]) + carry; + carry = (hak_liw_t)(dw >> HAK_LIW_BITS); + z[i] = (hak_liw_t)dw; } z[i] = carry; return; } - /* calculate value of nshifts, that is 2^(HCL_LIW_BITS*nshifts) */ + /* calculate value of nshifts, that is 2^(HAK_LIW_BITS*nshifts) */ nshifts = (xs + 1) / 2; ndigits_xl = nshifts; /* ndigits of lower part of x */ @@ -1669,19 +1669,19 @@ oops: ndigits_yl = nshifts; /* ndigits of lower part of y */ ndigits_yh = ys - nshifts; /* ndigits of uppoer part of y */ - HCL_ASSERT (hcl, ndigits_xl >= ndigits_xh); - HCL_ASSERT (hcl, ndigits_yl >= ndigits_yh); + HAK_ASSERT (hak, ndigits_xl >= ndigits_xh); + HAK_ASSERT (hak, ndigits_yl >= ndigits_yh); /* make a temporary buffer for (b0 + b1) and (a1 * b1) */ tmplen[0] = ndigits_yl + ndigits_yh + 1; tmplen[1] = ndigits_xh + ndigits_yh; if (tmplen[1] < tmplen[0]) tmplen[1] = tmplen[0]; - tmp[1] = (hcl_liw_t*)hcl_callocmem(hcl, HCL_SIZEOF(hcl_liw_t) * tmplen[1]); + tmp[1] = (hak_liw_t*)hak_callocmem(hak, HAK_SIZEOF(hak_liw_t) * tmplen[1]); if (!tmp[1]) goto oops; /* make a temporary for (a0 + a1) and (a0 * b0) */ tmplen[0] = ndigits_xl + ndigits_yl; - tmp[0] = (hcl_liw_t*)hcl_callocmem(hcl, HCL_SIZEOF(hcl_liw_t) * tmplen[0]); + tmp[0] = (hak_liw_t*)hak_callocmem(hak, HAK_SIZEOF(hak_liw_t) * tmplen[0]); if (!tmp[0]) goto oops; /* tmp[0] = a0 + a1 */ @@ -1692,53 +1692,53 @@ oops: /* tmp[2] = (a0 + a1) * (b0 + b1) */ tmplen[2] = tmplen[0] + tmplen[1]; - tmp[2] = (hcl_liw_t*)hcl_callocmem(hcl, HCL_SIZEOF(hcl_liw_t) * tmplen[2]); + tmp[2] = (hak_liw_t*)hak_callocmem(hak, HAK_SIZEOF(hak_liw_t) * tmplen[2]); if (!tmp[2]) goto oops; - if (CANNOT_KARATSUBA(hcl, tmplen[0], tmplen[1])) + if (CANNOT_KARATSUBA(hak, tmplen[0], tmplen[1])) { multiply_unsigned_array (tmp[0], tmplen[0], tmp[1], tmplen[1], tmp[2]); xlen = count_effective(tmp[2], tmplen[2]); } else { - xlen = multiply_unsigned_array_karatsuba(hcl, tmp[0], tmplen[0], tmp[1], tmplen[1], tmp[2]); + xlen = multiply_unsigned_array_karatsuba(hak, tmp[0], tmplen[0], tmp[1], tmplen[1], tmp[2]); if (xlen == 0) goto oops; } /* tmp[0] = a0 * b0 */ tmplen[0] = ndigits_xl + ndigits_yl; - HCL_MEMSET (tmp[0], 0, sizeof(hcl_liw_t) * tmplen[0]); - if (CANNOT_KARATSUBA(hcl, ndigits_xl, ndigits_yl)) + HAK_MEMSET (tmp[0], 0, sizeof(hak_liw_t) * tmplen[0]); + if (CANNOT_KARATSUBA(hak, ndigits_xl, ndigits_yl)) { multiply_unsigned_array (x, ndigits_xl, y, ndigits_yl, tmp[0]); tmplen[0] = count_effective(tmp[0], tmplen[0]); } else { - tmplen[0] = multiply_unsigned_array_karatsuba(hcl, x, ndigits_xl, y, ndigits_yl, tmp[0]); + tmplen[0] = multiply_unsigned_array_karatsuba(hak, x, ndigits_xl, y, ndigits_yl, tmp[0]); if (tmplen[0] <= 0) goto oops; } /* tmp[1] = a1 * b1 */ tmplen[1] = ndigits_xh + ndigits_yh; - HCL_MEMSET (tmp[1], 0, sizeof(hcl_liw_t) * tmplen[1]); - if (CANNOT_KARATSUBA(hcl, ndigits_xh, ndigits_yh)) + HAK_MEMSET (tmp[1], 0, sizeof(hak_liw_t) * tmplen[1]); + if (CANNOT_KARATSUBA(hak, ndigits_xh, ndigits_yh)) { multiply_unsigned_array (x + nshifts, ndigits_xh, y + nshifts, ndigits_yh, tmp[1]); tmplen[1] = count_effective(tmp[1], tmplen[1]); } else { - tmplen[1] = multiply_unsigned_array_karatsuba(hcl, x + nshifts, ndigits_xh, y + nshifts, ndigits_yh, tmp[1]); + tmplen[1] = multiply_unsigned_array_karatsuba(hak, x + nshifts, ndigits_xh, y + nshifts, ndigits_yh, tmp[1]); if (tmplen[1] <= 0) goto oops; } /* w = w - tmp[0] */ - xlen = subtract_unsigned_array(hcl, tmp[2], xlen, tmp[0], tmplen[0], tmp[2]); + xlen = subtract_unsigned_array(hak, tmp[2], xlen, tmp[0], tmplen[0], tmp[2]); /* r = w - tmp[1] */ zsp = z + nshifts; /* emulate shifting for "* B^n" */ - xlen = subtract_unsigned_array(hcl, tmp[2], xlen, tmp[1], tmplen[1], zsp); + xlen = subtract_unsigned_array(hak, tmp[2], xlen, tmp[1], tmplen[1], zsp); /* a1b1 is in tmp[1]. add (a1b1 * B^2n) to the high part of 'z' */ zsp = z + (nshifts * 2); /* emulate shifting for "* B^2n". */ @@ -1748,39 +1748,39 @@ oops: /* z = z + a0b0. a0b0 is in tmp[0] */ xlen = add_unsigned_array(z, zcapa, tmp[0], tmplen[0], z); - hcl_freemem (hcl, tmp[2]); - hcl_freemem (hcl, tmp[1]); - hcl_freemem (hcl, tmp[0]); + hak_freemem (hak, tmp[2]); + hak_freemem (hak, tmp[1]); + hak_freemem (hak, tmp[0]); return count_effective(z, xlen); oops: - if (tmp[2]) hcl_freemem (hcl, tmp[2]); - if (tmp[1]) hcl_freemem (hcl, tmp[1]); - if (tmp[0]) hcl_freemem (hcl, tmp[0]); + if (tmp[2]) hak_freemem (hak, tmp[2]); + if (tmp[1]) hak_freemem (hak, tmp[1]); + if (tmp[0]) hak_freemem (hak, tmp[0]); return 0; #endif } -static HCL_INLINE void lshift_unsigned_array (hcl_liw_t* x, hcl_oow_t xs, hcl_oow_t bits) +static HAK_INLINE void lshift_unsigned_array (hak_liw_t* x, hak_oow_t xs, hak_oow_t bits) { /* this function doesn't grow/shrink the array. Shifting is performed * over the given array */ - hcl_oow_t word_shifts, bit_shifts, bit_shifts_right; - hcl_oow_t si, di; + hak_oow_t word_shifts, bit_shifts, bit_shifts_right; + hak_oow_t si, di; /* get how many words to shift */ - word_shifts = bits / HCL_LIW_BITS; + word_shifts = bits / HAK_LIW_BITS; if (word_shifts >= xs) { - HCL_MEMSET (x, 0, xs * HCL_SIZEOF(hcl_liw_t)); + HAK_MEMSET (x, 0, xs * HAK_SIZEOF(hak_liw_t)); return; } /* get how many remaining bits to shift */ - bit_shifts = bits % HCL_LIW_BITS; - bit_shifts_right = HCL_LIW_BITS - bit_shifts; + bit_shifts = bits % HAK_LIW_BITS; + bit_shifts_right = HAK_LIW_BITS - bit_shifts; /* shift words and bits */ di = xs - 1; @@ -1794,28 +1794,28 @@ static HCL_INLINE void lshift_unsigned_array (hcl_liw_t* x, hcl_oow_t xs, hcl_oo /* fill the remaining part with zeros */ if (word_shifts > 0) - HCL_MEMSET (x, 0, word_shifts * HCL_SIZEOF(hcl_liw_t)); + HAK_MEMSET (x, 0, word_shifts * HAK_SIZEOF(hak_liw_t)); } -static HCL_INLINE void rshift_unsigned_array (hcl_liw_t* x, hcl_oow_t xs, hcl_oow_t bits) +static HAK_INLINE void rshift_unsigned_array (hak_liw_t* x, hak_oow_t xs, hak_oow_t bits) { /* this function doesn't grow/shrink the array. Shifting is performed * over the given array */ - hcl_oow_t word_shifts, bit_shifts, bit_shifts_left; - hcl_oow_t si, di, bound; + hak_oow_t word_shifts, bit_shifts, bit_shifts_left; + hak_oow_t si, di, bound; /* get how many words to shift */ - word_shifts = bits / HCL_LIW_BITS; + word_shifts = bits / HAK_LIW_BITS; if (word_shifts >= xs) { - HCL_MEMSET (x, 0, xs * HCL_SIZEOF(hcl_liw_t)); + HAK_MEMSET (x, 0, xs * HAK_SIZEOF(hak_liw_t)); return; } /* get how many remaining bits to shift */ - bit_shifts = bits % HCL_LIW_BITS; - bit_shifts_left = HCL_LIW_BITS - bit_shifts; + bit_shifts = bits % HAK_LIW_BITS; + bit_shifts_left = HAK_LIW_BITS - bit_shifts; /* TODO: verify this function */ /* shift words and bits */ @@ -1831,10 +1831,10 @@ static HCL_INLINE void rshift_unsigned_array (hcl_liw_t* x, hcl_oow_t xs, hcl_oo /* fill the remaining part with zeros */ if (word_shifts > 0) - HCL_MEMSET (&x[xs - word_shifts], 0, word_shifts * HCL_SIZEOF(hcl_liw_t)); + HAK_MEMSET (&x[xs - word_shifts], 0, word_shifts * HAK_SIZEOF(hak_liw_t)); } -static void divide_unsigned_array (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_t xs, const hcl_liw_t* y, hcl_oow_t ys, hcl_liw_t* q, hcl_liw_t* r) +static void divide_unsigned_array (hak_t* hak, const hak_liw_t* x, hak_oow_t xs, const hak_liw_t* y, hak_oow_t ys, hak_liw_t* q, hak_liw_t* r) { /* TODO: this function needs to be rewritten for performance improvement. * the binary long division is extremely slow for a big number */ @@ -1854,22 +1854,22 @@ static void divide_unsigned_array (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_t xs, * end */ - hcl_oow_t rs, rrs, i , j; + hak_oow_t rs, rrs, i , j; - HCL_ASSERT (hcl, xs >= ys); + HAK_ASSERT (hak, xs >= ys); /* the caller must ensure: * - q and r are all zeros. can skip memset() with zero. * - q is as large as xs in size. * - r is as large as ys + 1 in size */ - /*HCL_MEMSET (q, 0, HCL_SIZEOF(*q) * xs); - HCL_MEMSET (r, 0, HCL_SIZEOF(*q) * ys);*/ + /*HAK_MEMSET (q, 0, HAK_SIZEOF(*q) * xs); + HAK_MEMSET (r, 0, HAK_SIZEOF(*q) * ys);*/ rrs = ys + 1; for (i = xs; i > 0; ) { --i; - for (j = HCL_LIW_BITS; j > 0;) + for (j = HAK_LIW_BITS; j > 0;) { --j; @@ -1877,68 +1877,68 @@ static void divide_unsigned_array (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_t xs, * divisor 'y' temporarily until subtraction is performed * below. so ys + 1(kept in rrs) is needed for shifting here. */ lshift_unsigned_array (r, rrs, 1); - HCL_SETBITS (hcl_liw_t, r[0], 0, 1, HCL_GETBITS(hcl_liw_t, x[i], j, 1)); + HAK_SETBITS (hak_liw_t, r[0], 0, 1, HAK_GETBITS(hak_liw_t, x[i], j, 1)); rs = count_effective(r, rrs); if (!is_less_unsigned_array(r, rs, y, ys)) { - subtract_unsigned_array (hcl, r, rs, y, ys, r); - HCL_SETBITS (hcl_liw_t, q[i], j, 1, 1); + subtract_unsigned_array (hak, r, rs, y, ys, r); + HAK_SETBITS (hak_liw_t, q[i], j, 1, 1); } } } } -static HCL_INLINE hcl_liw_t calculate_remainder (hcl_t* hcl, hcl_liw_t* qr, hcl_liw_t* y, hcl_liw_t quo, int qr_start, int stop) +static HAK_INLINE hak_liw_t calculate_remainder (hak_t* hak, hak_liw_t* qr, hak_liw_t* y, hak_liw_t quo, int qr_start, int stop) { - hcl_lidw_t dw; - hcl_liw_t b, c, c2, qyk; - hcl_oow_t j, k; + hak_lidw_t dw; + hak_liw_t b, c, c2, qyk; + hak_oow_t j, k; for (b = 0, c = 0, c2 = 0, j = qr_start, k = 0; k < stop; j++, k++) { - dw = (hcl_lidw_t)qr[j] - b; - b = (hcl_liw_t)((dw >> HCL_LIW_BITS) & 1); /* b = -(dw mod BASE) */ - qr[j] = (hcl_liw_t)dw; + dw = (hak_lidw_t)qr[j] - b; + b = (hak_liw_t)((dw >> HAK_LIW_BITS) & 1); /* b = -(dw mod BASE) */ + qr[j] = (hak_liw_t)dw; - dw = ((hcl_lidw_t)y[k] * quo) + c; - c = (hcl_liw_t)(dw >> HCL_LIW_BITS); - qyk = (hcl_liw_t)dw; + dw = ((hak_lidw_t)y[k] * quo) + c; + c = (hak_liw_t)(dw >> HAK_LIW_BITS); + qyk = (hak_liw_t)dw; - dw = (hcl_lidw_t)qr[j] - qyk; - c2 = (hcl_liw_t)((dw >> HCL_LIW_BITS) & 1); - qr[j] = (hcl_liw_t)dw; + dw = (hak_lidw_t)qr[j] - qyk; + c2 = (hak_liw_t)((dw >> HAK_LIW_BITS) & 1); + qr[j] = (hak_liw_t)dw; - dw = (hcl_lidw_t)b + c2 + c; - c = (hcl_liw_t)(dw >> HCL_LIW_BITS); - b = (hcl_liw_t)dw; + dw = (hak_lidw_t)b + c2 + c; + c = (hak_liw_t)(dw >> HAK_LIW_BITS); + b = (hak_liw_t)dw; - HCL_ASSERT (hcl, c == 0); + HAK_ASSERT (hak, c == 0); } return b; } -static void divide_unsigned_array2 (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_t xs, const hcl_liw_t* y, hcl_oow_t ys, hcl_liw_t* q, hcl_liw_t* r) +static void divide_unsigned_array2 (hak_t* hak, const hak_liw_t* x, hak_oow_t xs, const hak_liw_t* y, hak_oow_t ys, hak_liw_t* q, hak_liw_t* r) { - hcl_oow_t i; - hcl_liw_t d, y1, y2; + hak_oow_t i; + hak_liw_t d, y1, y2; /* the caller must ensure: * - q can hold 'xs + 1' words and r can hold 'ys' words. * - q and r are set to all zeros. */ - HCL_ASSERT (hcl, xs >= ys); + HAK_ASSERT (hak, xs >= ys); if (ys == 1) { /* the divisor has a single word only. perform simple division */ - hcl_lidw_t dw; - hcl_liw_t carry = 0; + hak_lidw_t dw; + hak_liw_t carry = 0; for (i = xs; i > 0; ) { --i; - dw = ((hcl_lidw_t)carry << HCL_LIW_BITS) + x[i]; - q[i] = (hcl_liw_t)(dw / y[0]); - carry = (hcl_liw_t)(dw % y[0]); + dw = ((hak_lidw_t)carry << HAK_LIW_BITS) + x[i]; + q[i] = (hak_liw_t)(dw / y[0]); + carry = (hak_liw_t)(dw % y[0]); } r[0] = carry; return; @@ -1950,12 +1950,12 @@ static void divide_unsigned_array2 (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_t xs y1 = r[ys - 1]; /* highest divisor word */ - /*d = (y1 == HCL_TYPE_MAX(hcl_liw_t)? ((hcl_liw_t)1): ((hcl_liw_t)(((hcl_lidw_t)1 << HCL_LIW_BITS) / (y1 + 1))));*/ - d = (hcl_liw_t)(((hcl_lidw_t)1 << HCL_LIW_BITS) / ((hcl_lidw_t)y1 + 1)); + /*d = (y1 == HAK_TYPE_MAX(hak_liw_t)? ((hak_liw_t)1): ((hak_liw_t)(((hak_lidw_t)1 << HAK_LIW_BITS) / (y1 + 1))));*/ + d = (hak_liw_t)(((hak_lidw_t)1 << HAK_LIW_BITS) / ((hak_lidw_t)y1 + 1)); if (d > 1) { - hcl_lidw_t dw; - hcl_liw_t carry; + hak_lidw_t dw; + hak_liw_t carry; /* shift the divisor such that its high-order bit is on. * shift the dividend the same amount as the previous step */ @@ -1963,18 +1963,18 @@ static void divide_unsigned_array2 (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_t xs /* r = r * d */ for (carry = 0, i = 0; i < ys; i++) { - dw = ((hcl_lidw_t)r[i] * d) + carry; - carry = (hcl_liw_t)(dw >> HCL_LIW_BITS); - r[i] = (hcl_liw_t)dw; + dw = ((hak_lidw_t)r[i] * d) + carry; + carry = (hak_liw_t)(dw >> HAK_LIW_BITS); + r[i] = (hak_liw_t)dw; } - HCL_ASSERT (hcl, carry == 0); + HAK_ASSERT (hak, carry == 0); /* q = q * d */ for (carry = 0, i = 0; i < xs; i++) { - dw = ((hcl_lidw_t)q[i] * d) + carry; - carry = (hcl_liw_t)(dw >> HCL_LIW_BITS); - q[i] = (hcl_liw_t)dw; + dw = ((hak_lidw_t)q[i] * d) + carry; + carry = (hak_liw_t)(dw >> HAK_LIW_BITS); + q[i] = (hak_liw_t)dw; } q[xs] = carry; } @@ -1984,8 +1984,8 @@ static void divide_unsigned_array2 (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_t xs for (i = xs; i >= ys; --i) { - hcl_lidw_t dw, quo, rem; - hcl_liw_t b, xhi, xlo; + hak_lidw_t dw, quo, rem; + hak_liw_t b, xhi, xlo; /* ---------------------------------------------------------- */ /* estimate the quotient. @@ -1995,38 +1995,38 @@ static void divide_unsigned_array2 (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_t xs xlo = q[i - 1]; /* adjust the quotient if over-estimated */ - dw = ((hcl_lidw_t)xhi << HCL_LIW_BITS) + xlo; + dw = ((hak_lidw_t)xhi << HAK_LIW_BITS) + xlo; /* TODO: optimize it with ASM - no seperate / and % */ quo = dw / y1; rem = dw % y1; adjust_quotient: - if (quo > HCL_TYPE_MAX(hcl_liw_t) || (quo * y2) > ((rem << HCL_LIW_BITS) + q[i - 2])) + if (quo > HAK_TYPE_MAX(hak_liw_t) || (quo * y2) > ((rem << HAK_LIW_BITS) + q[i - 2])) { --quo; rem += y1; - if (rem <= HCL_TYPE_MAX(hcl_liw_t)) goto adjust_quotient; + if (rem <= HAK_TYPE_MAX(hak_liw_t)) goto adjust_quotient; } /* ---------------------------------------------------------- */ - b = calculate_remainder(hcl, q, r, quo, i - ys, ys); + b = calculate_remainder(hak, q, r, quo, i - ys, ys); - b = (hcl_liw_t)((((hcl_lidw_t)xhi - b) >> HCL_LIW_BITS) & 1); /* is the sign bit set? */ + b = (hak_liw_t)((((hak_lidw_t)xhi - b) >> HAK_LIW_BITS) & 1); /* is the sign bit set? */ if (b) { /* yes. underflow */ - hcl_lidw_t dw; - hcl_liw_t carry; - hcl_oow_t j, k; + hak_lidw_t dw; + hak_liw_t carry; + hak_oow_t j, k; for (carry = 0, j = i - ys, k = 0; k < ys; j++, k++) { - dw = (hcl_lidw_t)q[j] + r[k] + carry; - carry = (hcl_liw_t)(dw >> HCL_LIW_BITS); - q[j] = (hcl_liw_t)dw; + dw = (hak_lidw_t)q[j] + r[k] + carry; + carry = (hak_liw_t)(dw >> HAK_LIW_BITS); + q[j] = (hak_liw_t)dw; } - HCL_ASSERT (hcl, carry == 1); + HAK_ASSERT (hak, carry == 1); q[i] = quo - 1; } else @@ -2037,15 +2037,15 @@ static void divide_unsigned_array2 (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_t xs if (d > 1) { - hcl_lidw_t dw; - hcl_liw_t carry; + hak_lidw_t dw; + hak_liw_t carry; for (carry = 0, i = ys; i > 0; ) { --i; - dw = ((hcl_lidw_t)carry << HCL_LIW_BITS) + q[i]; + dw = ((hak_lidw_t)carry << HAK_LIW_BITS) + q[i]; /* TODO: optimize it with ASM - no seperate / and % */ - q[i] = (hcl_liw_t)(dw / d); - carry = (hcl_liw_t)(dw % d); + q[i] = (hak_liw_t)(dw / d); + carry = (hak_liw_t)(dw % d); } } @@ -2058,29 +2058,29 @@ static void divide_unsigned_array2 (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_t xs } -static void divide_unsigned_array3 (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_t xs, const hcl_liw_t* y, hcl_oow_t ys, hcl_liw_t* q, hcl_liw_t* r) +static void divide_unsigned_array3 (hak_t* hak, const hak_liw_t* x, hak_oow_t xs, const hak_liw_t* y, hak_oow_t ys, hak_liw_t* q, hak_liw_t* r) { - hcl_oow_t s, i, j, g, k; - hcl_lidw_t dw, qhat, rhat; - hcl_lidi_t di, ci; - hcl_liw_t* qq, y1, y2; + hak_oow_t s, i, j, g, k; + hak_lidw_t dw, qhat, rhat; + hak_lidi_t di, ci; + hak_liw_t* qq, y1, y2; /* the caller must ensure: * - q can hold 'xs + 1' words and r can hold 'ys' words. * - q and r are set to all zeros. */ - HCL_ASSERT (hcl, xs >= ys); + HAK_ASSERT (hak, xs >= ys); if (ys == 1) { /* the divisor has a single word only. perform simple division */ - hcl_lidw_t dw; - hcl_liw_t carry = 0; + hak_lidw_t dw; + hak_liw_t carry = 0; for (i = xs; i > 0; ) { --i; - dw = ((hcl_lidw_t)carry << HCL_LIW_BITS) + x[i]; - q[i] = (hcl_liw_t)(dw / y[0]); - carry = (hcl_liw_t)(dw % y[0]); + dw = ((hak_lidw_t)carry << HAK_LIW_BITS) + x[i]; + q[i] = (hak_liw_t)(dw / y[0]); + carry = (hak_liw_t)(dw % y[0]); } r[0] = carry; return; @@ -2095,38 +2095,38 @@ static void divide_unsigned_array3 (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_t xs #else /* this part requires an extra buffer. proper error handling isn't easy * since the return type of this function is void */ - if (hcl->inttostr.t.capa <= xs) + if (hak->inttostr.t.capa <= xs) { - hcl_liw_t* t; - hcl_oow_t reqcapa; + hak_liw_t* t; + hak_oow_t reqcapa; - reqcapa = HCL_ALIGN_POW2(xs + 1, 32); - t = (hcl_liw_t*)hcl_reallocmem(hcl, hcl->inttostr.t.ptr, reqcapa * HCL_SIZEOF(*t)); + reqcapa = HAK_ALIGN_POW2(xs + 1, 32); + t = (hak_liw_t*)hak_reallocmem(hak, hak->inttostr.t.ptr, reqcapa * HAK_SIZEOF(*t)); /* TODO: TODO: TODO: ERROR HANDLING if (!t) return -1; */ - hcl->inttostr.t.capa = xs + 1; - hcl->inttostr.t.ptr = t; + hak->inttostr.t.capa = xs + 1; + hak->inttostr.t.ptr = t; } - qq = hcl->inttostr.t.ptr; + qq = hak->inttostr.t.ptr; #endif y1 = y[ys - 1]; - /*s = HCL_LIW_BITS - ((y1 == 0)? -1: hcl_get_pos_of_msb_set(y1)) - 1;*/ - HCL_ASSERT (hcl, y1 > 0); /* the highest word can't be non-zero in the context where this function is called */ - s = HCL_LIW_BITS - hcl_get_pos_of_msb_set(y1) - 1; + /*s = HAK_LIW_BITS - ((y1 == 0)? -1: hak_get_pos_of_msb_set(y1)) - 1;*/ + HAK_ASSERT (hak, y1 > 0); /* the highest word can't be non-zero in the context where this function is called */ + s = HAK_LIW_BITS - hak_get_pos_of_msb_set(y1) - 1; for (i = ys; i > 1; ) { --i; - r[i] = (y[i] << s) | ((hcl_lidw_t)y[i - 1] >> (HCL_LIW_BITS - s)); + r[i] = (y[i] << s) | ((hak_lidw_t)y[i - 1] >> (HAK_LIW_BITS - s)); } r[0] = y[0] << s; - qq[xs] = (hcl_lidw_t)x[xs - 1] >> (HCL_LIW_BITS - s); + qq[xs] = (hak_lidw_t)x[xs - 1] >> (HAK_LIW_BITS - s); for (i = xs; i > 1; ) { --i; - qq[i] = (x[i] << s) | ((hcl_lidw_t)x[i - 1] >> (HCL_LIW_BITS - s)); + qq[i] = (x[i] << s) | ((hak_lidw_t)x[i - 1] >> (HAK_LIW_BITS - s)); } qq[0] = x[0] << s; @@ -2138,27 +2138,27 @@ static void divide_unsigned_array3 (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_t xs g = j - ys; /* position where remainder begins in qq */ /* estimate */ - dw = ((hcl_lidw_t)qq[j] << HCL_LIW_BITS) + qq[j - 1]; + dw = ((hak_lidw_t)qq[j] << HAK_LIW_BITS) + qq[j - 1]; qhat = dw / y1; rhat = dw - (qhat * y1); adjust_quotient: - if (qhat > HCL_TYPE_MAX(hcl_liw_t) || (qhat * y2) > ((rhat << HCL_LIW_BITS) + qq[j - 2])) + if (qhat > HAK_TYPE_MAX(hak_liw_t) || (qhat * y2) > ((rhat << HAK_LIW_BITS) + qq[j - 2])) { qhat = qhat - 1; rhat = rhat + y1; - if (rhat <= HCL_TYPE_MAX(hcl_liw_t)) goto adjust_quotient; + if (rhat <= HAK_TYPE_MAX(hak_liw_t)) goto adjust_quotient; } /* multiply and subtract */ for (ci = 0, i = g, k = 0; k < ys; i++, k++) { dw = qhat * r[k]; - di = qq[i] - ci - (dw & HCL_TYPE_MAX(hcl_liw_t)); - ci = (dw >> HCL_LIW_BITS) - (di >> HCL_LIW_BITS); - qq[i] = (hcl_liw_t)di; + di = qq[i] - ci - (dw & HAK_TYPE_MAX(hak_liw_t)); + ci = (dw >> HAK_LIW_BITS) - (di >> HAK_LIW_BITS); + qq[i] = (hak_liw_t)di; } - HCL_ASSERT (hcl, i == j); + HAK_ASSERT (hak, i == j); di = qq[i] - ci; qq[i] = di; @@ -2167,13 +2167,13 @@ static void divide_unsigned_array3 (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_t xs { for (ci = 0, i = g, k = 0; k < ys; i++, k++) { - di = (hcl_lidw_t)qq[i] + r[k] + ci; - ci = (hcl_liw_t)(di >> HCL_LIW_BITS); - qq[i] = (hcl_liw_t)di; + di = (hak_lidw_t)qq[i] + r[k] + ci; + ci = (hak_liw_t)(di >> HAK_LIW_BITS); + qq[i] = (hak_liw_t)di; } - HCL_ASSERT (hcl, i == j); - /*HCL_ASSERT (hcl, ci == 1);*/ + HAK_ASSERT (hak, i == j); + /*HAK_ASSERT (hak, ci == 1);*/ qq[i] += ci; #if defined(SHARED_QQ) @@ -2196,7 +2196,7 @@ static void divide_unsigned_array3 (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_t xs for (i = 0; i < ys - 1; i++) { - r[i] = (qq[i] >> s) | ((hcl_lidw_t)qq[i + 1] << (HCL_LIW_BITS - s)); + r[i] = (qq[i] >> s) | ((hak_lidw_t)qq[i + 1] << (HAK_LIW_BITS - s)); } r[i] = qq[i] >> s; @@ -2209,169 +2209,169 @@ static void divide_unsigned_array3 (hcl_t* hcl, const hcl_liw_t* x, hcl_oow_t xs /* ======================================================================== */ -static hcl_oop_t add_unsigned_integers (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +static hak_oop_t add_unsigned_integers (hak_t* hak, hak_oop_t x, hak_oop_t y) { - hcl_oow_t as, bs, zs; - hcl_oop_t z; + hak_oow_t as, bs, zs; + hak_oop_t z; - as = HCL_OBJ_GET_SIZE(x); - bs = HCL_OBJ_GET_SIZE(y); + as = HAK_OBJ_GET_SIZE(x); + bs = HAK_OBJ_GET_SIZE(y); zs = (as >= bs? as: bs); - if (zs >= HCL_OBJ_SIZE_MAX) + if (zs >= HAK_OBJ_SIZE_MAX) { - hcl_seterrnum (hcl, HCL_EOOMEM); /* TOOD: is it a soft failure or hard failure? */ - return HCL_NULL; + hak_seterrnum (hak, HAK_EOOMEM); /* TOOD: is it a soft failure or hard failure? */ + return HAK_NULL; } zs++; - hcl_pushvolat(hcl, &x); - hcl_pushvolat(hcl, &y); - z = hcl_instantiate(hcl, (hcl_oop_class_t)HCL_OBJ_GET_CLASS(x), HCL_NULL, zs); - hcl_popvolats(hcl, 2); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + hak_pushvolat(hak, &x); + hak_pushvolat(hak, &y); + z = hak_instantiate(hak, (hak_oop_class_t)HAK_OBJ_GET_CLASS(x), HAK_NULL, zs); + hak_popvolats(hak, 2); + if (HAK_UNLIKELY(!z)) return HAK_NULL; add_unsigned_array ( - ((hcl_oop_liword_t)x)->slot, as, - ((hcl_oop_liword_t)y)->slot, bs, - ((hcl_oop_liword_t)z)->slot + ((hak_oop_liword_t)x)->slot, as, + ((hak_oop_liword_t)y)->slot, bs, + ((hak_oop_liword_t)z)->slot ); return z; } -static hcl_oop_t subtract_unsigned_integers (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +static hak_oop_t subtract_unsigned_integers (hak_t* hak, hak_oop_t x, hak_oop_t y) { - hcl_oop_t z; + hak_oop_t z; - HCL_ASSERT (hcl, !is_less_unsigned(x, y)); + HAK_ASSERT (hak, !is_less_unsigned(x, y)); - hcl_pushvolat(hcl, &x); - hcl_pushvolat(hcl, &y); - z = make_pbigint(hcl, HCL_NULL, HCL_OBJ_GET_SIZE(x)); - hcl_popvolats(hcl, 2); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + hak_pushvolat(hak, &x); + hak_pushvolat(hak, &y); + z = make_pbigint(hak, HAK_NULL, HAK_OBJ_GET_SIZE(x)); + hak_popvolats(hak, 2); + if (HAK_UNLIKELY(!z)) return HAK_NULL; - subtract_unsigned_array (hcl, - ((hcl_oop_liword_t)x)->slot, HCL_OBJ_GET_SIZE(x), - ((hcl_oop_liword_t)y)->slot, HCL_OBJ_GET_SIZE(y), - ((hcl_oop_liword_t)z)->slot); + subtract_unsigned_array (hak, + ((hak_oop_liword_t)x)->slot, HAK_OBJ_GET_SIZE(x), + ((hak_oop_liword_t)y)->slot, HAK_OBJ_GET_SIZE(y), + ((hak_oop_liword_t)z)->slot); return z; } -static hcl_oop_t multiply_unsigned_integers (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +static hak_oop_t multiply_unsigned_integers (hak_t* hak, hak_oop_t x, hak_oop_t y) { - hcl_oop_t z; - hcl_oow_t xs, ys; + hak_oop_t z; + hak_oow_t xs, ys; - xs = HCL_OBJ_GET_SIZE(x); - ys = HCL_OBJ_GET_SIZE(y); + xs = HAK_OBJ_GET_SIZE(x); + ys = HAK_OBJ_GET_SIZE(y); - if (ys > HCL_OBJ_SIZE_MAX - xs) + if (ys > HAK_OBJ_SIZE_MAX - xs) { - hcl_seterrnum (hcl, HCL_EOOMEM); /* TOOD: is it a soft failure or hard failure? */ - return HCL_NULL; + hak_seterrnum (hak, HAK_EOOMEM); /* TOOD: is it a soft failure or hard failure? */ + return HAK_NULL; } - hcl_pushvolat(hcl, &x); - hcl_pushvolat(hcl, &y); - z = make_pbigint(hcl, HCL_NULL, xs + ys); - hcl_popvolats(hcl, 2); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + hak_pushvolat(hak, &x); + hak_pushvolat(hak, &y); + z = make_pbigint(hak, HAK_NULL, xs + ys); + hak_popvolats(hak, 2); + if (HAK_UNLIKELY(!z)) return HAK_NULL; -#if defined(HCL_ENABLE_KARATSUBA) - if (CANNOT_KARATSUBA(hcl, xs, ys)) +#if defined(HAK_ENABLE_KARATSUBA) + if (CANNOT_KARATSUBA(hak, xs, ys)) { #endif multiply_unsigned_array ( - ((hcl_oop_liword_t)x)->slot, HCL_OBJ_GET_SIZE(x), - ((hcl_oop_liword_t)y)->slot, HCL_OBJ_GET_SIZE(y), - ((hcl_oop_liword_t)z)->slot); -#if defined(HCL_ENABLE_KARATSUBA) + ((hak_oop_liword_t)x)->slot, HAK_OBJ_GET_SIZE(x), + ((hak_oop_liword_t)y)->slot, HAK_OBJ_GET_SIZE(y), + ((hak_oop_liword_t)z)->slot); +#if defined(HAK_ENABLE_KARATSUBA) } else { if (multiply_unsigned_array_karatsuba ( - hcl, - ((hcl_oop_liword_t)x)->slot, HCL_OBJ_GET_SIZE(x), - ((hcl_oop_liword_t)y)->slot, HCL_OBJ_GET_SIZE(y), - ((hcl_oop_liword_t)z)->slot) == 0) return HCL_NULL; + hak, + ((hak_oop_liword_t)x)->slot, HAK_OBJ_GET_SIZE(x), + ((hak_oop_liword_t)y)->slot, HAK_OBJ_GET_SIZE(y), + ((hak_oop_liword_t)z)->slot) == 0) return HAK_NULL; } #endif return z; } -static hcl_oop_t divide_unsigned_integers (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y, hcl_oop_t* r) +static hak_oop_t divide_unsigned_integers (hak_t* hak, hak_oop_t x, hak_oop_t y, hak_oop_t* r) { - hcl_oop_t qq, rr; + hak_oop_t qq, rr; if (is_less_unsigned(x, y)) { - rr = clone_bigint(hcl, x, HCL_OBJ_GET_SIZE(x)); - if (HCL_UNLIKELY(!rr)) return HCL_NULL; + rr = clone_bigint(hak, x, HAK_OBJ_GET_SIZE(x)); + if (HAK_UNLIKELY(!rr)) return HAK_NULL; - hcl_pushvolat(hcl, &rr); - qq = make_bigint_with_ooi(hcl, 0); /* TODO: inefficient. no need to create a bigint object for zero. */ - hcl_popvolat(hcl); + hak_pushvolat(hak, &rr); + qq = make_bigint_with_ooi(hak, 0); /* TODO: inefficient. no need to create a bigint object for zero. */ + hak_popvolat(hak); - if (HCL_LIKELY(qq)) *r = rr; + if (HAK_LIKELY(qq)) *r = rr; return qq; } else if (is_equal_unsigned(x, y)) { - rr = make_bigint_with_ooi(hcl, 0); /* TODO: inefficient. no need to create a bigint object for zero. */ - if (HCL_UNLIKELY(!rr)) return HCL_NULL; + rr = make_bigint_with_ooi(hak, 0); /* TODO: inefficient. no need to create a bigint object for zero. */ + if (HAK_UNLIKELY(!rr)) return HAK_NULL; - hcl_pushvolat(hcl, &rr); - qq = make_bigint_with_ooi(hcl, 1); /* TODO: inefficient. no need to create a bigint object for zero. */ - hcl_popvolat(hcl); + hak_pushvolat(hak, &rr); + qq = make_bigint_with_ooi(hak, 1); /* TODO: inefficient. no need to create a bigint object for zero. */ + hak_popvolat(hak); - if (HCL_LIKELY(qq)) *r = rr; + if (HAK_LIKELY(qq)) *r = rr; return qq; } /* the caller must ensure that x >= y */ - HCL_ASSERT (hcl, !is_less_unsigned(x, y)); - hcl_pushvolat(hcl, &x); - hcl_pushvolat(hcl, &y); + HAK_ASSERT (hak, !is_less_unsigned(x, y)); + hak_pushvolat(hak, &x); + hak_pushvolat(hak, &y); #define USE_DIVIDE_UNSIGNED_ARRAY2 /*#define USE_DIVIDE_UNSIGNED_ARRAY3*/ #if defined(USE_DIVIDE_UNSIGNED_ARRAY3) - qq = make_pbigint(hcl, HCL_NULL, HCL_OBJ_GET_SIZE(x) + 2); + qq = make_pbigint(hak, HAK_NULL, HAK_OBJ_GET_SIZE(x) + 2); #elif defined(USE_DIVIDE_UNSIGNED_ARRAY2) - qq = make_pbigint(hcl, HCL_NULL, HCL_OBJ_GET_SIZE(x) + 1); + qq = make_pbigint(hak, HAK_NULL, HAK_OBJ_GET_SIZE(x) + 1); #else - qq = make_pbigint(hcl, HCL_NULL, HCL_OBJ_GET_SIZE(x)); + qq = make_pbigint(hak, HAK_NULL, HAK_OBJ_GET_SIZE(x)); #endif - if (HCL_UNLIKELY(!qq)) + if (HAK_UNLIKELY(!qq)) { - hcl_popvolats(hcl, 2); - return HCL_NULL; + hak_popvolats(hak, 2); + return HAK_NULL; } - hcl_pushvolat(hcl, &qq); + hak_pushvolat(hak, &qq); #if defined(USE_DIVIDE_UNSIGNED_ARRAY3) - rr = make_pbigint(hcl, HCL_NULL, HCL_OBJ_GET_SIZE(y)); + rr = make_pbigint(hak, HAK_NULL, HAK_OBJ_GET_SIZE(y)); #elif defined(USE_DIVIDE_UNSIGNED_ARRAY2) - rr = make_pbigint(hcl, HCL_NULL, HCL_OBJ_GET_SIZE(y)); + rr = make_pbigint(hak, HAK_NULL, HAK_OBJ_GET_SIZE(y)); #else - rr = make_pbigint(hcl, HCL_NULL, HCL_OBJ_GET_SIZE(y) + 1); + rr = make_pbigint(hak, HAK_NULL, HAK_OBJ_GET_SIZE(y) + 1); #endif - hcl_popvolats(hcl, 3); - if (HCL_UNLIKELY(!rr)) return HCL_NULL; + hak_popvolats(hak, 3); + if (HAK_UNLIKELY(!rr)) return HAK_NULL; #if defined(USE_DIVIDE_UNSIGNED_ARRAY3) - divide_unsigned_array3 (hcl, + divide_unsigned_array3 (hak, #elif defined(USE_DIVIDE_UNSIGNED_ARRAY2) - divide_unsigned_array2 (hcl, + divide_unsigned_array2 (hak, #else - divide_unsigned_array (hcl, + divide_unsigned_array (hak, #endif - ((hcl_oop_liword_t)x)->slot, HCL_OBJ_GET_SIZE(x), - ((hcl_oop_liword_t)y)->slot, HCL_OBJ_GET_SIZE(y), - ((hcl_oop_liword_t)qq)->slot, ((hcl_oop_liword_t)rr)->slot + ((hak_oop_liword_t)x)->slot, HAK_OBJ_GET_SIZE(x), + ((hak_oop_liword_t)y)->slot, HAK_OBJ_GET_SIZE(y), + ((hak_oop_liword_t)qq)->slot, ((hak_oop_liword_t)rr)->slot ); *r = rr; @@ -2380,73 +2380,73 @@ static hcl_oop_t divide_unsigned_integers (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y, /* ======================================================================== */ -hcl_oop_t hcl_addints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_addints (hak_t* hak, hak_oop_t x, hak_oop_t y) { - hcl_oop_t z; + hak_oop_t z; - if (HCL_OOP_IS_SMOOI(x) && HCL_OOP_IS_SMOOI(y)) + if (HAK_OOP_IS_SMOOI(x) && HAK_OOP_IS_SMOOI(y)) { - hcl_ooi_t i; + hak_ooi_t i; /* no integer overflow/underflow must occur as the possible integer * range is narrowed by the tag bits used */ - HCL_ASSERT (hcl, HCL_SMOOI_MAX + HCL_SMOOI_MAX < HCL_TYPE_MAX(hcl_ooi_t)); - HCL_ASSERT (hcl, HCL_SMOOI_MIN + HCL_SMOOI_MIN > HCL_TYPE_MIN(hcl_ooi_t)); + HAK_ASSERT (hak, HAK_SMOOI_MAX + HAK_SMOOI_MAX < HAK_TYPE_MAX(hak_ooi_t)); + HAK_ASSERT (hak, HAK_SMOOI_MIN + HAK_SMOOI_MIN > HAK_TYPE_MIN(hak_ooi_t)); - i = HCL_OOP_TO_SMOOI(x) + HCL_OOP_TO_SMOOI(y); - if (HCL_IN_SMOOI_RANGE(i)) return HCL_SMOOI_TO_OOP(i); + i = HAK_OOP_TO_SMOOI(x) + HAK_OOP_TO_SMOOI(y); + if (HAK_IN_SMOOI_RANGE(i)) return HAK_SMOOI_TO_OOP(i); - return make_bigint_with_ooi(hcl, i); + return make_bigint_with_ooi(hak, i); } else { - hcl_ooi_t v; + hak_ooi_t v; - if (HCL_OOP_IS_SMOOI(x)) + if (HAK_OOP_IS_SMOOI(x)) { - if (!hcl_isbigint(hcl,y)) goto oops_einval; + if (!hak_isbigint(hak,y)) goto oops_einval; - v = HCL_OOP_TO_SMOOI(x); - if (v == 0) return clone_bigint(hcl, y, HCL_OBJ_GET_SIZE(y)); + v = HAK_OOP_TO_SMOOI(x); + if (v == 0) return clone_bigint(hak, y, HAK_OBJ_GET_SIZE(y)); - hcl_pushvolat(hcl, &y); - x = make_bigint_with_ooi(hcl, v); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!x)) return HCL_NULL; + hak_pushvolat(hak, &y); + x = make_bigint_with_ooi(hak, v); + hak_popvolat(hak); + if (HAK_UNLIKELY(!x)) return HAK_NULL; } - else if (HCL_OOP_IS_SMOOI(y)) + else if (HAK_OOP_IS_SMOOI(y)) { - if (!hcl_isbigint(hcl,x)) goto oops_einval; + if (!hak_isbigint(hak,x)) goto oops_einval; - v = HCL_OOP_TO_SMOOI(y); - if (v == 0) return clone_bigint(hcl, x, HCL_OBJ_GET_SIZE(x)); + v = HAK_OOP_TO_SMOOI(y); + if (v == 0) return clone_bigint(hak, x, HAK_OBJ_GET_SIZE(x)); - hcl_pushvolat(hcl, &x); - y = make_bigint_with_ooi(hcl, v); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!y)) return HCL_NULL; + hak_pushvolat(hak, &x); + y = make_bigint_with_ooi(hak, v); + hak_popvolat(hak); + if (HAK_UNLIKELY(!y)) return HAK_NULL; } else { - if (!hcl_isbigint(hcl,x)) goto oops_einval; - if (!hcl_isbigint(hcl,y)) goto oops_einval; + if (!hak_isbigint(hak,x)) goto oops_einval; + if (!hak_isbigint(hak,y)) goto oops_einval; } - if (HCL_OBJ_GET_CLASS(x) != HCL_OBJ_GET_CLASS(y)) + if (HAK_OBJ_GET_CLASS(x) != HAK_OBJ_GET_CLASS(y)) { - if (HCL_IS_NBIGINT(hcl, x)) + if (HAK_IS_NBIGINT(hak, x)) { /* x is negative, y is positive */ if (is_less_unsigned(x, y)) { - z = subtract_unsigned_integers(hcl, y, x); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + z = subtract_unsigned_integers(hak, y, x); + if (HAK_UNLIKELY(!z)) return HAK_NULL; } else { - z = subtract_unsigned_integers(hcl, x, y); - if (HCL_UNLIKELY(!z)) return HCL_NULL; - HCL_OBJ_SET_CLASS (z, (hcl_oop_t)hcl->c_large_negative_integer); + z = subtract_unsigned_integers(hak, x, y); + if (HAK_UNLIKELY(!z)) return HAK_NULL; + HAK_OBJ_SET_CLASS (z, (hak_oop_t)hak->c_large_negative_integer); } } else @@ -2454,14 +2454,14 @@ hcl_oop_t hcl_addints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) /* x is positive, y is negative */ if (is_less_unsigned(x, y)) { - z = subtract_unsigned_integers(hcl, y, x); - if (HCL_UNLIKELY(!z)) return HCL_NULL; - HCL_OBJ_SET_CLASS (z, (hcl_oop_t)hcl->c_large_negative_integer); + z = subtract_unsigned_integers(hak, y, x); + if (HAK_UNLIKELY(!z)) return HAK_NULL; + HAK_OBJ_SET_CLASS (z, (hak_oop_t)hak->c_large_negative_integer); } else { - z = subtract_unsigned_integers(hcl, x, y); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + z = subtract_unsigned_integers(hak, x, y); + if (HAK_UNLIKELY(!z)) return HAK_NULL; } } } @@ -2469,238 +2469,238 @@ hcl_oop_t hcl_addints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) { int neg; /* both are positive or negative */ - neg = HCL_IS_NBIGINT(hcl, x); - z = add_unsigned_integers(hcl, x, y); - if (HCL_UNLIKELY(!z)) return HCL_NULL; - if (neg) HCL_OBJ_SET_CLASS (z, (hcl_oop_t)hcl->c_large_negative_integer); + neg = HAK_IS_NBIGINT(hak, x); + z = add_unsigned_integers(hak, x, y); + if (HAK_UNLIKELY(!z)) return HAK_NULL; + if (neg) HAK_OBJ_SET_CLASS (z, (hak_oop_t)hak->c_large_negative_integer); } } - return normalize_bigint(hcl, z); + return normalize_bigint(hak, z); oops_einval: - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O, %O", x, y); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O, %O", x, y); + return HAK_NULL; } -hcl_oop_t hcl_subints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_subints (hak_t* hak, hak_oop_t x, hak_oop_t y) { - hcl_oop_t z; + hak_oop_t z; - if (HCL_OOP_IS_SMOOI(x) && HCL_OOP_IS_SMOOI(y)) + if (HAK_OOP_IS_SMOOI(x) && HAK_OOP_IS_SMOOI(y)) { - hcl_ooi_t i; + hak_ooi_t i; /* no integer overflow/underflow must occur as the possible integer * range is narrowed by the tag bits used */ - HCL_ASSERT (hcl, HCL_SMOOI_MAX - HCL_SMOOI_MIN < HCL_TYPE_MAX(hcl_ooi_t)); - HCL_ASSERT (hcl, HCL_SMOOI_MIN - HCL_SMOOI_MAX > HCL_TYPE_MIN(hcl_ooi_t)); + HAK_ASSERT (hak, HAK_SMOOI_MAX - HAK_SMOOI_MIN < HAK_TYPE_MAX(hak_ooi_t)); + HAK_ASSERT (hak, HAK_SMOOI_MIN - HAK_SMOOI_MAX > HAK_TYPE_MIN(hak_ooi_t)); - i = HCL_OOP_TO_SMOOI(x) - HCL_OOP_TO_SMOOI(y); - if (HCL_IN_SMOOI_RANGE(i)) return HCL_SMOOI_TO_OOP(i); + i = HAK_OOP_TO_SMOOI(x) - HAK_OOP_TO_SMOOI(y); + if (HAK_IN_SMOOI_RANGE(i)) return HAK_SMOOI_TO_OOP(i); - return make_bigint_with_ooi(hcl, i); + return make_bigint_with_ooi(hak, i); } else { - hcl_ooi_t v; + hak_ooi_t v; int neg; - if (HCL_OOP_IS_SMOOI(x)) + if (HAK_OOP_IS_SMOOI(x)) { - if (!hcl_isbigint(hcl,y)) goto oops_einval; + if (!hak_isbigint(hak,y)) goto oops_einval; - v = HCL_OOP_TO_SMOOI(x); + v = HAK_OOP_TO_SMOOI(x); if (v == 0) { /* switch the sign to the opposite and return it */ - return clone_bigint_negated(hcl, y, HCL_OBJ_GET_SIZE(y)); + return clone_bigint_negated(hak, y, HAK_OBJ_GET_SIZE(y)); } - hcl_pushvolat(hcl, &y); - x = make_bigint_with_ooi(hcl, v); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!x)) return HCL_NULL; + hak_pushvolat(hak, &y); + x = make_bigint_with_ooi(hak, v); + hak_popvolat(hak); + if (HAK_UNLIKELY(!x)) return HAK_NULL; } - else if (HCL_OOP_IS_SMOOI(y)) + else if (HAK_OOP_IS_SMOOI(y)) { - if (!hcl_isbigint(hcl,x)) goto oops_einval; + if (!hak_isbigint(hak,x)) goto oops_einval; - v = HCL_OOP_TO_SMOOI(y); - if (v == 0) return clone_bigint(hcl, x, HCL_OBJ_GET_SIZE(x)); + v = HAK_OOP_TO_SMOOI(y); + if (v == 0) return clone_bigint(hak, x, HAK_OBJ_GET_SIZE(x)); - hcl_pushvolat(hcl, &x); - y = make_bigint_with_ooi(hcl, v); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!y)) return HCL_NULL; + hak_pushvolat(hak, &x); + y = make_bigint_with_ooi(hak, v); + hak_popvolat(hak); + if (HAK_UNLIKELY(!y)) return HAK_NULL; } else { - if (!hcl_isbigint(hcl,x)) goto oops_einval; - if (!hcl_isbigint(hcl,y)) goto oops_einval; + if (!hak_isbigint(hak,x)) goto oops_einval; + if (!hak_isbigint(hak,y)) goto oops_einval; } - if (HCL_OBJ_GET_CLASS(x) != HCL_OBJ_GET_CLASS(y)) + if (HAK_OBJ_GET_CLASS(x) != HAK_OBJ_GET_CLASS(y)) { - neg = HCL_IS_NBIGINT(hcl, x); - z = add_unsigned_integers(hcl, x, y); - if (HCL_UNLIKELY(!z)) return HCL_NULL; - if (neg) HCL_OBJ_SET_CLASS (z, (hcl_oop_t)hcl->c_large_negative_integer); + neg = HAK_IS_NBIGINT(hak, x); + z = add_unsigned_integers(hak, x, y); + if (HAK_UNLIKELY(!z)) return HAK_NULL; + if (neg) HAK_OBJ_SET_CLASS (z, (hak_oop_t)hak->c_large_negative_integer); } else { /* both are positive or negative */ if (is_less_unsigned(x, y)) { - neg = HCL_IS_NBIGINT(hcl, x); - z = subtract_unsigned_integers(hcl, y, x); - if (HCL_UNLIKELY(!z)) return HCL_NULL; - if (!neg) HCL_OBJ_SET_CLASS (z, (hcl_oop_t)hcl->c_large_negative_integer); + neg = HAK_IS_NBIGINT(hak, x); + z = subtract_unsigned_integers(hak, y, x); + if (HAK_UNLIKELY(!z)) return HAK_NULL; + if (!neg) HAK_OBJ_SET_CLASS (z, (hak_oop_t)hak->c_large_negative_integer); } else { - neg = HCL_IS_NBIGINT(hcl, x); - z = subtract_unsigned_integers(hcl, x, y); /* take x's sign */ - if (HCL_UNLIKELY(!z)) return HCL_NULL; - if (neg) HCL_OBJ_SET_CLASS (z, (hcl_oop_t)hcl->c_large_negative_integer); + neg = HAK_IS_NBIGINT(hak, x); + z = subtract_unsigned_integers(hak, x, y); /* take x's sign */ + if (HAK_UNLIKELY(!z)) return HAK_NULL; + if (neg) HAK_OBJ_SET_CLASS (z, (hak_oop_t)hak->c_large_negative_integer); } } } - return normalize_bigint (hcl, z); + return normalize_bigint (hak, z); oops_einval: - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O, %O", x, y); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O, %O", x, y); + return HAK_NULL; } -hcl_oop_t hcl_mulints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_mulints (hak_t* hak, hak_oop_t x, hak_oop_t y) { - hcl_oop_t z; + hak_oop_t z; - if (HCL_OOP_IS_SMOOI(x) && HCL_OOP_IS_SMOOI(y)) + if (HAK_OOP_IS_SMOOI(x) && HAK_OOP_IS_SMOOI(y)) { - #if (HCL_SIZEOF_INTMAX_T > HCL_SIZEOF_OOI_T) - hcl_intmax_t i; - i = (hcl_intmax_t)HCL_OOP_TO_SMOOI(x) * (hcl_intmax_t)HCL_OOP_TO_SMOOI(y); - if (HCL_IN_SMOOI_RANGE(i)) return HCL_SMOOI_TO_OOP((hcl_ooi_t)i); - return make_bigint_with_intmax(hcl, i); + #if (HAK_SIZEOF_INTMAX_T > HAK_SIZEOF_OOI_T) + hak_intmax_t i; + i = (hak_intmax_t)HAK_OOP_TO_SMOOI(x) * (hak_intmax_t)HAK_OOP_TO_SMOOI(y); + if (HAK_IN_SMOOI_RANGE(i)) return HAK_SMOOI_TO_OOP((hak_ooi_t)i); + return make_bigint_with_intmax(hak, i); #else - hcl_ooi_t i; - hcl_ooi_t xv, yv; + hak_ooi_t i; + hak_ooi_t xv, yv; - xv = HCL_OOP_TO_SMOOI(x); - yv = HCL_OOP_TO_SMOOI(y); - if (shcli_mul_overflow(hcl, xv, yv, &i)) + xv = HAK_OOP_TO_SMOOI(x); + yv = HAK_OOP_TO_SMOOI(y); + if (shaki_mul_overflow(hak, xv, yv, &i)) { /* overflowed - convert x and y normal objects and carry on */ - /* no need to call hcl_pushvolat before creating x because + /* no need to call hak_pushvolat before creating x because * xv and yv contains actual values needed */ - x = make_bigint_with_ooi(hcl, xv); - if (HCL_UNLIKELY(!x)) return HCL_NULL; + x = make_bigint_with_ooi(hak, xv); + if (HAK_UNLIKELY(!x)) return HAK_NULL; - hcl_pushvolat(hcl, &x); /* protect x made above */ - y = make_bigint_with_ooi(hcl, yv); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!y)) return HCL_NULL; + hak_pushvolat(hak, &x); /* protect x made above */ + y = make_bigint_with_ooi(hak, yv); + hak_popvolat(hak); + if (HAK_UNLIKELY(!y)) return HAK_NULL; goto full_multiply; } else { - if (HCL_IN_SMOOI_RANGE(i)) return HCL_SMOOI_TO_OOP(i); - return make_bigint_with_ooi(hcl, i); + if (HAK_IN_SMOOI_RANGE(i)) return HAK_SMOOI_TO_OOP(i); + return make_bigint_with_ooi(hak, i); } #endif } else { - hcl_ooi_t v; + hak_ooi_t v; int neg; - if (HCL_OOP_IS_SMOOI(x)) + if (HAK_OOP_IS_SMOOI(x)) { - if (!hcl_isbigint(hcl,y)) goto oops_einval; + if (!hak_isbigint(hak,y)) goto oops_einval; - v = HCL_OOP_TO_SMOOI(x); + v = HAK_OOP_TO_SMOOI(x); switch (v) { case 0: - return HCL_SMOOI_TO_OOP(0); + return HAK_SMOOI_TO_OOP(0); case 1: - return clone_bigint(hcl, y, HCL_OBJ_GET_SIZE(y)); + return clone_bigint(hak, y, HAK_OBJ_GET_SIZE(y)); case -1: - return clone_bigint_negated(hcl, y, HCL_OBJ_GET_SIZE(y)); + return clone_bigint_negated(hak, y, HAK_OBJ_GET_SIZE(y)); } - hcl_pushvolat(hcl, &y); - x = make_bigint_with_ooi(hcl, v); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!x)) return HCL_NULL; + hak_pushvolat(hak, &y); + x = make_bigint_with_ooi(hak, v); + hak_popvolat(hak); + if (HAK_UNLIKELY(!x)) return HAK_NULL; } - else if (HCL_OOP_IS_SMOOI(y)) + else if (HAK_OOP_IS_SMOOI(y)) { - if (!hcl_isbigint(hcl,x)) goto oops_einval; + if (!hak_isbigint(hak,x)) goto oops_einval; - v = HCL_OOP_TO_SMOOI(y); + v = HAK_OOP_TO_SMOOI(y); switch (v) { case 0: - return HCL_SMOOI_TO_OOP(0); + return HAK_SMOOI_TO_OOP(0); case 1: - return clone_bigint(hcl, x, HCL_OBJ_GET_SIZE(x)); + return clone_bigint(hak, x, HAK_OBJ_GET_SIZE(x)); case -1: - return clone_bigint_negated(hcl, x, HCL_OBJ_GET_SIZE(x)); + return clone_bigint_negated(hak, x, HAK_OBJ_GET_SIZE(x)); } - hcl_pushvolat(hcl, &x); - y = make_bigint_with_ooi (hcl, v); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!y)) return HCL_NULL; + hak_pushvolat(hak, &x); + y = make_bigint_with_ooi (hak, v); + hak_popvolat(hak); + if (HAK_UNLIKELY(!y)) return HAK_NULL; } else { - if (!hcl_isbigint(hcl,x)) goto oops_einval; - if (!hcl_isbigint(hcl,y)) goto oops_einval; + if (!hak_isbigint(hak,x)) goto oops_einval; + if (!hak_isbigint(hak,y)) goto oops_einval; } full_multiply: - neg = (HCL_OBJ_GET_CLASS(x) != HCL_OBJ_GET_CLASS(y)); - z = multiply_unsigned_integers(hcl, x, y); - if (HCL_UNLIKELY(!z)) return HCL_NULL; - if (neg) HCL_OBJ_SET_CLASS (z, (hcl_oop_t)hcl->c_large_negative_integer); + neg = (HAK_OBJ_GET_CLASS(x) != HAK_OBJ_GET_CLASS(y)); + z = multiply_unsigned_integers(hak, x, y); + if (HAK_UNLIKELY(!z)) return HAK_NULL; + if (neg) HAK_OBJ_SET_CLASS (z, (hak_oop_t)hak->c_large_negative_integer); } - return normalize_bigint(hcl, z); + return normalize_bigint(hak, z); oops_einval: - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O, %O", x, y); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O, %O", x, y); + return HAK_NULL; } -hcl_oop_t hcl_divints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y, int modulo, hcl_oop_t* rem) +hak_oop_t hak_divints (hak_t* hak, hak_oop_t x, hak_oop_t y, int modulo, hak_oop_t* rem) { - hcl_oop_t z, r; + hak_oop_t z, r; int x_neg_sign, y_neg_sign; - if (HCL_OOP_IS_SMOOI(x) && HCL_OOP_IS_SMOOI(y)) + if (HAK_OOP_IS_SMOOI(x) && HAK_OOP_IS_SMOOI(y)) { - hcl_ooi_t xv, yv, q, ri; + hak_ooi_t xv, yv, q, ri; - xv = HCL_OOP_TO_SMOOI(x); - yv = HCL_OOP_TO_SMOOI(y); + xv = HAK_OOP_TO_SMOOI(x); + yv = HAK_OOP_TO_SMOOI(y); if (yv == 0) { - hcl_seterrnum (hcl, HCL_EDIVBY0); - return HCL_NULL; + hak_seterrnum (hak, HAK_EDIVBY0); + return HAK_NULL; } if (xv == 0) { - if (rem) *rem = HCL_SMOOI_TO_OOP(0); - return HCL_SMOOI_TO_OOP(0); + if (rem) *rem = HAK_SMOOI_TO_OOP(0); + return HAK_SMOOI_TO_OOP(0); } /* In C89, integer division with a negative number is @@ -2722,7 +2722,7 @@ hcl_oop_t hcl_divints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y, int modulo, hcl_oop */ q = xv / yv; - HCL_ASSERT (hcl, HCL_IN_SMOOI_RANGE(q)); + HAK_ASSERT (hak, HAK_IN_SMOOI_RANGE(q)); ri = xv - yv * q; /* xv % yv; */ if (ri) @@ -2747,7 +2747,7 @@ hcl_oop_t hcl_divints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y, int modulo, hcl_oop * change the sign of r to the divisor's sign */ ri += yv; --q; - HCL_ASSERT (hcl, ri && !IS_SIGN_DIFF(yv, ri)); + HAK_ASSERT (hak, ri && !IS_SIGN_DIFF(yv, ri)); } } else @@ -2771,195 +2771,195 @@ hcl_oop_t hcl_divints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y, int modulo, hcl_oop * architecture. */ ri -= yv; ++q; - HCL_ASSERT (hcl, xv && !IS_SIGN_DIFF(xv, ri)); + HAK_ASSERT (hak, xv && !IS_SIGN_DIFF(xv, ri)); } } } if (rem) { - HCL_ASSERT (hcl, HCL_IN_SMOOI_RANGE(ri)); - *rem = HCL_SMOOI_TO_OOP(ri); + HAK_ASSERT (hak, HAK_IN_SMOOI_RANGE(ri)); + *rem = HAK_SMOOI_TO_OOP(ri); } - return HCL_SMOOI_TO_OOP((hcl_ooi_t)q); + return HAK_SMOOI_TO_OOP((hak_ooi_t)q); } else { - if (HCL_OOP_IS_SMOOI(x)) + if (HAK_OOP_IS_SMOOI(x)) { - hcl_ooi_t xv; + hak_ooi_t xv; - if (!hcl_isbigint(hcl,y)) goto oops_einval; + if (!hak_isbigint(hak,y)) goto oops_einval; /* divide a small integer by a big integer. * the dividend is guaranteed to be greater than the divisor * if both are positive. */ - xv = HCL_OOP_TO_SMOOI(x); + xv = HAK_OOP_TO_SMOOI(x); x_neg_sign = (xv < 0); - y_neg_sign = HCL_IS_NBIGINT(hcl, y); + y_neg_sign = HAK_IS_NBIGINT(hak, y); if (x_neg_sign == y_neg_sign || !modulo) { /* simple. the quotient is zero and the * dividend becomes the remainder as a whole. */ if (rem) *rem = x; - return HCL_SMOOI_TO_OOP(0); + return HAK_SMOOI_TO_OOP(0); } /* carry on to the full bigint division */ - hcl_pushvolat(hcl, &y); - x = make_bigint_with_ooi(hcl, xv); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!x)) return HCL_NULL; + hak_pushvolat(hak, &y); + x = make_bigint_with_ooi(hak, xv); + hak_popvolat(hak); + if (HAK_UNLIKELY(!x)) return HAK_NULL; } - else if (HCL_OOP_IS_SMOOI(y)) + else if (HAK_OOP_IS_SMOOI(y)) { - hcl_ooi_t yv; + hak_ooi_t yv; - if (!hcl_isbigint(hcl,x)) goto oops_einval; + if (!hak_isbigint(hak,x)) goto oops_einval; /* divide a big integer by a small integer. */ - yv = HCL_OOP_TO_SMOOI(y); + yv = HAK_OOP_TO_SMOOI(y); switch (yv) { case 0: - hcl_seterrnum (hcl, HCL_EDIVBY0); - return HCL_NULL; + hak_seterrnum (hak, HAK_EDIVBY0); + return HAK_NULL; case 1: - z = clone_bigint(hcl, x, HCL_OBJ_GET_SIZE(x)); - if (HCL_UNLIKELY(!z)) return HCL_NULL; - if (rem) *rem = HCL_SMOOI_TO_OOP(0); + z = clone_bigint(hak, x, HAK_OBJ_GET_SIZE(x)); + if (HAK_UNLIKELY(!z)) return HAK_NULL; + if (rem) *rem = HAK_SMOOI_TO_OOP(0); return z; case -1: - z = clone_bigint_negated(hcl, x, HCL_OBJ_GET_SIZE(x)); - if (HCL_UNLIKELY(!z)) return HCL_NULL; - if (rem) *rem = HCL_SMOOI_TO_OOP(0); + z = clone_bigint_negated(hak, x, HAK_OBJ_GET_SIZE(x)); + if (HAK_UNLIKELY(!z)) return HAK_NULL; + if (rem) *rem = HAK_SMOOI_TO_OOP(0); return z; default: { - hcl_lidw_t dw; - hcl_liw_t carry = 0; - hcl_liw_t* zw; - hcl_oow_t zs, i; - hcl_ooi_t yv_abs, ri; + hak_lidw_t dw; + hak_liw_t carry = 0; + hak_liw_t* zw; + hak_oow_t zs, i; + hak_ooi_t yv_abs, ri; yv_abs = (yv < 0)? -yv: yv; - #if (HCL_LIW_BITS < HCL_OOI_BITS) - if (yv_abs > HCL_TYPE_MAX(hcl_liw_t)) break; + #if (HAK_LIW_BITS < HAK_OOI_BITS) + if (yv_abs > HAK_TYPE_MAX(hak_liw_t)) break; #endif - x_neg_sign = (HCL_IS_NBIGINT(hcl, x)); + x_neg_sign = (HAK_IS_NBIGINT(hak, x)); y_neg_sign = (yv < 0); - z = clone_bigint_to_positive(hcl, x, HCL_OBJ_GET_SIZE(x)); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + z = clone_bigint_to_positive(hak, x, HAK_OBJ_GET_SIZE(x)); + if (HAK_UNLIKELY(!z)) return HAK_NULL; - zw = ((hcl_oop_liword_t)z)->slot; - zs = HCL_OBJ_GET_SIZE(z); + zw = ((hak_oop_liword_t)z)->slot; + zs = HAK_OBJ_GET_SIZE(z); for (i = zs; i > 0; ) { --i; - dw = ((hcl_lidw_t)carry << HCL_LIW_BITS) + zw[i]; + dw = ((hak_lidw_t)carry << HAK_LIW_BITS) + zw[i]; /* TODO: optimize it with ASM - no seperate / and % */ - zw[i] = (hcl_liw_t)(dw / yv_abs); - carry = (hcl_liw_t)(dw % yv_abs); + zw[i] = (hak_liw_t)(dw / yv_abs); + carry = (hak_liw_t)(dw % yv_abs); } /*if (zw[zs - 1] == 0) zs--;*/ - HCL_ASSERT (hcl, carry <= HCL_SMOOI_MAX); + HAK_ASSERT (hak, carry <= HAK_SMOOI_MAX); ri = carry; if (x_neg_sign) ri = -ri; - z = normalize_bigint(hcl, z); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + z = normalize_bigint(hak, z); + if (HAK_UNLIKELY(!z)) return HAK_NULL; if (x_neg_sign != y_neg_sign) { - HCL_OBJ_SET_CLASS (z, (hcl_oop_t)hcl->c_large_negative_integer); + HAK_OBJ_SET_CLASS (z, (hak_oop_t)hak->c_large_negative_integer); if (ri && modulo) { - z = hcl_subints(hcl, z, HCL_SMOOI_TO_OOP(1)); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + z = hak_subints(hak, z, HAK_SMOOI_TO_OOP(1)); + if (HAK_UNLIKELY(!z)) return HAK_NULL; if (rem) { - hcl_pushvolat(hcl, &z); - r = hcl_addints(hcl, HCL_SMOOI_TO_OOP(ri), HCL_SMOOI_TO_OOP(yv)); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!r)) return HCL_NULL; + hak_pushvolat(hak, &z); + r = hak_addints(hak, HAK_SMOOI_TO_OOP(ri), HAK_SMOOI_TO_OOP(yv)); + hak_popvolat(hak); + if (HAK_UNLIKELY(!r)) return HAK_NULL; *rem = r; } return z; } } - if (rem) *rem = HCL_SMOOI_TO_OOP(ri); + if (rem) *rem = HAK_SMOOI_TO_OOP(ri); return z; } } /* carry on to the full bigint division */ - hcl_pushvolat(hcl, &x); - y = make_bigint_with_ooi(hcl, yv); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!y)) return HCL_NULL; + hak_pushvolat(hak, &x); + y = make_bigint_with_ooi(hak, yv); + hak_popvolat(hak); + if (HAK_UNLIKELY(!y)) return HAK_NULL; } else { - if (!hcl_isbigint(hcl,x)) goto oops_einval; - if (!hcl_isbigint(hcl,y)) goto oops_einval; + if (!hak_isbigint(hak,x)) goto oops_einval; + if (!hak_isbigint(hak,y)) goto oops_einval; } } - x_neg_sign = HCL_IS_NBIGINT(hcl, x); - y_neg_sign = HCL_IS_NBIGINT(hcl, y); + x_neg_sign = HAK_IS_NBIGINT(hak, x); + y_neg_sign = HAK_IS_NBIGINT(hak, y); - hcl_pushvolat(hcl, &x); - hcl_pushvolat(hcl, &y); - z = divide_unsigned_integers(hcl, x, y, &r); - hcl_popvolats(hcl, 2); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + hak_pushvolat(hak, &x); + hak_pushvolat(hak, &y); + z = divide_unsigned_integers(hak, x, y, &r); + hak_popvolats(hak, 2); + if (HAK_UNLIKELY(!z)) return HAK_NULL; if (x_neg_sign) { /* the class on r must be set before normalize_bigint() * because it can get changed to a small integer */ - HCL_OBJ_SET_CLASS (r, (hcl_oop_t)hcl->c_large_negative_integer); + HAK_OBJ_SET_CLASS (r, (hak_oop_t)hak->c_large_negative_integer); } if (x_neg_sign != y_neg_sign) { - HCL_OBJ_SET_CLASS (z, (hcl_oop_t)hcl->c_large_negative_integer); + HAK_OBJ_SET_CLASS (z, (hak_oop_t)hak->c_large_negative_integer); - hcl_pushvolat(hcl, &z); - hcl_pushvolat(hcl, &y); - r = normalize_bigint(hcl, r); - hcl_popvolats(hcl, 2); - if (HCL_UNLIKELY(!r)) return HCL_NULL; + hak_pushvolat(hak, &z); + hak_pushvolat(hak, &y); + r = normalize_bigint(hak, r); + hak_popvolats(hak, 2); + if (HAK_UNLIKELY(!r)) return HAK_NULL; - if (r != HCL_SMOOI_TO_OOP(0) && modulo) + if (r != HAK_SMOOI_TO_OOP(0) && modulo) { if (rem) { - hcl_pushvolat(hcl, &z); - hcl_pushvolat(hcl, &y); - r = hcl_addints(hcl, r, y); - hcl_popvolats(hcl, 2); - if (HCL_UNLIKELY(!r)) return HCL_NULL; + hak_pushvolat(hak, &z); + hak_pushvolat(hak, &y); + r = hak_addints(hak, r, y); + hak_popvolats(hak, 2); + if (HAK_UNLIKELY(!r)) return HAK_NULL; - hcl_pushvolat(hcl, &r); - z = normalize_bigint(hcl, z); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + hak_pushvolat(hak, &r); + z = normalize_bigint(hak, z); + hak_popvolat(hak); + if (HAK_UNLIKELY(!z)) return HAK_NULL; - hcl_pushvolat(hcl, &r); - z = hcl_subints(hcl, z, HCL_SMOOI_TO_OOP(1)); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + hak_pushvolat(hak, &r); + z = hak_subints(hak, z, HAK_SMOOI_TO_OOP(1)); + hak_popvolat(hak); + if (HAK_UNLIKELY(!z)) return HAK_NULL; *rem = r; return z; @@ -2968,175 +2968,175 @@ hcl_oop_t hcl_divints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y, int modulo, hcl_oop { /* remainder is not needed at all */ /* TODO: subtract 1 without normalization??? */ - z = normalize_bigint(hcl, z); - if (HCL_UNLIKELY(!z)) return HCL_NULL; - return hcl_subints(hcl, z, HCL_SMOOI_TO_OOP(1)); + z = normalize_bigint(hak, z); + if (HAK_UNLIKELY(!z)) return HAK_NULL; + return hak_subints(hak, z, HAK_SMOOI_TO_OOP(1)); } } } else { - hcl_pushvolat(hcl, &z); - r = normalize_bigint(hcl, r); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!r)) return HCL_NULL; + hak_pushvolat(hak, &z); + r = normalize_bigint(hak, r); + hak_popvolat(hak); + if (HAK_UNLIKELY(!r)) return HAK_NULL; } - hcl_pushvolat(hcl, &r); - z = normalize_bigint(hcl, z); - hcl_popvolat(hcl); + hak_pushvolat(hak, &r); + z = normalize_bigint(hak, z); + hak_popvolat(hak); if (z && rem) *rem = r; return z; oops_einval: - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O, %O", x, y); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O, %O", x, y); + return HAK_NULL; } -hcl_oop_t hcl_negateint (hcl_t* hcl, hcl_oop_t x) +hak_oop_t hak_negateint (hak_t* hak, hak_oop_t x) { - if (HCL_OOP_IS_SMOOI(x)) + if (HAK_OOP_IS_SMOOI(x)) { - hcl_ooi_t v; - v = HCL_OOP_TO_SMOOI(x); - return HCL_SMOOI_TO_OOP(-v); + hak_ooi_t v; + v = HAK_OOP_TO_SMOOI(x); + return HAK_SMOOI_TO_OOP(-v); } else { - if (!hcl_isbigint(hcl, x)) goto oops_einval; - return clone_bigint_negated (hcl, x, HCL_OBJ_GET_SIZE(x)); + if (!hak_isbigint(hak, x)) goto oops_einval; + return clone_bigint_negated (hak, x, HAK_OBJ_GET_SIZE(x)); } oops_einval: - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O", x); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O", x); + return HAK_NULL; } -hcl_oop_t hcl_bitatint (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_bitatint (hak_t* hak, hak_oop_t x, hak_oop_t y) { /* y is 0-based */ - if (HCL_OOP_IS_SMOOI(x) && HCL_OOP_IS_SMOOI(y)) + if (HAK_OOP_IS_SMOOI(x) && HAK_OOP_IS_SMOOI(y)) { - hcl_ooi_t v1, v2, v3; + hak_ooi_t v1, v2, v3; - v1 = HCL_OOP_TO_SMOOI(x); - v2 = HCL_OOP_TO_SMOOI(y); + v1 = HAK_OOP_TO_SMOOI(x); + v2 = HAK_OOP_TO_SMOOI(y); - if (v2 < 0) return HCL_SMOOI_TO_OOP(0); + if (v2 < 0) return HAK_SMOOI_TO_OOP(0); if (v1 >= 0) { /* the absolute value may be composed of up to - * HCL_SMOOI_BITS - 1 bits as there is a sign bit.*/ - if (v2 >= HCL_SMOOI_BITS - 1) return HCL_SMOOI_TO_OOP(0); - v3 = ((hcl_oow_t)v1 >> v2) & 1; + * HAK_SMOOI_BITS - 1 bits as there is a sign bit.*/ + if (v2 >= HAK_SMOOI_BITS - 1) return HAK_SMOOI_TO_OOP(0); + v3 = ((hak_oow_t)v1 >> v2) & 1; } else { - if (v2 >= HCL_SMOOI_BITS - 1) return HCL_SMOOI_TO_OOP(1); - v3 = ((~(hcl_oow_t)-v1 + 1) >> v2) & 1; + if (v2 >= HAK_SMOOI_BITS - 1) return HAK_SMOOI_TO_OOP(1); + v3 = ((~(hak_oow_t)-v1 + 1) >> v2) & 1; } - return HCL_SMOOI_TO_OOP(v3); + return HAK_SMOOI_TO_OOP(v3); } - else if (HCL_OOP_IS_SMOOI(x)) + else if (HAK_OOP_IS_SMOOI(x)) { - if (!hcl_isbigint(hcl, y)) goto oops_einval; + if (!hak_isbigint(hak, y)) goto oops_einval; - if (HCL_IS_NBIGINT(hcl, y)) return HCL_SMOOI_TO_OOP(0); + if (HAK_IS_NBIGINT(hak, y)) return HAK_SMOOI_TO_OOP(0); - /* y is definitely >= HCL_SMOOI_BITS */ - if (HCL_OOP_TO_SMOOI(x) >= 0) - return HCL_SMOOI_TO_OOP(0); + /* y is definitely >= HAK_SMOOI_BITS */ + if (HAK_OOP_TO_SMOOI(x) >= 0) + return HAK_SMOOI_TO_OOP(0); else - return HCL_SMOOI_TO_OOP(1); + return HAK_SMOOI_TO_OOP(1); } - else if (HCL_OOP_IS_SMOOI(y)) + else if (HAK_OOP_IS_SMOOI(y)) { - hcl_ooi_t v; - hcl_oow_t wp, bp, xs; + hak_ooi_t v; + hak_oow_t wp, bp, xs; - if (!hcl_isbigint(hcl, x)) goto oops_einval; - v = HCL_OOP_TO_SMOOI(y); + if (!hak_isbigint(hak, x)) goto oops_einval; + v = HAK_OOP_TO_SMOOI(y); - if (v < 0) return HCL_SMOOI_TO_OOP(0); - wp = v / HCL_LIW_BITS; - bp = v - (wp * HCL_LIW_BITS); + if (v < 0) return HAK_SMOOI_TO_OOP(0); + wp = v / HAK_LIW_BITS; + bp = v - (wp * HAK_LIW_BITS); - xs = HCL_OBJ_GET_SIZE(x); - if (HCL_IS_PBIGINT(hcl, x)) + xs = HAK_OBJ_GET_SIZE(x); + if (HAK_IS_PBIGINT(hak, x)) { - if (wp >= xs) return HCL_SMOOI_TO_OOP(0); - v = (((hcl_oop_liword_t)x)->slot[wp] >> bp) & 1; + if (wp >= xs) return HAK_SMOOI_TO_OOP(0); + v = (((hak_oop_liword_t)x)->slot[wp] >> bp) & 1; } else { - hcl_lidw_t w, carry; - hcl_oow_t i; + hak_lidw_t w, carry; + hak_oow_t i; - if (wp >= xs) return HCL_SMOOI_TO_OOP(1); + if (wp >= xs) return HAK_SMOOI_TO_OOP(1); carry = 1; for (i = 0; i <= wp; i++) { - w = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)x)->slot[i]) + carry; - carry = w >> HCL_LIW_BITS; + w = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)x)->slot[i]) + carry; + carry = w >> HAK_LIW_BITS; } - v = ((hcl_oow_t)w >> bp) & 1; + v = ((hak_oow_t)w >> bp) & 1; } - return HCL_SMOOI_TO_OOP(v); + return HAK_SMOOI_TO_OOP(v); } else { - #if defined(HCL_LIMIT_OBJ_SIZE) + #if defined(HAK_LIMIT_OBJ_SIZE) /* nothing */ #else - hcl_oow_t w, wp, bp, xs; - hcl_ooi_t v; + hak_oow_t w, wp, bp, xs; + hak_ooi_t v; int sign; #endif - if (!hcl_isbigint(hcl, x) || !hcl_isbigint(hcl, y)) goto oops_einval; + if (!hak_isbigint(hak, x) || !hak_isbigint(hak, y)) goto oops_einval; - #if defined(HCL_LIMIT_OBJ_SIZE) - if (HCL_IS_NBIGINT(hcl, y)) return HCL_SMOOI_TO_OOP(0); + #if defined(HAK_LIMIT_OBJ_SIZE) + if (HAK_IS_NBIGINT(hak, y)) return HAK_SMOOI_TO_OOP(0); - HCL_ASSERT (hcl, HCL_OBJ_SIZE_BITS_MAX <= HCL_TYPE_MAX(hcl_oow_t)); - if (HCL_IS_PBIGINT(hcl, x)) + HAK_ASSERT (hak, HAK_OBJ_SIZE_BITS_MAX <= HAK_TYPE_MAX(hak_oow_t)); + if (HAK_IS_PBIGINT(hak, x)) { - return HCL_SMOOI_TO_OOP(0); + return HAK_SMOOI_TO_OOP(0); } else { - return HCL_SMOOI_TO_OOP(1); + return HAK_SMOOI_TO_OOP(1); } #else - xs = HCL_OBJ_GET_SIZE(x); + xs = HAK_OBJ_GET_SIZE(x); - if (HCL_IS_NBIGINT(hcl, y)) return HCL_SMOOI_TO_OOP(0); + if (HAK_IS_NBIGINT(hak, y)) return HAK_SMOOI_TO_OOP(0); - sign = bigint_to_oow_noseterr(hcl, y, &w); - HCL_ASSERT (hcl, sign >= 0); + sign = bigint_to_oow_noseterr(hak, y, &w); + HAK_ASSERT (hak, sign >= 0); if (sign >= 1) { - wp = w / HCL_LIW_BITS; - bp = w - (wp * HCL_LIW_BITS); + wp = w / HAK_LIW_BITS; + bp = w - (wp * HAK_LIW_BITS); } else { - hcl_oop_t quo, rem; + hak_oop_t quo, rem; - HCL_ASSERT (hcl, sign == 0); + HAK_ASSERT (hak, sign == 0); - hcl_pushvolat(hcl, &x); - quo = hcl_divints(hcl, y, HCL_SMOOI_TO_OOP(HCL_LIW_BITS), 0, &rem); - hcl_popvolat(hcl); - if (!quo) return HCL_NULL; + hak_pushvolat(hak, &x); + quo = hak_divints(hak, y, HAK_SMOOI_TO_OOP(HAK_LIW_BITS), 0, &rem); + hak_popvolat(hak); + if (!quo) return HAK_NULL; - sign = integer_to_oow_noseterr(hcl, quo, &wp); - HCL_ASSERT (hcl, sign >= 0); + sign = integer_to_oow_noseterr(hak, quo, &wp); + HAK_ASSERT (hak, sign >= 0); if (sign == 0) { /* too large. set it to xs so that it gets out of @@ -3144,97 +3144,97 @@ hcl_oop_t hcl_bitatint (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) wp = xs; } - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(rem)); - bp = HCL_OOP_TO_SMOOI(rem); - HCL_ASSERT (hcl, bp >= 0 && bp < HCL_LIW_BITS); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(rem)); + bp = HAK_OOP_TO_SMOOI(rem); + HAK_ASSERT (hak, bp >= 0 && bp < HAK_LIW_BITS); } - if (HCL_IS_PBIGINT(hcl, x)) + if (HAK_IS_PBIGINT(hak, x)) { - if (wp >= xs) return HCL_SMOOI_TO_OOP(0); - v = (((hcl_oop_liword_t)x)->slot[wp] >> bp) & 1; + if (wp >= xs) return HAK_SMOOI_TO_OOP(0); + v = (((hak_oop_liword_t)x)->slot[wp] >> bp) & 1; } else { - hcl_lidw_t w, carry; - hcl_oow_t i; + hak_lidw_t w, carry; + hak_oow_t i; - if (wp >= xs) return HCL_SMOOI_TO_OOP(1); + if (wp >= xs) return HAK_SMOOI_TO_OOP(1); carry = 1; for (i = 0; i <= wp; i++) { - w = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)x)->slot[i]) + carry; - carry = w >> HCL_LIW_BITS; + w = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)x)->slot[i]) + carry; + carry = w >> HAK_LIW_BITS; } - v = ((hcl_oow_t)w >> bp) & 1; + v = ((hak_oow_t)w >> bp) & 1; } - return HCL_SMOOI_TO_OOP(v); + return HAK_SMOOI_TO_OOP(v); #endif } oops_einval: - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O, %O", x, y); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O, %O", x, y); + return HAK_NULL; } -hcl_oop_t hcl_bitandints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_bitandints (hak_t* hak, hak_oop_t x, hak_oop_t y) { - if (HCL_OOP_IS_SMOOI(x) && HCL_OOP_IS_SMOOI(y)) + if (HAK_OOP_IS_SMOOI(x) && HAK_OOP_IS_SMOOI(y)) { - hcl_ooi_t v1, v2, v3; + hak_ooi_t v1, v2, v3; - v1 = HCL_OOP_TO_SMOOI(x); - v2 = HCL_OOP_TO_SMOOI(y); + v1 = HAK_OOP_TO_SMOOI(x); + v2 = HAK_OOP_TO_SMOOI(y); v3 = v1 & v2; - if (HCL_IN_SMOOI_RANGE(v3)) return HCL_SMOOI_TO_OOP(v3); - return make_bigint_with_ooi (hcl, v3); + if (HAK_IN_SMOOI_RANGE(v3)) return HAK_SMOOI_TO_OOP(v3); + return make_bigint_with_ooi (hak, v3); } - else if (HCL_OOP_IS_SMOOI(x)) + else if (HAK_OOP_IS_SMOOI(x)) { - hcl_ooi_t v; + hak_ooi_t v; - if (!hcl_isbigint(hcl, y)) goto oops_einval; + if (!hak_isbigint(hak, y)) goto oops_einval; - v = HCL_OOP_TO_SMOOI(x); - if (v == 0) return HCL_SMOOI_TO_OOP(0); + v = HAK_OOP_TO_SMOOI(x); + if (v == 0) return HAK_SMOOI_TO_OOP(0); - hcl_pushvolat(hcl, &y); - x = make_bigint_with_ooi(hcl, v); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!x)) return HCL_NULL; + hak_pushvolat(hak, &y); + x = make_bigint_with_ooi(hak, v); + hak_popvolat(hak); + if (HAK_UNLIKELY(!x)) return HAK_NULL; goto bigint_and_bigint; } - else if (HCL_OOP_IS_SMOOI(y)) + else if (HAK_OOP_IS_SMOOI(y)) { - hcl_ooi_t v; + hak_ooi_t v; - if (!hcl_isbigint(hcl, x)) goto oops_einval; + if (!hak_isbigint(hak, x)) goto oops_einval; - v = HCL_OOP_TO_SMOOI(y); - if (v == 0) return HCL_SMOOI_TO_OOP(0); + v = HAK_OOP_TO_SMOOI(y); + if (v == 0) return HAK_SMOOI_TO_OOP(0); - hcl_pushvolat(hcl, &x); - y = make_bigint_with_ooi (hcl, v); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!x)) return HCL_NULL; + hak_pushvolat(hak, &x); + y = make_bigint_with_ooi (hak, v); + hak_popvolat(hak); + if (HAK_UNLIKELY(!x)) return HAK_NULL; goto bigint_and_bigint; } else { - hcl_oop_t z; - hcl_oow_t i, xs, ys, zs, zalloc; + hak_oop_t z; + hak_oow_t i, xs, ys, zs, zalloc; int negx, negy; - if (!hcl_isbigint(hcl,x) || !hcl_isbigint(hcl, y)) goto oops_einval; + if (!hak_isbigint(hak,x) || !hak_isbigint(hak, y)) goto oops_einval; bigint_and_bigint: - xs = HCL_OBJ_GET_SIZE(x); - ys = HCL_OBJ_GET_SIZE(y); + xs = HAK_OBJ_GET_SIZE(x); + ys = HAK_OBJ_GET_SIZE(y); if (xs < ys) { @@ -3247,8 +3247,8 @@ hcl_oop_t hcl_bitandints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) xs = zs; } - negx = HCL_IS_NBIGINT(hcl, x); - negy = HCL_IS_NBIGINT(hcl, y); + negx = HAK_IS_NBIGINT(hak, x); + negy = HAK_IS_NBIGINT(hak, y); if (negx && negy) { @@ -3271,67 +3271,67 @@ hcl_oop_t hcl_bitandints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) zs = ys; } - hcl_pushvolat(hcl, &x); - hcl_pushvolat(hcl, &y); - z = make_pbigint(hcl, HCL_NULL, zalloc); - hcl_popvolats(hcl, 2); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + hak_pushvolat(hak, &x); + hak_pushvolat(hak, &y); + z = make_pbigint(hak, HAK_NULL, zalloc); + hak_popvolats(hak, 2); + if (HAK_UNLIKELY(!z)) return HAK_NULL; if (negx && negy) { /* both are negative */ - hcl_lidw_t w[2]; - hcl_lidw_t carry[2]; + hak_lidw_t w[2]; + hak_lidw_t carry[2]; carry[0] = 1; carry[1] = 1; /* 2's complement on both x and y and perform bitwise-and */ for (i = 0; i < ys; i++) { - w[0] = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)x)->slot[i]) + carry[0]; - carry[0] = w[0] >> HCL_LIW_BITS; + w[0] = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)x)->slot[i]) + carry[0]; + carry[0] = w[0] >> HAK_LIW_BITS; - w[1] = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)y)->slot[i]) + carry[1]; - carry[1] = w[1] >> HCL_LIW_BITS; + w[1] = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)y)->slot[i]) + carry[1]; + carry[1] = w[1] >> HAK_LIW_BITS; - ((hcl_oop_liword_t)z)->slot[i] = (hcl_liw_t)w[0] & (hcl_liw_t)w[1]; + ((hak_oop_liword_t)z)->slot[i] = (hak_liw_t)w[0] & (hak_liw_t)w[1]; } - HCL_ASSERT (hcl, carry[1] == 0); + HAK_ASSERT (hak, carry[1] == 0); /* 2's complement on the remaining part of x. the lacking part * in y is treated as if they are all 1s. */ for (; i < xs; i++) { - w[0] = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)x)->slot[i]) + carry[0]; - carry[0] = w[0] >> HCL_LIW_BITS; - ((hcl_oop_liword_t)z)->slot[i] = (hcl_liw_t)w[0]; + w[0] = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)x)->slot[i]) + carry[0]; + carry[0] = w[0] >> HAK_LIW_BITS; + ((hak_oop_liword_t)z)->slot[i] = (hak_liw_t)w[0]; } - HCL_ASSERT (hcl, carry[0] == 0); + HAK_ASSERT (hak, carry[0] == 0); /* 2's complement on the final result */ - ((hcl_oop_liword_t)z)->slot[zs] = ~(hcl_liw_t)0; + ((hak_oop_liword_t)z)->slot[zs] = ~(hak_liw_t)0; carry[0] = 1; for (i = 0; i <= zs; i++) { - w[0] = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)z)->slot[i]) + carry[0]; - carry[0] = w[0] >> HCL_LIW_BITS; - ((hcl_oop_liword_t)z)->slot[i] = (hcl_liw_t)w[0]; + w[0] = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)z)->slot[i]) + carry[0]; + carry[0] = w[0] >> HAK_LIW_BITS; + ((hak_oop_liword_t)z)->slot[i] = (hak_liw_t)w[0]; } - HCL_ASSERT (hcl, carry[0] == 0); + HAK_ASSERT (hak, carry[0] == 0); - HCL_OBJ_SET_CLASS (z, (hcl_oop_t)hcl->c_large_negative_integer); + HAK_OBJ_SET_CLASS (z, (hak_oop_t)hak->c_large_negative_integer); } else if (negx) { /* x is negative, y is positive */ - hcl_lidw_t w, carry; + hak_lidw_t w, carry; carry = 1; for (i = 0; i < ys; i++) { - w = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)x)->slot[i]) + carry; - carry = w >> HCL_LIW_BITS; - ((hcl_oop_liword_t)z)->slot[i] = (hcl_liw_t)w & ((hcl_oop_liword_t)y)->slot[i]; + w = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)x)->slot[i]) + carry; + carry = w >> HAK_LIW_BITS; + ((hak_oop_liword_t)z)->slot[i] = (hak_liw_t)w & ((hak_oop_liword_t)y)->slot[i]; } /* the lacking part in y is all 0's. the remaining part in x is @@ -3341,17 +3341,17 @@ hcl_oop_t hcl_bitandints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) else if (negy) { /* x is positive, y is negative */ - hcl_lidw_t w, carry; + hak_lidw_t w, carry; /* x & 2's complement on y up to ys */ carry = 1; for (i = 0; i < ys; i++) { - w = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)y)->slot[i]) + carry; - carry = w >> HCL_LIW_BITS; - ((hcl_oop_liword_t)z)->slot[i] = ((hcl_oop_liword_t)x)->slot[i] & (hcl_liw_t)w; + w = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)y)->slot[i]) + carry; + carry = w >> HAK_LIW_BITS; + ((hak_oop_liword_t)z)->slot[i] = ((hak_oop_liword_t)x)->slot[i] & (hak_liw_t)w; } - HCL_ASSERT (hcl, carry == 0); + HAK_ASSERT (hak, carry == 0); /* handle the longer part in x than y * @@ -3372,7 +3372,7 @@ hcl_oop_t hcl_bitandints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) */ for (; i < xs; i++) { - ((hcl_oop_liword_t)z)->slot[i] = ((hcl_oop_liword_t)x)->slot[i]; + ((hak_oop_liword_t)z)->slot[i] = ((hak_oop_liword_t)x)->slot[i]; } } else @@ -3380,74 +3380,74 @@ hcl_oop_t hcl_bitandints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) /* both are positive */ for (i = 0; i < ys; i++) { - ((hcl_oop_liword_t)z)->slot[i] = ((hcl_oop_liword_t)x)->slot[i] & ((hcl_oop_liword_t)y)->slot[i]; + ((hak_oop_liword_t)z)->slot[i] = ((hak_oop_liword_t)x)->slot[i] & ((hak_oop_liword_t)y)->slot[i]; } } - return normalize_bigint(hcl, z); + return normalize_bigint(hak, z); } oops_einval: - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O, %O", x, y); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O, %O", x, y); + return HAK_NULL; } -hcl_oop_t hcl_bitorints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_bitorints (hak_t* hak, hak_oop_t x, hak_oop_t y) { - if (HCL_OOP_IS_SMOOI(x) && HCL_OOP_IS_SMOOI(y)) + if (HAK_OOP_IS_SMOOI(x) && HAK_OOP_IS_SMOOI(y)) { - hcl_ooi_t v1, v2, v3; + hak_ooi_t v1, v2, v3; - v1 = HCL_OOP_TO_SMOOI(x); - v2 = HCL_OOP_TO_SMOOI(y); + v1 = HAK_OOP_TO_SMOOI(x); + v2 = HAK_OOP_TO_SMOOI(y); v3 = v1 | v2; - if (HCL_IN_SMOOI_RANGE(v3)) return HCL_SMOOI_TO_OOP(v3); - return make_bigint_with_ooi(hcl, v3); + if (HAK_IN_SMOOI_RANGE(v3)) return HAK_SMOOI_TO_OOP(v3); + return make_bigint_with_ooi(hak, v3); } - else if (HCL_OOP_IS_SMOOI(x)) + else if (HAK_OOP_IS_SMOOI(x)) { - hcl_ooi_t v; + hak_ooi_t v; - if (!hcl_isbigint(hcl, y)) goto oops_einval; + if (!hak_isbigint(hak, y)) goto oops_einval; - v = HCL_OOP_TO_SMOOI(x); - if (v == 0) return clone_bigint(hcl, y, HCL_OBJ_GET_SIZE(y)); + v = HAK_OOP_TO_SMOOI(x); + if (v == 0) return clone_bigint(hak, y, HAK_OBJ_GET_SIZE(y)); - hcl_pushvolat(hcl, &y); - x = make_bigint_with_ooi(hcl, v); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!x)) return HCL_NULL; + hak_pushvolat(hak, &y); + x = make_bigint_with_ooi(hak, v); + hak_popvolat(hak); + if (HAK_UNLIKELY(!x)) return HAK_NULL; goto bigint_and_bigint; } - else if (HCL_OOP_IS_SMOOI(y)) + else if (HAK_OOP_IS_SMOOI(y)) { - hcl_ooi_t v; + hak_ooi_t v; - if (!hcl_isbigint(hcl, x)) goto oops_einval; + if (!hak_isbigint(hak, x)) goto oops_einval; - v = HCL_OOP_TO_SMOOI(y); - if (v == 0) return clone_bigint(hcl, x, HCL_OBJ_GET_SIZE(x)); + v = HAK_OOP_TO_SMOOI(y); + if (v == 0) return clone_bigint(hak, x, HAK_OBJ_GET_SIZE(x)); - hcl_pushvolat(hcl, &x); - y = make_bigint_with_ooi(hcl, v); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!x)) return HCL_NULL; + hak_pushvolat(hak, &x); + y = make_bigint_with_ooi(hak, v); + hak_popvolat(hak); + if (HAK_UNLIKELY(!x)) return HAK_NULL; goto bigint_and_bigint; } else { - hcl_oop_t z; - hcl_oow_t i, xs, ys, zs, zalloc; + hak_oop_t z; + hak_oow_t i, xs, ys, zs, zalloc; int negx, negy; - if (!hcl_isbigint(hcl,x) || !hcl_isbigint(hcl, y)) goto oops_einval; + if (!hak_isbigint(hak,x) || !hak_isbigint(hak, y)) goto oops_einval; bigint_and_bigint: - xs = HCL_OBJ_GET_SIZE(x); - ys = HCL_OBJ_GET_SIZE(y); + xs = HAK_OBJ_GET_SIZE(x); + ys = HAK_OBJ_GET_SIZE(y); if (xs < ys) { @@ -3460,8 +3460,8 @@ hcl_oop_t hcl_bitorints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) xs = zs; } - negx = HCL_IS_NBIGINT(hcl, x); - negy = HCL_IS_NBIGINT(hcl, y); + negx = HAK_IS_NBIGINT(hak, x); + negy = HAK_IS_NBIGINT(hak, y); if (negx && negy) { @@ -3487,36 +3487,36 @@ hcl_oop_t hcl_bitorints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) if (zalloc < zs) { /* overflow in zalloc calculation above */ - hcl_seterrnum (hcl, HCL_EOOMEM); /* TODO: is it a soft failure or hard failure? */ - return HCL_NULL; + hak_seterrnum (hak, HAK_EOOMEM); /* TODO: is it a soft failure or hard failure? */ + return HAK_NULL; } - hcl_pushvolat(hcl, &x); - hcl_pushvolat(hcl, &y); - z = make_pbigint(hcl, HCL_NULL, zalloc); - hcl_popvolats(hcl, 2); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + hak_pushvolat(hak, &x); + hak_pushvolat(hak, &y); + z = make_pbigint(hak, HAK_NULL, zalloc); + hak_popvolats(hak, 2); + if (HAK_UNLIKELY(!z)) return HAK_NULL; if (negx && negy) { /* both are negative */ - hcl_lidw_t w[2]; - hcl_lidw_t carry[2]; + hak_lidw_t w[2]; + hak_lidw_t carry[2]; carry[0] = 1; carry[1] = 1; /* 2's complement on both x and y and perform bitwise-and */ for (i = 0; i < ys; i++) { - w[0] = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)x)->slot[i]) + carry[0]; - carry[0] = w[0] >> HCL_LIW_BITS; + w[0] = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)x)->slot[i]) + carry[0]; + carry[0] = w[0] >> HAK_LIW_BITS; - w[1] = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)y)->slot[i]) + carry[1]; - carry[1] = w[1] >> HCL_LIW_BITS; + w[1] = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)y)->slot[i]) + carry[1]; + carry[1] = w[1] >> HAK_LIW_BITS; - ((hcl_oop_liword_t)z)->slot[i] = (hcl_liw_t)w[0] | (hcl_liw_t)w[1]; + ((hak_oop_liword_t)z)->slot[i] = (hak_liw_t)w[0] | (hak_liw_t)w[1]; } - HCL_ASSERT (hcl, carry[1] == 0); + HAK_ASSERT (hak, carry[1] == 0); /* do nothing about the extra part in x and the lacking part * in y for the reason shown in [NOTE] in the 'else if' block @@ -3524,55 +3524,55 @@ hcl_oop_t hcl_bitorints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) adjust_to_negative: /* 2's complement on the final result */ - ((hcl_oop_liword_t)z)->slot[zs] = ~(hcl_liw_t)0; + ((hak_oop_liword_t)z)->slot[zs] = ~(hak_liw_t)0; carry[0] = 1; for (i = 0; i <= zs; i++) { - w[0] = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)z)->slot[i]) + carry[0]; - carry[0] = w[0] >> HCL_LIW_BITS; - ((hcl_oop_liword_t)z)->slot[i] = (hcl_liw_t)w[0]; + w[0] = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)z)->slot[i]) + carry[0]; + carry[0] = w[0] >> HAK_LIW_BITS; + ((hak_oop_liword_t)z)->slot[i] = (hak_liw_t)w[0]; } - HCL_ASSERT (hcl, carry[0] == 0); + HAK_ASSERT (hak, carry[0] == 0); - HCL_OBJ_SET_CLASS (z, (hcl_oop_t)hcl->c_large_negative_integer); + HAK_OBJ_SET_CLASS (z, (hak_oop_t)hak->c_large_negative_integer); } else if (negx) { /* x is negative, y is positive */ - hcl_lidw_t w, carry; + hak_lidw_t w, carry; carry = 1; for (i = 0; i < ys; i++) { - w = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)x)->slot[i]) + carry; - carry = w >> HCL_LIW_BITS; - ((hcl_oop_liword_t)z)->slot[i] = (hcl_liw_t)w | ((hcl_oop_liword_t)y)->slot[i]; + w = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)x)->slot[i]) + carry; + carry = w >> HAK_LIW_BITS; + ((hak_oop_liword_t)z)->slot[i] = (hak_liw_t)w | ((hak_oop_liword_t)y)->slot[i]; } for (; i < xs; i++) { - w = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)x)->slot[i]) + carry; - carry = w >> HCL_LIW_BITS; - ((hcl_oop_liword_t)z)->slot[i] = (hcl_liw_t)w; + w = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)x)->slot[i]) + carry; + carry = w >> HAK_LIW_BITS; + ((hak_oop_liword_t)z)->slot[i] = (hak_liw_t)w; } - HCL_ASSERT (hcl, carry == 0); + HAK_ASSERT (hak, carry == 0); goto adjust_to_negative; } else if (negy) { /* x is positive, y is negative */ - hcl_lidw_t w, carry; + hak_lidw_t w, carry; /* x & 2's complement on y up to ys */ carry = 1; for (i = 0; i < ys; i++) { - w = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)y)->slot[i]) + carry; - carry = w >> HCL_LIW_BITS; - ((hcl_oop_liword_t)z)->slot[i] = ((hcl_oop_liword_t)x)->slot[i] | (hcl_liw_t)w; + w = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)y)->slot[i]) + carry; + carry = w >> HAK_LIW_BITS; + ((hak_oop_liword_t)z)->slot[i] = ((hak_oop_liword_t)x)->slot[i] | (hak_liw_t)w; } - HCL_ASSERT (hcl, carry == 0); + HAK_ASSERT (hak, carry == 0); /* [NOTE] * in theory, the lacking part in ys is all 1s when y is @@ -3583,7 +3583,7 @@ hcl_oop_t hcl_bitorints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) * redundant. for (; i < xs; i++) { - ((hcl_oop_liword_t)z)->slot[i] = ~(hcl_liw_t)0; + ((hak_oop_liword_t)z)->slot[i] = ~(hak_liw_t)0; } */ goto adjust_to_negative; @@ -3593,79 +3593,79 @@ hcl_oop_t hcl_bitorints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) /* both are positive */ for (i = 0; i < ys; i++) { - ((hcl_oop_liword_t)z)->slot[i] = ((hcl_oop_liword_t)x)->slot[i] | ((hcl_oop_liword_t)y)->slot[i]; + ((hak_oop_liword_t)z)->slot[i] = ((hak_oop_liword_t)x)->slot[i] | ((hak_oop_liword_t)y)->slot[i]; } for (; i < xs; i++) { - ((hcl_oop_liword_t)z)->slot[i] = ((hcl_oop_liword_t)x)->slot[i]; + ((hak_oop_liword_t)z)->slot[i] = ((hak_oop_liword_t)x)->slot[i]; } } - return normalize_bigint(hcl, z); + return normalize_bigint(hak, z); } oops_einval: - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O, %O", x, y); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O, %O", x, y); + return HAK_NULL; } -hcl_oop_t hcl_bitxorints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_bitxorints (hak_t* hak, hak_oop_t x, hak_oop_t y) { - if (HCL_OOP_IS_SMOOI(x) && HCL_OOP_IS_SMOOI(y)) + if (HAK_OOP_IS_SMOOI(x) && HAK_OOP_IS_SMOOI(y)) { - hcl_ooi_t v1, v2, v3; + hak_ooi_t v1, v2, v3; - v1 = HCL_OOP_TO_SMOOI(x); - v2 = HCL_OOP_TO_SMOOI(y); + v1 = HAK_OOP_TO_SMOOI(x); + v2 = HAK_OOP_TO_SMOOI(y); v3 = v1 ^ v2; - if (HCL_IN_SMOOI_RANGE(v3)) return HCL_SMOOI_TO_OOP(v3); - return make_bigint_with_ooi (hcl, v3); + if (HAK_IN_SMOOI_RANGE(v3)) return HAK_SMOOI_TO_OOP(v3); + return make_bigint_with_ooi (hak, v3); } - else if (HCL_OOP_IS_SMOOI(x)) + else if (HAK_OOP_IS_SMOOI(x)) { - hcl_ooi_t v; + hak_ooi_t v; - if (!hcl_isbigint(hcl, y)) goto oops_einval; + if (!hak_isbigint(hak, y)) goto oops_einval; - v = HCL_OOP_TO_SMOOI(x); - if (v == 0) return clone_bigint(hcl, y, HCL_OBJ_GET_SIZE(y)); + v = HAK_OOP_TO_SMOOI(x); + if (v == 0) return clone_bigint(hak, y, HAK_OBJ_GET_SIZE(y)); - hcl_pushvolat(hcl, &y); - x = make_bigint_with_ooi (hcl, v); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!x)) return HCL_NULL; + hak_pushvolat(hak, &y); + x = make_bigint_with_ooi (hak, v); + hak_popvolat(hak); + if (HAK_UNLIKELY(!x)) return HAK_NULL; goto bigint_and_bigint; } - else if (HCL_OOP_IS_SMOOI(y)) + else if (HAK_OOP_IS_SMOOI(y)) { - hcl_ooi_t v; + hak_ooi_t v; - if (!hcl_isbigint(hcl, x)) goto oops_einval; + if (!hak_isbigint(hak, x)) goto oops_einval; - v = HCL_OOP_TO_SMOOI(y); - if (v == 0) return clone_bigint(hcl, x, HCL_OBJ_GET_SIZE(x)); + v = HAK_OOP_TO_SMOOI(y); + if (v == 0) return clone_bigint(hak, x, HAK_OBJ_GET_SIZE(x)); - hcl_pushvolat(hcl, &x); - y = make_bigint_with_ooi (hcl, v); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!x)) return HCL_NULL; + hak_pushvolat(hak, &x); + y = make_bigint_with_ooi (hak, v); + hak_popvolat(hak); + if (HAK_UNLIKELY(!x)) return HAK_NULL; goto bigint_and_bigint; } else { - hcl_oop_t z; - hcl_oow_t i, xs, ys, zs, zalloc; + hak_oop_t z; + hak_oow_t i, xs, ys, zs, zalloc; int negx, negy; - if (!hcl_isbigint(hcl,x) || !hcl_isbigint(hcl, y)) goto oops_einval; + if (!hak_isbigint(hak,x) || !hak_isbigint(hak, y)) goto oops_einval; bigint_and_bigint: - xs = HCL_OBJ_GET_SIZE(x); - ys = HCL_OBJ_GET_SIZE(y); + xs = HAK_OBJ_GET_SIZE(x); + ys = HAK_OBJ_GET_SIZE(y); if (xs < ys) { @@ -3678,8 +3678,8 @@ hcl_oop_t hcl_bitxorints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) xs = zs; } - negx = HCL_IS_NBIGINT(hcl, x); - negy = HCL_IS_NBIGINT(hcl, y); + negx = HAK_IS_NBIGINT(hak, x); + negy = HAK_IS_NBIGINT(hak, y); if (negx && negy) { @@ -3705,101 +3705,101 @@ hcl_oop_t hcl_bitxorints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) if (zalloc < zs) { /* overflow in zalloc calculation above */ - hcl_seterrnum (hcl, HCL_EOOMEM); /* TODO: is it a soft failure or hard failure? */ - return HCL_NULL; + hak_seterrnum (hak, HAK_EOOMEM); /* TODO: is it a soft failure or hard failure? */ + return HAK_NULL; } - hcl_pushvolat(hcl, &x); - hcl_pushvolat(hcl, &y); - z = make_pbigint(hcl, HCL_NULL, zalloc); - hcl_popvolats(hcl, 2); - if (!z) return HCL_NULL; + hak_pushvolat(hak, &x); + hak_pushvolat(hak, &y); + z = make_pbigint(hak, HAK_NULL, zalloc); + hak_popvolats(hak, 2); + if (!z) return HAK_NULL; if (negx && negy) { /* both are negative */ - hcl_lidw_t w[2]; - hcl_lidw_t carry[2]; + hak_lidw_t w[2]; + hak_lidw_t carry[2]; carry[0] = 1; carry[1] = 1; /* 2's complement on both x and y and perform bitwise-and */ for (i = 0; i < ys; i++) { - w[0] = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)x)->slot[i]) + carry[0]; - carry[0] = w[0] >> HCL_LIW_BITS; + w[0] = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)x)->slot[i]) + carry[0]; + carry[0] = w[0] >> HAK_LIW_BITS; - w[1] = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)y)->slot[i]) + carry[1]; - carry[1] = w[1] >> HCL_LIW_BITS; + w[1] = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)y)->slot[i]) + carry[1]; + carry[1] = w[1] >> HAK_LIW_BITS; - ((hcl_oop_liword_t)z)->slot[i] = (hcl_liw_t)w[0] ^ (hcl_liw_t)w[1]; + ((hak_oop_liword_t)z)->slot[i] = (hak_liw_t)w[0] ^ (hak_liw_t)w[1]; } - HCL_ASSERT (hcl, carry[1] == 0); + HAK_ASSERT (hak, carry[1] == 0); /* treat the lacking part in y as all 1s */ for (; i < xs; i++) { - w[0] = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)x)->slot[i]) + carry[0]; - carry[0] = w[0] >> HCL_LIW_BITS; - ((hcl_oop_liword_t)z)->slot[i] = (hcl_liw_t)w[0] ^ (~(hcl_liw_t)0); + w[0] = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)x)->slot[i]) + carry[0]; + carry[0] = w[0] >> HAK_LIW_BITS; + ((hak_oop_liword_t)z)->slot[i] = (hak_liw_t)w[0] ^ (~(hak_liw_t)0); } - HCL_ASSERT (hcl, carry[0] == 0); + HAK_ASSERT (hak, carry[0] == 0); } else if (negx) { /* x is negative, y is positive */ - hcl_lidw_t w, carry; + hak_lidw_t w, carry; carry = 1; for (i = 0; i < ys; i++) { - w = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)x)->slot[i]) + carry; - carry = w >> HCL_LIW_BITS; - ((hcl_oop_liword_t)z)->slot[i] = (hcl_liw_t)w ^ ((hcl_oop_liword_t)y)->slot[i]; + w = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)x)->slot[i]) + carry; + carry = w >> HAK_LIW_BITS; + ((hak_oop_liword_t)z)->slot[i] = (hak_liw_t)w ^ ((hak_oop_liword_t)y)->slot[i]; } /* treat the lacking part in y as all 0s */ for (; i < xs; i++) { - w = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)x)->slot[i]) + carry; - carry = w >> HCL_LIW_BITS; - ((hcl_oop_liword_t)z)->slot[i] = (hcl_liw_t)w; + w = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)x)->slot[i]) + carry; + carry = w >> HAK_LIW_BITS; + ((hak_oop_liword_t)z)->slot[i] = (hak_liw_t)w; } - HCL_ASSERT (hcl, carry == 0); + HAK_ASSERT (hak, carry == 0); adjust_to_negative: /* 2's complement on the final result */ - ((hcl_oop_liword_t)z)->slot[zs] = ~(hcl_liw_t)0; + ((hak_oop_liword_t)z)->slot[zs] = ~(hak_liw_t)0; carry = 1; for (i = 0; i <= zs; i++) { - w = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)z)->slot[i]) + carry; - carry = w >> HCL_LIW_BITS; - ((hcl_oop_liword_t)z)->slot[i] = (hcl_liw_t)w; + w = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)z)->slot[i]) + carry; + carry = w >> HAK_LIW_BITS; + ((hak_oop_liword_t)z)->slot[i] = (hak_liw_t)w; } - HCL_ASSERT (hcl, carry == 0); + HAK_ASSERT (hak, carry == 0); - HCL_OBJ_SET_CLASS (z, (hcl_oop_t)hcl->c_large_negative_integer); + HAK_OBJ_SET_CLASS (z, (hak_oop_t)hak->c_large_negative_integer); } else if (negy) { /* x is positive, y is negative */ - hcl_lidw_t w, carry; + hak_lidw_t w, carry; /* x & 2's complement on y up to ys */ carry = 1; for (i = 0; i < ys; i++) { - w = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)y)->slot[i]) + carry; - carry = w >> HCL_LIW_BITS; - ((hcl_oop_liword_t)z)->slot[i] = ((hcl_oop_liword_t)x)->slot[i] ^ (hcl_liw_t)w; + w = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)y)->slot[i]) + carry; + carry = w >> HAK_LIW_BITS; + ((hak_oop_liword_t)z)->slot[i] = ((hak_oop_liword_t)x)->slot[i] ^ (hak_liw_t)w; } - HCL_ASSERT (hcl, carry == 0); + HAK_ASSERT (hak, carry == 0); /* treat the lacking part in y as all 1s */ for (; i < xs; i++) { - ((hcl_oop_liword_t)z)->slot[i] = ((hcl_oop_liword_t)x)->slot[i] ^ (~(hcl_liw_t)0); + ((hak_oop_liword_t)z)->slot[i] = ((hak_oop_liword_t)x)->slot[i] ^ (~(hak_liw_t)0); } goto adjust_to_negative; @@ -3809,46 +3809,46 @@ hcl_oop_t hcl_bitxorints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) /* both are positive */ for (i = 0; i < ys; i++) { - ((hcl_oop_liword_t)z)->slot[i] = ((hcl_oop_liword_t)x)->slot[i] ^ ((hcl_oop_liword_t)y)->slot[i]; + ((hak_oop_liword_t)z)->slot[i] = ((hak_oop_liword_t)x)->slot[i] ^ ((hak_oop_liword_t)y)->slot[i]; } /* treat the lacking part in y as all 0s */ for (; i < xs; i++) { - ((hcl_oop_liword_t)z)->slot[i] = ((hcl_oop_liword_t)x)->slot[i]; + ((hak_oop_liword_t)z)->slot[i] = ((hak_oop_liword_t)x)->slot[i]; } } - return normalize_bigint(hcl, z); + return normalize_bigint(hak, z); } oops_einval: - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O, %O", x, y); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O, %O", x, y); + return HAK_NULL; } -hcl_oop_t hcl_bitinvint (hcl_t* hcl, hcl_oop_t x) +hak_oop_t hak_bitinvint (hak_t* hak, hak_oop_t x) { - if (HCL_OOP_IS_SMOOI(x)) + if (HAK_OOP_IS_SMOOI(x)) { - hcl_ooi_t v; + hak_ooi_t v; - v = HCL_OOP_TO_SMOOI(x); + v = HAK_OOP_TO_SMOOI(x); v = ~v; - if (HCL_IN_SMOOI_RANGE(v)) return HCL_SMOOI_TO_OOP(v); - return make_bigint_with_ooi (hcl, v); + if (HAK_IN_SMOOI_RANGE(v)) return HAK_SMOOI_TO_OOP(v); + return make_bigint_with_ooi (hak, v); } else { - hcl_oop_t z; - hcl_oow_t i, xs, zs, zalloc; + hak_oop_t z; + hak_oow_t i, xs, zs, zalloc; int negx; - if (!hcl_isbigint(hcl,x)) goto oops_einval; + if (!hak_isbigint(hak,x)) goto oops_einval; - xs = HCL_OBJ_GET_SIZE(x); - negx = HCL_IS_NBIGINT(hcl, x); + xs = HAK_OBJ_GET_SIZE(x); + negx = HAK_IS_NBIGINT(hak, x); if (negx) { @@ -3864,336 +3864,336 @@ hcl_oop_t hcl_bitinvint (hcl_t* hcl, hcl_oop_t x) if (zalloc < zs) { /* overflow in zalloc calculation above */ - hcl_seterrnum (hcl, HCL_EOOMEM); /* TODO: is it a soft failure or hard failure? */ - return HCL_NULL; + hak_seterrnum (hak, HAK_EOOMEM); /* TODO: is it a soft failure or hard failure? */ + return HAK_NULL; } - hcl_pushvolat(hcl, &x); - z = make_pbigint(hcl, HCL_NULL, zalloc); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + hak_pushvolat(hak, &x); + z = make_pbigint(hak, HAK_NULL, zalloc); + hak_popvolat(hak); + if (HAK_UNLIKELY(!z)) return HAK_NULL; if (negx) { - hcl_lidw_t w, carry; + hak_lidw_t w, carry; carry = 1; for (i = 0; i < xs; i++) { - w = (hcl_lidw_t)((hcl_liw_t)~HCL_OBJ_GET_LIWORD_VAL(x, i)) + carry; - carry = w >> HCL_LIW_BITS; - HCL_OBJ_SET_LIWORD_VAL (z, i, ~(hcl_liw_t)w); + w = (hak_lidw_t)((hak_liw_t)~HAK_OBJ_GET_LIWORD_VAL(x, i)) + carry; + carry = w >> HAK_LIW_BITS; + HAK_OBJ_SET_LIWORD_VAL (z, i, ~(hak_liw_t)w); } - HCL_ASSERT (hcl, carry == 0); + HAK_ASSERT (hak, carry == 0); } else { - hcl_lidw_t w, carry; + hak_lidw_t w, carry; #if 0 for (i = 0; i < xs; i++) { - HCL_OBJ_SET_LIWORD_VAL (z, i, ~HCL_OBJ_GET_LIWORD_VAL(x, i)); + HAK_OBJ_SET_LIWORD_VAL (z, i, ~HAK_OBJ_GET_LIWORD_VAL(x, i)); } - HCL_OBJ_SET_LIWORD_VAL (z, zs, ~(hcl_liw_t)0); + HAK_OBJ_SET_LIWORD_VAL (z, zs, ~(hak_liw_t)0); carry = 1; for (i = 0; i <= zs; i++) { - w = (hcl_lidw_t)((hcl_liw_t)~HCL_OBJ_GET_LIWORD_VAL(z, i)) + carry; - carry = w >> HCL_LIW_BITS; - HCL_OBJ_SET_LIWORD_VAL (z, i, (hcl_liw_t)w); + w = (hak_lidw_t)((hak_liw_t)~HAK_OBJ_GET_LIWORD_VAL(z, i)) + carry; + carry = w >> HAK_LIW_BITS; + HAK_OBJ_SET_LIWORD_VAL (z, i, (hak_liw_t)w); } - HCL_ASSERT (hcl, carry == 0); + HAK_ASSERT (hak, carry == 0); #else carry = 1; for (i = 0; i < xs; i++) { - w = (hcl_lidw_t)(HCL_OBJ_GET_LIWORD_VAL(x, i)) + carry; - carry = w >> HCL_LIW_BITS; - HCL_OBJ_SET_LIWORD_VAL (z, i, (hcl_liw_t)w); + w = (hak_lidw_t)(HAK_OBJ_GET_LIWORD_VAL(x, i)) + carry; + carry = w >> HAK_LIW_BITS; + HAK_OBJ_SET_LIWORD_VAL (z, i, (hak_liw_t)w); } - HCL_ASSERT (hcl, i == zs); - HCL_OBJ_SET_LIWORD_VAL (z, i, (hcl_liw_t)carry); - HCL_ASSERT (hcl, (carry >> HCL_LIW_BITS) == 0); + HAK_ASSERT (hak, i == zs); + HAK_OBJ_SET_LIWORD_VAL (z, i, (hak_liw_t)carry); + HAK_ASSERT (hak, (carry >> HAK_LIW_BITS) == 0); #endif - HCL_OBJ_SET_CLASS (z, (hcl_oop_t)hcl->c_large_negative_integer); + HAK_OBJ_SET_CLASS (z, (hak_oop_t)hak->c_large_negative_integer); } - return normalize_bigint(hcl, z); + return normalize_bigint(hak, z); } oops_einval: - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O", x); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O", x); + return HAK_NULL; } -static HCL_INLINE hcl_oop_t rshift_negative_bigint (hcl_t* hcl, hcl_oop_t x, hcl_oow_t shift) +static HAK_INLINE hak_oop_t rshift_negative_bigint (hak_t* hak, hak_oop_t x, hak_oow_t shift) { - hcl_oop_t z; - hcl_lidw_t w; - hcl_lidw_t carry; - hcl_oow_t i, xs; + hak_oop_t z; + hak_lidw_t w; + hak_lidw_t carry; + hak_oow_t i, xs; - HCL_ASSERT (hcl, HCL_IS_NBIGINT(hcl, x)); - xs = HCL_OBJ_GET_SIZE(x); + HAK_ASSERT (hak, HAK_IS_NBIGINT(hak, x)); + xs = HAK_OBJ_GET_SIZE(x); - hcl_pushvolat(hcl, &x); + hak_pushvolat(hak, &x); /* +1 for the second inversion below */ - z = make_nbigint(hcl, HCL_NULL, xs + 1); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + z = make_nbigint(hak, HAK_NULL, xs + 1); + hak_popvolat(hak); + if (HAK_UNLIKELY(!z)) return HAK_NULL; - /* the following lines roughly for 'z = hcl_bitinv (hcl, x)' */ + /* the following lines roughly for 'z = hak_bitinv (hak, x)' */ carry = 1; for (i = 0; i < xs; i++) { - w = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)x)->slot[i]) + carry; - carry = w >> HCL_LIW_BITS; - HCL_OBJ_SET_LIWORD_VAL (z, i, ~(hcl_liw_t)w); + w = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)x)->slot[i]) + carry; + carry = w >> HAK_LIW_BITS; + HAK_OBJ_SET_LIWORD_VAL (z, i, ~(hak_liw_t)w); } - HCL_ASSERT (hcl, carry == 0); + HAK_ASSERT (hak, carry == 0); /* shift to the right */ - rshift_unsigned_array (((hcl_oop_liword_t)z)->slot, xs, shift); + rshift_unsigned_array (((hak_oop_liword_t)z)->slot, xs, shift); - /* the following lines roughly for 'z = hcl_bitinv (hcl, z)' */ + /* the following lines roughly for 'z = hak_bitinv (hak, z)' */ #if 0 for (i = 0; i < xs; i++) { - HCL_OBJ_SET_LIWORD_VAL (z, i, ~HCL_OBJ_GET_LIWORD_VAL(z, i)); + HAK_OBJ_SET_LIWORD_VAL (z, i, ~HAK_OBJ_GET_LIWORD_VAL(z, i)); } - HCL_OBJ_SET_LIWORD_VAL (z, xs, ~(hcl_liw_t)0); + HAK_OBJ_SET_LIWORD_VAL (z, xs, ~(hak_liw_t)0); carry = 1; for (i = 0; i <= xs; i++) { - w = (hcl_lidw_t)((hcl_liw_t)~((hcl_oop_liword_t)z)->slot[i]) + carry; - carry = w >> HCL_LIW_BITS; - HCL_OBJ_SET_LIWORD_VAL (z, i, (hcl_liw_t)w); + w = (hak_lidw_t)((hak_liw_t)~((hak_oop_liword_t)z)->slot[i]) + carry; + carry = w >> HAK_LIW_BITS; + HAK_OBJ_SET_LIWORD_VAL (z, i, (hak_liw_t)w); } - HCL_ASSERT (hcl, carry == 0); + HAK_ASSERT (hak, carry == 0); #else carry = 1; for (i = 0; i < xs; i++) { - w = (hcl_lidw_t)(((hcl_oop_liword_t)z)->slot[i]) + carry; - carry = w >> HCL_LIW_BITS; - ((hcl_oop_liword_t)z)->slot[i] = (hcl_liw_t)w; + w = (hak_lidw_t)(((hak_oop_liword_t)z)->slot[i]) + carry; + carry = w >> HAK_LIW_BITS; + ((hak_oop_liword_t)z)->slot[i] = (hak_liw_t)w; } - HCL_OBJ_SET_LIWORD_VAL (z, i, (hcl_liw_t)carry); - HCL_ASSERT (hcl, (carry >> HCL_LIW_BITS) == 0); + HAK_OBJ_SET_LIWORD_VAL (z, i, (hak_liw_t)carry); + HAK_ASSERT (hak, (carry >> HAK_LIW_BITS) == 0); #endif return z; /* z is not normalized */ } -#if defined(HCL_LIMIT_OBJ_SIZE) +#if defined(HAK_LIMIT_OBJ_SIZE) /* nothing */ #else -static HCL_INLINE hcl_oop_t rshift_negative_bigint_and_normalize (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +static HAK_INLINE hak_oop_t rshift_negative_bigint_and_normalize (hak_t* hak, hak_oop_t x, hak_oop_t y) { - hcl_oop_t z; - hcl_oow_t shift; + hak_oop_t z; + hak_oow_t shift; int sign; - HCL_ASSERT (hcl, HCL_IS_NBIGINT(hcl, x)); - HCL_ASSERT (hcl, HCL_IS_NBIGINT(hcl, y)); + HAK_ASSERT (hak, HAK_IS_NBIGINT(hak, x)); + HAK_ASSERT (hak, HAK_IS_NBIGINT(hak, y)); /* for convenience in subtraction below. - * it could be HCL_TYPE_MAX(hcl_oow_t) + * it could be HAK_TYPE_MAX(hak_oow_t) * if make_bigint_with_intmax() or something - * similar were used instead of HCL_SMOOI_TO_OOP().*/ - shift = HCL_SMOOI_MAX; + * similar were used instead of HAK_SMOOI_TO_OOP().*/ + shift = HAK_SMOOI_MAX; do { - hcl_pushvolat(hcl, &y); - z = rshift_negative_bigint(hcl, x, shift); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + hak_pushvolat(hak, &y); + z = rshift_negative_bigint(hak, x, shift); + hak_popvolat(hak); + if (HAK_UNLIKELY(!z)) return HAK_NULL; - /* y is a negative number. use hcl_addints() until it becomes 0 */ - hcl_pushvolat(hcl, &z); - y = hcl_addints(hcl, y, HCL_SMOOI_TO_OOP(shift)); - hcl_popvolat(hcl); - if (!y) return HCL_NULL; + /* y is a negative number. use hak_addints() until it becomes 0 */ + hak_pushvolat(hak, &z); + y = hak_addints(hak, y, HAK_SMOOI_TO_OOP(shift)); + hak_popvolat(hak); + if (!y) return HAK_NULL; - sign = integer_to_oow_noseterr(hcl, y, &shift); - if (sign == 0) shift = HCL_SMOOI_MAX; + sign = integer_to_oow_noseterr(hak, y, &shift); + if (sign == 0) shift = HAK_SMOOI_MAX; else { if (shift == 0) { /* no more shift */ - return normalize_bigint(hcl, z); + return normalize_bigint(hak, z); } - HCL_ASSERT (hcl, sign <= -1); + HAK_ASSERT (hak, sign <= -1); } - hcl_pushvolat(hcl, &y); - x = normalize_bigint(hcl, z); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!x)) return HCL_NULL; + hak_pushvolat(hak, &y); + x = normalize_bigint(hak, z); + hak_popvolat(hak); + if (HAK_UNLIKELY(!x)) return HAK_NULL; - if (HCL_OOP_IS_SMOOI(x)) + if (HAK_OOP_IS_SMOOI(x)) { /* for normaization above, x can become a small integer */ - hcl_ooi_t v; + hak_ooi_t v; - v = HCL_OOP_TO_SMOOI(x); - HCL_ASSERT (hcl, v < 0); + v = HAK_OOP_TO_SMOOI(x); + HAK_ASSERT (hak, v < 0); /* normal right shift of a small negative integer */ - if (shift >= HCL_OOI_BITS - 1) + if (shift >= HAK_OOI_BITS - 1) { /* when y is still a large integer, this condition is met - * met as HCL_SMOOI_MAX > HCL_OOI_BITS. so i can simly + * met as HAK_SMOOI_MAX > HAK_OOI_BITS. so i can simly * terminate the loop after this */ - return HCL_SMOOI_TO_OOP(-1); + return HAK_SMOOI_TO_OOP(-1); } else { - v = (hcl_ooi_t)(((hcl_oow_t)v >> shift) | HCL_HBMASK(hcl_oow_t, shift)); - if (HCL_IN_SMOOI_RANGE(v)) - return HCL_SMOOI_TO_OOP(v); + v = (hak_ooi_t)(((hak_oow_t)v >> shift) | HAK_HBMASK(hak_oow_t, shift)); + if (HAK_IN_SMOOI_RANGE(v)) + return HAK_SMOOI_TO_OOP(v); else - return make_bigint_with_ooi (hcl, v); + return make_bigint_with_ooi (hak, v); } } } while (1); /* this part must not be reached */ - HCL_ASSERT (hcl, !"internal error - must not happen"); - hcl_seterrnum (hcl, HCL_EINTERN); - return HCL_NULL; + HAK_ASSERT (hak, !"internal error - must not happen"); + hak_seterrnum (hak, HAK_EINTERN); + return HAK_NULL; } -static HCL_INLINE hcl_oop_t rshift_positive_bigint_and_normalize (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +static HAK_INLINE hak_oop_t rshift_positive_bigint_and_normalize (hak_t* hak, hak_oop_t x, hak_oop_t y) { - hcl_oop_t z; - hcl_oow_t zs, shift; + hak_oop_t z; + hak_oow_t zs, shift; int sign; - HCL_ASSERT (hcl, HCL_IS_PBIGINT(hcl, x)); - HCL_ASSERT (hcl, HCL_IS_NBIGINT(hcl, y)); + HAK_ASSERT (hak, HAK_IS_PBIGINT(hak, x)); + HAK_ASSERT (hak, HAK_IS_NBIGINT(hak, y)); - zs = HCL_OBJ_GET_SIZE(x); + zs = HAK_OBJ_GET_SIZE(x); - hcl_pushvolat(hcl, &y); - z = clone_bigint(hcl, x, zs); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + hak_pushvolat(hak, &y); + z = clone_bigint(hak, x, zs); + hak_popvolat(hak); + if (HAK_UNLIKELY(!z)) return HAK_NULL; /* for convenience in subtraction below. - * it could be HCL_TYPE_MAX(hcl_oow_t) + * it could be HAK_TYPE_MAX(hak_oow_t) * if make_bigint_with_intmax() or something - * similar were used instead of HCL_SMOOI_TO_OOP().*/ - shift = HCL_SMOOI_MAX; + * similar were used instead of HAK_SMOOI_TO_OOP().*/ + shift = HAK_SMOOI_MAX; do { - rshift_unsigned_array (((hcl_oop_liword_t)z)->slot, zs, shift); - if (count_effective(((hcl_oop_liword_t)z)->slot, zs) == 1 && - HCL_OBJ_GET_LIWORD_VAL(z, 0) == 0) + rshift_unsigned_array (((hak_oop_liword_t)z)->slot, zs, shift); + if (count_effective(((hak_oop_liword_t)z)->slot, zs) == 1 && + HAK_OBJ_GET_LIWORD_VAL(z, 0) == 0) { /* if z is 0, i don't have to go on */ break; } - /* y is a negative number. use hcl_addints() until it becomes 0 */ - hcl_pushvolat(hcl, &z); - y = hcl_addints(hcl, y, HCL_SMOOI_TO_OOP(shift)); - hcl_popvolat(hcl); - if (!y) return HCL_NULL; + /* y is a negative number. use hak_addints() until it becomes 0 */ + hak_pushvolat(hak, &z); + y = hak_addints(hak, y, HAK_SMOOI_TO_OOP(shift)); + hak_popvolat(hak); + if (!y) return HAK_NULL; - sign = integer_to_oow_noseterr(hcl, y, &shift); - if (sign == 0) shift = HCL_SMOOI_MAX; + sign = integer_to_oow_noseterr(hak, y, &shift); + if (sign == 0) shift = HAK_SMOOI_MAX; else { if (shift == 0) break; - HCL_ASSERT (hcl, sign <= -1); + HAK_ASSERT (hak, sign <= -1); } } while (1); - return normalize_bigint(hcl, z); + return normalize_bigint(hak, z); } -static HCL_INLINE hcl_oop_t lshift_bigint_and_normalize (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +static HAK_INLINE hak_oop_t lshift_bigint_and_normalize (hak_t* hak, hak_oop_t x, hak_oop_t y) { - hcl_oop_t z; - hcl_oow_t wshift, shift; + hak_oop_t z; + hak_oow_t wshift, shift; int sign; - HCL_ASSERT (hcl, HCL_IS_PBIGINT(hcl, y)); + HAK_ASSERT (hak, HAK_IS_PBIGINT(hak, y)); /* this loop is very inefficient as shifting is repeated * with lshift_unsigned_array(). however, this part of the * code is not likey to be useful because the amount of * memory available is certainly not enough to support - * huge shifts greater than HCL_TYPE_MAX(hcl_oow_t) */ - shift = HCL_SMOOI_MAX; + * huge shifts greater than HAK_TYPE_MAX(hak_oow_t) */ + shift = HAK_SMOOI_MAX; do { /* for convenience only in subtraction below. - * should it be between HCL_SMOOI_MAX and HCL_TYPE_MAX(hcl_oow_t), - * the second parameter to hcl_subints() can't be composed - * using HCL_SMOOI_TO_OOP() */ - wshift = shift / HCL_LIW_BITS; - if (shift > wshift * HCL_LIW_BITS) wshift++; + * should it be between HAK_SMOOI_MAX and HAK_TYPE_MAX(hak_oow_t), + * the second parameter to hak_subints() can't be composed + * using HAK_SMOOI_TO_OOP() */ + wshift = shift / HAK_LIW_BITS; + if (shift > wshift * HAK_LIW_BITS) wshift++; - hcl_pushvolat(hcl, &y); - z = expand_bigint(hcl, x, wshift); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + hak_pushvolat(hak, &y); + z = expand_bigint(hak, x, wshift); + hak_popvolat(hak); + if (HAK_UNLIKELY(!z)) return HAK_NULL; - lshift_unsigned_array (((hcl_oop_liword_t)z)->slot, HCL_OBJ_GET_SIZE(z), shift); + lshift_unsigned_array (((hak_oop_liword_t)z)->slot, HAK_OBJ_GET_SIZE(z), shift); - hcl_pushvolat(hcl, &y); - x = normalize_bigint(hcl, z); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!x)) return HCL_NULL; + hak_pushvolat(hak, &y); + x = normalize_bigint(hak, z); + hak_popvolat(hak); + if (HAK_UNLIKELY(!x)) return HAK_NULL; - hcl_pushvolat(hcl, &x); - y = hcl_subints(hcl, y, HCL_SMOOI_TO_OOP(shift)); - hcl_popvolat(hcl); - if (!y) return HCL_NULL; + hak_pushvolat(hak, &x); + y = hak_subints(hak, y, HAK_SMOOI_TO_OOP(shift)); + hak_popvolat(hak); + if (!y) return HAK_NULL; - sign = integer_to_oow_noseterr(hcl, y, &shift); - if (sign == 0) shift = HCL_SMOOI_MAX; + sign = integer_to_oow_noseterr(hak, y, &shift); + if (sign == 0) shift = HAK_SMOOI_MAX; else { if (shift == 0) { - HCL_ASSERT (hcl, is_normalized_integer(hcl, x)); + HAK_ASSERT (hak, is_normalized_integer(hak, x)); return x; } - HCL_ASSERT (hcl, sign >= 1); + HAK_ASSERT (hak, sign >= 1); } } while (1); /* this part must not be reached */ - HCL_ASSERT (hcl, !"internal error - must not happen"); - hcl_seterrnum (hcl, HCL_EINTERN); - return HCL_NULL; + HAK_ASSERT (hak, !"internal error - must not happen"); + hak_seterrnum (hak, HAK_EINTERN); + return HAK_NULL; } #endif -hcl_oop_t hcl_bitshiftint (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_bitshiftint (hak_t* hak, hak_oop_t x, hak_oop_t y) { /* left shift if y is positive, * right shift if y is negative */ - if (HCL_OOP_IS_SMOOI(x) && HCL_OOP_IS_SMOOI(y)) + if (HAK_OOP_IS_SMOOI(x) && HAK_OOP_IS_SMOOI(y)) { - hcl_ooi_t v1, v2; + hak_ooi_t v1, v2; - v1 = HCL_OOP_TO_SMOOI(x); - v2 = HCL_OOP_TO_SMOOI(y); + v1 = HAK_OOP_TO_SMOOI(x); + v2 = HAK_OOP_TO_SMOOI(y); if (v1 == 0 || v2 == 0) { /* return without cloning as x is a small integer */ @@ -4203,22 +4203,22 @@ hcl_oop_t hcl_bitshiftint (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) if (v2 > 0) { /* left shift */ - hcl_oop_t z; - hcl_oow_t wshift; + hak_oop_t z; + hak_oow_t wshift; - wshift = v2 / HCL_LIW_BITS; - if (v2 > wshift * HCL_LIW_BITS) wshift++; + wshift = v2 / HAK_LIW_BITS; + if (v2 > wshift * HAK_LIW_BITS) wshift++; - z = make_bloated_bigint_with_ooi(hcl, v1, wshift); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + z = make_bloated_bigint_with_ooi(hak, v1, wshift); + if (HAK_UNLIKELY(!z)) return HAK_NULL; - lshift_unsigned_array (((hcl_oop_liword_t)z)->slot, HCL_OBJ_GET_SIZE(z), v2); - return normalize_bigint(hcl, z); + lshift_unsigned_array (((hak_oop_liword_t)z)->slot, HAK_OBJ_GET_SIZE(z), v2); + return normalize_bigint(hak, z); } else { /* right shift */ - hcl_ooi_t v; + hak_ooi_t v; v2 = -v2; if (v1 < 0) @@ -4239,64 +4239,64 @@ hcl_oop_t hcl_bitshiftint (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) * 11111111 (-1) 8 */ - if (v2 >= HCL_OOI_BITS - 1) v = -1; + if (v2 >= HAK_OOI_BITS - 1) v = -1; else { - /* HCL_HBMASK_SAFE(hcl_oow_t, v2 + 1) could also be + /* HAK_HBMASK_SAFE(hak_oow_t, v2 + 1) could also be * used as a mask. but the sign bit is shifted in. * so, masking up to 'v2' bits is sufficient */ - v = (hcl_ooi_t)(((hcl_oow_t)v1 >> v2) | HCL_HBMASK(hcl_oow_t, v2)); + v = (hak_ooi_t)(((hak_oow_t)v1 >> v2) | HAK_HBMASK(hak_oow_t, v2)); } } else { - if (v2 >= HCL_OOI_BITS) v = 0; + if (v2 >= HAK_OOI_BITS) v = 0; else v = v1 >> v2; } - if (HCL_IN_SMOOI_RANGE(v)) return HCL_SMOOI_TO_OOP(v); - return make_bigint_with_ooi (hcl, v); + if (HAK_IN_SMOOI_RANGE(v)) return HAK_SMOOI_TO_OOP(v); + return make_bigint_with_ooi (hak, v); } } else { int sign, negx, negy; - hcl_oow_t shift; + hak_oow_t shift; - if (HCL_OOP_IS_SMOOI(x)) + if (HAK_OOP_IS_SMOOI(x)) { - hcl_ooi_t v; + hak_ooi_t v; - if (!hcl_isbigint(hcl,y)) goto oops_einval; + if (!hak_isbigint(hak,y)) goto oops_einval; - v = HCL_OOP_TO_SMOOI(x); - if (v == 0) return HCL_SMOOI_TO_OOP(0); + v = HAK_OOP_TO_SMOOI(x); + if (v == 0) return HAK_SMOOI_TO_OOP(0); - if (HCL_IS_NBIGINT(hcl, y)) + if (HAK_IS_NBIGINT(hak, y)) { /* right shift - special case. * x is a small integer. it is just a few bytes long. * y is a large negative integer. its smallest absolute value - * is HCL_SMOOI_MAX. i know the final answer. */ - return (v < 0)? HCL_SMOOI_TO_OOP(-1): HCL_SMOOI_TO_OOP(0); + * is HAK_SMOOI_MAX. i know the final answer. */ + return (v < 0)? HAK_SMOOI_TO_OOP(-1): HAK_SMOOI_TO_OOP(0); } - hcl_pushvolat(hcl, &y); - x = make_bigint_with_ooi(hcl, v); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!x)) return HCL_NULL; + hak_pushvolat(hak, &y); + x = make_bigint_with_ooi(hak, v); + hak_popvolat(hak); + if (HAK_UNLIKELY(!x)) return HAK_NULL; goto bigint_and_bigint; } - else if (HCL_OOP_IS_SMOOI(y)) + else if (HAK_OOP_IS_SMOOI(y)) { - hcl_ooi_t v; + hak_ooi_t v; - if (!hcl_isbigint(hcl,x)) goto oops_einval; + if (!hak_isbigint(hak,x)) goto oops_einval; - v = HCL_OOP_TO_SMOOI(y); - if (v == 0) return clone_bigint(hcl, x, HCL_OBJ_GET_SIZE(x)); + v = HAK_OOP_TO_SMOOI(y); + if (v == 0) return clone_bigint(hak, x, HAK_OBJ_GET_SIZE(x)); - negx = HCL_IS_NBIGINT(hcl, x); + negx = HAK_IS_NBIGINT(hak, x); if (v > 0) { sign = 1; @@ -4314,94 +4314,94 @@ hcl_oop_t hcl_bitshiftint (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) } else { - hcl_oop_t z; + hak_oop_t z; - if (!hcl_isbigint(hcl,x) || !hcl_isbigint(hcl, y)) goto oops_einval; + if (!hak_isbigint(hak,x) || !hak_isbigint(hak, y)) goto oops_einval; bigint_and_bigint: - negx = HCL_IS_NBIGINT(hcl, x); - negy = HCL_IS_NBIGINT(hcl, y); + negx = HAK_IS_NBIGINT(hak, x); + negy = HAK_IS_NBIGINT(hak, y); - sign = bigint_to_oow_noseterr(hcl, y, &shift); + sign = bigint_to_oow_noseterr(hak, y, &shift); if (sign == 0) { /* y is too big or too small */ if (negy) { /* right shift */ - #if defined(HCL_LIMIT_OBJ_SIZE) + #if defined(HAK_LIMIT_OBJ_SIZE) /* the maximum number of bit shifts are guaranteed to be - * small enough to fit into the hcl_oow_t type. so i can + * small enough to fit into the hak_oow_t type. so i can * easily assume that all bits are shifted out */ - HCL_ASSERT (hcl, HCL_OBJ_SIZE_BITS_MAX <= HCL_TYPE_MAX(hcl_oow_t)); - return (negx)? HCL_SMOOI_TO_OOP(-1): HCL_SMOOI_TO_OOP(0); + HAK_ASSERT (hak, HAK_OBJ_SIZE_BITS_MAX <= HAK_TYPE_MAX(hak_oow_t)); + return (negx)? HAK_SMOOI_TO_OOP(-1): HAK_SMOOI_TO_OOP(0); #else if (negx) - return rshift_negative_bigint_and_normalize(hcl, x, y); + return rshift_negative_bigint_and_normalize(hak, x, y); else - return rshift_positive_bigint_and_normalize(hcl, x, y); + return rshift_positive_bigint_and_normalize(hak, x, y); #endif } else { /* left shift */ - #if defined(HCL_LIMIT_OBJ_SIZE) + #if defined(HAK_LIMIT_OBJ_SIZE) /* the maximum number of bit shifts are guaranteed to be - * small enough to fit into the hcl_oow_t type. so i can + * small enough to fit into the hak_oow_t type. so i can * simply return a failure here becuase it's surely too * large after shifting */ - HCL_ASSERT (hcl, HCL_TYPE_MAX(hcl_oow_t) >= HCL_OBJ_SIZE_BITS_MAX); - hcl_seterrnum (hcl, HCL_EOOMEM); /* is it a soft failure or a hard failure? is this error code proper? */ - return HCL_NULL; + HAK_ASSERT (hak, HAK_TYPE_MAX(hak_oow_t) >= HAK_OBJ_SIZE_BITS_MAX); + hak_seterrnum (hak, HAK_EOOMEM); /* is it a soft failure or a hard failure? is this error code proper? */ + return HAK_NULL; #else - return lshift_bigint_and_normalize(hcl, x, y); + return lshift_bigint_and_normalize(hak, x, y); #endif } } else if (sign >= 1) { /* left shift */ - hcl_oow_t wshift; + hak_oow_t wshift; bigint_and_positive_oow: - wshift = shift / HCL_LIW_BITS; - if (shift > wshift * HCL_LIW_BITS) wshift++; + wshift = shift / HAK_LIW_BITS; + if (shift > wshift * HAK_LIW_BITS) wshift++; - z = expand_bigint(hcl, x, wshift); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + z = expand_bigint(hak, x, wshift); + if (HAK_UNLIKELY(!z)) return HAK_NULL; - lshift_unsigned_array (((hcl_oop_liword_t)z)->slot, HCL_OBJ_GET_SIZE(z), shift); + lshift_unsigned_array (((hak_oop_liword_t)z)->slot, HAK_OBJ_GET_SIZE(z), shift); } else { /* right shift */ bigint_and_negative_oow: - HCL_ASSERT (hcl, sign <= -1); + HAK_ASSERT (hak, sign <= -1); if (negx) { - z = rshift_negative_bigint(hcl, x, shift); - if (HCL_UNLIKELY(!z)) return HCL_NULL; + z = rshift_negative_bigint(hak, x, shift); + if (HAK_UNLIKELY(!z)) return HAK_NULL; } else { - z = clone_bigint(hcl, x, HCL_OBJ_GET_SIZE(x)); - if (HCL_UNLIKELY(!z)) return HCL_NULL; - rshift_unsigned_array (((hcl_oop_liword_t)z)->slot, HCL_OBJ_GET_SIZE(z), shift); + z = clone_bigint(hak, x, HAK_OBJ_GET_SIZE(x)); + if (HAK_UNLIKELY(!z)) return HAK_NULL; + rshift_unsigned_array (((hak_oop_liword_t)z)->slot, HAK_OBJ_GET_SIZE(z), shift); } } - return normalize_bigint(hcl, z); + return normalize_bigint(hak, z); } } oops_einval: - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O, %O", x, y); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O, %O", x, y); + return HAK_NULL; } -static hcl_uint8_t ooch_val_tab[] = +static hak_uint8_t ooch_val_tab[] = { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, @@ -4413,14 +4413,14 @@ static hcl_uint8_t ooch_val_tab[] = 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 99, 99, 99, 99, 99 }; -hcl_oop_t hcl_strtoint (hcl_t* hcl, const hcl_ooch_t* str, hcl_oow_t len, int radix) +hak_oop_t hak_strtoint (hak_t* hak, const hak_ooch_t* str, hak_oow_t len, int radix) { int sign = 1; - const hcl_ooch_t* ptr, * start, * end; - hcl_lidw_t w, v; - hcl_liw_t hw[16], * hwp = HCL_NULL; - hcl_oow_t hwlen, outlen; - hcl_oop_t res; + const hak_ooch_t* ptr, * start, * end; + hak_lidw_t w, v; + hak_liw_t hw[16], * hwp = HAK_NULL; + hak_oow_t hwlen, outlen; + hak_oop_t res; if (radix < 0) { @@ -4429,7 +4429,7 @@ hcl_oop_t hcl_strtoint (hcl_t* hcl, const hcl_ooch_t* str, hcl_oow_t len, int ra radix = -radix; } - HCL_ASSERT (hcl, radix >= 2 && radix <= 36); + HAK_ASSERT (hak, radix >= 2 && radix <= 36); ptr = str; end = str + len; @@ -4454,7 +4454,7 @@ hcl_oop_t hcl_strtoint (hcl_t* hcl, const hcl_ooch_t* str, hcl_oow_t len, int ra if (ptr >= end) { /* all zeros */ - return HCL_SMOOI_TO_OOP(0); + return HAK_SMOOI_TO_OOP(0); } hwlen = 0; @@ -4472,15 +4472,15 @@ hcl_oop_t hcl_strtoint (hcl_t* hcl, const hcl_ooch_t* str, hcl_oow_t len, int ra exp = _exp_tab[radix - 1]; /* bytes */ - outlen = ((hcl_oow_t)(end - str) * exp + 7) / 8; - /* number of hcl_liw_t */ - outlen = (outlen + HCL_SIZEOF(hw[0]) - 1) / HCL_SIZEOF(hw[0]); + outlen = ((hak_oow_t)(end - str) * exp + 7) / 8; + /* number of hak_liw_t */ + outlen = (outlen + HAK_SIZEOF(hw[0]) - 1) / HAK_SIZEOF(hw[0]); - if (outlen > HCL_COUNTOF(hw)) + if (outlen > HAK_COUNTOF(hw)) { /* TODO: reuse this buffer? */ - hwp = (hcl_liw_t*)hcl_allocmem(hcl, outlen * HCL_SIZEOF(hw[0])); - if (!hwp) return HCL_NULL; + hwp = (hak_liw_t*)hak_allocmem(hak, outlen * HAK_SIZEOF(hw[0])); + if (!hwp) return HAK_NULL; } else { @@ -4493,49 +4493,49 @@ hcl_oop_t hcl_strtoint (hcl_t* hcl, const hcl_ooch_t* str, hcl_oow_t len, int ra while (ptr >= start) { - if (*ptr < 0 || *ptr >= HCL_COUNTOF(ooch_val_tab)) goto oops_einval; + if (*ptr < 0 || *ptr >= HAK_COUNTOF(ooch_val_tab)) goto oops_einval; v = ooch_val_tab[*ptr]; if (v >= radix) goto oops_einval; w |= (v << bitcnt); bitcnt += exp; - if (bitcnt >= HCL_LIW_BITS) + if (bitcnt >= HAK_LIW_BITS) { - bitcnt -= HCL_LIW_BITS; - hwp[hwlen++] = w; /*(hcl_liw_t)(w & HCL_LBMASK(hcl_lidw_t, HCL_LIW_BITS));*/ - w >>= HCL_LIW_BITS; + bitcnt -= HAK_LIW_BITS; + hwp[hwlen++] = w; /*(hak_liw_t)(w & HAK_LBMASK(hak_lidw_t, HAK_LIW_BITS));*/ + w >>= HAK_LIW_BITS; } ptr--; } - HCL_ASSERT (hcl, w <= HCL_TYPE_MAX(hcl_liw_t)); + HAK_ASSERT (hak, w <= HAK_TYPE_MAX(hak_liw_t)); if (hwlen == 0 || w > 0) hwp[hwlen++] = w; } else { - hcl_lidw_t r1, r2; - hcl_liw_t multiplier; + hak_lidw_t r1, r2; + hak_liw_t multiplier; int dg, i, safe_ndigits; w = 0; ptr = start; - safe_ndigits = hcl->bigint[radix].safe_ndigits; - multiplier = (hcl_liw_t)hcl->bigint[radix].multiplier; + safe_ndigits = hak->bigint[radix].safe_ndigits; + multiplier = (hak_liw_t)hak->bigint[radix].multiplier; outlen = (end - str) / safe_ndigits + 1; - if (outlen > HCL_COUNTOF(hw)) + if (outlen > HAK_COUNTOF(hw)) { - hwp = (hcl_liw_t*)hcl_allocmem(hcl, outlen * HCL_SIZEOF(hcl_liw_t)); - if (!hwp) return HCL_NULL; + hwp = (hak_liw_t*)hak_allocmem(hak, outlen * HAK_SIZEOF(hak_liw_t)); + if (!hwp) return HAK_NULL; } else { hwp = hw; } - HCL_ASSERT (hcl, ptr < end); + HAK_ASSERT (hak, ptr < end); do { r1 = 0; @@ -4548,22 +4548,22 @@ hcl_oop_t hcl_strtoint (hcl_t* hcl, const hcl_ooch_t* str, hcl_oow_t len, int ra break; } - if (*ptr < 0 || *ptr >= HCL_COUNTOF(ooch_val_tab)) goto oops_einval; + if (*ptr < 0 || *ptr >= HAK_COUNTOF(ooch_val_tab)) goto oops_einval; v = ooch_val_tab[*ptr]; if (v >= radix) goto oops_einval; - r1 = r1 * radix + (hcl_liw_t)v; + r1 = r1 * radix + (hak_liw_t)v; ptr++; } r2 = r1; for (i = 0; i < hwlen; i++) { - hcl_liw_t high, low; + hak_liw_t high, low; - v = (hcl_lidw_t)hwp[i] * multiplier; - high = (hcl_liw_t)(v >> HCL_LIW_BITS); - low = (hcl_liw_t)(v /*& HCL_LBMASK(hcl_oow_t, HCL_LIW_BITS)*/); + v = (hak_lidw_t)hwp[i] * multiplier; + high = (hak_liw_t)(v >> HAK_LIW_BITS); + low = (hak_liw_t)(v /*& HAK_LBMASK(hak_oow_t, HAK_LIW_BITS)*/); #if defined(liw_add_overflow) /* use liw_add_overflow() only if it's compiler-builtin. */ @@ -4571,61 +4571,61 @@ hcl_oop_t hcl_strtoint (hcl_t* hcl, const hcl_ooch_t* str, hcl_oow_t len, int ra #else /* don't use the fall-back version of liw_add_overflow() */ low += r2; - r2 = (hcl_lidw_t)high + (low < r2); + r2 = (hak_lidw_t)high + (low < r2); #endif hwp[i] = low; } - if (r2) hwp[hwlen++] = (hcl_liw_t)r2; + if (r2) hwp[hwlen++] = (hak_liw_t)r2; } while (ptr < end); } - HCL_ASSERT (hcl, hwlen >= 1); + HAK_ASSERT (hak, hwlen >= 1); -#if (HCL_LIW_BITS == HCL_OOW_BITS) +#if (HAK_LIW_BITS == HAK_OOW_BITS) if (hwlen == 1) { w = hwp[0]; - HCL_ASSERT (hcl, -HCL_SMOOI_MAX == HCL_SMOOI_MIN); - if (w <= HCL_SMOOI_MAX) return HCL_SMOOI_TO_OOP((hcl_ooi_t)w * sign); + HAK_ASSERT (hak, -HAK_SMOOI_MAX == HAK_SMOOI_MIN); + if (w <= HAK_SMOOI_MAX) return HAK_SMOOI_TO_OOP((hak_ooi_t)w * sign); } -#elif (HCL_LIW_BITS == HCL_OOHW_BITS) +#elif (HAK_LIW_BITS == HAK_OOHW_BITS) if (hwlen == 1) { - HCL_ASSERT (hcl, hwp[0] <= HCL_SMOOI_MAX); - return HCL_SMOOI_TO_OOP((hcl_ooi_t)hwp[0] * sign); + HAK_ASSERT (hak, hwp[0] <= HAK_SMOOI_MAX); + return HAK_SMOOI_TO_OOP((hak_ooi_t)hwp[0] * sign); } else if (hwlen == 2) { w = MAKE_WORD(hwp[0], hwp[1]); - HCL_ASSERT (hcl, -HCL_SMOOI_MAX == HCL_SMOOI_MIN); - if (w <= HCL_SMOOI_MAX) return HCL_SMOOI_TO_OOP((hcl_ooi_t)w * sign); + HAK_ASSERT (hak, -HAK_SMOOI_MAX == HAK_SMOOI_MIN); + if (w <= HAK_SMOOI_MAX) return HAK_SMOOI_TO_OOP((hak_ooi_t)w * sign); } #else # error UNSUPPORTED LIW BIT SIZE #endif - res = hcl_instantiate(hcl, (sign < 0? hcl->c_large_negative_integer: hcl->c_large_positive_integer), hwp, hwlen); - if (hwp && hw != hwp) hcl_freemem (hcl, hwp); + res = hak_instantiate(hak, (sign < 0? hak->c_large_negative_integer: hak->c_large_positive_integer), hwp, hwlen); + if (hwp && hw != hwp) hak_freemem (hak, hwp); return res; oops_einval: - if (hwp && hw != hwp) hcl_freemem (hcl, hwp); - hcl_seterrbfmt (hcl, HCL_EINVAL, "unable to convert '%.*js' to integer", len, str); - return HCL_NULL; + if (hwp && hw != hwp) hak_freemem (hak, hwp); + hak_seterrbfmt (hak, HAK_EINVAL, "unable to convert '%.*js' to integer", len, str); + return HAK_NULL; } -static hcl_oow_t oow_to_text (hcl_t* hcl, hcl_oow_t w, int flagged_radix, hcl_ooch_t* buf) +static hak_oow_t oow_to_text (hak_t* hak, hak_oow_t w, int flagged_radix, hak_ooch_t* buf) { - hcl_ooch_t* ptr; + hak_ooch_t* ptr; const char* _digitc; int radix; - radix = flagged_radix & HCL_INTTOSTR_RADIXMASK; - _digitc = _digitc_array[!!(flagged_radix & HCL_INTTOSTR_LOWERCASE)]; - HCL_ASSERT (hcl, radix >= 2 && radix <= 36); + radix = flagged_radix & HAK_INTTOSTR_RADIXMASK; + _digitc = _digitc_array[!!(flagged_radix & HAK_INTTOSTR_LOWERCASE)]; + HAK_ASSERT (hak, radix >= 2 && radix <= 36); ptr = buf; do @@ -4638,11 +4638,11 @@ static hcl_oow_t oow_to_text (hcl_t* hcl, hcl_oow_t w, int flagged_radix, hcl_oo return ptr - buf; } -static void reverse_string (hcl_ooch_t* str, hcl_oow_t len) +static void reverse_string (hak_ooch_t* str, hak_oow_t len) { - hcl_ooch_t ch; - hcl_ooch_t* start = str; - hcl_ooch_t* end = str + len - 1; + hak_ooch_t ch; + hak_ooch_t* start = str; + hak_ooch_t* end = str + len - 1; while (start < end) { @@ -4652,305 +4652,305 @@ static void reverse_string (hcl_ooch_t* str, hcl_oow_t len) } } -hcl_oop_t hcl_eqints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_eqints (hak_t* hak, hak_oop_t x, hak_oop_t y) { - if (HCL_OOP_IS_SMOOI(x) && HCL_OOP_IS_SMOOI(y)) + if (HAK_OOP_IS_SMOOI(x) && HAK_OOP_IS_SMOOI(y)) { - return (HCL_OOP_TO_SMOOI(x) == HCL_OOP_TO_SMOOI(y))? hcl->_true: hcl->_false; + return (HAK_OOP_TO_SMOOI(x) == HAK_OOP_TO_SMOOI(y))? hak->_true: hak->_false; } - else if (HCL_OOP_IS_SMOOI(x) || HCL_OOP_IS_SMOOI(y)) + else if (HAK_OOP_IS_SMOOI(x) || HAK_OOP_IS_SMOOI(y)) { - return hcl->_false; + return hak->_false; } else { - if (!hcl_isbigint(hcl, x) || !hcl_isbigint(hcl, y)) goto oops_einval; - return is_equal(hcl, x, y)? hcl->_true: hcl->_false; + if (!hak_isbigint(hak, x) || !hak_isbigint(hak, y)) goto oops_einval; + return is_equal(hak, x, y)? hak->_true: hak->_false; } oops_einval: - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O, %O", x, y); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O, %O", x, y); + return HAK_NULL; } -hcl_oop_t hcl_neints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_neints (hak_t* hak, hak_oop_t x, hak_oop_t y) { - if (HCL_OOP_IS_SMOOI(x) && HCL_OOP_IS_SMOOI(y)) + if (HAK_OOP_IS_SMOOI(x) && HAK_OOP_IS_SMOOI(y)) { - return (HCL_OOP_TO_SMOOI(x) != HCL_OOP_TO_SMOOI(y))? hcl->_true: hcl->_false; + return (HAK_OOP_TO_SMOOI(x) != HAK_OOP_TO_SMOOI(y))? hak->_true: hak->_false; } - else if (HCL_OOP_IS_SMOOI(x) || HCL_OOP_IS_SMOOI(y)) + else if (HAK_OOP_IS_SMOOI(x) || HAK_OOP_IS_SMOOI(y)) { - return hcl->_true; + return hak->_true; } else { - if (!hcl_isbigint(hcl, x) || !hcl_isbigint(hcl, y)) goto oops_einval; - return !is_equal(hcl, x, y)? hcl->_true: hcl->_false; + if (!hak_isbigint(hak, x) || !hak_isbigint(hak, y)) goto oops_einval; + return !is_equal(hak, x, y)? hak->_true: hak->_false; } oops_einval: - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O, %O", x, y); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O, %O", x, y); + return HAK_NULL; } -hcl_oop_t hcl_gtints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_gtints (hak_t* hak, hak_oop_t x, hak_oop_t y) { - if (HCL_OOP_IS_SMOOI(x) && HCL_OOP_IS_SMOOI(y)) + if (HAK_OOP_IS_SMOOI(x) && HAK_OOP_IS_SMOOI(y)) { - return (HCL_OOP_TO_SMOOI(x) > HCL_OOP_TO_SMOOI(y))? hcl->_true: hcl->_false; + return (HAK_OOP_TO_SMOOI(x) > HAK_OOP_TO_SMOOI(y))? hak->_true: hak->_false; } - else if (HCL_OOP_IS_SMOOI(x)) + else if (HAK_OOP_IS_SMOOI(x)) { - if (!hcl_isbigint(hcl, y)) goto oops_einval; - return (HCL_IS_NBIGINT(hcl, y))? hcl->_true: hcl->_false; + if (!hak_isbigint(hak, y)) goto oops_einval; + return (HAK_IS_NBIGINT(hak, y))? hak->_true: hak->_false; } - else if (HCL_OOP_IS_SMOOI(y)) + else if (HAK_OOP_IS_SMOOI(y)) { - if (!hcl_isbigint(hcl, x)) goto oops_einval; - return (HCL_IS_PBIGINT(hcl, x))? hcl->_true: hcl->_false; + if (!hak_isbigint(hak, x)) goto oops_einval; + return (HAK_IS_PBIGINT(hak, x))? hak->_true: hak->_false; } else { - if (!hcl_isbigint(hcl, x) || !hcl_isbigint(hcl, y)) goto oops_einval; - return is_greater(hcl, x, y)? hcl->_true: hcl->_false; + if (!hak_isbigint(hak, x) || !hak_isbigint(hak, y)) goto oops_einval; + return is_greater(hak, x, y)? hak->_true: hak->_false; } oops_einval: - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O, %O", x, y); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O, %O", x, y); + return HAK_NULL; } -hcl_oop_t hcl_geints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_geints (hak_t* hak, hak_oop_t x, hak_oop_t y) { - if (HCL_OOP_IS_SMOOI(x) && HCL_OOP_IS_SMOOI(y)) + if (HAK_OOP_IS_SMOOI(x) && HAK_OOP_IS_SMOOI(y)) { - return (HCL_OOP_TO_SMOOI(x) >= HCL_OOP_TO_SMOOI(y))? hcl->_true: hcl->_false; + return (HAK_OOP_TO_SMOOI(x) >= HAK_OOP_TO_SMOOI(y))? hak->_true: hak->_false; } - else if (HCL_OOP_IS_SMOOI(x)) + else if (HAK_OOP_IS_SMOOI(x)) { - if (!hcl_isbigint(hcl, y)) goto oops_einval; - return (HCL_IS_NBIGINT(hcl, y))? hcl->_true: hcl->_false; + if (!hak_isbigint(hak, y)) goto oops_einval; + return (HAK_IS_NBIGINT(hak, y))? hak->_true: hak->_false; } - else if (HCL_OOP_IS_SMOOI(y)) + else if (HAK_OOP_IS_SMOOI(y)) { - if (!hcl_isbigint(hcl, x)) goto oops_einval; - return (HCL_IS_PBIGINT(hcl, x))? hcl->_true: hcl->_false; + if (!hak_isbigint(hak, x)) goto oops_einval; + return (HAK_IS_PBIGINT(hak, x))? hak->_true: hak->_false; } else { - if (!hcl_isbigint(hcl, x) || !hcl_isbigint(hcl, y)) goto oops_einval; - return (is_greater(hcl, x, y) || is_equal(hcl, x, y))? hcl->_true: hcl->_false; + if (!hak_isbigint(hak, x) || !hak_isbigint(hak, y)) goto oops_einval; + return (is_greater(hak, x, y) || is_equal(hak, x, y))? hak->_true: hak->_false; } oops_einval: - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O, %O", x, y); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O, %O", x, y); + return HAK_NULL; } -hcl_oop_t hcl_ltints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_ltints (hak_t* hak, hak_oop_t x, hak_oop_t y) { - if (HCL_OOP_IS_SMOOI(x) && HCL_OOP_IS_SMOOI(y)) + if (HAK_OOP_IS_SMOOI(x) && HAK_OOP_IS_SMOOI(y)) { - return (HCL_OOP_TO_SMOOI(x) < HCL_OOP_TO_SMOOI(y))? hcl->_true: hcl->_false; + return (HAK_OOP_TO_SMOOI(x) < HAK_OOP_TO_SMOOI(y))? hak->_true: hak->_false; } - else if (HCL_OOP_IS_SMOOI(x)) + else if (HAK_OOP_IS_SMOOI(x)) { - if (!hcl_isbigint(hcl, y)) goto oops_einval; - return (HCL_IS_PBIGINT(hcl, y))? hcl->_true: hcl->_false; + if (!hak_isbigint(hak, y)) goto oops_einval; + return (HAK_IS_PBIGINT(hak, y))? hak->_true: hak->_false; } - else if (HCL_OOP_IS_SMOOI(y)) + else if (HAK_OOP_IS_SMOOI(y)) { - if (!hcl_isbigint(hcl, x)) goto oops_einval; - return (HCL_IS_NBIGINT(hcl, x))? hcl->_true: hcl->_false; + if (!hak_isbigint(hak, x)) goto oops_einval; + return (HAK_IS_NBIGINT(hak, x))? hak->_true: hak->_false; } else { - if (!hcl_isbigint(hcl, x) || !hcl_isbigint(hcl, y)) goto oops_einval; - return is_less(hcl, x, y)? hcl->_true: hcl->_false; + if (!hak_isbigint(hak, x) || !hak_isbigint(hak, y)) goto oops_einval; + return is_less(hak, x, y)? hak->_true: hak->_false; } oops_einval: - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O, %O", x, y); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O, %O", x, y); + return HAK_NULL; } -hcl_oop_t hcl_leints (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_leints (hak_t* hak, hak_oop_t x, hak_oop_t y) { - if (HCL_OOP_IS_SMOOI(x) && HCL_OOP_IS_SMOOI(y)) + if (HAK_OOP_IS_SMOOI(x) && HAK_OOP_IS_SMOOI(y)) { - return (HCL_OOP_TO_SMOOI(x) <= HCL_OOP_TO_SMOOI(y))? hcl->_true: hcl->_false; + return (HAK_OOP_TO_SMOOI(x) <= HAK_OOP_TO_SMOOI(y))? hak->_true: hak->_false; } - else if (HCL_OOP_IS_SMOOI(x)) + else if (HAK_OOP_IS_SMOOI(x)) { - if (!hcl_isbigint(hcl, y)) goto oops_einval; - return (HCL_IS_PBIGINT(hcl, y))? hcl->_true: hcl->_false; + if (!hak_isbigint(hak, y)) goto oops_einval; + return (HAK_IS_PBIGINT(hak, y))? hak->_true: hak->_false; } - else if (HCL_OOP_IS_SMOOI(y)) + else if (HAK_OOP_IS_SMOOI(y)) { - if (!hcl_isbigint(hcl, x)) goto oops_einval; - return (HCL_IS_NBIGINT(hcl, x))? hcl->_true: hcl->_false; + if (!hak_isbigint(hak, x)) goto oops_einval; + return (HAK_IS_NBIGINT(hak, x))? hak->_true: hak->_false; } else { - if (!hcl_isbigint(hcl, x) || !hcl_isbigint(hcl, y)) goto oops_einval; - return (is_less(hcl, x, y) || is_equal(hcl, x, y))? hcl->_true: hcl->_false; + if (!hak_isbigint(hak, x) || !hak_isbigint(hak, y)) goto oops_einval; + return (is_less(hak, x, y) || is_equal(hak, x, y))? hak->_true: hak->_false; } oops_einval: - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O, %O", x, y); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O, %O", x, y); + return HAK_NULL; } -hcl_oop_t hcl_sqrtint (hcl_t* hcl, hcl_oop_t x) +hak_oop_t hak_sqrtint (hak_t* hak, hak_oop_t x) { /* TODO: find a faster and more efficient algorithm??? */ - hcl_oop_t a, b, m, m2, t; + hak_oop_t a, b, m, m2, t; int neg; - if (!hcl_isint(hcl, x)) + if (!hak_isint(hak, x)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O", x); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O", x); + return HAK_NULL; } - a = hcl->_nil; - b = hcl->_nil; - m = hcl->_nil; - m2 = hcl->_nil; + a = hak->_nil; + b = hak->_nil; + m = hak->_nil; + m2 = hak->_nil; - hcl_pushvolat(hcl, &x); - hcl_pushvolat(hcl, &a); - hcl_pushvolat(hcl, &b); - hcl_pushvolat(hcl, &m); - hcl_pushvolat(hcl, &m2); + hak_pushvolat(hak, &x); + hak_pushvolat(hak, &a); + hak_pushvolat(hak, &b); + hak_pushvolat(hak, &m); + hak_pushvolat(hak, &m2); - a = hcl_ltints(hcl, x, HCL_SMOOI_TO_OOP(0)); - if (HCL_UNLIKELY(!a)) goto oops; - if (a == hcl->_true) + a = hak_ltints(hak, x, HAK_SMOOI_TO_OOP(0)); + if (HAK_UNLIKELY(!a)) goto oops; + if (a == hak->_true) { /* the given number is a negative number. * i will arrange the return value to be negative. */ - x = hcl_negateint(hcl, x); - if (HCL_UNLIKELY(!x)) goto oops; + x = hak_negateint(hak, x); + if (HAK_UNLIKELY(!x)) goto oops; neg = 1; } else neg = 0; - a = HCL_SMOOI_TO_OOP(1); - b = hcl_bitshiftint(hcl, x, HCL_SMOOI_TO_OOP(-5)); - if (HCL_UNLIKELY(!b)) goto oops; - b = hcl_addints(hcl, b, HCL_SMOOI_TO_OOP(8)); - if (HCL_UNLIKELY(!b)) goto oops; + a = HAK_SMOOI_TO_OOP(1); + b = hak_bitshiftint(hak, x, HAK_SMOOI_TO_OOP(-5)); + if (HAK_UNLIKELY(!b)) goto oops; + b = hak_addints(hak, b, HAK_SMOOI_TO_OOP(8)); + if (HAK_UNLIKELY(!b)) goto oops; while (1) { - t = hcl_geints(hcl, b, a); - if (HCL_UNLIKELY(!t)) return HCL_NULL; - if (t == hcl->_false) break; + t = hak_geints(hak, b, a); + if (HAK_UNLIKELY(!t)) return HAK_NULL; + if (t == hak->_false) break; - m = hcl_addints(hcl, a, b); - if (HCL_UNLIKELY(!m)) goto oops; - m = hcl_bitshiftint(hcl, m, HCL_SMOOI_TO_OOP(-1)); - if (HCL_UNLIKELY(!m)) goto oops; - m2 = hcl_mulints(hcl, m, m); - if (HCL_UNLIKELY(!m2)) goto oops; - t = hcl_gtints(hcl, m2, x); - if (HCL_UNLIKELY(!t)) return HCL_NULL; - if (t == hcl->_true) + m = hak_addints(hak, a, b); + if (HAK_UNLIKELY(!m)) goto oops; + m = hak_bitshiftint(hak, m, HAK_SMOOI_TO_OOP(-1)); + if (HAK_UNLIKELY(!m)) goto oops; + m2 = hak_mulints(hak, m, m); + if (HAK_UNLIKELY(!m2)) goto oops; + t = hak_gtints(hak, m2, x); + if (HAK_UNLIKELY(!t)) return HAK_NULL; + if (t == hak->_true) { - b = hcl_subints(hcl, m, HCL_SMOOI_TO_OOP(1)); - if (HCL_UNLIKELY(!b)) goto oops; + b = hak_subints(hak, m, HAK_SMOOI_TO_OOP(1)); + if (HAK_UNLIKELY(!b)) goto oops; } else { - a = hcl_addints(hcl, m, HCL_SMOOI_TO_OOP(1)); - if (HCL_UNLIKELY(!a)) goto oops; + a = hak_addints(hak, m, HAK_SMOOI_TO_OOP(1)); + if (HAK_UNLIKELY(!a)) goto oops; } } - hcl_popvolats(hcl, 5); - x = hcl_subints(hcl, a, HCL_SMOOI_TO_OOP(1)); - if (HCL_UNLIKELY(!x)) return HCL_NULL; + hak_popvolats(hak, 5); + x = hak_subints(hak, a, HAK_SMOOI_TO_OOP(1)); + if (HAK_UNLIKELY(!x)) return HAK_NULL; - if (neg) x = hcl_negateint(hcl, x); + if (neg) x = hak_negateint(hak, x); return x; oops: - hcl_popvolats(hcl, 5); - return HCL_NULL; + hak_popvolats(hak, 5); + return HAK_NULL; } -hcl_oop_t hcl_absint (hcl_t* hcl, hcl_oop_t x) +hak_oop_t hak_absint (hak_t* hak, hak_oop_t x) { - if (HCL_OOP_IS_SMOOI(x)) + if (HAK_OOP_IS_SMOOI(x)) { - hcl_ooi_t v; - v = HCL_OOP_TO_SMOOI(x); + hak_ooi_t v; + v = HAK_OOP_TO_SMOOI(x); if (v < 0) { v = -v; - x = HCL_SMOOI_TO_OOP(v); + x = HAK_SMOOI_TO_OOP(v); } } - else if (HCL_IS_NBIGINT(hcl, x)) + else if (HAK_IS_NBIGINT(hak, x)) { - x = _clone_bigint(hcl, x, HCL_OBJ_GET_SIZE(x), hcl->c_large_positive_integer); + x = _clone_bigint(hak, x, HAK_OBJ_GET_SIZE(x), hak->c_large_positive_integer); } - else if (HCL_IS_PBIGINT(hcl, x)) + else if (HAK_IS_PBIGINT(hak, x)) { /* do nothing. return x without change. * [THINK] but do i need to clone a positive bigint? */ } else { - hcl_seterrbfmt (hcl, HCL_EINVAL, "not integer - %O", x); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "not integer - %O", x); + return HAK_NULL; } return x; } -static HCL_INLINE hcl_liw_t get_last_digit (hcl_t* hcl, hcl_liw_t* x, hcl_oow_t* xs, int radix) +static HAK_INLINE hak_liw_t get_last_digit (hak_t* hak, hak_liw_t* x, hak_oow_t* xs, int radix) { /* this function changes the contents of the large integer word array */ - hcl_oow_t oxs = *xs; - hcl_liw_t carry = 0; - hcl_oow_t i; - hcl_lidw_t dw; + hak_oow_t oxs = *xs; + hak_liw_t carry = 0; + hak_oow_t i; + hak_lidw_t dw; - HCL_ASSERT (hcl, oxs > 0); + HAK_ASSERT (hak, oxs > 0); for (i = oxs; i > 0; ) { --i; - dw = ((hcl_lidw_t)carry << HCL_LIW_BITS) + x[i]; + dw = ((hak_lidw_t)carry << HAK_LIW_BITS) + x[i]; /* TODO: optimize it with ASM - no seperate / and % */ - x[i] = (hcl_liw_t)(dw / radix); - carry = (hcl_liw_t)(dw % radix); + x[i] = (hak_liw_t)(dw / radix); + carry = (hak_liw_t)(dw % radix); } if (/*oxs > 0 &&*/ x[oxs - 1] == 0) *xs = oxs - 1; return carry; } -hcl_oop_t hcl_inttostr (hcl_t* hcl, hcl_oop_t num, int flagged_radix) +hak_oop_t hak_inttostr (hak_t* hak, hak_oop_t num, int flagged_radix) { - hcl_ooi_t v = 0; - hcl_oow_t w; - hcl_oow_t as; - hcl_liw_t* t = HCL_NULL; - hcl_ooch_t* xbuf = HCL_NULL; - hcl_oow_t xlen = 0, reqcapa; + hak_ooi_t v = 0; + hak_oow_t w; + hak_oow_t as; + hak_liw_t* t = HAK_NULL; + hak_ooch_t* xbuf = HAK_NULL; + hak_oow_t xlen = 0, reqcapa; int radix; const char* _digitc; - radix = flagged_radix & HCL_INTTOSTR_RADIXMASK; - _digitc = _digitc_array[!!(flagged_radix & HCL_INTTOSTR_LOWERCASE)]; - HCL_ASSERT (hcl, radix >= 2 && radix <= 36); + radix = flagged_radix & HAK_INTTOSTR_RADIXMASK; + _digitc = _digitc_array[!!(flagged_radix & HAK_INTTOSTR_LOWERCASE)]; + HAK_ASSERT (hak, radix >= 2 && radix <= 36); - if (!hcl_isint(hcl,num)) goto oops_einval; - v = integer_to_oow_noseterr(hcl, num, &w); + if (!hak_isint(hak,num)) goto oops_einval; + v = integer_to_oow_noseterr(hak, num, &w); if (v) { @@ -4959,84 +4959,84 @@ hcl_oop_t hcl_inttostr (hcl_t* hcl, hcl_oop_t num, int flagged_radix) * the maximum number of digits that can be produced. +1 is * needed for the sign. */ - reqcapa = HCL_OOW_BITS + 1; - if (hcl->inttostr.xbuf.capa < reqcapa) + reqcapa = HAK_OOW_BITS + 1; + if (hak->inttostr.xbuf.capa < reqcapa) { - xbuf = (hcl_ooch_t*)hcl_reallocmem(hcl, hcl->inttostr.xbuf.ptr, reqcapa * HCL_SIZEOF(*xbuf)); - if (!xbuf) return HCL_NULL; - hcl->inttostr.xbuf.capa = reqcapa; - hcl->inttostr.xbuf.ptr = xbuf; + xbuf = (hak_ooch_t*)hak_reallocmem(hak, hak->inttostr.xbuf.ptr, reqcapa * HAK_SIZEOF(*xbuf)); + if (!xbuf) return HAK_NULL; + hak->inttostr.xbuf.capa = reqcapa; + hak->inttostr.xbuf.ptr = xbuf; } else { - xbuf = hcl->inttostr.xbuf.ptr; + xbuf = hak->inttostr.xbuf.ptr; } - xlen = oow_to_text(hcl, w, flagged_radix, xbuf); + xlen = oow_to_text(hak, w, flagged_radix, xbuf); if (v < 0) xbuf[xlen++] = '-'; reverse_string (xbuf, xlen); - if (flagged_radix & HCL_INTTOSTR_NONEWOBJ) + if (flagged_radix & HAK_INTTOSTR_NONEWOBJ) { /* special case. don't create a new object. - * the caller can use the data left in hcl->inttostr.xbuf */ - hcl->inttostr.xbuf.len = xlen; - return hcl->_nil; + * the caller can use the data left in hak->inttostr.xbuf */ + hak->inttostr.xbuf.len = xlen; + return hak->_nil; } - return hcl_makestring(hcl, xbuf, xlen); + return hak_makestring(hak, xbuf, xlen); } - /* the number can't be represented as a single hcl_oow_t value. + /* the number can't be represented as a single hak_oow_t value. * mutli-word conversion begins now */ - as = HCL_OBJ_GET_SIZE(num); + as = HAK_OBJ_GET_SIZE(num); - reqcapa = as * HCL_LIW_BITS + 1; - if (hcl->inttostr.xbuf.capa < reqcapa) + reqcapa = as * HAK_LIW_BITS + 1; + if (hak->inttostr.xbuf.capa < reqcapa) { - xbuf = (hcl_ooch_t*)hcl_reallocmem(hcl, hcl->inttostr.xbuf.ptr, reqcapa * HCL_SIZEOF(*xbuf)); - if (HCL_UNLIKELY(!xbuf)) return HCL_NULL; - hcl->inttostr.xbuf.capa = reqcapa; - hcl->inttostr.xbuf.ptr = xbuf; + xbuf = (hak_ooch_t*)hak_reallocmem(hak, hak->inttostr.xbuf.ptr, reqcapa * HAK_SIZEOF(*xbuf)); + if (HAK_UNLIKELY(!xbuf)) return HAK_NULL; + hak->inttostr.xbuf.capa = reqcapa; + hak->inttostr.xbuf.ptr = xbuf; } else { - xbuf = hcl->inttostr.xbuf.ptr; + xbuf = hak->inttostr.xbuf.ptr; } - if (hcl->inttostr.t.capa < as) + if (hak->inttostr.t.capa < as) { - t = (hcl_liw_t*)hcl_reallocmem(hcl, hcl->inttostr.t.ptr, reqcapa * HCL_SIZEOF(*t)); - if (HCL_UNLIKELY(!t)) return HCL_NULL; - hcl->inttostr.t.capa = as; - hcl->inttostr.t.ptr = t; + t = (hak_liw_t*)hak_reallocmem(hak, hak->inttostr.t.ptr, reqcapa * HAK_SIZEOF(*t)); + if (HAK_UNLIKELY(!t)) return HAK_NULL; + hak->inttostr.t.capa = as; + hak->inttostr.t.ptr = t; } else { - t = hcl->inttostr.t.ptr; + t = hak->inttostr.t.ptr; } - HCL_MEMCPY (t, ((hcl_oop_liword_t)num)->slot, HCL_SIZEOF(*t) * as); + HAK_MEMCPY (t, ((hak_oop_liword_t)num)->slot, HAK_SIZEOF(*t) * as); do { - hcl_liw_t dv = get_last_digit(hcl, t, &as, radix); + hak_liw_t dv = get_last_digit(hak, t, &as, radix); xbuf[xlen++] = _digitc[dv]; } while (as > 0); - if (HCL_IS_NBIGINT(hcl, num)) xbuf[xlen++] = '-'; + if (HAK_IS_NBIGINT(hak, num)) xbuf[xlen++] = '-'; reverse_string (xbuf, xlen); - if (flagged_radix & HCL_INTTOSTR_NONEWOBJ) + if (flagged_radix & HAK_INTTOSTR_NONEWOBJ) { /* special case. don't create a new object. - * the caller can use the data left in hcl->inttostr.xbuf */ - hcl->inttostr.xbuf.len = xlen; - return hcl->_nil; + * the caller can use the data left in hak->inttostr.xbuf */ + hak->inttostr.xbuf.len = xlen; + return hak->_nil; } - return hcl_makestring(hcl, xbuf, xlen); + return hak_makestring(hak, xbuf, xlen); oops_einval: - hcl_seterrnum (hcl, HCL_EINVAL); - return HCL_NULL; + hak_seterrnum (hak, HAK_EINVAL); + return HAK_NULL; } diff --git a/lib/chr.c b/lib/chr.c index b2cca9a..ca651d6 100644 --- a/lib/chr.c +++ b/lib/chr.c @@ -22,91 +22,91 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include +#include /* ---------------------------------------------------------- */ #include "uch-prop.h" #include "uch-case.h" /* ---------------------------------------------------------- */ -#define UCH_PROP_MAP_INDEX(c) ((c) / HCL_COUNTOF(uch_prop_page_0000)) -#define UCH_PROP_PAGE_INDEX(c) ((c) % HCL_COUNTOF(uch_prop_page_0000)) +#define UCH_PROP_MAP_INDEX(c) ((c) / HAK_COUNTOF(uch_prop_page_0000)) +#define UCH_PROP_PAGE_INDEX(c) ((c) % HAK_COUNTOF(uch_prop_page_0000)) -#define UCH_CASE_MAP_INDEX(c) ((c) / HCL_COUNTOF(uch_case_page_0000)) -#define UCH_CASE_PAGE_INDEX(c) ((c) % HCL_COUNTOF(uch_case_page_0000)) +#define UCH_CASE_MAP_INDEX(c) ((c) / HAK_COUNTOF(uch_case_page_0000)) +#define UCH_CASE_PAGE_INDEX(c) ((c) % HAK_COUNTOF(uch_case_page_0000)) #define UCH_IS_TYPE(c,type) \ ((c) >= 0 && (c) <= UCH_PROP_MAX && \ (uch_prop_map[UCH_PROP_MAP_INDEX(c)][UCH_PROP_PAGE_INDEX(c)] & (type)) != 0) -int hcl_is_uch_type (hcl_uch_t c, hcl_uch_prop_t type) +int hak_is_uch_type (hak_uch_t c, hak_uch_prop_t type) { - return UCH_IS_TYPE((hcl_uchu_t)c, type); + return UCH_IS_TYPE((hak_uchu_t)c, type); } -int hcl_is_uch_upper (hcl_uch_t c) +int hak_is_uch_upper (hak_uch_t c) { - return UCH_IS_TYPE((hcl_uchu_t)c, HCL_UCH_PROP_UPPER); + return UCH_IS_TYPE((hak_uchu_t)c, HAK_UCH_PROP_UPPER); } -int hcl_is_uch_lower (hcl_uch_t c) +int hak_is_uch_lower (hak_uch_t c) { - return UCH_IS_TYPE((hcl_uchu_t)c, HCL_UCH_PROP_LOWER); + return UCH_IS_TYPE((hak_uchu_t)c, HAK_UCH_PROP_LOWER); } -int hcl_is_uch_alpha (hcl_uch_t c) +int hak_is_uch_alpha (hak_uch_t c) { - return UCH_IS_TYPE((hcl_uchu_t)c, HCL_UCH_PROP_ALPHA); + return UCH_IS_TYPE((hak_uchu_t)c, HAK_UCH_PROP_ALPHA); } -int hcl_is_uch_digit (hcl_uch_t c) +int hak_is_uch_digit (hak_uch_t c) { - return UCH_IS_TYPE((hcl_uchu_t)c, HCL_UCH_PROP_DIGIT); + return UCH_IS_TYPE((hak_uchu_t)c, HAK_UCH_PROP_DIGIT); } -int hcl_is_uch_xdigit (hcl_uch_t c) +int hak_is_uch_xdigit (hak_uch_t c) { - return UCH_IS_TYPE((hcl_uchu_t)c, HCL_UCH_PROP_XDIGIT); + return UCH_IS_TYPE((hak_uchu_t)c, HAK_UCH_PROP_XDIGIT); } -int hcl_is_uch_alnum (hcl_uch_t c) +int hak_is_uch_alnum (hak_uch_t c) { - return UCH_IS_TYPE((hcl_uchu_t)c, HCL_UCH_PROP_ALNUM); + return UCH_IS_TYPE((hak_uchu_t)c, HAK_UCH_PROP_ALNUM); } -int hcl_is_uch_space (hcl_uch_t c) +int hak_is_uch_space (hak_uch_t c) { - return UCH_IS_TYPE((hcl_uchu_t)c, HCL_UCH_PROP_SPACE); + return UCH_IS_TYPE((hak_uchu_t)c, HAK_UCH_PROP_SPACE); } -int hcl_is_uch_print (hcl_uch_t c) +int hak_is_uch_print (hak_uch_t c) { - return UCH_IS_TYPE((hcl_uchu_t)c, HCL_UCH_PROP_PRINT); + return UCH_IS_TYPE((hak_uchu_t)c, HAK_UCH_PROP_PRINT); } -int hcl_is_uch_graph (hcl_uch_t c) +int hak_is_uch_graph (hak_uch_t c) { - return UCH_IS_TYPE((hcl_uchu_t)c, HCL_UCH_PROP_GRAPH); + return UCH_IS_TYPE((hak_uchu_t)c, HAK_UCH_PROP_GRAPH); } -int hcl_is_uch_cntrl (hcl_uch_t c) +int hak_is_uch_cntrl (hak_uch_t c) { - return UCH_IS_TYPE((hcl_uchu_t)c, HCL_UCH_PROP_CNTRL); + return UCH_IS_TYPE((hak_uchu_t)c, HAK_UCH_PROP_CNTRL); } -int hcl_is_uch_punct (hcl_uch_t c) +int hak_is_uch_punct (hak_uch_t c) { - return UCH_IS_TYPE((hcl_uchu_t)c, HCL_UCH_PROP_PUNCT); + return UCH_IS_TYPE((hak_uchu_t)c, HAK_UCH_PROP_PUNCT); } -int hcl_is_uch_blank (hcl_uch_t c) +int hak_is_uch_blank (hak_uch_t c) { - return UCH_IS_TYPE((hcl_uchu_t)c, HCL_UCH_PROP_BLANK); + return UCH_IS_TYPE((hak_uchu_t)c, HAK_UCH_PROP_BLANK); } -hcl_uch_t hcl_to_uch_upper (hcl_uch_t c) +hak_uch_t hak_to_uch_upper (hak_uch_t c) { - hcl_uchu_t uc = (hcl_uchu_t)c; + hak_uchu_t uc = (hak_uchu_t)c; if (uc >= 0 && uc <= UCH_CASE_MAX) { uch_case_page_t* page; @@ -116,9 +116,9 @@ hcl_uch_t hcl_to_uch_upper (hcl_uch_t c) return c; } -hcl_uch_t hcl_to_uch_lower (hcl_uch_t c) +hak_uch_t hak_to_uch_lower (hak_uch_t c) { - hcl_uchu_t uc = (hcl_uchu_t)c; + hak_uchu_t uc = (hak_uchu_t)c; if (uc >= 0 && uc <= UCH_CASE_MAX) { uch_case_page_t* page; @@ -130,52 +130,52 @@ hcl_uch_t hcl_to_uch_lower (hcl_uch_t c) /* ---------------------------------------------------------- */ -int hcl_is_bch_type (hcl_bch_t c, hcl_bch_prop_t type) +int hak_is_bch_type (hak_bch_t c, hak_bch_prop_t type) { switch (type) { - case HCL_OOCH_PROP_UPPER: - return hcl_is_bch_upper(c); - case HCL_OOCH_PROP_LOWER: - return hcl_is_bch_lower(c); - case HCL_OOCH_PROP_ALPHA: - return hcl_is_bch_alpha(c); - case HCL_OOCH_PROP_DIGIT: - return hcl_is_bch_digit(c); - case HCL_OOCH_PROP_XDIGIT: - return hcl_is_bch_xdigit(c); - case HCL_OOCH_PROP_ALNUM: - return hcl_is_bch_alnum(c); - case HCL_OOCH_PROP_SPACE: - return hcl_is_bch_space(c); - case HCL_OOCH_PROP_PRINT: - return hcl_is_bch_print(c); - case HCL_OOCH_PROP_GRAPH: - return hcl_is_bch_graph(c); - case HCL_OOCH_PROP_CNTRL: - return hcl_is_bch_cntrl(c); - case HCL_OOCH_PROP_PUNCT: - return hcl_is_bch_punct(c); - case HCL_OOCH_PROP_BLANK: - return hcl_is_bch_blank(c); + case HAK_OOCH_PROP_UPPER: + return hak_is_bch_upper(c); + case HAK_OOCH_PROP_LOWER: + return hak_is_bch_lower(c); + case HAK_OOCH_PROP_ALPHA: + return hak_is_bch_alpha(c); + case HAK_OOCH_PROP_DIGIT: + return hak_is_bch_digit(c); + case HAK_OOCH_PROP_XDIGIT: + return hak_is_bch_xdigit(c); + case HAK_OOCH_PROP_ALNUM: + return hak_is_bch_alnum(c); + case HAK_OOCH_PROP_SPACE: + return hak_is_bch_space(c); + case HAK_OOCH_PROP_PRINT: + return hak_is_bch_print(c); + case HAK_OOCH_PROP_GRAPH: + return hak_is_bch_graph(c); + case HAK_OOCH_PROP_CNTRL: + return hak_is_bch_cntrl(c); + case HAK_OOCH_PROP_PUNCT: + return hak_is_bch_punct(c); + case HAK_OOCH_PROP_BLANK: + return hak_is_bch_blank(c); } /* must not reach here */ return 0; } -#if !defined(hcl_to_bch_upper) -hcl_bch_t hcl_to_bch_upper (hcl_bch_t c) +#if !defined(hak_to_bch_upper) +hak_bch_t hak_to_bch_upper (hak_bch_t c) { - if(hcl_is_bch_lower(c)) return c & 95; + if(hak_is_bch_lower(c)) return c & 95; return c; } #endif -#if !defined(hcl_to_bch_lower) -hcl_bch_t hcl_to_bch_lower (hcl_bch_t c) +#if !defined(hak_to_bch_lower) +hak_bch_t hak_to_bch_lower (hak_bch_t c) { - if(hcl_is_bch_upper(c)) return c | 32; + if(hak_is_bch_upper(c)) return c | 32; return c; } #endif @@ -193,7 +193,7 @@ struct interval }; /* auxiliary function for binary search in interval table */ -static int bisearch(hcl_uch_t ucs, const struct interval *table, int max) +static int bisearch(hak_uch_t ucs, const struct interval *table, int max) { int min = 0; int mid; @@ -242,7 +242,7 @@ static int bisearch(hcl_uch_t ucs, const struct interval *table, int max) * in ISO 10646. */ -int hcl_get_ucwidth (hcl_uch_t uc) +int hak_get_ucwidth (hak_uch_t uc) { /* sorted list of non-overlapping intervals of non-spacing characters */ /* generated by "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c" */ @@ -317,7 +317,7 @@ int hcl_get_ucwidth (hcl_uch_t uc) (uc >= 0xfe30 && uc <= 0xfe6f) || /* CJK Compatibility Forms */ (uc >= 0xff00 && uc <= 0xff60) || /* Fullwidth Forms */ (uc >= 0xffe0 && uc <= 0xffe6) - #if (HCL_SIZEOF_UCH_T > 2) + #if (HAK_SIZEOF_UCH_T > 2) || (uc >= 0x20000 && uc <= 0x2fffd) || (uc >= 0x30000 && uc <= 0x3fffd) diff --git a/lib/cmgr.c b/lib/cmgr.c index fa14694..069e7e4 100644 --- a/lib/cmgr.c +++ b/lib/cmgr.c @@ -22,144 +22,144 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include -#include +#include +#include +#include -static hcl_cmgr_t builtin_cmgr[] = +static hak_cmgr_t builtin_cmgr[] = { - /* keep the order aligned with hcl_cmgr_id_t values in */ - { hcl_utf8_to_uc, hcl_uc_to_utf8 }, - { hcl_utf16_to_uc, hcl_uc_to_utf16 }, - { hcl_mb8_to_uc, hcl_uc_to_mb8 } + /* keep the order aligned with hak_cmgr_id_t values in */ + { hak_utf8_to_uc, hak_uc_to_utf8 }, + { hak_utf16_to_uc, hak_uc_to_utf16 }, + { hak_mb8_to_uc, hak_uc_to_mb8 } }; -hcl_cmgr_t* hcl_get_cmgr_by_id (hcl_cmgr_id_t id) +hak_cmgr_t* hak_get_cmgr_by_id (hak_cmgr_id_t id) { return &builtin_cmgr[id]; } static struct { - const hcl_bch_t* name; - hcl_cmgr_id_t id; + const hak_bch_t* name; + hak_cmgr_id_t id; } builtin_cmgr_tab[] = { - { "utf8", HCL_CMGR_UTF8 }, - { "utf16", HCL_CMGR_UTF16 }, - { "mb8", HCL_CMGR_MB8 } + { "utf8", HAK_CMGR_UTF8 }, + { "utf16", HAK_CMGR_UTF16 }, + { "mb8", HAK_CMGR_MB8 } }; -hcl_cmgr_t* hcl_get_cmgr_by_bcstr (const hcl_bch_t* name) +hak_cmgr_t* hak_get_cmgr_by_bcstr (const hak_bch_t* name) { if (name) { - hcl_oow_t i; + hak_oow_t i; - for (i = 0; i < HCL_COUNTOF(builtin_cmgr_tab); i++) + for (i = 0; i < HAK_COUNTOF(builtin_cmgr_tab); i++) { - if (hcl_comp_bcstr(name, builtin_cmgr_tab[i].name) == 0) + if (hak_comp_bcstr(name, builtin_cmgr_tab[i].name) == 0) { return &builtin_cmgr[builtin_cmgr_tab[i].id]; } } } - return HCL_NULL; + return HAK_NULL; } -hcl_cmgr_t* hcl_get_cmgr_by_ucstr (const hcl_uch_t* name) +hak_cmgr_t* hak_get_cmgr_by_ucstr (const hak_uch_t* name) { if (name) { - hcl_oow_t i; + hak_oow_t i; - for (i = 0; i < HCL_COUNTOF(builtin_cmgr_tab); i++) + for (i = 0; i < HAK_COUNTOF(builtin_cmgr_tab); i++) { - if (hcl_comp_ucstr_bcstr(name, builtin_cmgr_tab[i].name) == 0) + if (hak_comp_ucstr_bcstr(name, builtin_cmgr_tab[i].name) == 0) { return &builtin_cmgr[builtin_cmgr_tab[i].id]; } } } - return HCL_NULL; + return HAK_NULL; } /* ----------------------------------------------------------------------- */ -int hcl_conv_utf8_to_uchars (const hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_uch_t* ucs, hcl_oow_t* ucslen) +int hak_conv_utf8_to_uchars (const hak_bch_t* bcs, hak_oow_t* bcslen, hak_uch_t* ucs, hak_oow_t* ucslen) { /* the source is length bound */ - return hcl_conv_bchars_to_uchars_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HCL_CMGR_UTF8], 0); + return hak_conv_bchars_to_uchars_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HAK_CMGR_UTF8], 0); } -int hcl_conv_uchars_to_utf8 (const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_bch_t* bcs, hcl_oow_t* bcslen) +int hak_conv_uchars_to_utf8 (const hak_uch_t* ucs, hak_oow_t* ucslen, hak_bch_t* bcs, hak_oow_t* bcslen) { /* length bound */ - return hcl_conv_uchars_to_bchars_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HCL_CMGR_UTF8]); + return hak_conv_uchars_to_bchars_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HAK_CMGR_UTF8]); } -int hcl_conv_utf8_to_ucstr (const hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_uch_t* ucs, hcl_oow_t* ucslen) +int hak_conv_utf8_to_ucstr (const hak_bch_t* bcs, hak_oow_t* bcslen, hak_uch_t* ucs, hak_oow_t* ucslen) { /* null-terminated. */ - return hcl_conv_bcstr_to_ucstr_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HCL_CMGR_UTF8], 0); + return hak_conv_bcstr_to_ucstr_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HAK_CMGR_UTF8], 0); } -int hcl_conv_ucstr_to_utf8 (const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_bch_t* bcs, hcl_oow_t* bcslen) +int hak_conv_ucstr_to_utf8 (const hak_uch_t* ucs, hak_oow_t* ucslen, hak_bch_t* bcs, hak_oow_t* bcslen) { /* null-terminated */ - return hcl_conv_ucstr_to_bcstr_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HCL_CMGR_UTF8]); + return hak_conv_ucstr_to_bcstr_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HAK_CMGR_UTF8]); } /* ----------------------------------------------------------------------- */ -int hcl_conv_utf16_to_uchars (const hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_uch_t* ucs, hcl_oow_t* ucslen) +int hak_conv_utf16_to_uchars (const hak_bch_t* bcs, hak_oow_t* bcslen, hak_uch_t* ucs, hak_oow_t* ucslen) { /* the source is length bound */ - return hcl_conv_bchars_to_uchars_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HCL_CMGR_UTF16], 0); + return hak_conv_bchars_to_uchars_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HAK_CMGR_UTF16], 0); } -int hcl_conv_uchars_to_utf16 (const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_bch_t* bcs, hcl_oow_t* bcslen) +int hak_conv_uchars_to_utf16 (const hak_uch_t* ucs, hak_oow_t* ucslen, hak_bch_t* bcs, hak_oow_t* bcslen) { /* length bound */ - return hcl_conv_uchars_to_bchars_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HCL_CMGR_UTF16]); + return hak_conv_uchars_to_bchars_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HAK_CMGR_UTF16]); } -int hcl_conv_utf16_to_ucstr (const hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_uch_t* ucs, hcl_oow_t* ucslen) +int hak_conv_utf16_to_ucstr (const hak_bch_t* bcs, hak_oow_t* bcslen, hak_uch_t* ucs, hak_oow_t* ucslen) { /* null-terminated. */ - return hcl_conv_bcstr_to_ucstr_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HCL_CMGR_UTF16], 0); + return hak_conv_bcstr_to_ucstr_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HAK_CMGR_UTF16], 0); } -int hcl_conv_ucstr_to_utf16 (const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_bch_t* bcs, hcl_oow_t* bcslen) +int hak_conv_ucstr_to_utf16 (const hak_uch_t* ucs, hak_oow_t* ucslen, hak_bch_t* bcs, hak_oow_t* bcslen) { /* null-terminated */ - return hcl_conv_ucstr_to_bcstr_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HCL_CMGR_UTF16]); + return hak_conv_ucstr_to_bcstr_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HAK_CMGR_UTF16]); } /* ----------------------------------------------------------------------- */ -int hcl_conv_mb8_to_uchars (const hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_uch_t* ucs, hcl_oow_t* ucslen) +int hak_conv_mb8_to_uchars (const hak_bch_t* bcs, hak_oow_t* bcslen, hak_uch_t* ucs, hak_oow_t* ucslen) { /* the source is length bound */ - return hcl_conv_bchars_to_uchars_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HCL_CMGR_MB8], 0); + return hak_conv_bchars_to_uchars_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HAK_CMGR_MB8], 0); } -int hcl_conv_uchars_to_mb8 (const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_bch_t* bcs, hcl_oow_t* bcslen) +int hak_conv_uchars_to_mb8 (const hak_uch_t* ucs, hak_oow_t* ucslen, hak_bch_t* bcs, hak_oow_t* bcslen) { /* length bound */ - return hcl_conv_uchars_to_bchars_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HCL_CMGR_MB8]); + return hak_conv_uchars_to_bchars_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HAK_CMGR_MB8]); } -int hcl_conv_mb8_to_ucstr (const hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_uch_t* ucs, hcl_oow_t* ucslen) +int hak_conv_mb8_to_ucstr (const hak_bch_t* bcs, hak_oow_t* bcslen, hak_uch_t* ucs, hak_oow_t* ucslen) { /* null-terminated. */ - return hcl_conv_bcstr_to_ucstr_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HCL_CMGR_MB8], 0); + return hak_conv_bcstr_to_ucstr_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HAK_CMGR_MB8], 0); } -int hcl_conv_ucstr_to_mb8 (const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_bch_t* bcs, hcl_oow_t* bcslen) +int hak_conv_ucstr_to_mb8 (const hak_uch_t* ucs, hak_oow_t* ucslen, hak_bch_t* bcs, hak_oow_t* bcslen) { /* null-terminated */ - return hcl_conv_ucstr_to_bcstr_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HCL_CMGR_MB8]); + return hak_conv_ucstr_to_bcstr_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HAK_CMGR_MB8]); } diff --git a/lib/cnode.c b/lib/cnode.c index faa3d1e..cc12977 100644 --- a/lib/cnode.c +++ b/lib/cnode.c @@ -22,13 +22,13 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "hcl-prv.h" +#include "hak-prv.h" -hcl_cnode_t* hcl_makecnode (hcl_t* hcl, hcl_cnode_type_t type, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok) +hak_cnode_t* hak_makecnode (hak_t* hak, hak_cnode_type_t type, int flags, const hak_loc_t* loc, const hak_oocs_t* tok) { - hcl_cnode_t* cnode; - hcl_oocs_t empty; - hcl_ooch_t dummy; + hak_cnode_t* cnode; + hak_oocs_t empty; + hak_ooch_t dummy; if (!tok) { @@ -36,196 +36,196 @@ hcl_cnode_t* hcl_makecnode (hcl_t* hcl, hcl_cnode_type_t type, int flags, const empty.len = 0; tok = ∅ } - cnode = (hcl_cnode_t*)hcl_callocmem(hcl, HCL_SIZEOF(*cnode) + HCL_SIZEOF(*tok->ptr) * (tok->len + 1)); - if (HCL_UNLIKELY(!cnode)) return HCL_NULL; + cnode = (hak_cnode_t*)hak_callocmem(hak, HAK_SIZEOF(*cnode) + HAK_SIZEOF(*tok->ptr) * (tok->len + 1)); + if (HAK_UNLIKELY(!cnode)) return HAK_NULL; cnode->cn_type = type; cnode->cn_flags = flags; cnode->cn_loc = *loc; - cnode->cn_tok.ptr = (hcl_ooch_t*)(cnode + 1); + cnode->cn_tok.ptr = (hak_ooch_t*)(cnode + 1); cnode->cn_tok.len = tok->len; - hcl_copy_oochars (cnode->cn_tok.ptr, tok->ptr, tok->len); + hak_copy_oochars (cnode->cn_tok.ptr, tok->ptr, tok->len); cnode->cn_tok.ptr[tok->len] = '\0'; return cnode; } -hcl_cnode_t* hcl_makecnodenil (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok) +hak_cnode_t* hak_makecnodenil (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok) { - return hcl_makecnode(hcl, HCL_CNODE_NIL, flags, loc, tok); + return hak_makecnode(hak, HAK_CNODE_NIL, flags, loc, tok); } -hcl_cnode_t* hcl_makecnodetrue (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok) +hak_cnode_t* hak_makecnodetrue (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok) { - return hcl_makecnode(hcl, HCL_CNODE_TRUE, flags, loc, tok); + return hak_makecnode(hak, HAK_CNODE_TRUE, flags, loc, tok); } -hcl_cnode_t* hcl_makecnodefalse (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok) +hak_cnode_t* hak_makecnodefalse (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok) { - return hcl_makecnode(hcl, HCL_CNODE_FALSE, flags, loc, tok); + return hak_makecnode(hak, HAK_CNODE_FALSE, flags, loc, tok); } -hcl_cnode_t* hcl_makecnodeself (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok) +hak_cnode_t* hak_makecnodeself (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok) { - return hcl_makecnode(hcl, HCL_CNODE_SELF, flags, loc, tok); + return hak_makecnode(hak, HAK_CNODE_SELF, flags, loc, tok); } -hcl_cnode_t* hcl_makecnodesuper (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok) +hak_cnode_t* hak_makecnodesuper (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok) { - return hcl_makecnode(hcl, HCL_CNODE_SUPER, flags, loc, tok); + return hak_makecnode(hak, HAK_CNODE_SUPER, flags, loc, tok); } -hcl_cnode_t* hcl_makecnodeellipsis (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok) +hak_cnode_t* hak_makecnodeellipsis (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok) { - return hcl_makecnode(hcl, HCL_CNODE_ELLIPSIS, flags, loc, tok); + return hak_makecnode(hak, HAK_CNODE_ELLIPSIS, flags, loc, tok); } -hcl_cnode_t* hcl_makecnodetrpcolons (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok) +hak_cnode_t* hak_makecnodetrpcolons (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok) { - return hcl_makecnode(hcl, HCL_CNODE_TRPCOLONS, flags, loc, tok); + return hak_makecnode(hak, HAK_CNODE_TRPCOLONS, flags, loc, tok); } -hcl_cnode_t* hcl_makecnodedblcolons (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok) +hak_cnode_t* hak_makecnodedblcolons (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok) { - return hcl_makecnode(hcl, HCL_CNODE_DBLCOLONS, flags, loc, tok); + return hak_makecnode(hak, HAK_CNODE_DBLCOLONS, flags, loc, tok); } -hcl_cnode_t* hcl_makecnodecolon (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok) +hak_cnode_t* hak_makecnodecolon (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok) { - return hcl_makecnode(hcl, HCL_CNODE_COLON, flags, loc, tok); + return hak_makecnode(hak, HAK_CNODE_COLON, flags, loc, tok); } -hcl_cnode_t* hcl_makecnodecolongt (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok) +hak_cnode_t* hak_makecnodecolongt (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok) { - return hcl_makecnode(hcl, HCL_CNODE_COLONGT, flags, loc, tok); + return hak_makecnode(hak, HAK_CNODE_COLONGT, flags, loc, tok); } -hcl_cnode_t* hcl_makecnodecolonlt (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok) +hak_cnode_t* hak_makecnodecolonlt (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok) { - return hcl_makecnode(hcl, HCL_CNODE_COLONLT, flags, loc, tok); + return hak_makecnode(hak, HAK_CNODE_COLONLT, flags, loc, tok); } -hcl_cnode_t* hcl_makecnodecharlit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok, hcl_ooch_t v) +hak_cnode_t* hak_makecnodecharlit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok, hak_ooch_t v) { - hcl_cnode_t* c = hcl_makecnode(hcl, HCL_CNODE_CHARLIT, flags, loc, tok); - if (HCL_UNLIKELY(!c)) return HCL_NULL; + hak_cnode_t* c = hak_makecnode(hak, HAK_CNODE_CHARLIT, flags, loc, tok); + if (HAK_UNLIKELY(!c)) return HAK_NULL; c->u.charlit.v = v; return c; } -hcl_cnode_t* hcl_makecnodebchrlit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok, hcl_oob_t v) +hak_cnode_t* hak_makecnodebchrlit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok, hak_oob_t v) { - hcl_cnode_t* c = hcl_makecnode(hcl, HCL_CNODE_BCHRLIT, flags, loc, tok); - if (HCL_UNLIKELY(!c)) return HCL_NULL; + hak_cnode_t* c = hak_makecnode(hak, HAK_CNODE_BCHRLIT, flags, loc, tok); + if (HAK_UNLIKELY(!c)) return HAK_NULL; c->u.bchrlit.v = v; return c; } -hcl_cnode_t* hcl_makecnodesymbol (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok) +hak_cnode_t* hak_makecnodesymbol (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok) { - return hcl_makecnode(hcl, HCL_CNODE_SYMBOL, flags, loc, tok); + return hak_makecnode(hak, HAK_CNODE_SYMBOL, flags, loc, tok); } -hcl_cnode_t* hcl_makecnodedsymbol (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok, int is_cla) +hak_cnode_t* hak_makecnodedsymbol (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok, int is_cla) { - hcl_cnode_t* c = hcl_makecnode(hcl, HCL_CNODE_DSYMBOL, flags, loc, tok); - if (HCL_UNLIKELY(!c)) return HCL_NULL; + hak_cnode_t* c = hak_makecnode(hak, HAK_CNODE_DSYMBOL, flags, loc, tok); + if (HAK_UNLIKELY(!c)) return HAK_NULL; c->u.dsymbol.is_cla = is_cla; return c; } -hcl_cnode_t* hcl_makecnodestrlit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok) +hak_cnode_t* hak_makecnodestrlit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok) { - return hcl_makecnode(hcl, HCL_CNODE_STRLIT, flags, loc, tok); + return hak_makecnode(hak, HAK_CNODE_STRLIT, flags, loc, tok); } -hcl_cnode_t* hcl_makecnodebstrlit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok) +hak_cnode_t* hak_makecnodebstrlit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok) { - return hcl_makecnode(hcl, HCL_CNODE_BSTRLIT, flags, loc, tok); + return hak_makecnode(hak, HAK_CNODE_BSTRLIT, flags, loc, tok); } -hcl_cnode_t* hcl_makecnodesymlit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok) +hak_cnode_t* hak_makecnodesymlit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok) { - return hcl_makecnode(hcl, HCL_CNODE_SYMLIT, flags, loc, tok); + return hak_makecnode(hak, HAK_CNODE_SYMLIT, flags, loc, tok); } -hcl_cnode_t* hcl_makecnodenumlit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok) +hak_cnode_t* hak_makecnodenumlit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok) { - return hcl_makecnode(hcl, HCL_CNODE_NUMLIT, flags, loc, tok); + return hak_makecnode(hak, HAK_CNODE_NUMLIT, flags, loc, tok); } -hcl_cnode_t* hcl_makecnoderadnumlit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok) +hak_cnode_t* hak_makecnoderadnumlit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok) { - return hcl_makecnode(hcl, HCL_CNODE_RADNUMLIT, flags, loc, tok); + return hak_makecnode(hak, HAK_CNODE_RADNUMLIT, flags, loc, tok); } -hcl_cnode_t* hcl_makecnodefpdeclit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok) +hak_cnode_t* hak_makecnodefpdeclit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok) { - return hcl_makecnode(hcl, HCL_CNODE_FPDECLIT, flags, loc, tok); + return hak_makecnode(hak, HAK_CNODE_FPDECLIT, flags, loc, tok); } -hcl_cnode_t* hcl_makecnodesmptrlit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok, hcl_oow_t v) +hak_cnode_t* hak_makecnodesmptrlit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok, hak_oow_t v) { - hcl_cnode_t* c = hcl_makecnode(hcl, HCL_CNODE_SMPTRLIT, flags, loc, tok); - if (HCL_UNLIKELY(!c)) return HCL_NULL; + hak_cnode_t* c = hak_makecnode(hak, HAK_CNODE_SMPTRLIT, flags, loc, tok); + if (HAK_UNLIKELY(!c)) return HAK_NULL; c->u.smptrlit.v = v; return c; } -hcl_cnode_t* hcl_makecnodeerrlit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok, hcl_ooi_t v) +hak_cnode_t* hak_makecnodeerrlit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok, hak_ooi_t v) { - hcl_cnode_t* c = hcl_makecnode(hcl, HCL_CNODE_ERRLIT, flags, loc, tok); - if (HCL_UNLIKELY(!c)) return HCL_NULL; + hak_cnode_t* c = hak_makecnode(hak, HAK_CNODE_ERRLIT, flags, loc, tok); + if (HAK_UNLIKELY(!c)) return HAK_NULL; c->u.errlit.v = v; return c; } -hcl_cnode_t* hcl_makecnodecons (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok, hcl_cnode_t* car, hcl_cnode_t* cdr) +hak_cnode_t* hak_makecnodecons (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok, hak_cnode_t* car, hak_cnode_t* cdr) { - hcl_cnode_t* c = hcl_makecnode(hcl, HCL_CNODE_CONS, flags, loc, tok); - if (HCL_UNLIKELY(!c)) return HCL_NULL; + hak_cnode_t* c = hak_makecnode(hak, HAK_CNODE_CONS, flags, loc, tok); + if (HAK_UNLIKELY(!c)) return HAK_NULL; c->u.cons.car = car; c->u.cons.cdr = cdr; return c; } -hcl_cnode_t* hcl_makecnodeelist (hcl_t* hcl, int flags, const hcl_loc_t* loc, hcl_concode_t type) +hak_cnode_t* hak_makecnodeelist (hak_t* hak, int flags, const hak_loc_t* loc, hak_concode_t type) { - hcl_cnode_t* c = hcl_makecnode(hcl, HCL_CNODE_ELIST, flags, loc, HCL_NULL); - if (HCL_UNLIKELY(!c)) return HCL_NULL; + hak_cnode_t* c = hak_makecnode(hak, HAK_CNODE_ELIST, flags, loc, HAK_NULL); + if (HAK_UNLIKELY(!c)) return HAK_NULL; c->u.elist.concode = type; return c; } -hcl_cnode_t* hcl_makecnodeshell (hcl_t* hcl, int flags, const hcl_loc_t* loc, hcl_cnode_t* obj) +hak_cnode_t* hak_makecnodeshell (hak_t* hak, int flags, const hak_loc_t* loc, hak_cnode_t* obj) { - hcl_cnode_t* c = hcl_makecnode(hcl, HCL_CNODE_SHELL, flags, loc, HCL_NULL); - if (HCL_UNLIKELY(!c)) return HCL_NULL; + hak_cnode_t* c = hak_makecnode(hak, HAK_CNODE_SHELL, flags, loc, HAK_NULL); + if (HAK_UNLIKELY(!c)) return HAK_NULL; c->u.shell.obj = obj; return c; } -void hcl_freesinglecnode (hcl_t* hcl, hcl_cnode_t* c) +void hak_freesinglecnode (hak_t* hak, hak_cnode_t* c) { - hcl_freemem (hcl, c); + hak_freemem (hak, c); } -void hcl_freecnode (hcl_t* hcl, hcl_cnode_t* c) +void hak_freecnode (hak_t* hak, hak_cnode_t* c) { redo: switch (c->cn_type) { - case HCL_CNODE_CONS: + case HAK_CNODE_CONS: { - hcl_cnode_t* tmp1, * tmp2; + hak_cnode_t* tmp1, * tmp2; tmp1 = c->u.cons.car; tmp2 = c->u.cons.cdr; - HCL_ASSERT (hcl, tmp1 != HCL_NULL); - hcl_freemem (hcl, c); - hcl_freecnode (hcl, tmp1); /* TODO: remove recursion? */ + HAK_ASSERT (hak, tmp1 != HAK_NULL); + hak_freemem (hak, c); + hak_freecnode (hak, tmp1); /* TODO: remove recursion? */ if (tmp2) { c = tmp2; @@ -235,12 +235,12 @@ redo: break; } - case HCL_CNODE_SHELL: + case HAK_CNODE_SHELL: { - hcl_cnode_t* tmp; + hak_cnode_t* tmp; tmp = c->u.shell.obj; - hcl_freemem (hcl, c); + hak_freemem (hak, c); if (tmp) { c = tmp; @@ -251,20 +251,20 @@ redo: } default: - hcl_freemem (hcl, c); + hak_freemem (hak, c); break; } } -hcl_oow_t hcl_countcnodecons (hcl_t* hcl, hcl_cnode_t* cons) +hak_oow_t hak_countcnodecons (hak_t* hak, hak_cnode_t* cons) { /* this function ignores the last cdr */ - hcl_oow_t count = 1; + hak_oow_t count = 1; - HCL_ASSERT (hcl, HCL_CNODE_IS_CONS(cons)); + HAK_ASSERT (hak, HAK_CNODE_IS_CONS(cons)); do { - cons = HCL_CNODE_CONS_CDR(cons); + cons = HAK_CNODE_CONS_CDR(cons); if (!cons) break; count++; } diff --git a/lib/comp.c b/lib/comp.c index f89b20c..3fab2a3 100644 --- a/lib/comp.c +++ b/lib/comp.c @@ -22,7 +22,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "hcl-prv.h" +#include "hak-prv.h" /* limit the `do` expression to have not more than 1 expression and * no variable declaration if not enclosed in parentheses */ @@ -33,8 +33,8 @@ #define FOR_TRY (2) #define FOR_CLASS (3) -#define MAX_NIVARS (HCL_SMOOI_MAX < MAX_CODE_PARAM2? HCL_SMOOI_MAX: MAX_CODE_PARAM2) -#define MAX_NCVARS (HCL_SMOOI_MAX < MAX_CODE_PARAM2? HCL_SMOOI_MAX: MAX_CODE_PARAM2) +#define MAX_NIVARS (HAK_SMOOI_MAX < MAX_CODE_PARAM2? HAK_SMOOI_MAX: MAX_CODE_PARAM2) +#define MAX_NCVARS (HAK_SMOOI_MAX < MAX_CODE_PARAM2? HAK_SMOOI_MAX: MAX_CODE_PARAM2) enum { @@ -56,7 +56,7 @@ enum enum { /* these enumerators are stored in the lower 8 bits of - * the fun_type field of hcl_funblk_info_t. + * the fun_type field of hak_funblk_info_t. * the 9th bit of the field indicate a method is defined * out of a class */ @@ -98,9 +98,9 @@ literals --> // the rest must be manipulated with code... ------------------------------ */ -int hcl_copy_string_to (hcl_t* hcl, const hcl_oocs_t* src, hcl_oocs_t* dst, hcl_oow_t* dstcapa, int append, hcl_ooch_t delim_char) +int hak_copy_string_to (hak_t* hak, const hak_oocs_t* src, hak_oocs_t* dst, hak_oow_t* dstcapa, int append, hak_ooch_t delim_char) { - hcl_oow_t len, pos; + hak_oow_t len, pos; int delim = 0; if (append) @@ -121,16 +121,16 @@ int hcl_copy_string_to (hcl_t* hcl, const hcl_oocs_t* src, hcl_oocs_t* dst, hcl_ if (len >= *dstcapa) { - hcl_ooch_t* tmp; - hcl_oow_t capa; + hak_ooch_t* tmp; + hak_oow_t capa; - capa = HCL_ALIGN(len + 1, TV_BUFFER_ALIGN); + capa = HAK_ALIGN(len + 1, TV_BUFFER_ALIGN); - tmp = (hcl_ooch_t*)hcl_reallocmem(hcl, dst->ptr, HCL_SIZEOF(*tmp) * capa); - if (HCL_UNLIKELY(!tmp)) + tmp = (hak_ooch_t*)hak_reallocmem(hak, dst->ptr, HAK_SIZEOF(*tmp) * capa); + if (HAK_UNLIKELY(!tmp)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "failed to grow string buffer - %js", orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "failed to grow string buffer - %js", orgmsg); return -1; } @@ -139,13 +139,13 @@ int hcl_copy_string_to (hcl_t* hcl, const hcl_oocs_t* src, hcl_oocs_t* dst, hcl_ } if (delim) dst->ptr[pos++] = delim_char; - hcl_copy_oochars (&dst->ptr[pos], src->ptr, src->len); + hak_copy_oochars (&dst->ptr[pos], src->ptr, src->len); dst->ptr[len] = '\0'; dst->len = len; return 0; } -static int __find_word_in_string (const hcl_oocs_t* haystack, const hcl_oocs_t* name, int last, hcl_oow_t* xindex) +static int __find_word_in_string (const hak_oocs_t* haystack, const hak_oocs_t* name, int last, hak_oow_t* xindex) { /* this function is inefficient. but considering the typical number * of arguments and temporary variables, the inefficiency can be @@ -153,13 +153,13 @@ static int __find_word_in_string (const hcl_oocs_t* haystack, const hcl_oocs_t* * table from a name to an index should be greater than this simple * inefficient lookup */ - hcl_ooch_t* t, * e; - hcl_oow_t index, i, found; + hak_ooch_t* t, * e; + hak_oow_t index, i, found; t = haystack->ptr; e = t + haystack->len; index = 0; - found = HCL_TYPE_MAX(hcl_oow_t); + found = HAK_TYPE_MAX(hak_oow_t); while (t < e) { @@ -198,7 +198,7 @@ static int __find_word_in_string (const hcl_oocs_t* haystack, const hcl_oocs_t* index++; } - if (found != HCL_TYPE_MAX(hcl_oow_t)) + if (found != HAK_TYPE_MAX(hak_oow_t)) { if (xindex) *xindex = found; return 0; /* found */ @@ -207,150 +207,150 @@ static int __find_word_in_string (const hcl_oocs_t* haystack, const hcl_oocs_t* return -1; /* not found */ } -static int add_temporary_variable (hcl_t* hcl, const hcl_cnode_t* var, hcl_oow_t dup_check_start, const hcl_bch_t* desc, const hcl_oocs_t* tgt) +static int add_temporary_variable (hak_t* hak, const hak_cnode_t* var, hak_oow_t dup_check_start, const hak_bch_t* desc, const hak_oocs_t* tgt) { - hcl_oocs_t s; - hcl_oocs_t* name; + hak_oocs_t s; + hak_oocs_t* name; int x; - name = HCL_CNODE_GET_TOK(var); + name = HAK_CNODE_GET_TOK(var); - s.ptr = hcl->c->tv.s.ptr + dup_check_start; - s.len = hcl->c->tv.s.len - dup_check_start; - if (__find_word_in_string(&s, name, 0, HCL_NULL) >= 0) + s.ptr = hak->c->tv.s.ptr + dup_check_start; + s.len = hak->c->tv.s.len - dup_check_start; + if (__find_word_in_string(&s, name, 0, HAK_NULL) >= 0) { if (tgt) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VARNAMEDUP, HCL_CNODE_GET_LOC(var), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VARNAMEDUP, HAK_CNODE_GET_LOC(var), HAK_NULL, "duplicate %hs name '%.*js' for '%.*js'", desc, name->len, name->ptr, tgt->len, tgt->ptr); } else { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VARNAMEDUP, HCL_CNODE_GET_LOC(var), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VARNAMEDUP, HAK_CNODE_GET_LOC(var), HAK_NULL, "duplicate %hs name '%.*js'", desc, name->len, name->ptr); } return -1; } - x = hcl_copy_string_to(hcl, name, &hcl->c->tv.s, &hcl->c->tv.capa, 1, ' '); - if (HCL_LIKELY(x >= 0)) hcl->c->tv.wcount++; + x = hak_copy_string_to(hak, name, &hak->c->tv.s, &hak->c->tv.capa, 1, ' '); + if (HAK_LIKELY(x >= 0)) hak->c->tv.wcount++; return x; } -static int kill_temporary_variables (hcl_t* hcl, hcl_oow_t start_wpos, hcl_oow_t end_wpos) +static int kill_temporary_variables (hak_t* hak, hak_oow_t start_wpos, hak_oow_t end_wpos) { /* this function doesn't remove the added temporary variable nor does it lower the word count. * it simply changes a word at the given postion to some garbage characters so that * the variable can't be found in the search */ - hcl_oow_t i; + hak_oow_t i; for (i = start_wpos; i < end_wpos; i++) { - if (hcl->c->tv.s.ptr[i] != ' ') + if (hak->c->tv.s.ptr[i] != ' ') { - hcl->c->tv.s.ptr[i] = '('; /* HACK!! put a special character which can't form a variable name */ + hak->c->tv.s.ptr[i] = '('; /* HACK!! put a special character which can't form a variable name */ } } return 0; } -static void kill_temporary_variable_at_offset (hcl_t* hcl, hcl_oow_t offset) +static void kill_temporary_variable_at_offset (hak_t* hak, hak_oow_t offset) { /* this is a hacky function. it's better to implement kill_temporary_variables() which uses word positions */ - HCL_ASSERT(hcl, offset < hcl->c->tv.s.len); - HCL_ASSERT(hcl, hcl->c->tv.s.ptr[offset] != ' '); - hcl->c->tv.s.ptr[offset] = '('; /* HACK!! put a special character which can't form a variable name */ + HAK_ASSERT(hak, offset < hak->c->tv.s.len); + HAK_ASSERT(hak, hak->c->tv.s.ptr[offset] != ' '); + hak->c->tv.s.ptr[offset] = '('; /* HACK!! put a special character which can't form a variable name */ } -static int init_class_level_variable_buffer (hcl_t* hcl, hcl_oocsc_t* dst, const hcl_ooch_t* ivptr, hcl_oow_t ivlen) +static int init_class_level_variable_buffer (hak_t* hak, hak_oocsc_t* dst, const hak_ooch_t* ivptr, hak_oow_t ivlen) { - hcl_ooch_t* tmp; - hcl_oow_t capa = 128; + hak_ooch_t* tmp; + hak_oow_t capa = 128; if (ivlen > capa) capa = ivlen; - tmp = (hcl_ooch_t*)hcl_allocmem(hcl, (capa + 1) * HCL_SIZEOF(*dst->ptr)); - if (HCL_UNLIKELY(!tmp)) return -1; + tmp = (hak_ooch_t*)hak_allocmem(hak, (capa + 1) * HAK_SIZEOF(*dst->ptr)); + if (HAK_UNLIKELY(!tmp)) return -1; dst->ptr = tmp; dst->len = ivlen; dst->capa = capa; - if (ivlen > 0) hcl_copy_oochars_to_oocstr(dst->ptr, dst->capa + 1, ivptr, ivlen); + if (ivlen > 0) hak_copy_oochars_to_oocstr(dst->ptr, dst->capa + 1, ivptr, ivlen); return 0; } -static void fini_class_level_variable_buffer (hcl_t* hcl, hcl_oocsc_t* dst) +static void fini_class_level_variable_buffer (hak_t* hak, hak_oocsc_t* dst) { if (dst->ptr) { - hcl_freemem(hcl, dst->ptr); - dst->ptr = HCL_NULL; + hak_freemem(hak, dst->ptr); + dst->ptr = HAK_NULL; dst->len = 0; dst->capa = 0; } } -static int add_class_level_variable (hcl_t* hcl, hcl_oocsc_t* dst, hcl_oocsc_t* altdst, const hcl_cnode_t* var, const hcl_bch_t* desc) +static int add_class_level_variable (hak_t* hak, hak_oocsc_t* dst, hak_oocsc_t* altdst, const hak_cnode_t* var, const hak_bch_t* desc) { - /* it downcasts hcl_oocsc_t* to hcl_oocs_t*. take extra care to keep their type defintion - * compatible for downcasting in hcl-cmn.h */ - hcl_oocs_t* name; + /* it downcasts hak_oocsc_t* to hak_oocs_t*. take extra care to keep their type defintion + * compatible for downcasting in hak-cmn.h */ + hak_oocs_t* name; - name = HCL_CNODE_GET_TOK(var); - if (__find_word_in_string((hcl_oocs_t*)dst, name, 0, HCL_NULL) >= 0 || - (__find_word_in_string((hcl_oocs_t*)altdst, name, 0, HCL_NULL) >= 0)) + name = HAK_CNODE_GET_TOK(var); + if (__find_word_in_string((hak_oocs_t*)dst, name, 0, HAK_NULL) >= 0 || + (__find_word_in_string((hak_oocs_t*)altdst, name, 0, HAK_NULL) >= 0)) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VARNAMEDUP, HCL_CNODE_GET_LOC(var), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VARNAMEDUP, HAK_CNODE_GET_LOC(var), HAK_NULL, "duplicate %hs variable name '%.*js'", desc, name->len, name->ptr); return -1; } - return hcl_copy_string_to(hcl, name, (hcl_oocs_t*)dst, &dst->capa, 1, ' '); + return hak_copy_string_to(hak, name, (hak_oocs_t*)dst, &dst->capa, 1, ' '); } -static int is_in_top_scope (hcl_t* hcl) +static int is_in_top_scope (hak_t* hak) { - hcl_funblk_info_t* fbi; -/*printf (">>> ---- funblk.depth ....%d\n", (int)hcl->c->funblk.depth);*/ - if (hcl->c->funblk.depth > 0) return 0; - HCL_ASSERT(hcl, hcl->c->funblk.depth >= 0); - fbi = &hcl->c->funblk.info[hcl->c->funblk.depth]; + hak_funblk_info_t* fbi; +/*printf (">>> ---- funblk.depth ....%d\n", (int)hak->c->funblk.depth);*/ + if (hak->c->funblk.depth > 0) return 0; + HAK_ASSERT(hak, hak->c->funblk.depth >= 0); + fbi = &hak->c->funblk.info[hak->c->funblk.depth]; /*printf ("fbi->clsblk_top....%d\n", (int)fbi->clsblk_top);*/ return fbi->clsblk_top < 0; } -static int is_in_top_fun_scope (hcl_t* hcl) +static int is_in_top_fun_scope (hak_t* hak) { - return hcl->c->funblk.depth == 0; + return hak->c->funblk.depth == 0; } -static int is_in_class_init_scope (hcl_t* hcl) +static int is_in_class_init_scope (hak_t* hak) { - hcl_funblk_info_t* fbi; - HCL_ASSERT(hcl, hcl->c->funblk.depth >= 0); - fbi = &hcl->c->funblk.info[hcl->c->funblk.depth]; + hak_funblk_info_t* fbi; + HAK_ASSERT(hak, hak->c->funblk.depth >= 0); + fbi = &hak->c->funblk.info[hak->c->funblk.depth]; return fbi->clsblk_top >= 0; } -static int is_in_class_method_scope (hcl_t* hcl) +static int is_in_class_method_scope (hak_t* hak) { - hcl_oow_t i; + hak_oow_t i; - HCL_ASSERT(hcl, hcl->c->funblk.depth >= 0); - for (i = hcl->c->funblk.depth + 1; i > 0; ) + HAK_ASSERT(hak, hak->c->funblk.depth >= 0); + for (i = hak->c->funblk.depth + 1; i > 0; ) { - hcl_funblk_info_t* fbi; + hak_funblk_info_t* fbi; - fbi = &hcl->c->funblk.info[--i]; + fbi = &hak->c->funblk.info[--i]; if (fbi->clsblk_top >= 0) { - if (i >= hcl->c->funblk.depth) return 0; /* in class initialization scope */ + if (i >= hak->c->funblk.depth) return 0; /* in class initialization scope */ return 1; /* in class method scope */ } } @@ -358,36 +358,36 @@ static int is_in_class_method_scope (hcl_t* hcl) return 0; /* in plain function scope */ } -static int find_variable_backward_with_word (hcl_t* hcl, const hcl_oocs_t* name, const hcl_loc_t* loc, int class_level_only, hcl_var_info_t* vi) +static int find_variable_backward_with_word (hak_t* hak, const hak_oocs_t* name, const hak_loc_t* loc, int class_level_only, hak_var_info_t* vi) { - hcl_oow_t i; + hak_oow_t i; - HCL_ASSERT(hcl, hcl->c->funblk.depth >= 0); - HCL_ASSERT(hcl, hcl->c->funblk.info[hcl->c->funblk.depth].tmprlen == hcl->c->tv.s.len); + HAK_ASSERT(hak, hak->c->funblk.depth >= 0); + HAK_ASSERT(hak, hak->c->funblk.info[hak->c->funblk.depth].tmprlen == hak->c->tv.s.len); /* depth begins at -1. so it is the actual index. let looping begin at depth + 1 * to avoid an extra exit check without it */ - for (i = hcl->c->funblk.depth + 1; i > 0; ) + for (i = hak->c->funblk.depth + 1; i > 0; ) { - hcl_funblk_info_t* fbi; - hcl_oocs_t haystack; - hcl_oow_t parent_tmprcnt, parent_tmprlen, index; + hak_funblk_info_t* fbi; + hak_oocs_t haystack; + hak_oow_t parent_tmprcnt, parent_tmprlen, index; - fbi = &hcl->c->funblk.info[--i]; + fbi = &hak->c->funblk.info[--i]; if (fbi->clsblk_top >= 0) { /* this function block has a class defined. * that is, it is in a class defintion. * variable lookup must be limited to the class scope */ - hcl_clsblk_info_t* cbi; + hak_clsblk_info_t* cbi; #if 0 for (j = fbi->clsblk_top + 1; j > fbi->clsblk_base; ) { - cbi = &hcl->c->clsblk.info[--j]; + cbi = &hak->c->clsblk.info[--j]; #endif - cbi = &hcl->c->clsblk.info[fbi->clsblk_top]; + cbi = &hak->c->clsblk.info[fbi->clsblk_top]; /* find the name in the instance variables */ haystack.ptr = cbi->ivars.ptr; @@ -395,35 +395,35 @@ static int find_variable_backward_with_word (hcl_t* hcl, const hcl_oocs_t* name, if (__find_word_in_string(&haystack, name, 1, &index) >= 0) { - hcl_oow_t fi; + hak_oow_t fi; - if (i >= hcl->c->funblk.depth) + if (i >= hak->c->funblk.depth) { /* instance variables are accessible only in an instance method defintion scope. * it is in class initialization scope */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BANNED, loc, name, "prohibited access to instance variable"); + hak_setsynerrbfmt(hak, HAK_SYNERR_BANNED, loc, name, "prohibited access to instance variable"); return -1; } - for (fi = hcl->c->funblk.depth + 1; fi > i; ) /* TOOD: review this loop for correctness */ + for (fi = hak->c->funblk.depth + 1; fi > i; ) /* TOOD: review this loop for correctness */ { /* 'i' is the function level that holds the class defintion block. the check must not go past it */ - if ((hcl->c->funblk.info[--fi].fun_type & 0xFF) == FUN_CM) + if ((hak->c->funblk.info[--fi].fun_type & 0xFF) == FUN_CM) { /* the function where this variable is defined is a class method or an plain function block within a class method*/ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BANNED, loc, name, "prohibited access to instance variable in class method context"); + hak_setsynerrbfmt(hak, HAK_SYNERR_BANNED, loc, name, "prohibited access to instance variable in class method context"); return -1; } /* instance methods and instantiation methods can access instance variables */ - if ((hcl->c->funblk.info[fi].fun_type & 0xFF) != FUN_PLAIN) break; + if ((hak->c->funblk.info[fi].fun_type & 0xFF) != FUN_PLAIN) break; } vi->type = VAR_INST; vi->ctx_offset = 0; vi->index_in_ctx = index; /* -HCL_INFO6(hcl, "FOUND INST VAR [%.*js]...[%.*js]................ ===> ctx_offset %d index %d\n", +HAK_INFO6(hak, "FOUND INST VAR [%.*js]...[%.*js]................ ===> ctx_offset %d index %d\n", haystack.len, haystack.ptr, name->len, name->ptr, (int)(vi->ctx_offset), (int)vi->index_in_ctx); */ return 1; @@ -436,11 +436,11 @@ HCL_INFO6(hcl, "FOUND INST VAR [%.*js]...[%.*js]................ ===> ctx_offset { /* TODO: VAR_CLASS_CM vs VAR_CLASS_IM, need to know if it's an instance method or a class method */ /* TODO: check if it's in the class variable .... */ - vi->type = (i >= hcl->c->funblk.depth? VAR_CLASS_I: VAR_CLASS_IM); + vi->type = (i >= hak->c->funblk.depth? VAR_CLASS_I: VAR_CLASS_IM); vi->ctx_offset = 0; vi->index_in_ctx = index; /* -HCL_INFO6(hcl, "FOUND CLASS VAR [%.*js]...[%.*js]................ ===> ctx_offset %d index %d\n", +HAK_INFO6(hak, "FOUND CLASS VAR [%.*js]...[%.*js]................ ===> ctx_offset %d index %d\n", haystack.len, haystack.ptr, name->len, name->ptr, (int)(vi->ctx_offset), (int)vi->index_in_ctx); */ return 1; @@ -448,11 +448,11 @@ HCL_INFO6(hcl, "FOUND CLASS VAR [%.*js]...[%.*js]................ ===> ctx_offse #if 0 } - if (i == hcl->c->funblk.depth) + if (i == hak->c->funblk.depth) { /* this condition indicates that the current function level contains a class defintion * and this variable is looked up inside the class defintion */ -HCL_INFO2(hcl, "CLASS NAMED VAR [%.*js]\n", name->len, name->ptr); +HAK_INFO2(hak, "CLASS NAMED VAR [%.*js]\n", name->len, name->ptr); vi->type = VAR_CLASS;//_NAMED; // TODO: create VAR_CLASS_NAMED??? vi->ctx_offset = 0; vi->index_in_ctx = 0; @@ -464,10 +464,10 @@ HCL_INFO2(hcl, "CLASS NAMED VAR [%.*js]\n", name->len, name->ptr); if (class_level_only) continue; /* skip local variable declarations */ - if (HCL_LIKELY(i > 0)) + if (HAK_LIKELY(i > 0)) { - parent_tmprlen = hcl->c->funblk.info[i - 1].tmprlen; - parent_tmprcnt = hcl->c->funblk.info[i - 1].tmprcnt; + parent_tmprlen = hak->c->funblk.info[i - 1].tmprlen; + parent_tmprcnt = hak->c->funblk.info[i - 1].tmprcnt; } else { @@ -476,41 +476,41 @@ HCL_INFO2(hcl, "CLASS NAMED VAR [%.*js]\n", name->len, name->ptr); } /* narrow the search scope to the current block */ - haystack.ptr = &hcl->c->tv.s.ptr[parent_tmprlen]; + haystack.ptr = &hak->c->tv.s.ptr[parent_tmprlen]; haystack.len = fbi->tmprlen - parent_tmprlen; if (__find_word_in_string(&haystack, name, 1, &index) >= 0) { /* temporary variables or arguments */ vi->type = VAR_INDEXED; - vi->ctx_offset = hcl->c->funblk.depth - i; /* context offset */ + vi->ctx_offset = hak->c->funblk.depth - i; /* context offset */ vi->index_in_ctx = index; -/*HCL_INFO4(hcl, "FOUND ...[%.*js]................ ===> ctx_offset %d index %d\n", name->len, name->ptr, (int)(vi->ctx_offset), (int)vi->index_in_ctx);*/ +/*HAK_INFO4(hak, "FOUND ...[%.*js]................ ===> ctx_offset %d index %d\n", name->len, name->ptr, (int)(vi->ctx_offset), (int)vi->index_in_ctx);*/ if (vi->ctx_offset > 0) { /* the current function block accesses temporaries in an outer function block */ - hcl->c->funblk.info[hcl->c->funblk.depth].access_outer = 1; + hak->c->funblk.info[hak->c->funblk.depth].access_outer = 1; /* temporaries in an outer function block is accessed by the current function block */ - if (i > 0) hcl->c->funblk.info[i - 1].accessed_by_inner = 1; + if (i > 0) hak->c->funblk.info[i - 1].accessed_by_inner = 1; } return 1; } } -/*HCL_INFO2(hcl, "NOT FOUND => %.*js\n", name->len, name->ptr); */ +/*HAK_INFO2(hak, "NOT FOUND => %.*js\n", name->len, name->ptr); */ return 0; /* not found */ } -static int find_variable_backward_with_token (hcl_t* hcl, const hcl_cnode_t* cnode, hcl_var_info_t* vi) +static int find_variable_backward_with_token (hak_t* hak, const hak_cnode_t* cnode, hak_var_info_t* vi) { - if (HCL_CNODE_IS_DSYMBOL_CLA(cnode)) + if (HAK_CNODE_IS_DSYMBOL_CLA(cnode)) { /* prefixed with self or super. remove the first segment */ - hcl_oocs_t newtok; - newtok = *HCL_CNODE_GET_TOK(cnode); + hak_oocs_t newtok; + newtok = *HAK_CNODE_GET_TOK(cnode); while (*newtok.ptr != '.') { newtok.ptr++; @@ -518,33 +518,33 @@ static int find_variable_backward_with_token (hcl_t* hcl, const hcl_cnode_t* cno } newtok.ptr++; newtok.len--; - return find_variable_backward_with_word(hcl, &newtok, HCL_CNODE_GET_LOC(cnode), 1, vi); + return find_variable_backward_with_word(hak, &newtok, HAK_CNODE_GET_LOC(cnode), 1, vi); } - return find_variable_backward_with_word(hcl, HCL_CNODE_GET_TOK(cnode), HCL_CNODE_GET_LOC(cnode), HCL_CNODE_IS_DSYMBOL_CLA(cnode), vi); + return find_variable_backward_with_word(hak, HAK_CNODE_GET_TOK(cnode), HAK_CNODE_GET_LOC(cnode), HAK_CNODE_IS_DSYMBOL_CLA(cnode), vi); } /* ========================================================================= */ -static int check_block_expression_as_body (hcl_t* hcl, hcl_cnode_t* c, const hcl_cnode_t* ctx, int for_what) +static int check_block_expression_as_body (hak_t* hak, hak_cnode_t* c, const hak_cnode_t* ctx, int for_what) { - hcl_cnode_t* car = HCL_NULL, * cdr; + hak_cnode_t* car = HAK_NULL, * cdr; /* variable declaration is disallowed. * a block expression is allowed if not followed by another expression. * unlike the function name, other types of expressions are allowed if not followed by another expression. */ - if (!c || !HCL_CNODE_IS_CONS(c)) goto no_block; /* not cons */ + if (!c || !HAK_CNODE_IS_CONS(c)) goto no_block; /* not cons */ - car = HCL_CNODE_CONS_CAR(c); - if (!car || (HCL_CNODE_IS_CONS_CONCODED(car, HCL_CONCODE_VLIST) || - HCL_CNODE_IS_ELIST_CONCODED(car, HCL_CONCODE_VLIST))) + car = HAK_CNODE_CONS_CAR(c); + if (!car || (HAK_CNODE_IS_CONS_CONCODED(car, HAK_CONCODE_VLIST) || + HAK_CNODE_IS_ELIST_CONCODED(car, HAK_CONCODE_VLIST))) { no_block: - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_BLOCK, - (car? HCL_CNODE_GET_LOC(car): c? HCL_CNODE_GET_LOC(c): HCL_CNODE_GET_LOC(ctx)), HCL_NULL, - "block expression expected as '%.*js' body", HCL_CNODE_GET_TOKLEN(ctx), HCL_CNODE_GET_TOKPTR(ctx) + hak_setsynerrbfmt ( + hak, HAK_SYNERR_BLOCK, + (car? HAK_CNODE_GET_LOC(car): c? HAK_CNODE_GET_LOC(c): HAK_CNODE_GET_LOC(ctx)), HAK_NULL, + "block expression expected as '%.*js' body", HAK_CNODE_GET_TOKLEN(ctx), HAK_CNODE_GET_TOKPTR(ctx) ); return -1; } @@ -552,43 +552,43 @@ static int check_block_expression_as_body (hcl_t* hcl, hcl_cnode_t* c, const hcl if (for_what == FOR_CLASS) { /* the class body must be enclosed in { .. }. e.g class X { ... } */ - if (!HCL_CNODE_IS_CONS_CONCODED(car, HCL_CONCODE_BLOCK) && - !HCL_CNODE_IS_ELIST_CONCODED(car, HCL_CONCODE_BLOCK)) goto no_block; + if (!HAK_CNODE_IS_CONS_CONCODED(car, HAK_CONCODE_BLOCK) && + !HAK_CNODE_IS_ELIST_CONCODED(car, HAK_CONCODE_BLOCK)) goto no_block; } /* there are special words that can't start a new expression */ - if (HCL_CNODE_IS_TYPED(car, HCL_CNODE_ELIF) || - HCL_CNODE_IS_TYPED(car, HCL_CNODE_ELSE) || - HCL_CNODE_IS_TYPED(car, HCL_CNODE_CATCH)) + if (HAK_CNODE_IS_TYPED(car, HAK_CNODE_ELIF) || + HAK_CNODE_IS_TYPED(car, HAK_CNODE_ELSE) || + HAK_CNODE_IS_TYPED(car, HAK_CNODE_CATCH)) { goto no_block; } - cdr = HCL_CNODE_CONS_CDR(c); + cdr = HAK_CNODE_CONS_CDR(c); if (cdr) { /* there is redundant expression after the block expression */ - if (HCL_CNODE_IS_CONS(cdr)) + if (HAK_CNODE_IS_CONS(cdr)) { - hcl_cnode_t* nxt; - nxt = HCL_CNODE_CONS_CAR(cdr); + hak_cnode_t* nxt; + nxt = HAK_CNODE_CONS_CAR(cdr); if (for_what == FOR_IF) { /* after the body for `if` or `elif`, there can come `elif` or `else` */ - if (HCL_CNODE_IS_TYPED(nxt, HCL_CNODE_ELIF) || - HCL_CNODE_IS_TYPED(nxt, HCL_CNODE_ELSE)) goto ok; + if (HAK_CNODE_IS_TYPED(nxt, HAK_CNODE_ELIF) || + HAK_CNODE_IS_TYPED(nxt, HAK_CNODE_ELSE)) goto ok; } else if (for_what == FOR_TRY) { - if (HCL_CNODE_IS_TYPED(nxt, HCL_CNODE_CATCH)) goto ok; + if (HAK_CNODE_IS_TYPED(nxt, HAK_CNODE_CATCH)) goto ok; } } - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_BANNED, HCL_CNODE_GET_LOC(cdr), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_BANNED, HAK_CNODE_GET_LOC(cdr), HAK_NULL, "redundant expression prohibited after '%.*js' body", - HCL_CNODE_GET_TOKLEN(ctx), HCL_CNODE_GET_TOKPTR(ctx) + HAK_CNODE_GET_TOKLEN(ctx), HAK_CNODE_GET_TOKPTR(ctx) ); return -1; } @@ -599,99 +599,99 @@ ok: /* ========================================================================= */ -static HCL_INLINE int add_literal (hcl_t* hcl, hcl_oop_t obj, hcl_oow_t* index) +static HAK_INLINE int add_literal (hak_t* hak, hak_oop_t obj, hak_oow_t* index) { - hcl_oow_t lfbase; - lfbase = (hcl->option.trait & HCL_TRAIT_INTERACTIVE)? hcl->c->funblk.info[hcl->c->funblk.depth].lfbase: 0; - return hcl_addliteraltocode(hcl, &hcl->code, obj, lfbase, index); + hak_oow_t lfbase; + lfbase = (hak->option.trait & HAK_TRAIT_INTERACTIVE)? hak->c->funblk.info[hak->c->funblk.depth].lfbase: 0; + return hak_addliteraltocode(hak, &hak->code, obj, lfbase, index); } /* ========================================================================= */ -static HCL_INLINE void patch_instruction (hcl_t* hcl, hcl_oow_t index, hcl_oob_t bc) +static HAK_INLINE void patch_instruction (hak_t* hak, hak_oow_t index, hak_oob_t bc) { - HCL_ASSERT(hcl, index < hcl->code.bc.len); - hcl->code.bc.ptr[index] = bc; + HAK_ASSERT(hak, index < hak->code.bc.len); + hak->code.bc.ptr[index] = bc; } -static int emit_byte_instruction (hcl_t* hcl, hcl_oob_t bc, const hcl_loc_t* srcloc) +static int emit_byte_instruction (hak_t* hak, hak_oob_t bc, const hak_loc_t* srcloc) { /* the context object has the ip field. it should be representable * in a small integer. for simplicity, limit the total byte code length * to fit in a small integer. because 'ip' points to the next instruction * to execute, the upper bound should be (max - 1) so that 'ip' stays * at the max when incremented */ - if (hcl->code.bc.len == HCL_SMOOI_MAX - 1) + if (hak->code.bc.len == HAK_SMOOI_MAX - 1) { - hcl_seterrnum(hcl, HCL_EBCFULL); /* byte code full/too big */ + hak_seterrnum(hak, HAK_EBCFULL); /* byte code full/too big */ return -1; } - if (hcl->code.bc.len >= hcl->code.bc.capa) + if (hak->code.bc.len >= hak->code.bc.capa) { - hcl_oow_t newcapa; - hcl_oob_t* tmp; - hcl_dbgi_t* tmp2; + hak_oow_t newcapa; + hak_oob_t* tmp; + hak_dbgi_t* tmp2; - newcapa = HCL_ALIGN(hcl->code.bc.capa + 1, HCL_BC_BUFFER_ALIGN); - tmp = (hcl_oob_t*)hcl_reallocmem(hcl, hcl->code.bc.ptr, HCL_SIZEOF(*tmp) * newcapa); - if (HCL_UNLIKELY(!tmp)) + newcapa = HAK_ALIGN(hak->code.bc.capa + 1, HAK_BC_BUFFER_ALIGN); + tmp = (hak_oob_t*)hak_reallocmem(hak, hak->code.bc.ptr, HAK_SIZEOF(*tmp) * newcapa); + if (HAK_UNLIKELY(!tmp)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "failed to grow byte code buffer - %js", orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "failed to grow byte code buffer - %js", orgmsg); return -1; } - tmp2 = (hcl_dbgi_t*)hcl_reallocmem(hcl, hcl->code.dbgi, HCL_SIZEOF(*tmp2) * newcapa); - if (HCL_UNLIKELY(!tmp2)) + tmp2 = (hak_dbgi_t*)hak_reallocmem(hak, hak->code.dbgi, HAK_SIZEOF(*tmp2) * newcapa); + if (HAK_UNLIKELY(!tmp2)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "failed to grow debug info buffer - %js", orgmsg); - hcl_freemem(hcl, tmp); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "failed to grow debug info buffer - %js", orgmsg); + hak_freemem(hak, tmp); return -1; } - HCL_MEMSET (&tmp2[hcl->code.bc.capa], 0, HCL_SIZEOF(*tmp2) * (newcapa - hcl->code.bc.capa)); + HAK_MEMSET (&tmp2[hak->code.bc.capa], 0, HAK_SIZEOF(*tmp2) * (newcapa - hak->code.bc.capa)); - hcl->code.bc.ptr = tmp; - hcl->code.bc.capa = newcapa; - hcl->code.dbgi = tmp2; + hak->code.bc.ptr = tmp; + hak->code.bc.capa = newcapa; + hak->code.dbgi = tmp2; } - hcl->code.bc.ptr[hcl->code.bc.len] = bc; + hak->code.bc.ptr[hak->code.bc.len] = bc; if (srcloc) { - hcl->code.dbgi[hcl->code.bc.len].fname = srcloc->file; - hcl->code.dbgi[hcl->code.bc.len].sline = srcloc->line; + hak->code.dbgi[hak->code.bc.len].fname = srcloc->file; + hak->code.dbgi[hak->code.bc.len].sline = srcloc->line; } - hcl->code.bc.len++; + hak->code.bc.len++; return 0; } /* COMMENTED OUT TEMPORARILY -int hcl_emitbyteinstruction (hcl_t* hcl, hcl_oob_t bc) +int hak_emitbyteinstruction (hak_t* hak, hak_oob_t bc) { - return emit_byte_instruction(hcl, bc, HCL_NULL); + return emit_byte_instruction(hak, bc, HAK_NULL); }*/ -static int emit_single_param_instruction (hcl_t* hcl, int cmd, hcl_oow_t param_1, const hcl_loc_t* srcloc) +static int emit_single_param_instruction (hak_t* hak, int cmd, hak_oow_t param_1, const hak_loc_t* srcloc) { - hcl_oob_t bc; + hak_oob_t bc; switch (cmd) { - case HCL_CODE_PUSH_IVAR_0: - case HCL_CODE_STORE_INTO_IVAR_0: - case HCL_CODE_POP_INTO_IVAR_0: - case HCL_CODE_PUSH_TEMPVAR_0: - case HCL_CODE_STORE_INTO_TEMPVAR_0: - case HCL_CODE_POP_INTO_TEMPVAR_0: + case HAK_CODE_PUSH_IVAR_0: + case HAK_CODE_STORE_INTO_IVAR_0: + case HAK_CODE_POP_INTO_IVAR_0: + case HAK_CODE_PUSH_TEMPVAR_0: + case HAK_CODE_STORE_INTO_TEMPVAR_0: + case HAK_CODE_POP_INTO_TEMPVAR_0: if (param_1 < 8) { /* low 3 bits to hold the parameter */ - bc = (hcl_oob_t)(cmd & 0xF8) | (hcl_oob_t)param_1; + bc = (hak_oob_t)(cmd & 0xF8) | (hak_oob_t)param_1; goto write_short; } else @@ -701,36 +701,36 @@ static int emit_single_param_instruction (hcl_t* hcl, int cmd, hcl_oow_t param_1 goto write_long; } - case HCL_CODE_PUSH_LITERAL_0: + case HAK_CODE_PUSH_LITERAL_0: if (param_1 < 8) { /* low 3 bits to hold the parameter */ - bc = (hcl_oob_t)(cmd & 0xF8) | (hcl_oob_t)param_1; + bc = (hak_oob_t)(cmd & 0xF8) | (hak_oob_t)param_1; goto write_short; } else if (param_1 <= MAX_CODE_PARAM) { - bc = HCL_CODE_PUSH_LITERAL_X; /* cmd | 0x80 */ + bc = HAK_CODE_PUSH_LITERAL_X; /* cmd | 0x80 */ goto write_long; } else { - bc = HCL_CODE_PUSH_LITERAL_X2; /* HCL_CODE_PUSH_LITERAL_4 | 0x80 */ + bc = HAK_CODE_PUSH_LITERAL_X2; /* HAK_CODE_PUSH_LITERAL_4 | 0x80 */ goto write_long2; } - case HCL_CODE_PUSH_OBJECT_0: - case HCL_CODE_STORE_INTO_OBJECT_0: - case HCL_CODE_POP_INTO_OBJECT_0: - case HCL_CODE_JUMP_FORWARD_0: - case HCL_CODE_JUMP_BACKWARD_0: - case HCL_CODE_CALL_0: - case HCL_CODE_SEND_0: - case HCL_CODE_SEND_TO_SUPER_0: + case HAK_CODE_PUSH_OBJECT_0: + case HAK_CODE_STORE_INTO_OBJECT_0: + case HAK_CODE_POP_INTO_OBJECT_0: + case HAK_CODE_JUMP_FORWARD_0: + case HAK_CODE_JUMP_BACKWARD_0: + case HAK_CODE_CALL_0: + case HAK_CODE_SEND_0: + case HAK_CODE_SEND_TO_SUPER_0: if (param_1 < 4) { /* low 2 bits to hold the parameter */ - bc = (hcl_oob_t)(cmd & 0xFC) | (hcl_oob_t)param_1; + bc = (hak_oob_t)(cmd & 0xFC) | (hak_oob_t)param_1; goto write_short; } else @@ -740,103 +740,103 @@ static int emit_single_param_instruction (hcl_t* hcl, int cmd, hcl_oow_t param_1 goto write_long; } - case HCL_CODE_JUMP_FORWARD_IF_TRUE: - case HCL_CODE_JUMP_FORWARD_IF_FALSE: - case HCL_CODE_JUMP2_FORWARD_IF_TRUE: - case HCL_CODE_JUMP2_FORWARD_IF_FALSE: - case HCL_CODE_JUMP2_FORWARD: - case HCL_CODE_JUMP_BACKWARD_IF_TRUE: - case HCL_CODE_JUMP_BACKWARD_IF_FALSE: - case HCL_CODE_JUMP2_BACKWARD_IF_TRUE: - case HCL_CODE_JUMP2_BACKWARD_IF_FALSE: - case HCL_CODE_JUMP2_BACKWARD: + case HAK_CODE_JUMP_FORWARD_IF_TRUE: + case HAK_CODE_JUMP_FORWARD_IF_FALSE: + case HAK_CODE_JUMP2_FORWARD_IF_TRUE: + case HAK_CODE_JUMP2_FORWARD_IF_FALSE: + case HAK_CODE_JUMP2_FORWARD: + case HAK_CODE_JUMP_BACKWARD_IF_TRUE: + case HAK_CODE_JUMP_BACKWARD_IF_FALSE: + case HAK_CODE_JUMP2_BACKWARD_IF_TRUE: + case HAK_CODE_JUMP2_BACKWARD_IF_FALSE: + case HAK_CODE_JUMP2_BACKWARD: - case HCL_CODE_PUSH_CVAR_I_X: - case HCL_CODE_STORE_INTO_CVAR_I_X: - case HCL_CODE_POP_INTO_CVAR_I_X: - case HCL_CODE_PUSH_CVAR_M_X: - case HCL_CODE_STORE_INTO_CVAR_M_X: - case HCL_CODE_POP_INTO_CVAR_M_X: + case HAK_CODE_PUSH_CVAR_I_X: + case HAK_CODE_STORE_INTO_CVAR_I_X: + case HAK_CODE_POP_INTO_CVAR_I_X: + case HAK_CODE_PUSH_CVAR_M_X: + case HAK_CODE_STORE_INTO_CVAR_M_X: + case HAK_CODE_POP_INTO_CVAR_M_X: - case HCL_CODE_CLASS_CMSTORE: - case HCL_CODE_CLASS_CIMSTORE: - case HCL_CODE_CLASS_IMSTORE: - case HCL_CODE_TRY_ENTER: - case HCL_CODE_TRY_ENTER2: - case HCL_CODE_PUSH_INTLIT: - case HCL_CODE_PUSH_NEGINTLIT: - case HCL_CODE_PUSH_CHARLIT: + case HAK_CODE_CLASS_CMSTORE: + case HAK_CODE_CLASS_CIMSTORE: + case HAK_CODE_CLASS_IMSTORE: + case HAK_CODE_TRY_ENTER: + case HAK_CODE_TRY_ENTER2: + case HAK_CODE_PUSH_INTLIT: + case HAK_CODE_PUSH_NEGINTLIT: + case HAK_CODE_PUSH_CHARLIT: - case HCL_CODE_MAKE_DIC: /* TODO: don't these need write_long2? */ - case HCL_CODE_MAKE_ARRAY: - case HCL_CODE_MAKE_BYTEARRAY: - case HCL_CODE_MAKE_CHARARRAY: - case HCL_CODE_POP_INTO_ARRAY: - case HCL_CODE_POP_INTO_BYTEARRAY: - case HCL_CODE_POP_INTO_CHARARRAY: + case HAK_CODE_MAKE_DIC: /* TODO: don't these need write_long2? */ + case HAK_CODE_MAKE_ARRAY: + case HAK_CODE_MAKE_BYTEARRAY: + case HAK_CODE_MAKE_CHARARRAY: + case HAK_CODE_POP_INTO_ARRAY: + case HAK_CODE_POP_INTO_BYTEARRAY: + case HAK_CODE_POP_INTO_CHARARRAY: bc = cmd; goto write_long; } - hcl_seterrbfmt(hcl, HCL_EINVAL, "unhandled single-parameter instruction %u", (unsigned int)cmd); + hak_seterrbfmt(hak, HAK_EINVAL, "unhandled single-parameter instruction %u", (unsigned int)cmd); return -1; write_short: /* short parameter */ - if (emit_byte_instruction(hcl, bc, srcloc) <= -1) return -1; + if (emit_byte_instruction(hak, bc, srcloc) <= -1) return -1; return 0; write_long: /* long parameter */ if (param_1 > MAX_CODE_PARAM) { - hcl_seterrbfmt(hcl, HCL_ERANGE, "parameter too large to single-parameter instruction %u", (unsigned int)cmd); + hak_seterrbfmt(hak, HAK_ERANGE, "parameter too large to single-parameter instruction %u", (unsigned int)cmd); return -1; } -#if (HCL_CODE_LONG_PARAM_SIZE == 2) - if (emit_byte_instruction(hcl, bc, srcloc) <= -1 || - emit_byte_instruction(hcl, (param_1 >> 8) & 0xFF, HCL_NULL) <= -1 || - emit_byte_instruction(hcl, param_1 & 0xFF, HCL_NULL) <= -1) return -1; +#if (HAK_CODE_LONG_PARAM_SIZE == 2) + if (emit_byte_instruction(hak, bc, srcloc) <= -1 || + emit_byte_instruction(hak, (param_1 >> 8) & 0xFF, HAK_NULL) <= -1 || + emit_byte_instruction(hak, param_1 & 0xFF, HAK_NULL) <= -1) return -1; #else - if (emit_byte_instruction(hcl, bc, srcloc) <= -1 || - emit_byte_instruction(hcl, param_1, HCL_NULL) <= -1) return -1; + if (emit_byte_instruction(hak, bc, srcloc) <= -1 || + emit_byte_instruction(hak, param_1, HAK_NULL) <= -1) return -1; #endif return 0; write_long2: /* double-long parameter */ if (param_1 > MAX_CODE_PARAM2) { - hcl_seterrbfmt(hcl, HCL_ERANGE, "parameter too large to single-parameter instruction %u", (unsigned int)cmd); + hak_seterrbfmt(hak, HAK_ERANGE, "parameter too large to single-parameter instruction %u", (unsigned int)cmd); return -1; } -#if (HCL_CODE_LONG_PARAM_SIZE == 2) - if (emit_byte_instruction(hcl, bc, srcloc) <= -1 || - emit_byte_instruction(hcl, (param_1 >> 24) & 0xFF, HCL_NULL) <= -1 || - emit_byte_instruction(hcl, (param_1 >> 16) & 0xFF, HCL_NULL) <= -1 || - emit_byte_instruction(hcl, (param_1 >> 8) & 0xFF, HCL_NULL) <= -1 || - emit_byte_instruction(hcl, (param_1 >> 0) & 0xFF, HCL_NULL) <= -1) return -1; +#if (HAK_CODE_LONG_PARAM_SIZE == 2) + if (emit_byte_instruction(hak, bc, srcloc) <= -1 || + emit_byte_instruction(hak, (param_1 >> 24) & 0xFF, HAK_NULL) <= -1 || + emit_byte_instruction(hak, (param_1 >> 16) & 0xFF, HAK_NULL) <= -1 || + emit_byte_instruction(hak, (param_1 >> 8) & 0xFF, HAK_NULL) <= -1 || + emit_byte_instruction(hak, (param_1 >> 0) & 0xFF, HAK_NULL) <= -1) return -1; #else - if (emit_byte_instruction(hcl, bc, srcloc) <= -1 || - emit_byte_instruction(hcl, (param_1 >> 8) & 0xFF, HCL_NULL) <= -1 || - emit_byte_instruction(hcl, (param_1 >> 0) & 0xFF, HCL_NULL) <= -1) return -1; + if (emit_byte_instruction(hak, bc, srcloc) <= -1 || + emit_byte_instruction(hak, (param_1 >> 8) & 0xFF, HAK_NULL) <= -1 || + emit_byte_instruction(hak, (param_1 >> 0) & 0xFF, HAK_NULL) <= -1) return -1; #endif return 0; } -static int emit_double_param_instruction (hcl_t* hcl, int cmd, hcl_oow_t param_1, hcl_oow_t param_2, const hcl_loc_t* srcloc) +static int emit_double_param_instruction (hak_t* hak, int cmd, hak_oow_t param_1, hak_oow_t param_2, const hak_loc_t* srcloc) { - hcl_oob_t bc; + hak_oob_t bc; switch (cmd) { - case HCL_CODE_STORE_INTO_CTXTEMPVAR_0: - case HCL_CODE_POP_INTO_CTXTEMPVAR_0: - case HCL_CODE_PUSH_CTXTEMPVAR_0: - case HCL_CODE_PUSH_OBJVAR_0: - case HCL_CODE_STORE_INTO_OBJVAR_0: - case HCL_CODE_POP_INTO_OBJVAR_0: + case HAK_CODE_STORE_INTO_CTXTEMPVAR_0: + case HAK_CODE_POP_INTO_CTXTEMPVAR_0: + case HAK_CODE_PUSH_CTXTEMPVAR_0: + case HAK_CODE_PUSH_OBJVAR_0: + case HAK_CODE_STORE_INTO_OBJVAR_0: + case HAK_CODE_POP_INTO_OBJVAR_0: if (param_1 < 4 && param_2 < 0xFF) { /* low 2 bits of the instruction code is the first parameter */ - bc = (hcl_oob_t)(cmd & 0xFC) | (hcl_oob_t)param_1; + bc = (hak_oob_t)(cmd & 0xFC) | (hak_oob_t)param_1; goto write_short; } else @@ -851,321 +851,321 @@ static int emit_double_param_instruction (hcl_t* hcl, int cmd, hcl_oow_t param_1 * however the instruction format is the same up to the second * parameters between MAKE_FUNCTION and MAKE_BLOCK. */ - case HCL_CODE_MAKE_BLOCK: - case HCL_CODE_MAKE_FUNCTION: - case HCL_CODE_CALL_R: - case HCL_CODE_SEND_R: + case HAK_CODE_MAKE_BLOCK: + case HAK_CODE_MAKE_FUNCTION: + case HAK_CODE_CALL_R: + case HAK_CODE_SEND_R: bc = cmd; goto write_long; } - hcl_seterrbfmt(hcl, HCL_EINVAL, "unhandled double-parameter instruction %u", (unsigned int)cmd); + hak_seterrbfmt(hak, HAK_EINVAL, "unhandled double-parameter instruction %u", (unsigned int)cmd); return -1; write_short: - if (emit_byte_instruction(hcl, bc, srcloc) <= -1 || - emit_byte_instruction(hcl, param_2, HCL_NULL) <= -1) return -1; + if (emit_byte_instruction(hak, bc, srcloc) <= -1 || + emit_byte_instruction(hak, param_2, HAK_NULL) <= -1) return -1; return 0; write_long: if (param_1 > MAX_CODE_PARAM || param_2 > MAX_CODE_PARAM) { - hcl_seterrbfmt(hcl, HCL_ERANGE, "parameter too large to double-parameter instruction 0x%u - param_1 0x%zu param_2 0x%zu", (unsigned int)cmd, param_1, param_2); + hak_seterrbfmt(hak, HAK_ERANGE, "parameter too large to double-parameter instruction 0x%u - param_1 0x%zu param_2 0x%zu", (unsigned int)cmd, param_1, param_2); return -1; } -#if (HCL_CODE_LONG_PARAM_SIZE == 2) - if (emit_byte_instruction(hcl, bc, srcloc) <= -1 || - emit_byte_instruction(hcl, (param_1 >> 8) & 0xFF, HCL_NULL) <= -1 || - emit_byte_instruction(hcl, param_1 & 0xFF, HCL_NULL) <= -1 || - emit_byte_instruction(hcl, (param_2 >> 8) & 0xFF, HCL_NULL) <= -1 || - emit_byte_instruction(hcl, param_2 & 0xFF, HCL_NULL) <= -1) return -1; +#if (HAK_CODE_LONG_PARAM_SIZE == 2) + if (emit_byte_instruction(hak, bc, srcloc) <= -1 || + emit_byte_instruction(hak, (param_1 >> 8) & 0xFF, HAK_NULL) <= -1 || + emit_byte_instruction(hak, param_1 & 0xFF, HAK_NULL) <= -1 || + emit_byte_instruction(hak, (param_2 >> 8) & 0xFF, HAK_NULL) <= -1 || + emit_byte_instruction(hak, param_2 & 0xFF, HAK_NULL) <= -1) return -1; #else - if (emit_byte_instruction(hcl, bc, srcloc) <= -1 || - emit_byte_instruction(hcl, param_1, HCL_NULL) <= -1 || - emit_byte_instruction(hcl, param_2, HCL_NULL) <= -1) return -1; + if (emit_byte_instruction(hak, bc, srcloc) <= -1 || + emit_byte_instruction(hak, param_1, HAK_NULL) <= -1 || + emit_byte_instruction(hak, param_2, HAK_NULL) <= -1) return -1; #endif return 0; } -static HCL_INLINE int emit_long_param (hcl_t* hcl, hcl_oow_t param) +static HAK_INLINE int emit_long_param (hak_t* hak, hak_oow_t param) { if (param > MAX_CODE_PARAM) { - hcl_seterrnum(hcl, HCL_ERANGE); + hak_seterrnum(hak, HAK_ERANGE); return -1; } -#if (HCL_CODE_LONG_PARAM_SIZE == 2) - return (emit_byte_instruction(hcl, param >> 8, HCL_NULL) <= -1 || - emit_byte_instruction(hcl, param & 0xFF, HCL_NULL) <= -1)? -1: 0; +#if (HAK_CODE_LONG_PARAM_SIZE == 2) + return (emit_byte_instruction(hak, param >> 8, HAK_NULL) <= -1 || + emit_byte_instruction(hak, param & 0xFF, HAK_NULL) <= -1)? -1: 0; #else - return emit_byte_instruction(hcl, param_1, HCL_NULL); + return emit_byte_instruction(hak, param_1, HAK_NULL); #endif } -static int emit_push_literal (hcl_t* hcl, hcl_oop_t obj, const hcl_loc_t* srcloc) +static int emit_push_literal (hak_t* hak, hak_oop_t obj, const hak_loc_t* srcloc) { - hcl_oow_t index; + hak_oow_t index; - if (HCL_OOP_IS_SMOOI(obj)) + if (HAK_OOP_IS_SMOOI(obj)) { - hcl_ooi_t i; + hak_ooi_t i; - i = HCL_OOP_TO_SMOOI(obj); + i = HAK_OOP_TO_SMOOI(obj); switch (i) { case -1: - return emit_byte_instruction(hcl, HCL_CODE_PUSH_NEGONE, srcloc); + return emit_byte_instruction(hak, HAK_CODE_PUSH_NEGONE, srcloc); case 0: - return emit_byte_instruction(hcl, HCL_CODE_PUSH_ZERO, srcloc); + return emit_byte_instruction(hak, HAK_CODE_PUSH_ZERO, srcloc); case 1: - return emit_byte_instruction(hcl, HCL_CODE_PUSH_ONE, srcloc); + return emit_byte_instruction(hak, HAK_CODE_PUSH_ONE, srcloc); case 2: - return emit_byte_instruction(hcl, HCL_CODE_PUSH_TWO, srcloc); + return emit_byte_instruction(hak, HAK_CODE_PUSH_TWO, srcloc); } if (i >= 0 && i <= MAX_CODE_PARAM) { - return emit_single_param_instruction(hcl, HCL_CODE_PUSH_INTLIT, i, srcloc); + return emit_single_param_instruction(hak, HAK_CODE_PUSH_INTLIT, i, srcloc); } - else if (i < 0 && i >= -(hcl_ooi_t)MAX_CODE_PARAM) + else if (i < 0 && i >= -(hak_ooi_t)MAX_CODE_PARAM) { - return emit_single_param_instruction(hcl, HCL_CODE_PUSH_NEGINTLIT, -i, srcloc); + return emit_single_param_instruction(hak, HAK_CODE_PUSH_NEGINTLIT, -i, srcloc); } } - else if (HCL_OOP_IS_CHAR(obj)) + else if (HAK_OOP_IS_CHAR(obj)) { - hcl_ooch_t i; + hak_ooch_t i; - i = HCL_OOP_TO_CHAR(obj); + i = HAK_OOP_TO_CHAR(obj); if (i >= 0 && i <= MAX_CODE_PARAM) - return emit_single_param_instruction(hcl, HCL_CODE_PUSH_CHARLIT, i, srcloc); + return emit_single_param_instruction(hak, HAK_CODE_PUSH_CHARLIT, i, srcloc); } - if (add_literal(hcl, obj, &index) <= -1 || - emit_single_param_instruction(hcl, HCL_CODE_PUSH_LITERAL_0, index, srcloc) <= -1) return -1; + if (add_literal(hak, obj, &index) <= -1 || + emit_single_param_instruction(hak, HAK_CODE_PUSH_LITERAL_0, index, srcloc) <= -1) return -1; return 0; } -static HCL_INLINE void patch_long_jump (hcl_t* hcl, hcl_ooi_t jip, hcl_ooi_t jump_offset) +static HAK_INLINE void patch_long_jump (hak_t* hak, hak_ooi_t jip, hak_ooi_t jump_offset) { if (jump_offset > MAX_CODE_JUMP) { /* switch to JUMP2 instruction to allow a bigger jump offset. * up to twice MAX_CODE_JUMP only */ - HCL_ASSERT(hcl, jump_offset <= MAX_CODE_JUMP * 2); + HAK_ASSERT(hak, jump_offset <= MAX_CODE_JUMP * 2); - HCL_ASSERT(hcl, hcl->code.bc.ptr[jip] == HCL_CODE_JUMP_FORWARD_X || - hcl->code.bc.ptr[jip] == HCL_CODE_JUMP_FORWARD_IF_TRUE || - hcl->code.bc.ptr[jip] == HCL_CODE_JUMP_FORWARD_IF_FALSE || - hcl->code.bc.ptr[jip] == HCL_CODE_JUMP_BACKWARD_X || - hcl->code.bc.ptr[jip] == HCL_CODE_JUMP_BACKWARD_IF_TRUE || - hcl->code.bc.ptr[jip] == HCL_CODE_JUMP_BACKWARD_IF_FALSE || - hcl->code.bc.ptr[jip] == HCL_CODE_TRY_ENTER); + HAK_ASSERT(hak, hak->code.bc.ptr[jip] == HAK_CODE_JUMP_FORWARD_X || + hak->code.bc.ptr[jip] == HAK_CODE_JUMP_FORWARD_IF_TRUE || + hak->code.bc.ptr[jip] == HAK_CODE_JUMP_FORWARD_IF_FALSE || + hak->code.bc.ptr[jip] == HAK_CODE_JUMP_BACKWARD_X || + hak->code.bc.ptr[jip] == HAK_CODE_JUMP_BACKWARD_IF_TRUE || + hak->code.bc.ptr[jip] == HAK_CODE_JUMP_BACKWARD_IF_FALSE || + hak->code.bc.ptr[jip] == HAK_CODE_TRY_ENTER); /* JUMP2 instructions are chosen to be greater than its JUMP counterpart by 1 */ - patch_instruction(hcl, jip, hcl->code.bc.ptr[jip] + 1); + patch_instruction(hak, jip, hak->code.bc.ptr[jip] + 1); jump_offset -= MAX_CODE_JUMP; } -#if (HCL_CODE_LONG_PARAM_SIZE == 2) - patch_instruction(hcl, jip + 1, jump_offset >> 8); - patch_instruction(hcl, jip + 2, jump_offset & 0xFF); +#if (HAK_CODE_LONG_PARAM_SIZE == 2) + patch_instruction(hak, jip + 1, jump_offset >> 8); + patch_instruction(hak, jip + 2, jump_offset & 0xFF); #else - patch_instruction(hcl, jip + 1, jump_offset); + patch_instruction(hak, jip + 1, jump_offset); #endif } -static HCL_INLINE void patch_long_param (hcl_t* hcl, hcl_ooi_t ip, hcl_oow_t param) +static HAK_INLINE void patch_long_param (hak_t* hak, hak_ooi_t ip, hak_oow_t param) { -#if (HCL_CODE_LONG_PARAM_SIZE == 2) - patch_instruction(hcl, ip, param >> 8); - patch_instruction(hcl, ip + 1, param & 0xFF); +#if (HAK_CODE_LONG_PARAM_SIZE == 2) + patch_instruction(hak, ip, param >> 8); + patch_instruction(hak, ip + 1, param & 0xFF); #else - patch_instruction(hcl, ip, param); + patch_instruction(hak, ip, param); #endif } -static HCL_INLINE void patch_double_long_params (hcl_t* hcl, hcl_ooi_t ip, hcl_oow_t param_1, hcl_oow_t param_2) +static HAK_INLINE void patch_double_long_params (hak_t* hak, hak_ooi_t ip, hak_oow_t param_1, hak_oow_t param_2) { -#if (HCL_CODE_LONG_PARAM_SIZE == 2) - patch_instruction(hcl, ip, param_1 >> 8); - patch_instruction(hcl, ip + 1, param_1 & 0xFF); - patch_instruction(hcl, ip + 2, param_2 >> 8); - patch_instruction(hcl, ip + 3, param_2 & 0xFF); +#if (HAK_CODE_LONG_PARAM_SIZE == 2) + patch_instruction(hak, ip, param_1 >> 8); + patch_instruction(hak, ip + 1, param_1 & 0xFF); + patch_instruction(hak, ip + 2, param_2 >> 8); + patch_instruction(hak, ip + 3, param_2 & 0xFF); #else - patch_instruction(hcl, ip, param_1); - patch_instruction(hcl, ip + 1, param_2); + patch_instruction(hak, ip, param_1); + patch_instruction(hak, ip + 1, param_2); #endif } -static HCL_INLINE void patch_double_long_params_with_oow (hcl_t* hcl, hcl_ooi_t ip, hcl_oow_t param) +static HAK_INLINE void patch_double_long_params_with_oow (hak_t* hak, hak_ooi_t ip, hak_oow_t param) { -#if (HCL_CODE_LONG_PARAM_SIZE == 2) - patch_instruction(hcl, ip, (param >> 24) & 0xFF); - patch_instruction(hcl, ip + 1, (param >> 16) & 0xFF); - patch_instruction(hcl, ip + 2, (param >> 8) & 0xFF); - patch_instruction(hcl, ip + 3, (param >> 0) & 0xFF); +#if (HAK_CODE_LONG_PARAM_SIZE == 2) + patch_instruction(hak, ip, (param >> 24) & 0xFF); + patch_instruction(hak, ip + 1, (param >> 16) & 0xFF); + patch_instruction(hak, ip + 2, (param >> 8) & 0xFF); + patch_instruction(hak, ip + 3, (param >> 0) & 0xFF); #else - patch_instruction(hcl, ip, (param >> 8) & 9xFF); - patch_instruction(hcl, ip + 1, (param >> 0) & 0xFF); + patch_instruction(hak, ip, (param >> 8) & 9xFF); + patch_instruction(hak, ip + 1, (param >> 0) & 0xFF); #endif } -static int emit_variable_access (hcl_t* hcl, int mode, const hcl_var_info_t* vi, const hcl_loc_t* srcloc) +static int emit_variable_access (hak_t* hak, int mode, const hak_var_info_t* vi, const hak_loc_t* srcloc) { - static hcl_oob_t inst_map[][3] = + static hak_oob_t inst_map[][3] = { - { HCL_CODE_PUSH_CTXTEMPVAR_0, HCL_CODE_POP_INTO_CTXTEMPVAR_0, HCL_CODE_STORE_INTO_CTXTEMPVAR_0 }, - { HCL_CODE_PUSH_IVAR_0, HCL_CODE_POP_INTO_IVAR_0, HCL_CODE_STORE_INTO_IVAR_0 }, - { HCL_CODE_PUSH_CVAR_I_X, HCL_CODE_POP_INTO_CVAR_I_X, HCL_CODE_STORE_INTO_CVAR_I_X }, - { HCL_CODE_PUSH_CVAR_M_X, HCL_CODE_POP_INTO_CVAR_M_X, HCL_CODE_STORE_INTO_CVAR_M_X } + { HAK_CODE_PUSH_CTXTEMPVAR_0, HAK_CODE_POP_INTO_CTXTEMPVAR_0, HAK_CODE_STORE_INTO_CTXTEMPVAR_0 }, + { HAK_CODE_PUSH_IVAR_0, HAK_CODE_POP_INTO_IVAR_0, HAK_CODE_STORE_INTO_IVAR_0 }, + { HAK_CODE_PUSH_CVAR_I_X, HAK_CODE_POP_INTO_CVAR_I_X, HAK_CODE_STORE_INTO_CVAR_I_X }, + { HAK_CODE_PUSH_CVAR_M_X, HAK_CODE_POP_INTO_CVAR_M_X, HAK_CODE_STORE_INTO_CVAR_M_X } }; switch (vi->type) { case VAR_INDEXED: - return emit_double_param_instruction(hcl, inst_map[0][mode], vi->ctx_offset, vi->index_in_ctx, srcloc); + return emit_double_param_instruction(hak, inst_map[0][mode], vi->ctx_offset, vi->index_in_ctx, srcloc); case VAR_INST: - HCL_ASSERT(hcl, vi->ctx_offset == 0); - return emit_single_param_instruction(hcl, inst_map[1][mode], vi->index_in_ctx, srcloc); + HAK_ASSERT(hak, vi->ctx_offset == 0); + return emit_single_param_instruction(hak, inst_map[1][mode], vi->index_in_ctx, srcloc); case VAR_CLASS_I: /* class variable in initialization scope */ - HCL_ASSERT(hcl, vi->ctx_offset == 0); - return emit_single_param_instruction(hcl, inst_map[2][mode], vi->index_in_ctx, srcloc); + HAK_ASSERT(hak, vi->ctx_offset == 0); + return emit_single_param_instruction(hak, inst_map[2][mode], vi->index_in_ctx, srcloc); case VAR_CLASS_CM: /* class variable in class method scope */ case VAR_CLASS_IM: /* class variable in instance method scope */ - HCL_ASSERT(hcl, vi->ctx_offset == 0); - return emit_single_param_instruction(hcl, inst_map[3][mode], vi->index_in_ctx, srcloc); + HAK_ASSERT(hak, vi->ctx_offset == 0); + return emit_single_param_instruction(hak, inst_map[3][mode], vi->index_in_ctx, srcloc); } return -1; } /* ========================================================================= */ -static int push_ctlblk (hcl_t* hcl, const hcl_loc_t* errloc, hcl_ctlblk_type_t type) +static int push_ctlblk (hak_t* hak, const hak_loc_t* errloc, hak_ctlblk_type_t type) { - hcl_oow_t new_depth; + hak_oow_t new_depth; - HCL_ASSERT(hcl, hcl->c->ctlblk.depth >= -1); + HAK_ASSERT(hak, hak->c->ctlblk.depth >= -1); - if (hcl->c->ctlblk.depth == HCL_TYPE_MAX(hcl_ooi_t)) + if (hak->c->ctlblk.depth == HAK_TYPE_MAX(hak_ooi_t)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BLKDEPTH, errloc, HCL_NULL, "control block depth too deep"); + hak_setsynerrbfmt(hak, HAK_SYNERR_BLKDEPTH, errloc, HAK_NULL, "control block depth too deep"); return -1; } - new_depth = hcl->c->ctlblk.depth + 1; - if (hcl->c->ctlblk.depth >= hcl->c->ctlblk.info_capa) + new_depth = hak->c->ctlblk.depth + 1; + if (hak->c->ctlblk.depth >= hak->c->ctlblk.info_capa) { - hcl_ctlblk_info_t* tmp; - hcl_oow_t newcapa; + hak_ctlblk_info_t* tmp; + hak_oow_t newcapa; - newcapa = HCL_ALIGN(new_depth + 1, BLK_INFO_BUFFER_ALIGN); - tmp = (hcl_ctlblk_info_t*)hcl_reallocmem(hcl, hcl->c->ctlblk.info, newcapa * HCL_SIZEOF(*tmp)); - if (HCL_UNLIKELY(!tmp)) + newcapa = HAK_ALIGN(new_depth + 1, BLK_INFO_BUFFER_ALIGN); + tmp = (hak_ctlblk_info_t*)hak_reallocmem(hak, hak->c->ctlblk.info, newcapa * HAK_SIZEOF(*tmp)); + if (HAK_UNLIKELY(!tmp)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "failed to resize control block info buffer - %js", orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "failed to resize control block info buffer - %js", orgmsg); return -1; } - hcl->c->ctlblk.info_capa = newcapa; - hcl->c->ctlblk.info = tmp; + hak->c->ctlblk.info_capa = newcapa; + hak->c->ctlblk.info = tmp; } - HCL_MEMSET (&hcl->c->ctlblk.info[new_depth], 0, HCL_SIZEOF(hcl->c->ctlblk.info[new_depth])); - hcl->c->ctlblk.info[new_depth]._type = type; - hcl->c->ctlblk.depth = new_depth; + HAK_MEMSET (&hak->c->ctlblk.info[new_depth], 0, HAK_SIZEOF(hak->c->ctlblk.info[new_depth])); + hak->c->ctlblk.info[new_depth]._type = type; + hak->c->ctlblk.depth = new_depth; return 0; } -static void pop_ctlblk (hcl_t* hcl) +static void pop_ctlblk (hak_t* hak) { - HCL_ASSERT(hcl, hcl->c->ctlblk.depth >= 0); /* depth is of a signed type */ + HAK_ASSERT(hak, hak->c->ctlblk.depth >= 0); /* depth is of a signed type */ /* a control block stays inside a function block. * the control block stack must not be popped past the starting base * of the owning function block */ - HCL_ASSERT(hcl, hcl->c->ctlblk.depth - 1 >= hcl->c->funblk.info[hcl->c->funblk.depth].ctlblk_base); - hcl->c->ctlblk.depth--; + HAK_ASSERT(hak, hak->c->ctlblk.depth - 1 >= hak->c->funblk.info[hak->c->funblk.depth].ctlblk_base); + hak->c->ctlblk.depth--; } static int push_clsblk ( - hcl_t* hcl, const hcl_loc_t* errloc, hcl_cnode_t* class_name, hcl_oow_t nivars, hcl_oow_t ncvars, - const hcl_ooch_t* ivars_str, hcl_oow_t ivars_strlen, const hcl_ooch_t* cvars_str, hcl_oow_t cvars_strlen) + hak_t* hak, const hak_loc_t* errloc, hak_cnode_t* class_name, hak_oow_t nivars, hak_oow_t ncvars, + const hak_ooch_t* ivars_str, hak_oow_t ivars_strlen, const hak_ooch_t* cvars_str, hak_oow_t cvars_strlen) { - hcl_oow_t new_depth; - hcl_clsblk_info_t* ci; - hcl_funblk_info_t* fbi; + hak_oow_t new_depth; + hak_clsblk_info_t* ci; + hak_funblk_info_t* fbi; - HCL_ASSERT(hcl, hcl->c->clsblk.depth >= -1); + HAK_ASSERT(hak, hak->c->clsblk.depth >= -1); - if (hcl->c->clsblk.depth == HCL_TYPE_MAX(hcl_ooi_t)) + if (hak->c->clsblk.depth == HAK_TYPE_MAX(hak_ooi_t)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BLKDEPTH, errloc, HCL_NULL, "class block depth too deep"); + hak_setsynerrbfmt(hak, HAK_SYNERR_BLKDEPTH, errloc, HAK_NULL, "class block depth too deep"); return -1; } - new_depth = hcl->c->clsblk.depth + 1; - if (hcl->c->clsblk.depth >= hcl->c->clsblk.info_capa) + new_depth = hak->c->clsblk.depth + 1; + if (hak->c->clsblk.depth >= hak->c->clsblk.info_capa) { - hcl_clsblk_info_t* tmp; - hcl_oow_t newcapa; + hak_clsblk_info_t* tmp; + hak_oow_t newcapa; - newcapa = HCL_ALIGN(new_depth + 1, BLK_INFO_BUFFER_ALIGN); - tmp = (hcl_clsblk_info_t*)hcl_reallocmem(hcl, hcl->c->clsblk.info, newcapa * HCL_SIZEOF(*tmp)); - if (HCL_UNLIKELY(!tmp)) + newcapa = HAK_ALIGN(new_depth + 1, BLK_INFO_BUFFER_ALIGN); + tmp = (hak_clsblk_info_t*)hak_reallocmem(hak, hak->c->clsblk.info, newcapa * HAK_SIZEOF(*tmp)); + if (HAK_UNLIKELY(!tmp)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "failed to resize class block info buffer - %js", orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "failed to resize class block info buffer - %js", orgmsg); return -1; } - hcl->c->clsblk.info_capa = newcapa; - hcl->c->clsblk.info = tmp; + hak->c->clsblk.info_capa = newcapa; + hak->c->clsblk.info = tmp; } - ci = &hcl->c->clsblk.info[new_depth]; - HCL_MEMSET (ci, 0, HCL_SIZEOF(*ci)); + ci = &hak->c->clsblk.info[new_depth]; + HAK_MEMSET (ci, 0, HAK_SIZEOF(*ci)); ci->class_name = class_name; ci->nivars = nivars; ci->ncvars = ncvars; - if (init_class_level_variable_buffer(hcl, &ci->ivars, ivars_str, ivars_strlen) <= -1) return -1; - if (init_class_level_variable_buffer(hcl, &ci->cvars, cvars_str, cvars_strlen) <= -1) return -1; + if (init_class_level_variable_buffer(hak, &ci->ivars, ivars_str, ivars_strlen) <= -1) return -1; + if (init_class_level_variable_buffer(hak, &ci->cvars, cvars_str, cvars_strlen) <= -1) return -1; /* remember the function block depth before the class block is entered */ - ci->funblk_base = hcl->c->funblk.depth; + ci->funblk_base = hak->c->funblk.depth; /* attach the class block to the current function block */ - fbi = &hcl->c->funblk.info[hcl->c->funblk.depth]; + fbi = &hak->c->funblk.info[hak->c->funblk.depth]; if (fbi->clsblk_base <= -1) fbi->clsblk_base = new_depth; fbi->clsblk_top = new_depth; - hcl->c->clsblk.depth = new_depth; + hak->c->clsblk.depth = new_depth; return 0; } -static void pop_clsblk (hcl_t* hcl) +static void pop_clsblk (hak_t* hak) { - hcl_funblk_info_t* fbi; - hcl_clsblk_info_t* cbi; + hak_funblk_info_t* fbi; + hak_clsblk_info_t* cbi; - HCL_ASSERT(hcl, hcl->c->clsblk.depth >= 0); /* depth is of a signed type */ - HCL_ASSERT(hcl, hcl->c->funblk.depth >= 0); + HAK_ASSERT(hak, hak->c->clsblk.depth >= 0); /* depth is of a signed type */ + HAK_ASSERT(hak, hak->c->funblk.depth >= 0); - fbi = &hcl->c->funblk.info[hcl->c->funblk.depth]; - HCL_ASSERT(hcl, fbi->clsblk_base >= 0 && fbi->clsblk_top >= 0 && fbi->clsblk_top >= fbi->clsblk_base); - HCL_ASSERT(hcl, fbi->clsblk_top == hcl->c->clsblk.depth); + fbi = &hak->c->funblk.info[hak->c->funblk.depth]; + HAK_ASSERT(hak, fbi->clsblk_base >= 0 && fbi->clsblk_top >= 0 && fbi->clsblk_top >= fbi->clsblk_base); + HAK_ASSERT(hak, fbi->clsblk_top == hak->c->clsblk.depth); if (fbi->clsblk_top == fbi->clsblk_base) { /* the first class block inside a function block */ @@ -1177,48 +1177,48 @@ static void pop_clsblk (hcl_t* hcl) fbi->clsblk_top--; } - cbi = &hcl->c->clsblk.info[hcl->c->clsblk.depth]; - fini_class_level_variable_buffer(hcl, &cbi->ivars); - fini_class_level_variable_buffer(hcl, &cbi->cvars); - hcl->c->clsblk.depth--; + cbi = &hak->c->clsblk.info[hak->c->clsblk.depth]; + fini_class_level_variable_buffer(hak, &cbi->ivars); + fini_class_level_variable_buffer(hak, &cbi->cvars); + hak->c->clsblk.depth--; } -static int push_funblk (hcl_t* hcl, const hcl_loc_t* errloc, - hcl_oow_t tmpr_va, hcl_oow_t tmpr_nargs, hcl_oow_t tmpr_nrvars, hcl_oow_t tmpr_nlvars, - hcl_oow_t tmpr_count, hcl_oow_t tmpr_len, hcl_oow_t make_inst_pos, hcl_oow_t lfbase, unsigned int fun_type) +static int push_funblk (hak_t* hak, const hak_loc_t* errloc, + hak_oow_t tmpr_va, hak_oow_t tmpr_nargs, hak_oow_t tmpr_nrvars, hak_oow_t tmpr_nlvars, + hak_oow_t tmpr_count, hak_oow_t tmpr_len, hak_oow_t make_inst_pos, hak_oow_t lfbase, unsigned int fun_type) { - hcl_oow_t new_depth; - hcl_funblk_info_t* fbi; + hak_oow_t new_depth; + hak_funblk_info_t* fbi; - HCL_ASSERT(hcl, hcl->c->funblk.depth >= -1); - if (hcl->c->funblk.depth == HCL_TYPE_MAX(hcl_ooi_t)) + HAK_ASSERT(hak, hak->c->funblk.depth >= -1); + if (hak->c->funblk.depth == HAK_TYPE_MAX(hak_ooi_t)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BLKDEPTH, errloc, HCL_NULL, "function block depth too deep"); + hak_setsynerrbfmt(hak, HAK_SYNERR_BLKDEPTH, errloc, HAK_NULL, "function block depth too deep"); return -1; } - new_depth = hcl->c->funblk.depth + 1; - if (hcl->c->funblk.depth >= hcl->c->funblk.info_capa) + new_depth = hak->c->funblk.depth + 1; + if (hak->c->funblk.depth >= hak->c->funblk.info_capa) { - hcl_funblk_info_t* tmp; - hcl_oow_t newcapa; + hak_funblk_info_t* tmp; + hak_oow_t newcapa; - newcapa = HCL_ALIGN(new_depth + 1, BLK_INFO_BUFFER_ALIGN); - tmp = (hcl_funblk_info_t*)hcl_reallocmem(hcl, hcl->c->funblk.info, newcapa * HCL_SIZEOF(*tmp)); - if (HCL_UNLIKELY(!tmp)) + newcapa = HAK_ALIGN(new_depth + 1, BLK_INFO_BUFFER_ALIGN); + tmp = (hak_funblk_info_t*)hak_reallocmem(hak, hak->c->funblk.info, newcapa * HAK_SIZEOF(*tmp)); + if (HAK_UNLIKELY(!tmp)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "failed to resize function block info buffer - %js", orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "failed to resize function block info buffer - %js", orgmsg); return -1; } - hcl->c->funblk.info_capa = newcapa; - hcl->c->funblk.info = tmp; + hak->c->funblk.info_capa = newcapa; + hak->c->funblk.info = tmp; } - fbi = &hcl->c->funblk.info[new_depth]; - HCL_MEMSET (fbi, 0, HCL_SIZEOF(*fbi)); + fbi = &hak->c->funblk.info[new_depth]; + HAK_MEMSET (fbi, 0, HAK_SIZEOF(*fbi)); fbi->fun_type = fun_type; @@ -1230,7 +1230,7 @@ static int push_funblk (hcl_t* hcl, const hcl_loc_t* errloc, fbi->tmpr_nlvars = tmpr_nlvars; /* remember the control block depth before the function block is entered */ - fbi->ctlblk_base = hcl->c->ctlblk.depth; + fbi->ctlblk_base = hak->c->ctlblk.depth; /* no class block when the funtion block is entered */ fbi->clsblk_base = -1; @@ -1242,246 +1242,246 @@ static int push_funblk (hcl_t* hcl, const hcl_loc_t* errloc, fbi->access_outer = 0; fbi->accessed_by_inner = 0; - hcl->c->funblk.depth = new_depth; + hak->c->funblk.depth = new_depth; return 0; } -static void clear_funblk_inners (hcl_t* hcl) +static void clear_funblk_inners (hak_t* hak) { - hcl_funblk_info_t* fbi; - fbi = &hcl->c->funblk.info[hcl->c->funblk.depth]; - while (hcl->c->ctlblk.depth > fbi->ctlblk_base) pop_ctlblk (hcl); - while (!(fbi->clsblk_base <= -1 && fbi->clsblk_top <= -1)) pop_clsblk (hcl); + hak_funblk_info_t* fbi; + fbi = &hak->c->funblk.info[hak->c->funblk.depth]; + while (hak->c->ctlblk.depth > fbi->ctlblk_base) pop_ctlblk (hak); + while (!(fbi->clsblk_base <= -1 && fbi->clsblk_top <= -1)) pop_clsblk (hak); } -static void pop_funblk (hcl_t* hcl) +static void pop_funblk (hak_t* hak) { - hcl_funblk_info_t* fbi; + hak_funblk_info_t* fbi; - HCL_ASSERT(hcl, hcl->c->funblk.depth >= 0); + HAK_ASSERT(hak, hak->c->funblk.depth >= 0); - clear_funblk_inners (hcl); - fbi = &hcl->c->funblk.info[hcl->c->funblk.depth]; + clear_funblk_inners (hak); + fbi = &hak->c->funblk.info[hak->c->funblk.depth]; /* if pop_ctlblk() has been called properly, the following assertion must be true * and the assignment on the next line isn't necessary */ - HCL_ASSERT(hcl, hcl->c->ctlblk.depth == fbi->ctlblk_base); - HCL_ASSERT(hcl, fbi->clsblk_base <= -1 && fbi->clsblk_top <= -1); + HAK_ASSERT(hak, hak->c->ctlblk.depth == fbi->ctlblk_base); + HAK_ASSERT(hak, fbi->clsblk_base <= -1 && fbi->clsblk_top <= -1); - hcl->c->ctlblk.depth = fbi->ctlblk_base; - /* keep hcl->code.lit.len without restoration */ + hak->c->ctlblk.depth = fbi->ctlblk_base; + /* keep hak->code.lit.len without restoration */ - hcl->c->funblk.depth--; + hak->c->funblk.depth--; - if (hcl->c->funblk.depth >= 0) + if (hak->c->funblk.depth >= 0) { /* restore the string length and the word count to the values captured * at the previous level */ - hcl->c->tv.s.len = hcl->c->funblk.info[hcl->c->funblk.depth].tmprlen; - hcl->c->tv.wcount = hcl->c->funblk.info[hcl->c->funblk.depth].tmprcnt; + hak->c->tv.s.len = hak->c->funblk.info[hak->c->funblk.depth].tmprlen; + hak->c->tv.wcount = hak->c->funblk.info[hak->c->funblk.depth].tmprcnt; } else { - hcl->c->tv.s.len = 0; - hcl->c->tv.wcount = 0; + hak->c->tv.s.len = 0; + hak->c->tv.wcount = 0; } - if (fbi->make_inst_pos < hcl->code.bc.len) + if (fbi->make_inst_pos < hak->code.bc.len) { - hcl_oow_t attr_mask; + hak_oow_t attr_mask; /* patch the temporaries mask parameter for the MAKE_BLOCK or MAKE_FUNCTION instruction */ - HCL_ASSERT(hcl, hcl->code.bc.ptr[fbi->make_inst_pos] == HCL_CODE_MAKE_BLOCK || - hcl->code.bc.ptr[fbi->make_inst_pos] == HCL_CODE_MAKE_FUNCTION); + HAK_ASSERT(hak, hak->code.bc.ptr[fbi->make_inst_pos] == HAK_CODE_MAKE_BLOCK || + hak->code.bc.ptr[fbi->make_inst_pos] == HAK_CODE_MAKE_FUNCTION); /* the total number of temporaries in this function block must be the sum of * the number of arguments, return variables and local variables */ - HCL_ASSERT(hcl, fbi->tmprcnt - hcl->c->tv.wcount == fbi->tmpr_nargs + fbi->tmpr_nrvars + fbi->tmpr_nlvars); + HAK_ASSERT(hak, fbi->tmprcnt - hak->c->tv.wcount == fbi->tmpr_nargs + fbi->tmpr_nrvars + fbi->tmpr_nlvars); /* the temporaries mask is a bit-mask that encodes the counts of different temporary variables. * and it's split to two intruction parameters when used with MAKE_BLOCK and MAKE_FUNCTION. * the INSTA bit is on if fbi->fun_type == FUN_CIM */ attr_mask = ENCODE_BLK_MASK(((fbi->fun_type & 0xFF) == FUN_CIM), fbi->tmpr_va, fbi->tmpr_nargs, fbi->tmpr_nrvars, fbi->tmpr_nlvars); - patch_double_long_params_with_oow(hcl, fbi->make_inst_pos + 1, attr_mask); + patch_double_long_params_with_oow(hak, fbi->make_inst_pos + 1, attr_mask); } } /* ========================================================================= */ -static HCL_INLINE int _insert_cframe (hcl_t* hcl, hcl_ooi_t index, int opcode, hcl_cnode_t* operand) +static HAK_INLINE int _insert_cframe (hak_t* hak, hak_ooi_t index, int opcode, hak_cnode_t* operand) { - hcl_cframe_t* tmp; + hak_cframe_t* tmp; - HCL_ASSERT(hcl, index >= 0); + HAK_ASSERT(hak, index >= 0); - hcl->c->cfs.top++; - HCL_ASSERT(hcl, hcl->c->cfs.top >= 0); - HCL_ASSERT(hcl, index <= hcl->c->cfs.top); + hak->c->cfs.top++; + HAK_ASSERT(hak, hak->c->cfs.top >= 0); + HAK_ASSERT(hak, index <= hak->c->cfs.top); - if ((hcl_oow_t)hcl->c->cfs.top >= hcl->c->cfs.capa) + if ((hak_oow_t)hak->c->cfs.top >= hak->c->cfs.capa) { - hcl_oow_t newcapa; + hak_oow_t newcapa; - newcapa = HCL_ALIGN (hcl->c->cfs.top + 256, 256); /* TODO: adjust this capacity */ - tmp = (hcl_cframe_t*)hcl_reallocmem(hcl, hcl->c->cfs.ptr, newcapa * HCL_SIZEOF(*tmp)); - if (HCL_UNLIKELY(!tmp)) + newcapa = HAK_ALIGN (hak->c->cfs.top + 256, 256); /* TODO: adjust this capacity */ + tmp = (hak_cframe_t*)hak_reallocmem(hak, hak->c->cfs.ptr, newcapa * HAK_SIZEOF(*tmp)); + if (HAK_UNLIKELY(!tmp)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "failed to grow compiler frame stack- %js", orgmsg); - hcl->c->cfs.top--; + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "failed to grow compiler frame stack- %js", orgmsg); + hak->c->cfs.top--; return -1; } - hcl->c->cfs.capa = newcapa; - hcl->c->cfs.ptr = tmp; + hak->c->cfs.capa = newcapa; + hak->c->cfs.ptr = tmp; } - if (index < hcl->c->cfs.top) + if (index < hak->c->cfs.top) { - HCL_MEMMOVE (&hcl->c->cfs.ptr[index + 1], &hcl->c->cfs.ptr[index], (hcl->c->cfs.top - index) * HCL_SIZEOF(*tmp)); + HAK_MEMMOVE (&hak->c->cfs.ptr[index + 1], &hak->c->cfs.ptr[index], (hak->c->cfs.top - index) * HAK_SIZEOF(*tmp)); } - tmp = &hcl->c->cfs.ptr[index]; + tmp = &hak->c->cfs.ptr[index]; tmp->opcode = opcode; tmp->operand = operand; - HCL_MEMSET (&tmp->u, 0, HCL_SIZEOF(tmp->u)); + HAK_MEMSET (&tmp->u, 0, HAK_SIZEOF(tmp->u)); return 0; } -static int insert_cframe (hcl_t* hcl, hcl_ooi_t index, int opcode, hcl_cnode_t* operand) +static int insert_cframe (hak_t* hak, hak_ooi_t index, int opcode, hak_cnode_t* operand) { - if (hcl->c->cfs.top == HCL_TYPE_MAX(hcl_ooi_t)) + if (hak->c->cfs.top == HAK_TYPE_MAX(hak_ooi_t)) { - hcl_seterrnum(hcl, HCL_EFRMFLOOD); + hak_seterrnum(hak, HAK_EFRMFLOOD); return -1; } - return _insert_cframe(hcl, index, opcode, operand); + return _insert_cframe(hak, index, opcode, operand); } -static int push_cframe (hcl_t* hcl, int opcode, hcl_cnode_t* operand) +static int push_cframe (hak_t* hak, int opcode, hak_cnode_t* operand) { - if (hcl->c->cfs.top == HCL_TYPE_MAX(hcl_ooi_t)) + if (hak->c->cfs.top == HAK_TYPE_MAX(hak_ooi_t)) { - hcl_seterrnum(hcl, HCL_EFRMFLOOD); + hak_seterrnum(hak, HAK_EFRMFLOOD); return -1; } - return _insert_cframe(hcl, hcl->c->cfs.top + 1, opcode, operand); + return _insert_cframe(hak, hak->c->cfs.top + 1, opcode, operand); } -static HCL_INLINE void pop_cframe (hcl_t* hcl) +static HAK_INLINE void pop_cframe (hak_t* hak) { - HCL_ASSERT(hcl, hcl->c->cfs.top >= 0); - hcl->c->cfs.top--; + HAK_ASSERT(hak, hak->c->cfs.top >= 0); + hak->c->cfs.top--; } -#define PUSH_CFRAME(hcl,opcode,operand) \ - do { if (push_cframe(hcl,opcode,operand) <= -1) return -1; } while(0) +#define PUSH_CFRAME(hak,opcode,operand) \ + do { if (push_cframe(hak,opcode,operand) <= -1) return -1; } while(0) -#define INSERT_CFRAME(hcl,index,opcode,operand) \ - do { if (insert_cframe(hcl,index,opcode,operand) <= -1) return -1; } while(0) +#define INSERT_CFRAME(hak,index,opcode,operand) \ + do { if (insert_cframe(hak,index,opcode,operand) <= -1) return -1; } while(0) -#define POP_CFRAME(hcl) pop_cframe(hcl) +#define POP_CFRAME(hak) pop_cframe(hak) -#define POP_ALL_CFRAMES(hcl) (hcl->c->cfs.top = -1) +#define POP_ALL_CFRAMES(hak) (hak->c->cfs.top = -1) -#define GET_TOP_CFRAME_INDEX(hcl) (hcl->c->cfs.top) +#define GET_TOP_CFRAME_INDEX(hak) (hak->c->cfs.top) -#define GET_TOP_CFRAME(hcl) (&hcl->c->cfs.ptr[hcl->c->cfs.top]) +#define GET_TOP_CFRAME(hak) (&hak->c->cfs.ptr[hak->c->cfs.top]) -#define GET_CFRAME(hcl,index) (&hcl->c->cfs.ptr[index]) +#define GET_CFRAME(hak,index) (&hak->c->cfs.ptr[index]) -#define SWITCH_TOP_CFRAME(hcl,_opcode,_operand) \ +#define SWITCH_TOP_CFRAME(hak,_opcode,_operand) \ do { \ - hcl_cframe_t* _cf = GET_TOP_CFRAME(hcl); \ + hak_cframe_t* _cf = GET_TOP_CFRAME(hak); \ _cf->opcode = _opcode; \ _cf->operand = _operand; \ } while(0) -#define SWITCH_CFRAME(hcl,_index,_opcode,_operand) \ +#define SWITCH_CFRAME(hak,_index,_opcode,_operand) \ do { \ - hcl_cframe_t* _cf = GET_CFRAME(hcl,_index); \ + hak_cframe_t* _cf = GET_CFRAME(hak,_index); \ _cf->opcode = _opcode; \ _cf->operand = _operand; \ } while(0) -static int push_subcframe (hcl_t* hcl, int opcode, hcl_cnode_t* operand) +static int push_subcframe (hak_t* hak, int opcode, hak_cnode_t* operand) { - hcl_cframe_t* cf, tmp; + hak_cframe_t* cf, tmp; - cf = GET_TOP_CFRAME(hcl); + cf = GET_TOP_CFRAME(hak); tmp = *cf; cf->opcode = opcode; cf->operand = operand; - if (push_cframe(hcl, tmp.opcode, tmp.operand) <= -1) return -1; - cf = GET_TOP_CFRAME(hcl); + if (push_cframe(hak, tmp.opcode, tmp.operand) <= -1) return -1; + cf = GET_TOP_CFRAME(hak); cf->u = tmp.u; /* copy the extra information */ return 0; } -static HCL_INLINE hcl_cframe_t* find_cframe_from_top (hcl_t* hcl, int opcode) +static HAK_INLINE hak_cframe_t* find_cframe_from_top (hak_t* hak, int opcode) { - hcl_cframe_t* cf; - hcl_ooi_t i; + hak_cframe_t* cf; + hak_ooi_t i; - for (i = hcl->c->cfs.top; i >= 0; i--) + for (i = hak->c->cfs.top; i >= 0; i--) { - cf = &hcl->c->cfs.ptr[i]; + cf = &hak->c->cfs.ptr[i]; if (cf->opcode == opcode) return cf; } - return HCL_NULL; + return HAK_NULL; } -#define PUSH_SUBCFRAME(hcl,opcode,operand) \ - do { if (push_subcframe(hcl,opcode,operand) <= -1) return -1; } while(0) +#define PUSH_SUBCFRAME(hak,opcode,operand) \ + do { if (push_subcframe(hak,opcode,operand) <= -1) return -1; } while(0) -#define GET_SUBCFRAME(hcl) (&hcl->c->cfs.ptr[hcl->c->cfs.top - 1]) +#define GET_SUBCFRAME(hak) (&hak->c->cfs.ptr[hak->c->cfs.top - 1]) /* ========================================================================= */ struct class_vardcl_t { - hcl_oow_t nivars; - hcl_oow_t ncvars; - hcl_oow_t ivar_start; - hcl_oow_t ivar_len; - hcl_oow_t cvar_start; - hcl_oow_t cvar_len; + hak_oow_t nivars; + hak_oow_t ncvars; + hak_oow_t ivar_start; + hak_oow_t ivar_len; + hak_oow_t cvar_start; + hak_oow_t cvar_len; }; typedef struct class_vardcl_t class_vardcl_t; -static int collect_vardcl_for_class (hcl_t* hcl, hcl_cnode_t* obj, hcl_cnode_t** nextobj, class_vardcl_t* vardcl) +static int collect_vardcl_for_class (hak_t* hak, hak_cnode_t* obj, hak_cnode_t** nextobj, class_vardcl_t* vardcl) { - hcl_oow_t tv_wcount_saved, tv_slen_saved; - hcl_cnode_t* dcl, * dcl_saved; + hak_oow_t tv_wcount_saved, tv_slen_saved; + hak_cnode_t* dcl, * dcl_saved; int enclosed = 0; - static const hcl_bch_t* desc[] = { "instance variable", "class variable" }; + static const hak_bch_t* desc[] = { "instance variable", "class variable" }; - HCL_MEMSET (vardcl, 0, HCL_SIZEOF(*vardcl)); - tv_wcount_saved = hcl->c->tv.wcount; - tv_slen_saved = hcl->c->tv.s.len; + HAK_MEMSET (vardcl, 0, HAK_SIZEOF(*vardcl)); + tv_wcount_saved = hak->c->tv.wcount; + tv_slen_saved = hak->c->tv.s.len; - dcl = HCL_CNODE_CONS_CAR(obj); - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS_CONCODED(dcl, HCL_CONCODE_TUPLE)); + dcl = HAK_CNODE_CONS_CAR(obj); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS_CONCODED(dcl, HAK_CONCODE_TUPLE)); do { - hcl_cnode_t* var; + hak_cnode_t* var; int n; - hcl_oow_t checkpoint; + hak_oow_t checkpoint; - var = HCL_CNODE_CONS_CAR(dcl); + var = HAK_CNODE_CONS_CAR(dcl); - if (HCL_CNODE_IS_CONS_CONCODED(var, HCL_CONCODE_TUPLE)) /* [ ... ] */ + if (HAK_CNODE_IS_CONS_CONCODED(var, HAK_CONCODE_TUPLE)) /* [ ... ] */ { if (enclosed) { synerr_varname: - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VARNAME, HCL_CNODE_GET_LOC(var), HCL_NULL, - "not variable name '%.*js'", HCL_CNODE_GET_TOKLEN(var), HCL_CNODE_GET_TOKPTR(var)); + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(var), HAK_NULL, + "not variable name '%.*js'", HAK_CNODE_GET_TOKLEN(var), HAK_CNODE_GET_TOKPTR(var)); return -1; } enclosed = 1; @@ -1489,17 +1489,17 @@ static int collect_vardcl_for_class (hcl_t* hcl, hcl_cnode_t* obj, hcl_cnode_t** dcl = var; continue; /* start over */ } - else if (HCL_CNODE_IS_ELIST_CONCODED(var, HCL_CONCODE_TUPLE)) + else if (HAK_CNODE_IS_ELIST_CONCODED(var, HAK_CONCODE_TUPLE)) { /* no variables inside [] */ if (enclosed) goto synerr_varname; /* [] inside [] */ goto next; } - if (!HCL_CNODE_IS_SYMBOL(var) || HCL_CNODE_IS_SYMBOL_BINOP(var)) goto synerr_varname; + if (!HAK_CNODE_IS_SYMBOL(var) || HAK_CNODE_IS_SYMBOL_BINOP(var)) goto synerr_varname; - checkpoint = hcl->c->tv.s.len; - n = add_temporary_variable(hcl, var, tv_slen_saved, desc[enclosed], HCL_NULL); + checkpoint = hak->c->tv.s.len; + n = add_temporary_variable(hak, var, tv_slen_saved, desc[enclosed], HAK_NULL); if (n <= -1) return -1; if (enclosed) @@ -1507,16 +1507,16 @@ static int collect_vardcl_for_class (hcl_t* hcl, hcl_cnode_t* obj, hcl_cnode_t** /* class variable */ if (vardcl->nivars >= MAX_NCVARS) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VARFLOOD, HCL_CNODE_GET_LOC(var), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VARFLOOD, HAK_CNODE_GET_LOC(var), HAK_NULL, "too many(%zu) class variables before '%.*js'", - vardcl->nivars, HCL_CNODE_GET_TOKLEN(var), HCL_CNODE_GET_TOKPTR(var)); + vardcl->nivars, HAK_CNODE_GET_TOKLEN(var), HAK_CNODE_GET_TOKPTR(var)); return -1; } /*if (cvar_len <= 0) cvar_start = prev_tv_len; - cvar_len = hcl->c->tv.s.len - cvar_start; */ + cvar_len = hak->c->tv.s.len - cvar_start; */ if (vardcl->cvar_len <= 0) vardcl->cvar_start = checkpoint; - vardcl->cvar_len += hcl->c->tv.s.len - checkpoint; + vardcl->cvar_len += hak->c->tv.s.len - checkpoint; vardcl->ncvars++; } else @@ -1524,28 +1524,28 @@ static int collect_vardcl_for_class (hcl_t* hcl, hcl_cnode_t* obj, hcl_cnode_t** /* instance variable */ if (vardcl->nivars >= MAX_NIVARS) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VARFLOOD, HCL_CNODE_GET_LOC(var), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VARFLOOD, HAK_CNODE_GET_LOC(var), HAK_NULL, "too many(%zu) instance variables before '%.*js'", - vardcl->nivars, HCL_CNODE_GET_TOKLEN(var), HCL_CNODE_GET_TOKPTR(var)); + vardcl->nivars, HAK_CNODE_GET_TOKLEN(var), HAK_CNODE_GET_TOKPTR(var)); return -1; } if (vardcl->ivar_len <= 0) vardcl->ivar_start = (vardcl->cvar_len <= 0)? checkpoint: vardcl->cvar_start; - vardcl->ivar_len += hcl->c->tv.s.len - checkpoint; + vardcl->ivar_len += hak->c->tv.s.len - checkpoint; if (vardcl->cvar_len > 0) { /* place the instance variables before the class variables * if class variables "a b" has been collected before instance variables "cc dd ee" * the rotation below manipulates the buffer to contain "cc dd ee a b". */ - hcl_rotate_oochars (&hcl->c->tv.s.ptr[vardcl->cvar_start], hcl->c->tv.s.len - vardcl->cvar_start, -1, vardcl->cvar_len); - vardcl->cvar_start += hcl->c->tv.s.len - checkpoint; + hak_rotate_oochars (&hak->c->tv.s.ptr[vardcl->cvar_start], hak->c->tv.s.len - vardcl->cvar_start, -1, vardcl->cvar_len); + vardcl->cvar_start += hak->c->tv.s.len - checkpoint; } vardcl->nivars++; } next: - dcl = HCL_CNODE_CONS_CDR(dcl); + dcl = HAK_CNODE_CONS_CDR(dcl); if (!dcl) { if (enclosed) @@ -1557,114 +1557,114 @@ static int collect_vardcl_for_class (hcl_t* hcl, hcl_cnode_t* obj, hcl_cnode_t** break; } - if (!HCL_CNODE_IS_CONS(dcl)) + if (!HAK_CNODE_IS_CONS(dcl)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(dcl), HCL_CNODE_GET_TOK(dcl), "redundant cdr in %hs declaration", desc[enclosed]); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(dcl), HAK_CNODE_GET_TOK(dcl), "redundant cdr in %hs declaration", desc[enclosed]); return -1; } } while (1); - HCL_ASSERT(hcl, vardcl->nivars + vardcl->ncvars == hcl->c->tv.wcount - tv_wcount_saved); - *nextobj = HCL_CNODE_CONS_CDR(obj); + HAK_ASSERT(hak, vardcl->nivars + vardcl->ncvars == hak->c->tv.wcount - tv_wcount_saved); + *nextobj = HAK_CNODE_CONS_CDR(obj); return 0; } -static int collect_vardcl (hcl_t* hcl, hcl_cnode_t* obj, hcl_cnode_t** nextobj, hcl_oow_t tv_dup_check_start, hcl_oow_t* nvardcls, const hcl_bch_t* desc) +static int collect_vardcl (hak_t* hak, hak_cnode_t* obj, hak_cnode_t** nextobj, hak_oow_t tv_dup_check_start, hak_oow_t* nvardcls, const hak_bch_t* desc) { /* process a single variable declaration list */ - hcl_oow_t ndcls = 0; - hcl_oow_t old_wcount = hcl->c->tv.wcount; - hcl_cnode_t* dcl; - hcl_cnode_t* var; + hak_oow_t ndcls = 0; + hak_oow_t old_wcount = hak->c->tv.wcount; + hak_cnode_t* dcl; + hak_cnode_t* var; - dcl = HCL_CNODE_CONS_CAR(obj); - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS_CONCODED(dcl, HCL_CONCODE_VLIST)); + dcl = HAK_CNODE_CONS_CAR(obj); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS_CONCODED(dcl, HAK_CONCODE_VLIST)); do { - var = HCL_CNODE_CONS_CAR(dcl); + var = HAK_CNODE_CONS_CAR(dcl); #if 0 - if (!HCL_CNODE_IS_SYMBOL(var)) + if (!HAK_CNODE_IS_SYMBOL(var)) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_ARGNAME, HCL_CNODE_GET_LOC(var), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_ARGNAME, HAK_CNODE_GET_LOC(var), HAK_NULL, "invalid local variable name '%.*js'", - HCL_CNODE_GET_TOKLEN(var), HCL_CNODE_GET_TOKPTR(var)); + HAK_CNODE_GET_TOKLEN(var), HAK_CNODE_GET_TOKPTR(var)); return -1; } #else /* the above checks are not needed as the reader guarantees the followings */ - HCL_ASSERT(hcl, HCL_CNODE_IS_SYMBOL(var)); + HAK_ASSERT(hak, HAK_CNODE_IS_SYMBOL(var)); #endif - if (add_temporary_variable(hcl, var, tv_dup_check_start, desc, HCL_NULL) <= -1) return -1; + if (add_temporary_variable(hak, var, tv_dup_check_start, desc, HAK_NULL) <= -1) return -1; ndcls++; - dcl = HCL_CNODE_CONS_CDR(dcl); + dcl = HAK_CNODE_CONS_CDR(dcl); if (!dcl) break; - if (!HCL_CNODE_IS_CONS(dcl)) + if (!HAK_CNODE_IS_CONS(dcl)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(dcl), HCL_CNODE_GET_TOK(dcl), "redundant cdr in %hs variable list", desc); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(dcl), HAK_CNODE_GET_TOK(dcl), "redundant cdr in %hs variable list", desc); return -1; } } while (1); - HCL_ASSERT(hcl, ndcls == hcl->c->tv.wcount - old_wcount); - *nextobj = HCL_CNODE_CONS_CDR(obj); + HAK_ASSERT(hak, ndcls == hak->c->tv.wcount - old_wcount); + *nextobj = HAK_CNODE_CONS_CDR(obj); *nvardcls = ndcls; return 0; } -static int collect_vardcls (hcl_t* hcl, hcl_cnode_t* obj, hcl_cnode_t** nextobj, hcl_oow_t tv_dup_check_start, hcl_oow_t* nvardcls, const hcl_bch_t* desc) +static int collect_vardcls (hak_t* hak, hak_cnode_t* obj, hak_cnode_t** nextobj, hak_oow_t tv_dup_check_start, hak_oow_t* nvardcls, const hak_bch_t* desc) { /* process zero or more variable declaration lists in a row */ - hcl_oow_t ndcls = 0; - hcl_oow_t old_wcount = hcl->c->tv.wcount; + hak_oow_t ndcls = 0; + hak_oow_t old_wcount = hak->c->tv.wcount; - while (obj && HCL_CNODE_IS_CONS(obj)) + while (obj && HAK_CNODE_IS_CONS(obj)) { - hcl_cnode_t* dcl; - hcl_oow_t dclcount; + hak_cnode_t* dcl; + hak_oow_t dclcount; - dcl = HCL_CNODE_CONS_CAR(obj); - if (!HCL_CNODE_IS_CONS_CONCODED(dcl, HCL_CONCODE_VLIST)) break; + dcl = HAK_CNODE_CONS_CAR(obj); + if (!HAK_CNODE_IS_CONS_CONCODED(dcl, HAK_CONCODE_VLIST)) break; - if (collect_vardcl(hcl, obj, &obj, tv_dup_check_start, &dclcount, desc) <= -1) return -1; + if (collect_vardcl(hak, obj, &obj, tv_dup_check_start, &dclcount, desc) <= -1) return -1; ndcls += dclcount; } - HCL_ASSERT(hcl, ndcls == hcl->c->tv.wcount - old_wcount); + HAK_ASSERT(hak, ndcls == hak->c->tv.wcount - old_wcount); *nvardcls = ndcls; *nextobj = obj; return 0; } -static int is_followed_by_vlist (hcl_t* hcl, hcl_cnode_t* obj) +static int is_followed_by_vlist (hak_t* hak, hak_cnode_t* obj) { - if (obj && HCL_CNODE_IS_CONS(obj)) + if (obj && HAK_CNODE_IS_CONS(obj)) { - hcl_cnode_t* dcl; - dcl = HCL_CNODE_CONS_CAR(obj); - return HCL_CNODE_IS_CONS_CONCODED(dcl, HCL_CONCODE_VLIST); + hak_cnode_t* dcl; + dcl = HAK_CNODE_CONS_CAR(obj); + return HAK_CNODE_IS_CONS_CONCODED(dcl, HAK_CONCODE_VLIST); } return 0; } -static int check_if_plain_cnode (hcl_t* hcl, hcl_cnode_t* obj, hcl_cnode_t* prev, hcl_cnode_t* container, hcl_synerrnum_t errnum, const hcl_bch_t* bname) +static int check_if_plain_cnode (hak_t* hak, hak_cnode_t* obj, hak_cnode_t* prev, hak_cnode_t* container, hak_synerrnum_t errnum, const hak_bch_t* bname) { if (!obj) { - hcl_setsynerrbfmt(hcl, errnum, HCL_CNODE_GET_LOC(prev), HCL_NULL, "no %hs in %.*js", bname, HCL_CNODE_GET_TOKLEN(container), HCL_CNODE_GET_TOKPTR(container)); + hak_setsynerrbfmt(hak, errnum, HAK_CNODE_GET_LOC(prev), HAK_NULL, "no %hs in %.*js", bname, HAK_CNODE_GET_TOKLEN(container), HAK_CNODE_GET_TOKPTR(container)); return -1; } - else if (!HCL_CNODE_IS_CONS(obj)) + else if (!HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(prev), HCL_CNODE_GET_TOK(obj), "redundant cdr where %.*js is expected in %.*js", bname, HCL_CNODE_GET_TOKLEN(container), HCL_CNODE_GET_TOKPTR(container)); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(prev), HAK_CNODE_GET_TOK(obj), "redundant cdr where %.*js is expected in %.*js", bname, HAK_CNODE_GET_TOKLEN(container), HAK_CNODE_GET_TOKPTR(container)); return -1; } @@ -1751,447 +1751,447 @@ enum /* ========================================================================= */ -static int compile_and (hcl_t* hcl, hcl_cnode_t* src) +static int compile_and (hak_t* hak, hak_cnode_t* src) { - hcl_cnode_t* obj, * expr; + hak_cnode_t* obj, * expr; - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(src)); - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(src), HCL_CNODE_AND)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(src)); + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(src), HAK_CNODE_AND)); - obj = HCL_CNODE_CONS_CDR(src); + obj = HAK_CNODE_CONS_CDR(src); if (!obj) { /* no value */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(src), HCL_NULL, "no expression specified in and"); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(src), HAK_NULL, "no expression specified in and"); return -1; } - else if (!HCL_CNODE_IS_CONS(obj)) + else if (!HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in and"); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in and"); return -1; } /* TODO: optimization - eat away all true expressions */ - expr = HCL_CNODE_CONS_CAR(obj); - obj = HCL_CNODE_CONS_CDR(obj); + expr = HAK_CNODE_CONS_CAR(obj); + obj = HAK_CNODE_CONS_CDR(obj); - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT, expr); /* 1 */ - if (obj) PUSH_SUBCFRAME(hcl, COP_COMPILE_AND_P1, obj); /* 2 */ + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT, expr); /* 1 */ + if (obj) PUSH_SUBCFRAME(hak, COP_COMPILE_AND_P1, obj); /* 2 */ return 0; } -static HCL_INLINE int compile_and_p1 (hcl_t* hcl) +static HAK_INLINE int compile_and_p1 (hak_t* hak) { - hcl_cnode_t* obj, * expr; - hcl_cframe_t* cf; - hcl_ooi_t jump_inst_pos; + hak_cnode_t* obj, * expr; + hak_cframe_t* cf; + hak_ooi_t jump_inst_pos; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_COMPILE_AND_P1); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_COMPILE_AND_P1); + HAK_ASSERT(hak, cf->operand != HAK_NULL); /* TODO: optimization - eat away all true expressions */ obj = cf->operand; - if (!HCL_CNODE_IS_CONS(obj)) + if (!HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in and"); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in and"); return -1; } - HCL_ASSERT(hcl, hcl->code.bc.len < HCL_SMOOI_MAX); - jump_inst_pos = hcl->code.bc.len; + HAK_ASSERT(hak, hak->code.bc.len < HAK_SMOOI_MAX); + jump_inst_pos = hak->code.bc.len; /* this conditional jump make evaluation short-circuited. the actual jump point is to be patched in compile_and_p2() */ - if (emit_single_param_instruction(hcl, HCL_CODE_JUMP_FORWARD_IF_FALSE, MAX_CODE_JUMP, HCL_CNODE_GET_LOC(obj)) <= -1) return -1; - if (emit_byte_instruction(hcl, HCL_CODE_POP_STACKTOP, HCL_CNODE_GET_LOC(obj)) <= -1) return -1; + if (emit_single_param_instruction(hak, HAK_CODE_JUMP_FORWARD_IF_FALSE, MAX_CODE_JUMP, HAK_CNODE_GET_LOC(obj)) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_POP_STACKTOP, HAK_CNODE_GET_LOC(obj)) <= -1) return -1; - expr = HCL_CNODE_CONS_CAR(obj); - obj = HCL_CNODE_CONS_CDR(obj); + expr = HAK_CNODE_CONS_CAR(obj); + obj = HAK_CNODE_CONS_CDR(obj); - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT, expr); /* 1 - compile the current part */ + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT, expr); /* 1 - compile the current part */ - PUSH_SUBCFRAME(hcl, COP_COMPILE_AND_P2, expr); /* 3 - patch the conditional jump instruction */ - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_COMPILE_AND_P2, expr); /* 3 - patch the conditional jump instruction */ + cf = GET_SUBCFRAME(hak); cf->u.post_and.jump_inst_pos = jump_inst_pos; - if (obj) PUSH_SUBCFRAME(hcl, COP_COMPILE_AND_P1, obj); /* 2 - recurse to compile remaining parts */ + if (obj) PUSH_SUBCFRAME(hak, COP_COMPILE_AND_P1, obj); /* 2 - recurse to compile remaining parts */ return 0; } -static HCL_INLINE int compile_and_p2 (hcl_t* hcl) +static HAK_INLINE int compile_and_p2 (hak_t* hak) { - hcl_cframe_t* cf; - hcl_ooi_t jip; - hcl_oow_t jump_offset; + hak_cframe_t* cf; + hak_ooi_t jip; + hak_oow_t jump_offset; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_COMPILE_AND_P2); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_COMPILE_AND_P2); + HAK_ASSERT(hak, cf->operand != HAK_NULL); - HCL_ASSERT(hcl, hcl->code.bc.len < HCL_SMOOI_MAX); + HAK_ASSERT(hak, hak->code.bc.len < HAK_SMOOI_MAX); jip = cf->u.post_and.jump_inst_pos; /* patch the jump insruction emitted after each expression inside the 'and' expression * the jump make evaluation short-circuited. */ - jump_offset = hcl->code.bc.len - jip - (HCL_CODE_LONG_PARAM_SIZE + 1); - patch_long_jump(hcl, jip, jump_offset); + jump_offset = hak->code.bc.len - jip - (HAK_CODE_LONG_PARAM_SIZE + 1); + patch_long_jump(hak, jip, jump_offset); - POP_CFRAME(hcl); + POP_CFRAME(hak); return 0; } /* ========================================================================= */ -static int compile_or (hcl_t* hcl, hcl_cnode_t* src) +static int compile_or (hak_t* hak, hak_cnode_t* src) { - hcl_cnode_t* obj, * expr; + hak_cnode_t* obj, * expr; - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(src)); - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(src), HCL_CNODE_OR)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(src)); + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(src), HAK_CNODE_OR)); - obj = HCL_CNODE_CONS_CDR(src); + obj = HAK_CNODE_CONS_CDR(src); if (!obj) { /* no value */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(src), HCL_NULL, "no expression specified in or"); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(src), HAK_NULL, "no expression specified in or"); return -1; } - else if (!HCL_CNODE_IS_CONS(obj)) + else if (!HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in and"); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in and"); return -1; } /* TODO: optimization - eat away all false expressions */ - expr = HCL_CNODE_CONS_CAR(obj); - obj = HCL_CNODE_CONS_CDR(obj); + expr = HAK_CNODE_CONS_CAR(obj); + obj = HAK_CNODE_CONS_CDR(obj); - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT, expr); /* 1 */ - PUSH_SUBCFRAME(hcl, COP_COMPILE_OR_P1, obj); /* 2 */ + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT, expr); /* 1 */ + PUSH_SUBCFRAME(hak, COP_COMPILE_OR_P1, obj); /* 2 */ return 0; } -static HCL_INLINE int compile_or_p1 (hcl_t* hcl) +static HAK_INLINE int compile_or_p1 (hak_t* hak) { - hcl_cnode_t* obj, * expr; - hcl_cframe_t* cf; - hcl_ooi_t jump_inst_pos; + hak_cnode_t* obj, * expr; + hak_cframe_t* cf; + hak_ooi_t jump_inst_pos; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_COMPILE_OR_P1); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_COMPILE_OR_P1); + HAK_ASSERT(hak, cf->operand != HAK_NULL); /* TODO: optimization - eat away all false expressions */ obj = cf->operand; - if (!HCL_CNODE_IS_CONS(obj)) + if (!HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in or"); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in or"); return -1; } - HCL_ASSERT(hcl, hcl->code.bc.len < HCL_SMOOI_MAX); - jump_inst_pos = hcl->code.bc.len; + HAK_ASSERT(hak, hak->code.bc.len < HAK_SMOOI_MAX); + jump_inst_pos = hak->code.bc.len; /* this conditional jump makes evaluation short-circuited. the actual jump point is to be patched in compile_or_p2() */ - if (emit_single_param_instruction(hcl, HCL_CODE_JUMP_FORWARD_IF_TRUE, MAX_CODE_JUMP, HCL_CNODE_GET_LOC(obj)) <= -1) return -1; - if (emit_byte_instruction(hcl, HCL_CODE_POP_STACKTOP, HCL_CNODE_GET_LOC(obj)) <= -1) return -1; + if (emit_single_param_instruction(hak, HAK_CODE_JUMP_FORWARD_IF_TRUE, MAX_CODE_JUMP, HAK_CNODE_GET_LOC(obj)) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_POP_STACKTOP, HAK_CNODE_GET_LOC(obj)) <= -1) return -1; - expr = HCL_CNODE_CONS_CAR(obj); - obj = HCL_CNODE_CONS_CDR(obj); + expr = HAK_CNODE_CONS_CAR(obj); + obj = HAK_CNODE_CONS_CDR(obj); - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT, expr); /* 1 */ + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT, expr); /* 1 */ - PUSH_SUBCFRAME(hcl, COP_COMPILE_OR_P2, expr); /* 3 */ - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_COMPILE_OR_P2, expr); /* 3 */ + cf = GET_SUBCFRAME(hak); cf->u.post_or.jump_inst_pos = jump_inst_pos; - if (obj) PUSH_SUBCFRAME(hcl, COP_COMPILE_OR_P1, obj); /* 2 */ + if (obj) PUSH_SUBCFRAME(hak, COP_COMPILE_OR_P1, obj); /* 2 */ return 0; } -static HCL_INLINE int compile_or_p2 (hcl_t* hcl) +static HAK_INLINE int compile_or_p2 (hak_t* hak) { - hcl_cframe_t* cf; - hcl_ooi_t jip; - hcl_oow_t jump_offset; + hak_cframe_t* cf; + hak_ooi_t jip; + hak_oow_t jump_offset; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_COMPILE_OR_P2); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_COMPILE_OR_P2); + HAK_ASSERT(hak, cf->operand != HAK_NULL); - HCL_ASSERT(hcl, hcl->code.bc.len < HCL_SMOOI_MAX); + HAK_ASSERT(hak, hak->code.bc.len < HAK_SMOOI_MAX); jip = cf->u.post_or.jump_inst_pos; /* patch the jump insruction emitted after each expression inside the 'and' expression */ - jump_offset = hcl->code.bc.len - jip - (HCL_CODE_LONG_PARAM_SIZE + 1); - patch_long_jump(hcl, jip, jump_offset); + jump_offset = hak->code.bc.len - jip - (HAK_CODE_LONG_PARAM_SIZE + 1); + patch_long_jump(hak, jip, jump_offset); - POP_CFRAME(hcl); + POP_CFRAME(hak); return 0; } /* ========================================================================= */ /* EXPERIMENT WITH BINOP */ -static int compile_plus (hcl_t* hcl, hcl_cnode_t* src) +static int compile_plus (hak_t* hak, hak_cnode_t* src) { - hcl_cnode_t* obj, * expr; + hak_cnode_t* obj, * expr; - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(src)); - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(src), HCL_CNODE_PLUS)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(src)); + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(src), HAK_CNODE_PLUS)); - obj = HCL_CNODE_CONS_CDR(src); + obj = HAK_CNODE_CONS_CDR(src); if (!obj) { /* no value */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(src), HCL_NULL, "no expression specified in plus"); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(src), HAK_NULL, "no expression specified in plus"); return -1; } - else if (!HCL_CNODE_IS_CONS(obj)) + else if (!HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in plus"); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in plus"); return -1; } - expr = HCL_CNODE_CONS_CAR(obj); - obj = HCL_CNODE_CONS_CDR(obj); + expr = HAK_CNODE_CONS_CAR(obj); + obj = HAK_CNODE_CONS_CDR(obj); - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT, expr); /* 1 */ + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT, expr); /* 1 */ if (!obj) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(src), HCL_NULL, "no second expression specified in plus"); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(src), HAK_NULL, "no second expression specified in plus"); return -1; } - else if (!HCL_CNODE_IS_CONS(obj)) + else if (!HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in plus"); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in plus"); return -1; } - expr = HCL_CNODE_CONS_CAR(obj); - obj = HCL_CNODE_CONS_CDR(obj); + expr = HAK_CNODE_CONS_CAR(obj); + obj = HAK_CNODE_CONS_CDR(obj); if (obj) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in plus"); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in plus"); return -1; } /* TODO: more check on obj */ - PUSH_SUBCFRAME(hcl, COP_EMIT_PLUS, src); /* 3 */ - PUSH_SUBCFRAME(hcl, COP_COMPILE_OBJECT, expr); /* 2 */ + PUSH_SUBCFRAME(hak, COP_EMIT_PLUS, src); /* 3 */ + PUSH_SUBCFRAME(hak, COP_COMPILE_OBJECT, expr); /* 2 */ return 0; } -static HCL_INLINE int emit_plus (hcl_t* hcl) +static HAK_INLINE int emit_plus (hak_t* hak) { - hcl_cframe_t* cf; + hak_cframe_t* cf; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_PLUS); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_PLUS); - if (emit_byte_instruction(hcl, HCL_CODE_PLUS, HCL_CNODE_GET_LOC(cf->operand)) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_PLUS, HAK_CNODE_GET_LOC(cf->operand)) <= -1) return -1; - POP_CFRAME (hcl); + POP_CFRAME (hak); return 0; } /* ========================================================================= */ -static int compile_break (hcl_t* hcl, hcl_cnode_t* src) +static int compile_break (hak_t* hak, hak_cnode_t* src) { /* (break) */ - hcl_cnode_t* cmd, * obj; - hcl_ooi_t i; + hak_cnode_t* cmd, * obj; + hak_ooi_t i; - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(src)); - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(src), HCL_CNODE_BREAK)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(src)); + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(src), HAK_CNODE_BREAK)); - cmd = HCL_CNODE_CONS_CAR(src); - obj = HCL_CNODE_CONS_CDR(src); + cmd = HAK_CNODE_CONS_CAR(src); + obj = HAK_CNODE_CONS_CDR(src); if (obj) { - if (HCL_CNODE_IS_CONS(obj)) + if (HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(obj), HCL_NULL, "redundant argument in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(obj), HAK_NULL, "redundant argument in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); } else { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); } return -1; } - for (i = hcl->c->ctlblk.depth; i > hcl->c->funblk.info[hcl->c->funblk.depth].ctlblk_base; --i) + for (i = hak->c->ctlblk.depth; i > hak->c->funblk.info[hak->c->funblk.depth].ctlblk_base; --i) { - switch (hcl->c->ctlblk.info[i]._type) + switch (hak->c->ctlblk.info[i]._type) { - case HCL_CTLBLK_TYPE_LOOP: + case HAK_CTLBLK_TYPE_LOOP: goto inside_loop; - case HCL_CTLBLK_TYPE_TRY: + case HAK_CTLBLK_TYPE_TRY: /* emit an instruction to exit from the try loop. */ - if (emit_byte_instruction(hcl, HCL_CODE_TRY_EXIT, HCL_CNODE_GET_LOC(src)) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_TRY_EXIT, HAK_CNODE_GET_LOC(src)) <= -1) return -1; break; - case HCL_CTLBLK_TYPE_CLASS: + case HAK_CTLBLK_TYPE_CLASS: /* emit an instruction to exit from the class definition scope being defined */ - if (emit_byte_instruction(hcl, HCL_CODE_CLASS_EXIT, HCL_CNODE_GET_LOC(src)) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_CLASS_EXIT, HAK_CNODE_GET_LOC(src)) <= -1) return -1; break; } } - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_BREAK, HCL_CNODE_GET_LOC(src), HCL_NULL, - "%.*js outside loop", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt ( + hak, HAK_SYNERR_BREAK, HAK_CNODE_GET_LOC(src), HAK_NULL, + "%.*js outside loop", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; inside_loop: - for (i = hcl->c->cfs.top; i >= 0; --i) + for (i = hak->c->cfs.top; i >= 0; --i) { - const hcl_cframe_t* tcf; - tcf = &hcl->c->cfs.ptr[i]; + const hak_cframe_t* tcf; + tcf = &hak->c->cfs.ptr[i]; if (tcf->opcode == COP_EMIT_FUN) break; /* seems to cross function boundary */ if (tcf->opcode == COP_POST_UNTIL_BODY || tcf->opcode == COP_POST_WHILE_BODY) { - hcl_ooi_t jump_inst_pos; - hcl_cframe_t* cf; + hak_ooi_t jump_inst_pos; + hak_cframe_t* cf; /* (break) is not really a function call. but to make it look like a * function call, i generate PUSH_NIL so nil becomes a return value. * (set x (until #f (break))) * x will get nill. */ - if (emit_byte_instruction(hcl, HCL_CODE_PUSH_NIL, HCL_CNODE_GET_LOC(cmd)) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_PUSH_NIL, HAK_CNODE_GET_LOC(cmd)) <= -1) return -1; /* TODO: study if supporting expression after break is good like return. (break (+ 10 20)) */ - HCL_ASSERT(hcl, hcl->code.bc.len < HCL_SMOOI_MAX); - jump_inst_pos = hcl->code.bc.len; + HAK_ASSERT(hak, hak->code.bc.len < HAK_SMOOI_MAX); + jump_inst_pos = hak->code.bc.len; - if (emit_single_param_instruction(hcl, HCL_CODE_JUMP_FORWARD_0, MAX_CODE_JUMP, HCL_CNODE_GET_LOC(cmd)) <= -1) return -1; - INSERT_CFRAME(hcl, i, COP_COMPILE_BREAK_P1, cmd); - cf = GET_CFRAME(hcl, i); + if (emit_single_param_instruction(hak, HAK_CODE_JUMP_FORWARD_0, MAX_CODE_JUMP, HAK_CNODE_GET_LOC(cmd)) <= -1) return -1; + INSERT_CFRAME(hak, i, COP_COMPILE_BREAK_P1, cmd); + cf = GET_CFRAME(hak, i); cf->u._break.jump_inst_pos = jump_inst_pos; - POP_CFRAME (hcl); + POP_CFRAME (hak); return 0; } } /* this part must no be reached. if a loop control block is found, * there must exist a COP_POST_UNTIL_BODY or COP_POST_WHILE_BODY frame */ - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_INTERN, HCL_CNODE_GET_LOC(src), HCL_NULL, - "internal error in compiling %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt ( + hak, HAK_SYNERR_INTERN, HAK_CNODE_GET_LOC(src), HAK_NULL, + "internal error in compiling %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } -static int compile_break_p1 (hcl_t* hcl) +static int compile_break_p1 (hak_t* hak) { - hcl_cframe_t* cf; - hcl_ooi_t jip, jump_offset; + hak_cframe_t* cf; + hak_ooi_t jip, jump_offset; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_COMPILE_BREAK_P1); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_COMPILE_BREAK_P1); + HAK_ASSERT(hak, cf->operand != HAK_NULL); jip = cf->u._break.jump_inst_pos;; - /* HCL_CODE_LONG_PARAM_SIZE + 1 => size of the long JUMP_FORWARD instruction */ - jump_offset = hcl->code.bc.len - jip - (HCL_CODE_LONG_PARAM_SIZE + 1); + /* HAK_CODE_LONG_PARAM_SIZE + 1 => size of the long JUMP_FORWARD instruction */ + jump_offset = hak->code.bc.len - jip - (HAK_CODE_LONG_PARAM_SIZE + 1); /* no explicit about jump_offset. because break can only place inside * a loop, the same check in post_while_body() must assert * this break jump_offset to be small enough */ - HCL_ASSERT(hcl, jump_offset <= MAX_CODE_JUMP * 2); - patch_long_jump(hcl, jip, jump_offset); + HAK_ASSERT(hak, jump_offset <= MAX_CODE_JUMP * 2); + patch_long_jump(hak, jip, jump_offset); - POP_CFRAME (hcl); + POP_CFRAME (hak); return 0; } /* ========================================================================= */ -static int compile_continue (hcl_t* hcl, hcl_cnode_t* src) +static int compile_continue (hak_t* hak, hak_cnode_t* src) { /* (continue) */ - hcl_cnode_t* cmd, * obj; - hcl_ooi_t i; + hak_cnode_t* cmd, * obj; + hak_ooi_t i; - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(src)); - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(src), HCL_CNODE_CONTINUE)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(src)); + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(src), HAK_CNODE_CONTINUE)); - cmd = HCL_CNODE_CONS_CAR(src); - obj = HCL_CNODE_CONS_CDR(src); + cmd = HAK_CNODE_CONS_CAR(src); + obj = HAK_CNODE_CONS_CDR(src); if (obj) { - if (HCL_CNODE_IS_CONS(obj)) + if (HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(obj), HCL_NULL, "redundant argument in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(obj), HAK_NULL, "redundant argument in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); } else { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); } return -1; } - for (i = hcl->c->ctlblk.depth; i > hcl->c->funblk.info[hcl->c->funblk.depth].ctlblk_base; --i) + for (i = hak->c->ctlblk.depth; i > hak->c->funblk.info[hak->c->funblk.depth].ctlblk_base; --i) { - switch (hcl->c->ctlblk.info[i]._type) + switch (hak->c->ctlblk.info[i]._type) { - case HCL_CTLBLK_TYPE_LOOP: + case HAK_CTLBLK_TYPE_LOOP: goto inside_loop; - case HCL_CTLBLK_TYPE_TRY: + case HAK_CTLBLK_TYPE_TRY: /*must emit an instruction to exit from the try loop.*/ - if (emit_byte_instruction(hcl, HCL_CODE_TRY_EXIT, HCL_CNODE_GET_LOC(src)) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_TRY_EXIT, HAK_CNODE_GET_LOC(src)) <= -1) return -1; break; - case HCL_CTLBLK_TYPE_CLASS: - if (emit_byte_instruction(hcl, HCL_CODE_CLASS_EXIT, HCL_CNODE_GET_LOC(src)) <= -1) return -1; + case HAK_CTLBLK_TYPE_CLASS: + if (emit_byte_instruction(hak, HAK_CODE_CLASS_EXIT, HAK_CNODE_GET_LOC(src)) <= -1) return -1; break; } } - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BREAK, HCL_CNODE_GET_LOC(src), HCL_NULL, "%.*js outside loop", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_BREAK, HAK_CNODE_GET_LOC(src), HAK_NULL, "%.*js outside loop", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; inside_loop: - for (i = hcl->c->cfs.top; i >= 0; --i) + for (i = hak->c->cfs.top; i >= 0; --i) { - const hcl_cframe_t* tcf; - tcf = &hcl->c->cfs.ptr[i]; + const hak_cframe_t* tcf; + tcf = &hak->c->cfs.ptr[i]; if (tcf->opcode == COP_EMIT_FUN) break; /* seems to cross function boundary */ if (tcf->opcode == COP_POST_UNTIL_BODY || tcf->opcode == COP_POST_WHILE_BODY) { - hcl_ooi_t jump_offset; + hak_ooi_t jump_offset; - HCL_ASSERT(hcl, hcl->code.bc.len < HCL_SMOOI_MAX); - jump_offset = hcl->code.bc.len - tcf->u.post_while.cond_pos + 1; - if (jump_offset > 3) jump_offset += HCL_CODE_LONG_PARAM_SIZE; - if (emit_single_param_instruction(hcl, HCL_CODE_JUMP_BACKWARD_0, jump_offset, HCL_CNODE_GET_LOC(cmd)) <= -1) return -1; + HAK_ASSERT(hak, hak->code.bc.len < HAK_SMOOI_MAX); + jump_offset = hak->code.bc.len - tcf->u.post_while.cond_pos + 1; + if (jump_offset > 3) jump_offset += HAK_CODE_LONG_PARAM_SIZE; + if (emit_single_param_instruction(hak, HAK_CODE_JUMP_BACKWARD_0, jump_offset, HAK_CNODE_GET_LOC(cmd)) <= -1) return -1; - POP_CFRAME (hcl); + POP_CFRAME (hak); return 0; } } /* this part must no be reached. if a loop control block is found, * there must exist a COP_POST_UNTIL_BODY or COP_POST_WHILE_BODY frame */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_INTERN, HCL_CNODE_GET_LOC(src), HCL_NULL, "internal error in compiling %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_INTERN, HAK_CNODE_GET_LOC(src), HAK_NULL, "internal error in compiling %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } @@ -2200,44 +2200,44 @@ inside_loop: #define CEB_IS_BLOCK (1 << 0) #define CEB_AUTO_FORGED (1 << 1) -static int compile_expression_block (hcl_t* hcl, hcl_cnode_t* src, const hcl_bch_t* ctxname, int flags) +static int compile_expression_block (hak_t* hak, hak_cnode_t* src, const hak_bch_t* ctxname, int flags) { - hcl_cnode_t* cmd, * obj; - hcl_oow_t nlvars, tvslen; - hcl_funblk_info_t* fbi; - hcl_cframe_t* cf; + hak_cnode_t* cmd, * obj; + hak_oow_t nlvars, tvslen; + hak_funblk_info_t* fbi; + hak_cframe_t* cf; /* called for {} after 'do' or a standalone {} */ if (flags & CEB_IS_BLOCK) { - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS_CONCODED(src, HCL_CONCODE_BLOCK) || HCL_CNODE_IS_ELIST_CONCODED(src, HCL_CONCODE_BLOCK)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS_CONCODED(src, HAK_CONCODE_BLOCK) || HAK_CNODE_IS_ELIST_CONCODED(src, HAK_CONCODE_BLOCK)); cmd = src; /* it's the cons cell itself */ /* `obj` must point to the cons cell pointing to the braced expression list */ - obj = HCL_CNODE_IS_ELIST(src)? HCL_NULL: src; + obj = HAK_CNODE_IS_ELIST(src)? HAK_NULL: src; /* no check for redundant cdr because {} cannot be dotted */ } else { /* called for 'do ...' */ - cmd = HCL_CNODE_CONS_CAR(src); /* `do` itself */ + cmd = HAK_CNODE_CONS_CAR(src); /* `do` itself */ /* `obj` must point to the expression list after `do` */ - obj = HCL_CNODE_CONS_CDR(src); /* expression list after it */ - if (obj && !HCL_CNODE_IS_CONS(obj)) + obj = HAK_CNODE_CONS_CDR(src); /* expression list after it */ + if (obj && !HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), - "redundant cdr in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt ( + hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), + "redundant cdr in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } } - if (is_followed_by_vlist(hcl, obj)) + if (is_followed_by_vlist(hak, obj)) { - if (is_in_class_init_scope(hcl)) + if (is_in_class_init_scope(hak)) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VARDCLBANNED, HCL_CNODE_GET_LOC(obj), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VARDCLBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL, "variable declaration disallowed in class init scope"); return -1; } @@ -2254,52 +2254,52 @@ static int compile_expression_block (hcl_t* hcl, hcl_cnode_t* src, const hcl_bch * ^ * not allowed either */ - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VARDCLBANNED, HCL_CNODE_GET_LOC(obj), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VARDCLBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL, "variable declaration disallowed in '%hs' context", ctxname); return -1; } #endif } - tvslen = hcl->c->tv.s.len; + tvslen = hak->c->tv.s.len; nlvars = 0; if (obj) { - hcl_cnode_t* tmp = obj; - if (collect_vardcls(hcl, obj, &obj, tvslen, &nlvars, ctxname) <= -1) return -1; + hak_cnode_t* tmp = obj; + if (collect_vardcls(hak, obj, &obj, tvslen, &nlvars, ctxname) <= -1) return -1; if (nlvars > MAX_CODE_NBLKLVARS) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VARFLOOD, HCL_CNODE_GET_LOC(tmp), HCL_NULL, - "too many(%zu) variables in %.*js", nlvars, HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VARFLOOD, HAK_CNODE_GET_LOC(tmp), HAK_NULL, + "too many(%zu) variables in %.*js", nlvars, HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } } - fbi = &hcl->c->funblk.info[hcl->c->funblk.depth]; - fbi->tmprlen = hcl->c->tv.s.len; - fbi->tmprcnt = hcl->c->tv.wcount; + fbi = &hak->c->funblk.info[hak->c->funblk.depth]; + fbi->tmprlen = hak->c->tv.s.len; + fbi->tmprcnt = hak->c->tv.wcount; fbi->tmpr_nlvars = fbi->tmpr_nlvars + nlvars; - /* for an expression like `(do )` or `(do | a b | ) , `obj` will point to HCL_NULL. + /* for an expression like `(do )` or `(do | a b | ) , `obj` will point to HAK_NULL. * let `obj` point to the internal cnode to convert the expression like `(do #nil)` or `(do |a b| #nil)`. */ - if (!obj) obj = &hcl->c->fake_cnode.cons_to_nil; + if (!obj) obj = &hak->c->fake_cnode.cons_to_nil; - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT_LIST, obj); /* 1 */ + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT_LIST, obj); /* 1 */ - PUSH_SUBCFRAME(hcl, COP_COMPILE_DO_P1, src); /* 2 */ - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_COMPILE_DO_P1, src); /* 2 */ + cf = GET_SUBCFRAME(hak); cf->u.post_do.lvar_start = tvslen; cf->u.post_do.lvar_end = fbi->tmprlen; return 0; } -static int compile_do (hcl_t* hcl, hcl_cnode_t* xlist) +static int compile_do (hak_t* hak, hak_cnode_t* xlist) { #if 0 - hcl_cnode_t* cmd, * obj; + hak_cnode_t* cmd, * obj; #endif int flags = 0; @@ -2324,24 +2324,24 @@ static int compile_do (hcl_t* hcl, hcl_cnode_t* xlist) * { a := 20; b := 30 } */ - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(xlist)); - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(xlist), HCL_CNODE_DO)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(xlist)); + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(xlist), HAK_CNODE_DO)); #if 0 - cmd = HCL_CNODE_CONS_CAR(xlist); /* do itself */ - obj = HCL_CNODE_CONS_CDR(xlist); /* expression list after it */ + cmd = HAK_CNODE_CONS_CAR(xlist); /* do itself */ + obj = HAK_CNODE_CONS_CDR(xlist); /* expression list after it */ #endif - if (HCL_CNODE_GET_FLAGS(xlist) & HCL_CNODE_AUTO_FORGED) flags |= CEB_AUTO_FORGED; - return compile_expression_block(hcl, xlist, "do", flags); + if (HAK_CNODE_GET_FLAGS(xlist) & HAK_CNODE_AUTO_FORGED) flags |= CEB_AUTO_FORGED; + return compile_expression_block(hak, xlist, "do", flags); } -static int compile_do_p1 (hcl_t* hcl) +static int compile_do_p1 (hak_t* hak) { - hcl_cframe_t* cf; - cf = GET_TOP_CFRAME(hcl); + hak_cframe_t* cf; + cf = GET_TOP_CFRAME(hak); - /* invalidate variables without shrinking the hcl->c->tv buffer. + /* invalidate variables without shrinking the hak->c->tv buffer. * { | a b | } * { | d | } * this way, 'a' doesn't overlap with 'd' in terms of their position @@ -2349,26 +2349,26 @@ static int compile_do_p1 (hcl_t* hcl) * the second block where 'd' is declared. * * If we shrinked the buffer instead, some extra code to initialize overlapping - * hcl->c->tv.wcount = saved_wcount (not available in the current code) - * hcl->c->tv.s.len = cf->u.post_do.lvar_start; + * hak->c->tv.wcount = saved_wcount (not available in the current code) + * hak->c->tv.s.len = cf->u.post_do.lvar_start; * variables upon entry to a block would need to be emitted. 'd' would need to * get explicitly initialized to `nil` in the above case. */ - kill_temporary_variables(hcl, cf->u.post_do.lvar_start, cf->u.post_do.lvar_end); + kill_temporary_variables(hak, cf->u.post_do.lvar_start, cf->u.post_do.lvar_end); - POP_CFRAME (hcl); + POP_CFRAME (hak); return 0; } /* ========================================================================= */ -static int compile_if (hcl_t* hcl, hcl_cnode_t* src) +static int compile_if (hak_t* hak, hak_cnode_t* src) { - hcl_cnode_t* cmd, * obj, * cond; - hcl_cframe_t* cf; + hak_cnode_t* cmd, * obj, * cond; + hak_cframe_t* cf; - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(src)); - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(src), HCL_CNODE_IF)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(src)); + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(src), HAK_CNODE_IF)); /* (if (< 20 30) * (perform this) @@ -2379,30 +2379,30 @@ static int compile_if (hcl_t* hcl, hcl_cnode_t* src) * (perform this finally) * ) */ - cmd = HCL_CNODE_CONS_CAR(src); /* if itself */ - obj = HCL_CNODE_CONS_CDR(src); + cmd = HAK_CNODE_CONS_CAR(src); /* if itself */ + obj = HAK_CNODE_CONS_CDR(src); if (!obj) { /* no value */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(src), HCL_NULL, "no conditional expression after '%.*js'", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(src), HAK_NULL, "no conditional expression after '%.*js'", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - else if (!HCL_CNODE_IS_CONS(obj)) + else if (!HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - cond = HCL_CNODE_CONS_CAR(obj); - obj = HCL_CNODE_CONS_CDR(obj); + cond = HAK_CNODE_CONS_CAR(obj); + obj = HAK_CNODE_CONS_CDR(obj); - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT, cond); /* 1 */ - PUSH_SUBCFRAME(hcl, COP_POST_IF_COND, obj); /* 2 */ - cf = GET_SUBCFRAME(hcl); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT, cond); /* 1 */ + PUSH_SUBCFRAME(hak, COP_POST_IF_COND, obj); /* 2 */ + cf = GET_SUBCFRAME(hak); cf->u.post_if.body_pos = -1; /* unknown yet */ cf->u.post_if.jump_inst_pos = -1; /* not needed */ - cf->u.post_if.start_loc = *HCL_CNODE_GET_LOC(src); + cf->u.post_if.start_loc = *HAK_CNODE_GET_LOC(src); cf->u.post_if.cmd_cnode = cmd; /* TODO: OPTIMIZATION: * pass information on the conditional if it's an absoluate true or absolute false to @@ -2413,137 +2413,137 @@ static int compile_if (hcl_t* hcl, hcl_cnode_t* src) return 0; } -static HCL_INLINE int patch_nearest_post_if_body (hcl_t* hcl, hcl_cnode_t* cmd) +static HAK_INLINE int patch_nearest_post_if_body (hak_t* hak, hak_cnode_t* cmd) { - hcl_ooi_t jump_inst_pos, body_pos; - hcl_ooi_t jip, jump_offset; - hcl_cframe_t* cf; + hak_ooi_t jump_inst_pos, body_pos; + hak_ooi_t jip, jump_offset; + hak_cframe_t* cf; - cf = find_cframe_from_top(hcl, COP_POST_IF_BODY); - HCL_ASSERT(hcl, cf != HCL_NULL); - HCL_ASSERT(hcl, cf->opcode == COP_POST_IF_BODY); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = find_cframe_from_top(hak, COP_POST_IF_BODY); + HAK_ASSERT(hak, cf != HAK_NULL); + HAK_ASSERT(hak, cf->opcode == COP_POST_IF_BODY); + HAK_ASSERT(hak, cf->operand != HAK_NULL); /* jump instruction position of the JUMP_FORWARD_IF_FALSE after the conditional of the previous if or elif*/ jip = cf->u.post_if.jump_inst_pos; - if (hcl->code.bc.len <= cf->u.post_if.body_pos) + if (hak->code.bc.len <= cf->u.post_if.body_pos) { /* the if body is empty. */ - if (emit_byte_instruction(hcl, HCL_CODE_PUSH_NIL, HCL_CNODE_GET_LOC(cf->operand)) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_PUSH_NIL, HAK_CNODE_GET_LOC(cf->operand)) <= -1) return -1; } - HCL_ASSERT(hcl, hcl->code.bc.len < HCL_SMOOI_MAX); - jump_inst_pos = hcl->code.bc.len; + HAK_ASSERT(hak, hak->code.bc.len < HAK_SMOOI_MAX); + jump_inst_pos = hak->code.bc.len; /* emit jump_forward before the beginning of the else block. * this is to make the earlier if or elif block to skip * the else part. it is to be patched in post_else_body(). */ - if (emit_single_param_instruction(hcl, HCL_CODE_JUMP_FORWARD_0, MAX_CODE_JUMP, HCL_CNODE_GET_LOC(cf->operand)) <= -1) return -1; + if (emit_single_param_instruction(hak, HAK_CODE_JUMP_FORWARD_0, MAX_CODE_JUMP, HAK_CNODE_GET_LOC(cf->operand)) <= -1) return -1; - /* HCL_CODE_LONG_PARAM_SIZE + 1 => size of the long JUMP_FORWARD instruction */ - jump_offset = hcl->code.bc.len - jip - (HCL_CODE_LONG_PARAM_SIZE + 1); + /* HAK_CODE_LONG_PARAM_SIZE + 1 => size of the long JUMP_FORWARD instruction */ + jump_offset = hak->code.bc.len - jip - (HAK_CODE_LONG_PARAM_SIZE + 1); if (jump_offset > MAX_CODE_JUMP * 2) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_IFFLOOD, HCL_CNODE_GET_LOC(cmd), HCL_NULL, "code in %.*js too big - size %zu", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd), jump_offset); + hak_setsynerrbfmt(hak, HAK_SYNERR_IFFLOOD, HAK_CNODE_GET_LOC(cmd), HAK_NULL, "code in %.*js too big - size %zu", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd), jump_offset); return -1; } - patch_long_jump(hcl, jip, jump_offset); + patch_long_jump(hak, jip, jump_offset); /* beginning of the elif/else block code */ /* to drop the result of the conditional when the conditional is false */ - if (emit_byte_instruction(hcl, HCL_CODE_POP_STACKTOP, HCL_CNODE_GET_LOC(cf->operand)) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_POP_STACKTOP, HAK_CNODE_GET_LOC(cf->operand)) <= -1) return -1; /* this is the actual beginning */ - HCL_ASSERT(hcl, hcl->code.bc.len < HCL_SMOOI_MAX); - body_pos = hcl->code.bc.len; + HAK_ASSERT(hak, hak->code.bc.len < HAK_SMOOI_MAX); + body_pos = hak->code.bc.len; /* modify the POST_IF_BODY frame */ - HCL_ASSERT(hcl, cf->opcode == COP_POST_IF_BODY); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + HAK_ASSERT(hak, cf->opcode == COP_POST_IF_BODY); + HAK_ASSERT(hak, cf->operand != HAK_NULL); cf->u.post_if.body_pos = body_pos; cf->u.post_if.jump_inst_pos = jump_inst_pos; return 0; } -static HCL_INLINE int compile_elif (hcl_t* hcl) +static HAK_INLINE int compile_elif (hak_t* hak) { - hcl_cnode_t* cmd, * obj, * cond, * src; - hcl_cframe_t* cf; + hak_cnode_t* cmd, * obj, * cond, * src; + hak_cframe_t* cf; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_COMPILE_ELIF); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_COMPILE_ELIF); src = cf->operand; - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(src)); - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(src), HCL_CNODE_ELIF)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(src)); + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(src), HAK_CNODE_ELIF)); - cmd = HCL_CNODE_CONS_CAR(src); /* elif itself */ - obj = HCL_CNODE_CONS_CDR(src); + cmd = HAK_CNODE_CONS_CAR(src); /* elif itself */ + obj = HAK_CNODE_CONS_CDR(src); if (!obj) { /* no value */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(src), HCL_NULL, "no conditional expression after '%.*js'", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(src), HAK_NULL, "no conditional expression after '%.*js'", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - else if (!HCL_CNODE_IS_CONS(obj)) + else if (!HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - cond = HCL_CNODE_CONS_CAR(obj); - obj = HCL_CNODE_CONS_CDR(obj); + cond = HAK_CNODE_CONS_CAR(obj); + obj = HAK_CNODE_CONS_CDR(obj); - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT, cond); /* 1 */ - PUSH_SUBCFRAME(hcl, COP_POST_IF_COND, obj); /* 2 */ - cf = GET_SUBCFRAME(hcl); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT, cond); /* 1 */ + PUSH_SUBCFRAME(hak, COP_POST_IF_COND, obj); /* 2 */ + cf = GET_SUBCFRAME(hak); cf->u.post_if.body_pos = -1; /* unknown yet */ cf->u.post_if.jump_inst_pos = -1; /* not needed */ - cf->u.post_if.start_loc = *HCL_CNODE_GET_LOC(src); + cf->u.post_if.start_loc = *HAK_CNODE_GET_LOC(src); cf->u.post_if.cmd_cnode = cmd; - return patch_nearest_post_if_body(hcl, cmd); + return patch_nearest_post_if_body(hak, cmd); } -static HCL_INLINE int compile_else (hcl_t* hcl) +static HAK_INLINE int compile_else (hak_t* hak) { - hcl_cnode_t* cmd, * obj, * src; - hcl_cframe_t* cf; + hak_cnode_t* cmd, * obj, * src; + hak_cframe_t* cf; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_COMPILE_ELSE); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_COMPILE_ELSE); src = cf->operand; - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(src)); - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(src), HCL_CNODE_ELSE)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(src)); + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(src), HAK_CNODE_ELSE)); - cmd = HCL_CNODE_CONS_CAR(src); /* else itself */ - obj = HCL_CNODE_CONS_CDR(src); + cmd = HAK_CNODE_CONS_CAR(src); /* else itself */ + obj = HAK_CNODE_CONS_CDR(src); - if (obj && !HCL_CNODE_IS_CONS(obj)) + if (obj && !HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - if (check_block_expression_as_body(hcl, obj, cmd, FOR_NONE) <= -1) return -1; + if (check_block_expression_as_body(hak, obj, cmd, FOR_NONE) <= -1) return -1; - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT_LIST, obj); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT_LIST, obj); - return patch_nearest_post_if_body(hcl, cmd); + return patch_nearest_post_if_body(hak, cmd); } /* ========================================================================= */ -static int check_class_attr_list (hcl_t* hcl, hcl_cnode_t* attr_list, unsigned int* indexed_type, hcl_cnode_t* cmd, hcl_cnode_t* class_name) +static int check_class_attr_list (hak_t* hak, hak_cnode_t* attr_list, unsigned int* indexed_type, hak_cnode_t* cmd, hak_cnode_t* class_name) { static struct { - const hcl_bch_t* name; + const hak_bch_t* name; int shifts; unsigned int mask; unsigned int value; @@ -2557,83 +2557,83 @@ static int check_class_attr_list (hcl_t* hcl, hcl_cnode_t* attr_list, unsigned i * keep the table sorted in alphabestical order ascending for * binary search */ - { "b", 0, 0xFF, HCL_OBJ_TYPE_BYTE }, - { "byte", 0, 0xFF, HCL_OBJ_TYPE_BYTE }, - { "c", 0, 0xFF, HCL_OBJ_TYPE_CHAR }, - { "char", 0, 0xFF, HCL_OBJ_TYPE_CHAR }, - { "character", 0, 0xFF, HCL_OBJ_TYPE_CHAR }, + { "b", 0, 0xFF, HAK_OBJ_TYPE_BYTE }, + { "byte", 0, 0xFF, HAK_OBJ_TYPE_BYTE }, + { "c", 0, 0xFF, HAK_OBJ_TYPE_CHAR }, + { "char", 0, 0xFF, HAK_OBJ_TYPE_CHAR }, + { "character", 0, 0xFF, HAK_OBJ_TYPE_CHAR }, - { "final", 8, 0x00, HCL_CLASS_SELFSPEC_FLAG_FINAL }, + { "final", 8, 0x00, HAK_CLASS_SELFSPEC_FLAG_FINAL }, - { "halfword", 0, 0xFF, HCL_OBJ_TYPE_HALFWORD }, - { "hw", 0, 0xFF, HCL_OBJ_TYPE_HALFWORD }, + { "halfword", 0, 0xFF, HAK_OBJ_TYPE_HALFWORD }, + { "hw", 0, 0xFF, HAK_OBJ_TYPE_HALFWORD }, - { "immutable", 12, 0x00, HCL_CLASS_SPEC_FLAG_IMMUTABLE }, + { "immutable", 12, 0x00, HAK_CLASS_SPEC_FLAG_IMMUTABLE }, - { "limited", 8, 0x00, HCL_CLASS_SELFSPEC_FLAG_LIMITED }, + { "limited", 8, 0x00, HAK_CLASS_SELFSPEC_FLAG_LIMITED }, - { "uncopyable", 12, 0x00, HCL_CLASS_SPEC_FLAG_UNCOPYABLE }, + { "uncopyable", 12, 0x00, HAK_CLASS_SPEC_FLAG_UNCOPYABLE }, - { "v", 12, 0x00, HCL_CLASS_SPEC_FLAG_INDEXED }, - { "var", 12, 0x00, HCL_CLASS_SPEC_FLAG_INDEXED }, - { "varying", 12, 0x00, HCL_CLASS_SPEC_FLAG_INDEXED }, + { "v", 12, 0x00, HAK_CLASS_SPEC_FLAG_INDEXED }, + { "var", 12, 0x00, HAK_CLASS_SPEC_FLAG_INDEXED }, + { "varying", 12, 0x00, HAK_CLASS_SPEC_FLAG_INDEXED }, - { "w", 0, 0xFF, HCL_OBJ_TYPE_WORD }, - { "word", 0, 0xFF, HCL_OBJ_TYPE_WORD } + { "w", 0, 0xFF, HAK_OBJ_TYPE_WORD }, + { "word", 0, 0xFF, HAK_OBJ_TYPE_WORD } /* TODO: uint32 uint16 .. etc */ }; - hcl_obj_type_t ct; + hak_obj_type_t ct; - ct = HCL_OBJ_TYPE_OOP; + ct = HAK_OBJ_TYPE_OOP; - HCL_ASSERT(hcl, attr_list != HCL_NULL); - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS_CONCODED(attr_list, HCL_CONCODE_XLIST) || - HCL_CNODE_IS_ELIST_CONCODED(attr_list, HCL_CONCODE_XLIST)); + HAK_ASSERT(hak, attr_list != HAK_NULL); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS_CONCODED(attr_list, HAK_CONCODE_XLIST) || + HAK_CNODE_IS_ELIST_CONCODED(attr_list, HAK_CONCODE_XLIST)); - if (HCL_CNODE_IS_ELIST_CONCODED(attr_list, HCL_CONCODE_XLIST)) + if (HAK_CNODE_IS_ELIST_CONCODED(attr_list, HAK_CONCODE_XLIST)) { /* don't allow empty attribute list */ if (class_name) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(attr_list), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr_list), HAK_NULL, "empty attribute list on '%.*js' for '%.*js'", - HCL_CNODE_GET_TOKLEN(class_name), HCL_CNODE_GET_TOKPTR(class_name), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(class_name), HAK_CNODE_GET_TOKPTR(class_name), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); } else { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(attr_list), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr_list), HAK_NULL, "empty attribute list on unnamed class for '%.*js'", - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); } return -1; } - if (HCL_CNODE_IS_CONS_CONCODED(attr_list, HCL_CONCODE_XLIST)) + if (HAK_CNODE_IS_CONS_CONCODED(attr_list, HAK_CONCODE_XLIST)) { - hcl_cnode_t* c; - const hcl_ooch_t* tokptr; - hcl_oow_t toklen; + hak_cnode_t* c; + const hak_ooch_t* tokptr; + hak_oow_t toklen; c = attr_list; while (c) { - /* [NOTE] this algorithm is underflow safe with hcl_oow_t types */ - hcl_oow_t base, lim; - hcl_cnode_t* attr; + /* [NOTE] this algorithm is underflow safe with hak_oow_t types */ + hak_oow_t base, lim; + hak_cnode_t* attr; - attr = HCL_CNODE_CONS_CAR(c); + attr = HAK_CNODE_CONS_CAR(c); - tokptr = HCL_CNODE_GET_TOKPTR(attr); - toklen = HCL_CNODE_GET_TOKLEN(attr); + tokptr = HAK_CNODE_GET_TOKPTR(attr); + toklen = HAK_CNODE_GET_TOKLEN(attr); - if (!HCL_CNODE_IS_TYPED(attr, HCL_CNODE_SYMLIT)) + if (!HAK_CNODE_IS_TYPED(attr, HAK_CNODE_SYMLIT)) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(attr), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr), HAK_NULL, "invalid class attribute name '%.*js'", toklen, tokptr); return -1; } @@ -2644,13 +2644,13 @@ static int check_class_attr_list (hcl_t* hcl, hcl_cnode_t* attr_list, unsigned i * 8 bits for object type for indexing/variablility (bit 0 .. 7) */ - for (base = 0, lim = HCL_COUNTOF(attr_tab); lim > 0; lim >>= 1) /* binary search */ + for (base = 0, lim = HAK_COUNTOF(attr_tab); lim > 0; lim >>= 1) /* binary search */ { - hcl_oow_t i; + hak_oow_t i; int n; i = base + (lim >> 1); /* mid-point */ - n = hcl_comp_oochars_bcstr(tokptr, toklen, attr_tab[i].name); + n = hak_comp_oochars_bcstr(tokptr, toklen, attr_tab[i].name); if (n == 0) { /* this is to derive the real mask: (attr_tab[i].mask | attr_tab[i].value). @@ -2663,8 +2663,8 @@ static int check_class_attr_list (hcl_t* hcl, hcl_cnode_t* attr_list, unsigned i */ if (!!((ct >> attr_tab[i].shifts) & (attr_tab[i].mask | attr_tab[i].value))) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(attr), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr), HAK_NULL, "conflicting or duplicate class attribute name '#%.*js'", toklen, tokptr); return -1; } @@ -2679,14 +2679,14 @@ static int check_class_attr_list (hcl_t* hcl, hcl_cnode_t* attr_list, unsigned i if (lim <= 0) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(attr), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr), HAK_NULL, "unrecognized class attribute name '#%.*js'", toklen, tokptr); return -1; } found: - c = HCL_CNODE_CONS_CDR(c); + c = HAK_CNODE_CONS_CDR(c); } } @@ -2721,58 +2721,58 @@ static int check_class_attr_list (hcl_t* hcl, hcl_cnode_t* attr_list, unsigned i */ -static int compile_class (hcl_t* hcl, hcl_cnode_t* src) +static int compile_class (hak_t* hak, hak_cnode_t* src) { - hcl_cframe_t* cf; - hcl_cnode_t* cmd, * obj, * tmp; - hcl_cnode_t* attr_list; - hcl_cnode_t* class_name, * superclass; + hak_cframe_t* cf; + hak_cnode_t* cmd, * obj, * tmp; + hak_cnode_t* attr_list; + hak_cnode_t* class_name, * superclass; int nsuperclasses; unsigned int indexed_type; - cmd = HCL_CNODE_CONS_CAR(src); - obj = HCL_CNODE_CONS_CDR(src); + cmd = HAK_CNODE_CONS_CAR(src); + obj = HAK_CNODE_CONS_CDR(src); - attr_list = HCL_NULL; - class_name = HCL_NULL; - indexed_type = HCL_OBJ_TYPE_OOP; + attr_list = HAK_NULL; + class_name = HAK_NULL; + indexed_type = HAK_OBJ_TYPE_OOP; - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(cmd, HCL_CNODE_CLASS)); + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(cmd, HAK_CNODE_CLASS)); if (obj) { - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(obj)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(obj)); - tmp = HCL_CNODE_CONS_CAR(obj); - if (HCL_CNODE_IS_ELIST_CONCODED(tmp, HCL_CONCODE_XLIST) || - HCL_CNODE_IS_CONS_CONCODED(tmp, HCL_CONCODE_XLIST)) + tmp = HAK_CNODE_CONS_CAR(obj); + if (HAK_CNODE_IS_ELIST_CONCODED(tmp, HAK_CONCODE_XLIST) || + HAK_CNODE_IS_CONS_CONCODED(tmp, HAK_CONCODE_XLIST)) { attr_list = tmp; - obj = HCL_CNODE_CONS_CDR(obj); + obj = HAK_CNODE_CONS_CDR(obj); } else goto check_class_name; /* for optimzation. it still works without this jump */ } if (obj) { - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(obj)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(obj)); - tmp = HCL_CNODE_CONS_CAR(obj); + tmp = HAK_CNODE_CONS_CAR(obj); check_class_name: - if (HCL_CNODE_IS_FOR_DATA_SIMPLE(tmp) || HCL_CNODE_IS_FOR_LANG(tmp)) + if (HAK_CNODE_IS_FOR_DATA_SIMPLE(tmp) || HAK_CNODE_IS_FOR_LANG(tmp)) { - if (!HCL_CNODE_IS_SYMBOL_IDENT(tmp)) + if (!HAK_CNODE_IS_SYMBOL_IDENT(tmp)) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_CLASS, HCL_CNODE_GET_LOC(tmp), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_CLASS, HAK_CNODE_GET_LOC(tmp), HAK_NULL, "invalid class name '%.*js' for '%.*js'", - HCL_CNODE_GET_TOKLEN(tmp), HCL_CNODE_GET_TOKPTR(tmp), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } class_name = tmp; - obj = HCL_CNODE_CONS_CDR(obj); + obj = HAK_CNODE_CONS_CDR(obj); } } @@ -2780,228 +2780,228 @@ static int compile_class (hcl_t* hcl, hcl_cnode_t* src) { if (class_name) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_CLASS, HCL_CNODE_GET_LOC(src), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_CLASS, HAK_CNODE_GET_LOC(src), HAK_NULL, "incomplete definition of '%.*js' for '%.*js'", - HCL_CNODE_GET_TOKLEN(class_name), HCL_CNODE_GET_TOKPTR(class_name), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(class_name), HAK_CNODE_GET_TOKPTR(class_name), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); } else { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_CLASS, HCL_CNODE_GET_LOC(src), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_CLASS, HAK_CNODE_GET_LOC(src), HAK_NULL, "incomplete defintion of unnamed class for '%.*js'", - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); } return -1; } - if (attr_list && check_class_attr_list(hcl, attr_list, &indexed_type, cmd, class_name) <= -1) return -1; + if (attr_list && check_class_attr_list(hak, attr_list, &indexed_type, cmd, class_name) <= -1) return -1; - tmp = HCL_CNODE_CONS_CAR(obj); - if (HCL_CNODE_IS_COLON(tmp)) /* check for superclass marker */ + tmp = HAK_CNODE_CONS_CAR(obj); + if (HAK_CNODE_IS_COLON(tmp)) /* check for superclass marker */ { - hcl_cnode_t* marker; + hak_cnode_t* marker; marker = tmp; - obj = HCL_CNODE_CONS_CDR(obj); - if (!obj || !HCL_CNODE_IS_CONS(obj)) + obj = HAK_CNODE_CONS_CDR(obj); + if (!obj || !HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_CLASS, HCL_CNODE_GET_LOC(marker), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_CLASS, HAK_CNODE_GET_LOC(marker), HAK_NULL, "no expression or declaration after %.*js", - HCL_CNODE_GET_TOKLEN(marker), HCL_CNODE_GET_TOKPTR(marker)); + HAK_CNODE_GET_TOKLEN(marker), HAK_CNODE_GET_TOKPTR(marker)); return -1; } /* superclass part */ - superclass = HCL_CNODE_CONS_CAR(obj); - if (!HCL_CNODE_IS_SYMBOL(superclass)) + superclass = HAK_CNODE_CONS_CAR(obj); + if (!HAK_CNODE_IS_SYMBOL(superclass)) { - if (HCL_CNODE_IS_FOR_DATA_SIMPLE(superclass) || HCL_CNODE_IS_FOR_LANG(superclass)) + if (HAK_CNODE_IS_FOR_DATA_SIMPLE(superclass) || HAK_CNODE_IS_FOR_LANG(superclass)) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_CLASS, HCL_CNODE_GET_LOC(marker), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_CLASS, HAK_CNODE_GET_LOC(marker), HAK_NULL, "invalid superclass name '%.*js' after '%.*js' for '%.*js'", - HCL_CNODE_GET_TOKLEN(superclass), HCL_CNODE_GET_TOKPTR(superclass), - HCL_CNODE_GET_TOKLEN(marker), HCL_CNODE_GET_TOKPTR(marker), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(superclass), HAK_CNODE_GET_TOKPTR(superclass), + HAK_CNODE_GET_TOKLEN(marker), HAK_CNODE_GET_TOKPTR(marker), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); } else { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_CLASS, HCL_CNODE_GET_LOC(marker), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_CLASS, HAK_CNODE_GET_LOC(marker), HAK_NULL, "no valid superclass name after '%.*js' for '%.*js'", - HCL_CNODE_GET_TOKLEN(marker), HCL_CNODE_GET_TOKPTR(marker), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(marker), HAK_CNODE_GET_TOKPTR(marker), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); } return -1; } nsuperclasses = 1; - obj = HCL_CNODE_CONS_CDR(obj); + obj = HAK_CNODE_CONS_CDR(obj); } else { nsuperclasses = 0; - superclass = HCL_NULL; + superclass = HAK_NULL; } if (class_name) { #if 0 - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_SYMBOL_LITERAL, class_name); /* 1 - push the class name for a named class */ + SWITCH_TOP_CFRAME(hak, COP_COMPILE_SYMBOL_LITERAL, class_name); /* 1 - push the class name for a named class */ #else - hcl_oow_t index; - hcl_oop_t cons, sym; + hak_oow_t index; + hak_oop_t cons, sym; - sym = hcl_makesymbol(hcl, HCL_CNODE_GET_TOKPTR(class_name), HCL_CNODE_GET_TOKLEN(class_name)); - if (HCL_UNLIKELY(!sym)) return -1; + sym = hak_makesymbol(hak, HAK_CNODE_GET_TOKPTR(class_name), HAK_CNODE_GET_TOKLEN(class_name)); + if (HAK_UNLIKELY(!sym)) return -1; - cons = (hcl_oop_t)hcl_getatsysdic(hcl, sym); + cons = (hak_oop_t)hak_getatsysdic(hak, sym); if (!cons) { - cons = (hcl_oop_t)hcl_putatsysdic(hcl, sym, hcl->_nil); - if (HCL_UNLIKELY(!cons)) return -1; + cons = (hak_oop_t)hak_putatsysdic(hak, sym, hak->_nil); + if (HAK_UNLIKELY(!cons)) return -1; } /* add an association in the system dictionary to the literal frame. * this provides performance advantage at the execution time because * the dictionary doesn't need to be searched for the object. */ - if (add_literal(hcl, cons, &index) <= -1 || - emit_single_param_instruction(hcl, HCL_CODE_PUSH_LITERAL_0, index, HCL_CNODE_GET_LOC(class_name)) <= -1) return -1; + if (add_literal(hak, cons, &index) <= -1 || + emit_single_param_instruction(hak, HAK_CODE_PUSH_LITERAL_0, index, HAK_CNODE_GET_LOC(class_name)) <= -1) return -1; #endif } else { /* push nil for class name of an anonymous class */ - if (emit_byte_instruction(hcl, HCL_CODE_PUSH_NIL, HCL_CNODE_GET_LOC(cmd)) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_PUSH_NIL, HAK_CNODE_GET_LOC(cmd)) <= -1) return -1; } - POP_CFRAME (hcl); + POP_CFRAME (hak); - PUSH_CFRAME(hcl, COP_COMPILE_CLASS_P2, class_name); /* 3 - use class name for assignment */ - cf = GET_TOP_CFRAME(hcl); + PUSH_CFRAME(hak, COP_COMPILE_CLASS_P2, class_name); /* 3 - use class name for assignment */ + cf = GET_TOP_CFRAME(hak); cf->u._class.nsuperclasses = 0; /* unsed for CLASS_P2 */ cf->u._class.indexed_type = indexed_type; - cf->u._class.start_loc = *HCL_CNODE_GET_LOC(src); /* TODO: use *HCL_CNODE_GET_LOC(cmd) instead? */ + cf->u._class.start_loc = *HAK_CNODE_GET_LOC(src); /* TODO: use *HAK_CNODE_GET_LOC(cmd) instead? */ cf->u._class.cmd_cnode = cmd; cf->u._class.class_name_cnode = class_name; /* duplicate with operand to COP_COMPILE_CLASS_P2 */ - PUSH_CFRAME(hcl, COP_COMPILE_CLASS_P1, obj); /* 2 - variables declaraions and actual body */ - cf = GET_TOP_CFRAME(hcl); + PUSH_CFRAME(hak, COP_COMPILE_CLASS_P1, obj); /* 2 - variables declaraions and actual body */ + cf = GET_TOP_CFRAME(hak); cf->u._class.nsuperclasses = nsuperclasses; /* this needs to change if we support multiple superclasses... */ cf->u._class.indexed_type = indexed_type; - cf->u._class.start_loc = *HCL_CNODE_GET_LOC(src); /* TODO: use *HCL_CNODE_GET_LOC(cmd) instead? */ + cf->u._class.start_loc = *HAK_CNODE_GET_LOC(src); /* TODO: use *HAK_CNODE_GET_LOC(cmd) instead? */ cf->u._class.cmd_cnode = cmd; cf->u._class.class_name_cnode = class_name; - if (superclass) PUSH_CFRAME(hcl, COP_COMPILE_OBJECT, superclass); /* 1 - superclass expression */ + if (superclass) PUSH_CFRAME(hak, COP_COMPILE_OBJECT, superclass); /* 1 - superclass expression */ return 0; } -static HCL_INLINE int compile_class_p1 (hcl_t* hcl) +static HAK_INLINE int compile_class_p1 (hak_t* hak) { /* collect information about declared class-level variables */ - hcl_cframe_t* cf; - hcl_cnode_t* obj; - hcl_oow_t saved_tv_wcount, saved_tv_slen; + hak_cframe_t* cf; + hak_cnode_t* obj; + hak_oow_t saved_tv_wcount, saved_tv_slen; class_vardcl_t vardcl; - cf = GET_TOP_CFRAME(hcl); + cf = GET_TOP_CFRAME(hak); obj = cf->operand; - saved_tv_wcount = hcl->c->tv.wcount; - saved_tv_slen = hcl->c->tv.s.len; + saved_tv_wcount = hak->c->tv.wcount; + saved_tv_slen = hak->c->tv.s.len; - HCL_MEMSET (&vardcl, 0, HCL_SIZEOF(vardcl)); + HAK_MEMSET (&vardcl, 0, HAK_SIZEOF(vardcl)); - if (obj && HCL_CNODE_IS_CONS(obj)) + if (obj && HAK_CNODE_IS_CONS(obj)) { /* class-level variables - instance variables and class variable * - class X [ a b c [d e] x ] { ... } * - a b c are instance variables. * - d e, enclsoed in another [], are class variables. * */ - hcl_cnode_t* tmp; - tmp = HCL_CNODE_CONS_CAR(obj); - if (HCL_CNODE_IS_CONS_CONCODED(tmp, HCL_CONCODE_TUPLE)) + hak_cnode_t* tmp; + tmp = HAK_CNODE_CONS_CAR(obj); + if (HAK_CNODE_IS_CONS_CONCODED(tmp, HAK_CONCODE_TUPLE)) { - if (collect_vardcl_for_class(hcl, obj, &obj, &vardcl) <= -1) return -1; + if (collect_vardcl_for_class(hak, obj, &obj, &vardcl) <= -1) return -1; } } /* emit placeholder instructions to be patched in compile_class_p2() */ - if (emit_single_param_instruction(hcl, HCL_CODE_PUSH_LITERAL_0, MAX_CODE_PARAM2, &cf->u._class.start_loc) <= -1) return -1; - if (emit_single_param_instruction(hcl, HCL_CODE_PUSH_LITERAL_0, MAX_CODE_PARAM2, &cf->u._class.start_loc) <= -1) return -1; + if (emit_single_param_instruction(hak, HAK_CODE_PUSH_LITERAL_0, MAX_CODE_PARAM2, &cf->u._class.start_loc) <= -1) return -1; + if (emit_single_param_instruction(hak, HAK_CODE_PUSH_LITERAL_0, MAX_CODE_PARAM2, &cf->u._class.start_loc) <= -1) return -1; - if (check_block_expression_as_body(hcl, obj, cf->u._class.cmd_cnode, FOR_CLASS) <= -1) return -1; + if (check_block_expression_as_body(hak, obj, cf->u._class.cmd_cnode, FOR_CLASS) <= -1) return -1; - if (push_clsblk(hcl, &cf->u._class.start_loc, + if (push_clsblk(hak, &cf->u._class.start_loc, cf->u._class.class_name_cnode, vardcl.nivars, vardcl.ncvars, - &hcl->c->tv.s.ptr[vardcl.ivar_start], vardcl.ivar_len, - &hcl->c->tv.s.ptr[vardcl.cvar_start], vardcl.cvar_len) <= -1) goto oops; - if (push_ctlblk(hcl, &cf->u._class.start_loc, HCL_CTLBLK_TYPE_CLASS) <= -1) goto oops; /* the class block shall be treated as a control block, too */ + &hak->c->tv.s.ptr[vardcl.ivar_start], vardcl.ivar_len, + &hak->c->tv.s.ptr[vardcl.cvar_start], vardcl.cvar_len) <= -1) goto oops; + if (push_ctlblk(hak, &cf->u._class.start_loc, HAK_CTLBLK_TYPE_CLASS) <= -1) goto oops; /* the class block shall be treated as a control block, too */ /* discard the instance variables and class variables in the temporary variable collection buffer * because they have been pushed to the class block structure */ - hcl->c->tv.s.len = saved_tv_slen; - hcl->c->tv.wcount = saved_tv_wcount; + hak->c->tv.s.len = saved_tv_slen; + hak->c->tv.wcount = saved_tv_wcount; /* the position of the CLASS_ENTER instruction */ - hcl->c->clsblk.info[hcl->c->clsblk.depth].class_enter_inst_pos = hcl->code.bc.len; + hak->c->clsblk.info[hak->c->clsblk.depth].class_enter_inst_pos = hak->code.bc.len; /* class_enter nsuperclasses, nivars, ncvars */ - if (emit_byte_instruction(hcl, HCL_CODE_CLASS_ENTER, &cf->u._class.start_loc) <= -1) goto oops; - if (emit_long_param(hcl, cf->u._class.nsuperclasses) <= -1) goto oops; - if (emit_long_param(hcl, vardcl.nivars) <= -1) goto oops; - if (emit_long_param(hcl, vardcl.ncvars) <= -1) goto oops; - if (emit_byte_instruction(hcl, (hcl_oob_t)((cf->u._class.indexed_type >> 8) & 0xFF), &cf->u._class.start_loc) <= -1) goto oops; - if (emit_byte_instruction(hcl, (hcl_oob_t)(cf->u._class.indexed_type & 0xFF), &cf->u._class.start_loc) <= -1) goto oops; + if (emit_byte_instruction(hak, HAK_CODE_CLASS_ENTER, &cf->u._class.start_loc) <= -1) goto oops; + if (emit_long_param(hak, cf->u._class.nsuperclasses) <= -1) goto oops; + if (emit_long_param(hak, vardcl.nivars) <= -1) goto oops; + if (emit_long_param(hak, vardcl.ncvars) <= -1) goto oops; + if (emit_byte_instruction(hak, (hak_oob_t)((cf->u._class.indexed_type >> 8) & 0xFF), &cf->u._class.start_loc) <= -1) goto oops; + if (emit_byte_instruction(hak, (hak_oob_t)(cf->u._class.indexed_type & 0xFF), &cf->u._class.start_loc) <= -1) goto oops; /* remember the first byte code position to be emitted for the body of * this class. this posistion is used for empty class body check at the * end of the class before 'class_exit' is generated */ - hcl->c->clsblk.info[hcl->c->clsblk.depth].class_start_inst_pos = hcl->code.bc.len; + hak->c->clsblk.info[hak->c->clsblk.depth].class_start_inst_pos = hak->code.bc.len; - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT_LIST, obj); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT_LIST, obj); return 0; oops: - hcl->c->tv.s.len = saved_tv_slen; - hcl->c->tv.wcount = saved_tv_wcount; + hak->c->tv.s.len = saved_tv_slen; + hak->c->tv.wcount = saved_tv_wcount; return -1; } -static HCL_INLINE int compile_class_p2 (hcl_t* hcl) +static HAK_INLINE int compile_class_p2 (hak_t* hak) { - hcl_cframe_t* cf; - hcl_cnode_t* class_name; - hcl_loc_t class_loc; - hcl_clsblk_info_t* cbi; - hcl_oow_t patch_pos, patch_end; + hak_cframe_t* cf; + hak_cnode_t* class_name; + hak_loc_t class_loc; + hak_clsblk_info_t* cbi; + hak_oow_t patch_pos, patch_end; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_COMPILE_CLASS_P2); - /*HCL_ASSERT(hcl, cf->operand != HCL_NULL);*/ + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_COMPILE_CLASS_P2); + /*HAK_ASSERT(hak, cf->operand != HAK_NULL);*/ class_name = cf->operand; - class_loc = class_name? *HCL_CNODE_GET_LOC(class_name): cf->u._class.start_loc; + class_loc = class_name? *HAK_CNODE_GET_LOC(class_name): cf->u._class.start_loc; - if (hcl->code.bc.len > hcl->c->clsblk.info[hcl->c->clsblk.depth].class_start_inst_pos) + if (hak->code.bc.len > hak->c->clsblk.info[hak->c->clsblk.depth].class_start_inst_pos) { /* no instructions generated after the class_enter instruction */ - if (emit_byte_instruction(hcl, HCL_CODE_POP_STACKTOP, &class_loc) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_POP_STACKTOP, &class_loc) <= -1) return -1; } - cbi = &hcl->c->clsblk.info[hcl->c->clsblk.depth]; + cbi = &hak->c->clsblk.info[hak->c->clsblk.depth]; /* patch the CLASS_ENTER instruction with the final nicvars and ncvars values. * CLASS_ENTER nsuperclasses(lp)|nivars(lp)|ncvars(lp)|spec/selfspec(b)|index_type(b) * (lp) = long param, (b) = byte */ patch_pos = cbi->class_enter_inst_pos + 1; - patch_pos += HCL_CODE_LONG_PARAM_SIZE; /* skip nsuperclasses */ - patch_long_param(hcl, patch_pos, cbi->nivars); - patch_pos += HCL_CODE_LONG_PARAM_SIZE; /* skip nivars */ - patch_long_param(hcl, patch_pos, cbi->ncvars); + patch_pos += HAK_CODE_LONG_PARAM_SIZE; /* skip nsuperclasses */ + patch_long_param(hak, patch_pos, cbi->nivars); + patch_pos += HAK_CODE_LONG_PARAM_SIZE; /* skip nivars */ + patch_long_param(hak, patch_pos, cbi->ncvars); /* two placeholder instructions have been pushed before push_clsblk() * in compile_class_p1(). @@ -3009,67 +3009,67 @@ static HCL_INLINE int compile_class_p2 (hcl_t* hcl) * push_literal long-param long-param <-- (2) position of first long-param * class_enter ... <-- class_enter_inst_pos */ - patch_pos = cbi->class_enter_inst_pos - (HCL_CODE_LONG_PARAM_SIZE * 4 + 1); /* (1) */ + patch_pos = cbi->class_enter_inst_pos - (HAK_CODE_LONG_PARAM_SIZE * 4 + 1); /* (1) */ if (cbi->nivars > 0) { /* patch the PUSH_LITERAL instruction for ivars */ /* TODO: reduce space waste for fixed double-long param */ - hcl_oop_t obj; - hcl_oow_t index; + hak_oop_t obj; + hak_oow_t index; - HCL_ASSERT(hcl, cbi->nivars <= MAX_NIVARS); - obj = hcl_makestring(hcl, cbi->ivars.ptr, cbi->ivars.len); - if (HCL_UNLIKELY(!obj)) return -1; - if (add_literal(hcl, obj, &index) <= -1) return -1; - patch_double_long_params_with_oow(hcl, patch_pos, index); + HAK_ASSERT(hak, cbi->nivars <= MAX_NIVARS); + obj = hak_makestring(hak, cbi->ivars.ptr, cbi->ivars.len); + if (HAK_UNLIKELY(!obj)) return -1; + if (add_literal(hak, obj, &index) <= -1) return -1; + patch_double_long_params_with_oow(hak, patch_pos, index); } else { /* TODO: reduce space waste for patched NOOP */ - patch_end = (--patch_pos) + (HCL_CODE_LONG_PARAM_SIZE * 2) + 1; + patch_end = (--patch_pos) + (HAK_CODE_LONG_PARAM_SIZE * 2) + 1; for (; patch_pos < patch_end; patch_pos++) - patch_instruction(hcl, patch_pos, HCL_CODE_NOOP); + patch_instruction(hak, patch_pos, HAK_CODE_NOOP); } - patch_pos = cbi->class_enter_inst_pos - (HCL_CODE_LONG_PARAM_SIZE * 2); /* (2) */ + patch_pos = cbi->class_enter_inst_pos - (HAK_CODE_LONG_PARAM_SIZE * 2); /* (2) */ if (cbi->ncvars > 0) { /* patch the PUSH_LITERAL instruction for cvars */ /* TODO: reduce space waste for fixed double-long param */ - hcl_oop_t obj; - hcl_oow_t index; + hak_oop_t obj; + hak_oow_t index; - HCL_ASSERT(hcl, cbi->ncvars <= MAX_NCVARS); - obj = hcl_makestring(hcl, cbi->cvars.ptr, cbi->cvars.len); - if (HCL_UNLIKELY(!obj)) return -1; - if (add_literal(hcl, obj, &index) <= -1) return -1; - patch_double_long_params_with_oow(hcl, patch_pos, index); + HAK_ASSERT(hak, cbi->ncvars <= MAX_NCVARS); + obj = hak_makestring(hak, cbi->cvars.ptr, cbi->cvars.len); + if (HAK_UNLIKELY(!obj)) return -1; + if (add_literal(hak, obj, &index) <= -1) return -1; + patch_double_long_params_with_oow(hak, patch_pos, index); } else { /* TODO: reduce space waste for patched NOOP */ - patch_end = (--patch_pos) + (HCL_CODE_LONG_PARAM_SIZE * 2) + 1; - HCL_ASSERT(hcl, patch_end == cbi->class_enter_inst_pos); + patch_end = (--patch_pos) + (HAK_CODE_LONG_PARAM_SIZE * 2) + 1; + HAK_ASSERT(hak, patch_end == cbi->class_enter_inst_pos); for (;patch_pos < patch_end; patch_pos++) - patch_instruction(hcl, patch_pos, HCL_CODE_NOOP); + patch_instruction(hak, patch_pos, HAK_CODE_NOOP); } - pop_ctlblk (hcl); - pop_clsblk (hcl); /* end of the class block */ + pop_ctlblk (hak); + pop_clsblk (hak); /* end of the class block */ - if (emit_byte_instruction(hcl, HCL_CODE_CLASS_PEXIT, &class_loc) <= -1) return -1; /* pop + exit */ + if (emit_byte_instruction(hak, HAK_CODE_CLASS_PEXIT, &class_loc) <= -1) return -1; /* pop + exit */ if (class_name) { /* a class name is treated like a global variable */ - SWITCH_TOP_CFRAME(hcl, COP_EMIT_SET, class_name); - cf = GET_TOP_CFRAME(hcl); + SWITCH_TOP_CFRAME(hak, COP_EMIT_SET, class_name); + cf = GET_TOP_CFRAME(hak); cf->u.set.vi.type = VAR_NAMED; cf->u.set.mode = VAR_ACCESS_STORE; } else { - POP_CFRAME (hcl); + POP_CFRAME (hak); } return 0; @@ -3077,96 +3077,96 @@ static HCL_INLINE int compile_class_p2 (hcl_t* hcl) /* ========================================================================= */ -static int check_fun_attr_list (hcl_t* hcl, hcl_cnode_t* attr_list, unsigned int* fun_type, hcl_cnode_t* cmd, hcl_cnode_t* class_name, hcl_cnode_t* fun_name) +static int check_fun_attr_list (hak_t* hak, hak_cnode_t* attr_list, unsigned int* fun_type, hak_cnode_t* cmd, hak_cnode_t* class_name, hak_cnode_t* fun_name) { unsigned int ft; ft = FUN_IM; - HCL_ASSERT(hcl, attr_list != HCL_NULL); - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS_CONCODED(attr_list, HCL_CONCODE_XLIST) || - HCL_CNODE_IS_ELIST_CONCODED(attr_list, HCL_CONCODE_XLIST)); + HAK_ASSERT(hak, attr_list != HAK_NULL); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS_CONCODED(attr_list, HAK_CONCODE_XLIST) || + HAK_CNODE_IS_ELIST_CONCODED(attr_list, HAK_CONCODE_XLIST)); - if (HCL_CNODE_IS_ELIST_CONCODED(attr_list, HCL_CONCODE_XLIST)) + if (HAK_CNODE_IS_ELIST_CONCODED(attr_list, HAK_CONCODE_XLIST)) { /* don't allow empty attribute list */ if (class_name && fun_name) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(attr_list), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr_list), HAK_NULL, "empty attribute list on '%.*js:%.*js' for '%.*js'", - HCL_CNODE_GET_TOKLEN(class_name), HCL_CNODE_GET_TOKPTR(class_name), - HCL_CNODE_GET_TOKLEN(fun_name), HCL_CNODE_GET_TOKPTR(fun_name), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(class_name), HAK_CNODE_GET_TOKPTR(class_name), + HAK_CNODE_GET_TOKLEN(fun_name), HAK_CNODE_GET_TOKPTR(fun_name), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); } else if (fun_name) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(attr_list), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr_list), HAK_NULL, "empty attribute list on '%.*js' for '%.*js'", - HCL_CNODE_GET_TOKLEN(fun_name), HCL_CNODE_GET_TOKPTR(fun_name), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(fun_name), HAK_CNODE_GET_TOKPTR(fun_name), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); } else { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(attr_list), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr_list), HAK_NULL, "empty attribute list on unnamed function for '%.*js'", - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); } return -1; } - if (HCL_CNODE_IS_CONS_CONCODED(attr_list, HCL_CONCODE_XLIST)) + if (HAK_CNODE_IS_CONS_CONCODED(attr_list, HAK_CONCODE_XLIST)) { - hcl_cnode_t* c, * a; - const hcl_ooch_t* tokptr; - hcl_oow_t toklen; + hak_cnode_t* c, * a; + const hak_ooch_t* tokptr; + hak_oow_t toklen; c = attr_list; while (c) { - a = HCL_CNODE_CONS_CAR(c); + a = HAK_CNODE_CONS_CAR(c); - tokptr = HCL_CNODE_GET_TOKPTR(a); - toklen = HCL_CNODE_GET_TOKLEN(a); + tokptr = HAK_CNODE_GET_TOKPTR(a); + toklen = HAK_CNODE_GET_TOKLEN(a); - if (!HCL_CNODE_IS_TYPED(a, HCL_CNODE_SYMLIT)) + if (!HAK_CNODE_IS_TYPED(a, HAK_CNODE_SYMLIT)) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(a), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(a), HAK_NULL, "invalid function attribute name '%.*js'", toklen, tokptr); return -1; } - if (hcl_comp_oochars_bcstr(tokptr, toklen, "class") == 0 || - hcl_comp_oochars_bcstr(tokptr, toklen, "c") == 0) + if (hak_comp_oochars_bcstr(tokptr, toklen, "class") == 0 || + hak_comp_oochars_bcstr(tokptr, toklen, "c") == 0) { if (ft != FUN_IM) { conflicting: - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(a), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(a), HAK_NULL, "conflicting function attribute name '#%.*js'", toklen, tokptr); return -1; } ft = FUN_CM; } - else if (hcl_comp_oochars_bcstr(tokptr, toklen, "classinst") == 0 || - hcl_comp_oochars_bcstr(tokptr, toklen, "ci") == 0) + else if (hak_comp_oochars_bcstr(tokptr, toklen, "classinst") == 0 || + hak_comp_oochars_bcstr(tokptr, toklen, "ci") == 0) { if (ft != FUN_IM) goto conflicting; ft = FUN_CIM; } else { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(a), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(a), HAK_NULL, "unrecognized function attribute name '#%.*js'", toklen, tokptr); return -1; } - c = HCL_CNODE_CONS_CDR(c); + c = HAK_CNODE_CONS_CDR(c); } } @@ -3174,41 +3174,41 @@ static int check_fun_attr_list (hcl_t* hcl, hcl_cnode_t* attr_list, unsigned int return 0; } -static int compile_fun (hcl_t* hcl, hcl_cnode_t* src) +static int compile_fun (hak_t* hak, hak_cnode_t* src) { - hcl_cnode_t* cmd, * next; - hcl_oow_t va, nargs, nrvars, nlvars; - hcl_ooi_t jump_inst_pos, lfbase_pos, lfsize_pos; - hcl_oow_t saved_tv_wcount, tv_dup_start; - hcl_cnode_t* fun_name; - hcl_cnode_t* class_name; - hcl_cnode_t* attr_list; - hcl_cnode_t* arg_list; - hcl_cnode_t* fun_body; - hcl_cframe_t* cf; + hak_cnode_t* cmd, * next; + hak_oow_t va, nargs, nrvars, nlvars; + hak_ooi_t jump_inst_pos, lfbase_pos, lfsize_pos; + hak_oow_t saved_tv_wcount, tv_dup_start; + hak_cnode_t* fun_name; + hak_cnode_t* class_name; + hak_cnode_t* attr_list; + hak_cnode_t* arg_list; + hak_cnode_t* fun_body; + hak_cframe_t* cf; unsigned int fun_type; - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(src)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(src)); - saved_tv_wcount = hcl->c->tv.wcount; - cmd = HCL_CNODE_CONS_CAR(src); - next = HCL_CNODE_CONS_CDR(src); - fun_name = HCL_NULL; - class_name = HCL_NULL; - attr_list = HCL_NULL; - arg_list = HCL_NULL; - fun_body = HCL_NULL; + saved_tv_wcount = hak->c->tv.wcount; + cmd = HAK_CNODE_CONS_CAR(src); + next = HAK_CNODE_CONS_CDR(src); + fun_name = HAK_NULL; + class_name = HAK_NULL; + attr_list = HAK_NULL; + arg_list = HAK_NULL; + fun_body = HAK_NULL; fun_type = FUN_PLAIN; - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(cmd, HCL_CNODE_FUN)); + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(cmd, HAK_CNODE_FUN)); if (next) { - hcl_cnode_t* tmp; + hak_cnode_t* tmp; /* the reader ensures that the cdr field of a cons cell points to the next cell. * and only the field of the last cons cell is NULL. */ - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(next)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(next)); /* fun (arg..) * fun name(arg..) @@ -3217,84 +3217,84 @@ static int compile_fun (hcl_t* hcl, hcl_cnode_t* src) * fun(#attr..) class:name(arg..) */ - tmp = HCL_CNODE_CONS_CAR(next); - if (HCL_CNODE_IS_SYMBOL(tmp)) + tmp = HAK_CNODE_CONS_CAR(next); + if (HAK_CNODE_IS_SYMBOL(tmp)) { /* 'fun' followed by name */ fun_got_name: /* name must be followed by argument list */ fun_name = tmp; - next = HCL_CNODE_CONS_CDR(next); + next = HAK_CNODE_CONS_CDR(next); if (!next) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(fun_name), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(fun_name), HAK_NULL, "function name '%.*js' not followed by ( or : for '%.*js'", - HCL_CNODE_GET_TOKLEN(fun_name), HCL_CNODE_GET_TOKPTR(fun_name), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(fun_name), HAK_CNODE_GET_TOKPTR(fun_name), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - tmp = HCL_CNODE_CONS_CAR(next); - if (HCL_CNODE_IS_COLON(tmp)) + tmp = HAK_CNODE_CONS_CAR(next); + if (HAK_CNODE_IS_COLON(tmp)) { /* fun class:name(arg..) * fun(#attr..) class:name(arg..) */ class_name = fun_name; - next = HCL_CNODE_CONS_CDR(next); + next = HAK_CNODE_CONS_CDR(next); if (!next) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(class_name), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(class_name), HAK_NULL, "no function name after class name '%.*js:' for '%.*js'", - HCL_CNODE_GET_TOKLEN(class_name), HCL_CNODE_GET_TOKPTR(class_name), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(class_name), HAK_CNODE_GET_TOKPTR(class_name), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - tmp = HCL_CNODE_CONS_CAR(next); - if (!HCL_CNODE_IS_SYMBOL(tmp)) + tmp = HAK_CNODE_CONS_CAR(next); + if (!HAK_CNODE_IS_SYMBOL(tmp)) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(tmp), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(tmp), HAK_NULL, "invalid function name '%.*js' after '%.*js:' for '%.*js'", - HCL_CNODE_GET_TOKLEN(tmp), HCL_CNODE_GET_TOKPTR(tmp), - HCL_CNODE_GET_TOKLEN(class_name), HCL_CNODE_GET_TOKPTR(class_name), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp), + HAK_CNODE_GET_TOKLEN(class_name), HAK_CNODE_GET_TOKPTR(class_name), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } fun_name = tmp; - next = HCL_CNODE_CONS_CDR(next); + next = HAK_CNODE_CONS_CDR(next); if (!next) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(fun_name), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(fun_name), HAK_NULL, "function name '%.*js:%.*js' not followed by ( for '%.*js'", - HCL_CNODE_GET_TOKLEN(class_name), HCL_CNODE_GET_TOKPTR(class_name), - HCL_CNODE_GET_TOKLEN(fun_name), HCL_CNODE_GET_TOKPTR(fun_name), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(class_name), HAK_CNODE_GET_TOKPTR(class_name), + HAK_CNODE_GET_TOKLEN(fun_name), HAK_CNODE_GET_TOKPTR(fun_name), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - tmp = HCL_CNODE_CONS_CAR(next); /* pointing to argument list */ + tmp = HAK_CNODE_CONS_CAR(next); /* pointing to argument list */ - if (is_in_class_init_scope(hcl)) + if (is_in_class_init_scope(hak)) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(fun_name), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(fun_name), HAK_NULL, "class name '%.*js' before :'%.*js' prohibited in class initialization context", - HCL_CNODE_GET_TOKLEN(class_name), HCL_CNODE_GET_TOKPTR(class_name), - HCL_CNODE_GET_TOKLEN(fun_name), HCL_CNODE_GET_TOKPTR(fun_name)); + HAK_CNODE_GET_TOKLEN(class_name), HAK_CNODE_GET_TOKPTR(class_name), + HAK_CNODE_GET_TOKLEN(fun_name), HAK_CNODE_GET_TOKPTR(fun_name)); return -1; } } } - if (HCL_CNODE_IS_CONS_CONCODED(tmp, HCL_CONCODE_XLIST) || - HCL_CNODE_IS_ELIST_CONCODED(tmp, HCL_CONCODE_XLIST)) + if (HAK_CNODE_IS_CONS_CONCODED(tmp, HAK_CONCODE_XLIST) || + HAK_CNODE_IS_ELIST_CONCODED(tmp, HAK_CONCODE_XLIST)) { /* 'fun' followed by attribute or argument list */ arg_list = tmp; @@ -3304,14 +3304,14 @@ static int compile_fun (hcl_t* hcl, hcl_cnode_t* src) * fun class:name() * fun name () * ^ */ - next = HCL_CNODE_CONS_CDR(next); /* point past argument list */ + next = HAK_CNODE_CONS_CDR(next); /* point past argument list */ if (!next) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(cmd), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(cmd), HAK_NULL, "no function body after argument list of function '%.*js' for '%.*js'", - HCL_CNODE_GET_TOKLEN(fun_name), HCL_CNODE_GET_TOKPTR(fun_name), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(fun_name), HAK_CNODE_GET_TOKPTR(fun_name), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } fun_body = next; @@ -3319,41 +3319,41 @@ static int compile_fun (hcl_t* hcl, hcl_cnode_t* src) else { /* not clear if it is attribute list or argument list */ - next = HCL_CNODE_CONS_CDR(next); /* point past attribute/argument list */ + next = HAK_CNODE_CONS_CDR(next); /* point past attribute/argument list */ if (!next) { /* TODO: guess if the current list looks like attribute list or * not by inspecting elements and produce better error mesage. * another hack is to disallow ELIST as attribute list? */ - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(cmd), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(cmd), HAK_NULL, "unnamed function not followed by function body for '%.*js'", - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - tmp = HCL_CNODE_CONS_CAR(next); - if (HCL_CNODE_IS_SYMBOL(tmp)) + tmp = HAK_CNODE_CONS_CAR(next); + if (HAK_CNODE_IS_SYMBOL(tmp)) { /* it is attribute list for sure. fun(#attr..) name */ attr_list = arg_list; - arg_list = HCL_NULL; + arg_list = HAK_NULL; goto fun_got_name; } - else if (HCL_CNODE_IS_CONS_CONCODED(tmp, HCL_CONCODE_XLIST) || - HCL_CNODE_IS_ELIST_CONCODED(tmp, HCL_CONCODE_XLIST)) + else if (HAK_CNODE_IS_CONS_CONCODED(tmp, HAK_CONCODE_XLIST) || + HAK_CNODE_IS_ELIST_CONCODED(tmp, HAK_CONCODE_XLIST)) { /* fun(#attr..) (arg..) .. */ attr_list = arg_list; arg_list = tmp; - next = HCL_CNODE_CONS_CDR(next); /* point past argument list */ + next = HAK_CNODE_CONS_CDR(next); /* point past argument list */ if (!next) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(cmd), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(cmd), HAK_NULL, "no function body after attribute list and argument list of unnamed function for '%.*js'", - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } fun_body = next; @@ -3365,7 +3365,7 @@ static int compile_fun (hcl_t* hcl, hcl_cnode_t* src) } } - if (!fun_name && is_in_class_init_scope(hcl)) + if (!fun_name && is_in_class_init_scope(hak)) { /* TODO: it must allow as rvalue.. * class X { @@ -3373,10 +3373,10 @@ static int compile_fun (hcl_t* hcl, hcl_cnode_t* src) * fun() {} ## this is prohibited * } */ - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(cmd), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(cmd), HAK_NULL, "unnamed function defined with '%.*js' prohibited in class initialziation context", - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } } @@ -3390,19 +3390,19 @@ static int compile_fun (hcl_t* hcl, hcl_cnode_t* src) */ if (fun_name) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(tmp), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(tmp), HAK_NULL, "'%.*js' not followed by ( but followed by '%.*js'", - HCL_CNODE_GET_TOKLEN(fun_name), HCL_CNODE_GET_TOKPTR(fun_name), - HCL_CNODE_GET_TOKLEN(tmp), HCL_CNODE_GET_TOKPTR(tmp)); + HAK_CNODE_GET_TOKLEN(fun_name), HAK_CNODE_GET_TOKPTR(fun_name), + HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp)); } else { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(tmp), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(tmp), HAK_NULL, "invalid function name '%.*js' for '%.*js'", - HCL_CNODE_GET_TOKLEN(tmp), HCL_CNODE_GET_TOKPTR(tmp), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); } return -1; } @@ -3410,47 +3410,47 @@ static int compile_fun (hcl_t* hcl, hcl_cnode_t* src) else { /* nothing after 'fun' (e.g. fun ) */ - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(cmd), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(cmd), HAK_NULL, "'%.*js' not followed by name or (", - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } if (attr_list) { - if (is_in_class_init_scope(hcl) || class_name) + if (is_in_class_init_scope(hak) || class_name) { /* TODO: */ /* TODO: THIS IS ALSO WRONG. * class X { * a := (fun x(){}) ## this context is also class_init_scope. so the check above isn't good enough * } */ - if (check_fun_attr_list(hcl, attr_list, &fun_type, cmd, class_name, fun_name) <= -1) return -1; + if (check_fun_attr_list(hak, attr_list, &fun_type, cmd, class_name, fun_name) <= -1) return -1; if (class_name) fun_type |= 0x100; /* defined in `fun class:xxx` style outside class */ } else { if (fun_name) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(attr_list), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr_list), HAK_NULL, "attribute list prohibited on plain function '%.*js'", - HCL_CNODE_GET_TOKLEN(fun_name), HCL_CNODE_GET_TOKPTR(fun_name)); + HAK_CNODE_GET_TOKLEN(fun_name), HAK_CNODE_GET_TOKPTR(fun_name)); } else { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_FUN, HCL_CNODE_GET_LOC(attr_list), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr_list), HAK_NULL, "attribute list prohibited on unnamed function for '%.*js'", - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); } return -1; } } else { - if (is_in_class_init_scope(hcl) || class_name) + if (is_in_class_init_scope(hak) || class_name) { fun_type = FUN_IM; if (class_name) fun_type |= 0x100; @@ -3462,44 +3462,44 @@ static int compile_fun (hcl_t* hcl, hcl_cnode_t* src) nargs = 0; nrvars = 0; - HCL_ASSERT(hcl, HCL_CNODE_IS_ELIST_CONCODED(arg_list, HCL_CONCODE_XLIST) || - HCL_CNODE_IS_CONS_CONCODED(arg_list, HCL_CONCODE_XLIST)); - if (HCL_CNODE_IS_ELIST_CONCODED(arg_list, HCL_CONCODE_XLIST)) + HAK_ASSERT(hak, HAK_CNODE_IS_ELIST_CONCODED(arg_list, HAK_CONCODE_XLIST) || + HAK_CNODE_IS_CONS_CONCODED(arg_list, HAK_CONCODE_XLIST)); + if (HAK_CNODE_IS_ELIST_CONCODED(arg_list, HAK_CONCODE_XLIST)) { /* empty list - no argument - fun () {+ 10 20} */ /* do nothing */ } else { - hcl_cnode_t* arg, * dcl; + hak_cnode_t* arg, * dcl; int in_ret_args = 0; - tv_dup_start = hcl->c->tv.s.len; + tv_dup_start = hak->c->tv.s.len; dcl = arg_list; do { - arg = HCL_CNODE_CONS_CAR(dcl); + arg = HAK_CNODE_CONS_CAR(dcl); if (in_ret_args) { - if (!HCL_CNODE_IS_SYMBOL_IDENT(arg)) + if (!HAK_CNODE_IS_SYMBOL_IDENT(arg)) { /* in 'fun x (x :: 20) { }', '20' is not a valid return variable name. * in 'fun x (x :: if) { }', 'if' is not a valid return variable name. */ - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VARNAME, HCL_CNODE_GET_LOC(arg), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(arg), HAK_NULL, "invalid return variable '%.*js' for '%.*js'", - HCL_CNODE_GET_TOKLEN(arg), HCL_CNODE_GET_TOKPTR(arg), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(arg), HAK_CNODE_GET_TOKPTR(arg), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - if (add_temporary_variable(hcl, arg, tv_dup_start, "return variable", HCL_CNODE_GET_TOK(cmd)) <= -1) return -1; + if (add_temporary_variable(hak, arg, tv_dup_start, "return variable", HAK_CNODE_GET_TOK(cmd)) <= -1) return -1; nrvars++; } else if (va) { - if (HCL_CNODE_IS_DBLCOLONS(arg)) + if (HAK_CNODE_IS_DBLCOLONS(arg)) { in_ret_args = 1; } @@ -3507,47 +3507,47 @@ static int compile_fun (hcl_t* hcl, hcl_cnode_t* src) { /* in 'fun x (... a) {}', 'a' is an unexpected token. * only ')' or '::' can follow ... */ - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_CNODE, HCL_CNODE_GET_LOC(arg), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_CNODE, HAK_CNODE_GET_LOC(arg), HAK_NULL, "unexpected token '%.*js' after '...' for '%.*js'", - HCL_CNODE_GET_TOKLEN(arg), HCL_CNODE_GET_TOKPTR(arg), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(arg), HAK_CNODE_GET_TOKPTR(arg), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } } else { - if (HCL_CNODE_IS_DBLCOLONS(arg)) + if (HAK_CNODE_IS_DBLCOLONS(arg)) { in_ret_args = 1; } - else if (HCL_CNODE_IS_ELLIPSIS(arg)) + else if (HAK_CNODE_IS_ELLIPSIS(arg)) { va = 1; } - else if (!HCL_CNODE_IS_SYMBOL_IDENT(arg)) + else if (!HAK_CNODE_IS_SYMBOL_IDENT(arg)) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_ARGNAME, HCL_CNODE_GET_LOC(arg), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_ARGNAME, HAK_CNODE_GET_LOC(arg), HAK_NULL, "invalid argument name '%.*js' for '%.*js'", - HCL_CNODE_GET_TOKLEN(arg), HCL_CNODE_GET_TOKPTR(arg), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(arg), HAK_CNODE_GET_TOKPTR(arg), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } else { - if (add_temporary_variable(hcl, arg, tv_dup_start, "argument", HCL_CNODE_GET_TOK(cmd)) <= -1) return -1; + if (add_temporary_variable(hak, arg, tv_dup_start, "argument", HAK_CNODE_GET_TOK(cmd)) <= -1) return -1; nargs++; } } - dcl = HCL_CNODE_CONS_CDR(dcl); + dcl = HAK_CNODE_CONS_CDR(dcl); if (!dcl) break; - if (!HCL_CNODE_IS_CONS(dcl)) + if (!HAK_CNODE_IS_CONS(dcl)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(dcl), HCL_CNODE_GET_TOK(dcl), - "redundant cdr in argument list in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(dcl), HAK_CNODE_GET_TOK(dcl), + "redundant cdr in argument list in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } } @@ -3560,22 +3560,22 @@ static int compile_fun (hcl_t* hcl, hcl_cnode_t* src) * block arguments, evaluation which is done by message passing * limits the number of arguments that can be passed. so the * check is implemented */ - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_ARGFLOOD, HCL_CNODE_GET_LOC(arg_list), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_ARGFLOOD, HAK_CNODE_GET_LOC(arg_list), HAK_NULL, "too many(%zu) arguments in %.*js", nargs, - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } if (nrvars > MAX_CODE_NBLKLVARS) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VARFLOOD, HCL_CNODE_GET_LOC(arg_list), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VARFLOOD, HAK_CNODE_GET_LOC(arg_list), HAK_NULL, "too many(%zu) return variables in %.*js", nrvars, - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - HCL_ASSERT(hcl, nargs + nrvars == hcl->c->tv.wcount - saved_tv_wcount); + HAK_ASSERT(hak, nargs + nrvars == hak->c->tv.wcount - saved_tv_wcount); /* * fun aa(a b) { ... }; @@ -3585,50 +3585,50 @@ static int compile_fun (hcl_t* hcl, hcl_cnode_t* src) * the variable declaration can't be placed before the block expression. * it is supported inside the block expression itself. */ - if (check_block_expression_as_body(hcl, fun_body, cmd, FOR_NONE) <= -1) return -1; + if (check_block_expression_as_body(hak, fun_body, cmd, FOR_NONE) <= -1) return -1; - HCL_ASSERT(hcl, fun_body != HCL_NULL); + HAK_ASSERT(hak, fun_body != HAK_NULL); nlvars = 0; /* no known local variables until the actual block is processed */ - HCL_ASSERT(hcl, nargs + nrvars + nlvars == hcl->c->tv.wcount - saved_tv_wcount); + HAK_ASSERT(hak, nargs + nrvars + nlvars == hak->c->tv.wcount - saved_tv_wcount); if (push_funblk( - hcl, HCL_CNODE_GET_LOC(src), va, nargs, nrvars, nlvars, hcl->c->tv.wcount, - hcl->c->tv.s.len, hcl->code.bc.len, hcl->code.lit.len, fun_type) <= -1) return -1; + hak, HAK_CNODE_GET_LOC(src), va, nargs, nrvars, nlvars, hak->c->tv.wcount, + hak->c->tv.s.len, hak->code.bc.len, hak->code.lit.len, fun_type) <= -1) return -1; - if (hcl->option.trait & HCL_TRAIT_INTERACTIVE) + if (hak->option.trait & HAK_TRAIT_INTERACTIVE) { /* MAKE_FUNCTION attr_mask_1 attr_mask_2 lfbase lfsize */ - if (emit_double_param_instruction(hcl, HCL_CODE_MAKE_FUNCTION, 0, 0, HCL_CNODE_GET_LOC(cmd)) <= -1) return -1; - lfbase_pos = hcl->code.bc.len; - if (emit_long_param(hcl, hcl->code.lit.len - hcl->c->funblk.info[hcl->c->funblk.depth - 1].lfbase) <= -1) return -1; /* lfbase(literal frame base) */ - lfsize_pos = hcl->code.bc.len; /* literal frame size */ - if (emit_long_param(hcl, 0) <= -1) return -1; /* place holder for lfsize */ + if (emit_double_param_instruction(hak, HAK_CODE_MAKE_FUNCTION, 0, 0, HAK_CNODE_GET_LOC(cmd)) <= -1) return -1; + lfbase_pos = hak->code.bc.len; + if (emit_long_param(hak, hak->code.lit.len - hak->c->funblk.info[hak->c->funblk.depth - 1].lfbase) <= -1) return -1; /* lfbase(literal frame base) */ + lfsize_pos = hak->code.bc.len; /* literal frame size */ + if (emit_long_param(hak, 0) <= -1) return -1; /* place holder for lfsize */ } else { /* MAKE_BLOCK attr_mask_1 attr_mask_2 - will patch attr_mask in pop_funblk() */ - if (emit_double_param_instruction(hcl, HCL_CODE_MAKE_BLOCK, 0, 0, HCL_CNODE_GET_LOC(cmd)) <= -1) return -1; + if (emit_double_param_instruction(hak, HAK_CODE_MAKE_BLOCK, 0, 0, HAK_CNODE_GET_LOC(cmd)) <= -1) return -1; } - HCL_ASSERT(hcl, hcl->code.bc.len < HCL_SMOOI_MAX); /* guaranteed in emit_byte_instruction() */ - jump_inst_pos = hcl->code.bc.len; + HAK_ASSERT(hak, hak->code.bc.len < HAK_SMOOI_MAX); /* guaranteed in emit_byte_instruction() */ + jump_inst_pos = hak->code.bc.len; /* specifying MAX_CODE_JUMP causes emit_single_param_instruction() to - * produce the long jump instruction (HCL_CODE_JUMP_FORWARD_X) */ - if (emit_single_param_instruction(hcl, HCL_CODE_JUMP_FORWARD_0, MAX_CODE_JUMP, HCL_CNODE_GET_LOC(cmd)) <= -1) return -1; + * produce the long jump instruction (HAK_CODE_JUMP_FORWARD_X) */ + if (emit_single_param_instruction(hak, HAK_CODE_JUMP_FORWARD_0, MAX_CODE_JUMP, HAK_CNODE_GET_LOC(cmd)) <= -1) return -1; - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT_LIST, fun_body); /* 1 */ - PUSH_SUBCFRAME(hcl, COP_POST_FUN, fun_name); /* 3*/ - cf = GET_SUBCFRAME(hcl); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT_LIST, fun_body); /* 1 */ + PUSH_SUBCFRAME(hak, COP_POST_FUN, fun_name); /* 3*/ + cf = GET_SUBCFRAME(hak); cf->u.fun.fun_type = fun_type; cf->u.fun.class_name = class_name; - PUSH_SUBCFRAME(hcl, COP_EMIT_FUN, src); /* 2 */ - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_EMIT_FUN, src); /* 2 */ + cf = GET_SUBCFRAME(hak); cf->u.fun.fun_type = fun_type; cf->u.fun.jump_inst_pos = jump_inst_pos; - if (hcl->option.trait & HCL_TRAIT_INTERACTIVE) + if (hak->option.trait & HAK_TRAIT_INTERACTIVE) { cf->u.fun.lfbase_pos = lfbase_pos; cf->u.fun.lfsize_pos = lfsize_pos; @@ -3638,69 +3638,69 @@ static int compile_fun (hcl_t* hcl, hcl_cnode_t* src) } /* ========================================================================= */ -static int check_var_attr_list (hcl_t* hcl, hcl_cnode_t* attr_list, unsigned int* var_type, hcl_cnode_t* cmd, hcl_cnode_t* class_name, hcl_cnode_t* var_name) +static int check_var_attr_list (hak_t* hak, hak_cnode_t* attr_list, unsigned int* var_type, hak_cnode_t* cmd, hak_cnode_t* class_name, hak_cnode_t* var_name) { unsigned int ft; ft = VAR_INST; - HCL_ASSERT(hcl, attr_list != HCL_NULL); - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS_CONCODED(attr_list, HCL_CONCODE_XLIST) || - HCL_CNODE_IS_ELIST_CONCODED(attr_list, HCL_CONCODE_XLIST)); + HAK_ASSERT(hak, attr_list != HAK_NULL); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS_CONCODED(attr_list, HAK_CONCODE_XLIST) || + HAK_CNODE_IS_ELIST_CONCODED(attr_list, HAK_CONCODE_XLIST)); - if (HCL_CNODE_IS_ELIST_CONCODED(attr_list, HCL_CONCODE_XLIST)) + if (HAK_CNODE_IS_ELIST_CONCODED(attr_list, HAK_CONCODE_XLIST)) { /* don't allow empty attribute list */ if (class_name) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VAR, HCL_CNODE_GET_LOC(attr_list), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VAR, HAK_CNODE_GET_LOC(attr_list), HAK_NULL, "empty attribute list on '%.*js' in '%.*js' for '%.*js'", - HCL_CNODE_GET_TOKLEN(var_name), HCL_CNODE_GET_TOKPTR(var_name), - HCL_CNODE_GET_TOKLEN(class_name), HCL_CNODE_GET_TOKPTR(class_name), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(var_name), HAK_CNODE_GET_TOKPTR(var_name), + HAK_CNODE_GET_TOKLEN(class_name), HAK_CNODE_GET_TOKPTR(class_name), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); } else { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VAR, HCL_CNODE_GET_LOC(attr_list), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VAR, HAK_CNODE_GET_LOC(attr_list), HAK_NULL, "empty attribute list on '%.*js' in unnamed class for '%.*js'", - HCL_CNODE_GET_TOKLEN(var_name), HCL_CNODE_GET_TOKPTR(var_name), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(var_name), HAK_CNODE_GET_TOKPTR(var_name), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); } return -1; } - if (HCL_CNODE_IS_CONS_CONCODED(attr_list, HCL_CONCODE_XLIST)) + if (HAK_CNODE_IS_CONS_CONCODED(attr_list, HAK_CONCODE_XLIST)) { - hcl_cnode_t* c, * a; - const hcl_ooch_t* tokptr; - hcl_oow_t toklen; + hak_cnode_t* c, * a; + const hak_ooch_t* tokptr; + hak_oow_t toklen; c = attr_list; while (c) { - a = HCL_CNODE_CONS_CAR(c); + a = HAK_CNODE_CONS_CAR(c); - tokptr = HCL_CNODE_GET_TOKPTR(a); - toklen = HCL_CNODE_GET_TOKLEN(a); + tokptr = HAK_CNODE_GET_TOKPTR(a); + toklen = HAK_CNODE_GET_TOKLEN(a); - if (!HCL_CNODE_IS_TYPED(a, HCL_CNODE_SYMLIT)) + if (!HAK_CNODE_IS_TYPED(a, HAK_CNODE_SYMLIT)) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VAR, HCL_CNODE_GET_LOC(a), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VAR, HAK_CNODE_GET_LOC(a), HAK_NULL, "invalid variable attribute name '%.*js'", toklen, tokptr); return -1; } - if (hcl_comp_oochars_bcstr(tokptr, toklen, "class") == 0 || - hcl_comp_oochars_bcstr(tokptr, toklen, "c") == 0) + if (hak_comp_oochars_bcstr(tokptr, toklen, "class") == 0 || + hak_comp_oochars_bcstr(tokptr, toklen, "c") == 0) { if (ft != VAR_INST) { conflicting: - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VAR, HCL_CNODE_GET_LOC(a), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VAR, HAK_CNODE_GET_LOC(a), HAK_NULL, "conflicting variable attribute name '#%.*js'", toklen, tokptr); return -1; } @@ -3708,13 +3708,13 @@ static int check_var_attr_list (hcl_t* hcl, hcl_cnode_t* attr_list, unsigned int } else { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VAR, HCL_CNODE_GET_LOC(a), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VAR, HAK_CNODE_GET_LOC(a), HAK_NULL, "unrecognized variable attribute name '#%.*js'", toklen, tokptr); return -1; } - c = HCL_CNODE_CONS_CDR(c); + c = HAK_CNODE_CONS_CDR(c); } } @@ -3722,118 +3722,118 @@ static int check_var_attr_list (hcl_t* hcl, hcl_cnode_t* attr_list, unsigned int return 0; } -static int compile_var (hcl_t* hcl, hcl_cnode_t* src) +static int compile_var (hak_t* hak, hak_cnode_t* src) { - hcl_cnode_t* cmd, * next, * tmp; - hcl_cnode_t* attr_list; - hcl_clsblk_info_t* cbi; + hak_cnode_t* cmd, * next, * tmp; + hak_cnode_t* attr_list; + hak_clsblk_info_t* cbi; /* this is for instance/class variable declaration * inside the class body block */ - cmd = HCL_CNODE_CONS_CAR(src); - next = HCL_CNODE_CONS_CDR(src); - attr_list = HCL_NULL; + cmd = HAK_CNODE_CONS_CAR(src); + next = HAK_CNODE_CONS_CDR(src); + attr_list = HAK_NULL; /*TODO: put some assertion regarding funblk to cslblk relaion */ - cbi = &hcl->c->clsblk.info[hcl->c->clsblk.depth]; + cbi = &hak->c->clsblk.info[hak->c->clsblk.depth]; - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(cmd, HCL_CNODE_VAR)); + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(cmd, HAK_CNODE_VAR)); if (!next) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VAR, HCL_CNODE_GET_LOC(cmd), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VAR, HAK_CNODE_GET_LOC(cmd), HAK_NULL, "'%.*js' not followed by name or (", - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); goto oops; } /* the reader ensures that the cdr field of a cons cell points to the next cell. * and only the field of the last cons cell is NULL. */ - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(next)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(next)); - if (!is_in_class_init_scope(hcl)) + if (!is_in_class_init_scope(hak)) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_BANNED, HCL_CNODE_GET_LOC(cmd), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_BANNED, HAK_CNODE_GET_LOC(cmd), HAK_NULL, "'%.*js' prohibited in this context", - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); goto oops; } - tmp = HCL_CNODE_CONS_CAR(next); - if (HCL_CNODE_IS_CONS_CONCODED(tmp, HCL_CONCODE_XLIST) || - HCL_CNODE_IS_ELIST_CONCODED(tmp, HCL_CONCODE_XLIST)) + tmp = HAK_CNODE_CONS_CAR(next); + if (HAK_CNODE_IS_CONS_CONCODED(tmp, HAK_CONCODE_XLIST) || + HAK_CNODE_IS_ELIST_CONCODED(tmp, HAK_CONCODE_XLIST)) { /* probably attribute list */ attr_list = tmp; - next = HCL_CNODE_CONS_CDR(next); + next = HAK_CNODE_CONS_CDR(next); if (!next) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VAR, HCL_CNODE_GET_LOC(attr_list), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VAR, HAK_CNODE_GET_LOC(attr_list), HAK_NULL, "no name after attribute list for '%.*js'", - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); goto oops; } - tmp = HCL_CNODE_CONS_CAR(next); + tmp = HAK_CNODE_CONS_CAR(next); } - if (HCL_CNODE_IS_SYMBOL_IDENT(tmp)) + if (HAK_CNODE_IS_SYMBOL_IDENT(tmp)) { unsigned int var_type = VAR_INST; - if (attr_list && check_var_attr_list(hcl, attr_list, &var_type, cmd, cbi->class_name, tmp) <= -1) goto oops; + if (attr_list && check_var_attr_list(hak, attr_list, &var_type, cmd, cbi->class_name, tmp) <= -1) goto oops; - HCL_ASSERT(hcl, var_type == VAR_INST || var_type == VAR_CLASS_I); + HAK_ASSERT(hak, var_type == VAR_INST || var_type == VAR_CLASS_I); while (1) { if (var_type == VAR_INST) { if (cbi->nivars >= MAX_NIVARS) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VARFLOOD, HCL_CNODE_GET_LOC(tmp), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VARFLOOD, HAK_CNODE_GET_LOC(tmp), HAK_NULL, "too many(%zu) instance variables before '%.*js'", - cbi->nivars, HCL_CNODE_GET_TOKLEN(tmp), HCL_CNODE_GET_TOKPTR(tmp)); + cbi->nivars, HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp)); goto oops; } - if (add_class_level_variable(hcl, &cbi->ivars, &cbi->cvars, tmp, "instance") <= -1) goto oops; + if (add_class_level_variable(hak, &cbi->ivars, &cbi->cvars, tmp, "instance") <= -1) goto oops; cbi->nivars++; } else { if (cbi->ncvars >= MAX_NCVARS) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VARFLOOD, HCL_CNODE_GET_LOC(tmp), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VARFLOOD, HAK_CNODE_GET_LOC(tmp), HAK_NULL, "too many(%zu) class variables before '%.*js'", - cbi->ncvars, HCL_CNODE_GET_TOKLEN(tmp), HCL_CNODE_GET_TOKPTR(tmp)); + cbi->ncvars, HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp)); goto oops; } - if (add_class_level_variable(hcl, &cbi->cvars, &cbi->ivars, tmp, "class") <= -1) goto oops; + if (add_class_level_variable(hak, &cbi->cvars, &cbi->ivars, tmp, "class") <= -1) goto oops; cbi->ncvars++; } - next = HCL_CNODE_CONS_CDR(next); + next = HAK_CNODE_CONS_CDR(next); if (!next) break; - tmp = HCL_CNODE_CONS_CAR(next); - if (!HCL_CNODE_IS_SYMBOL_IDENT(tmp)) goto not_ident; + tmp = HAK_CNODE_CONS_CAR(next); + if (!HAK_CNODE_IS_SYMBOL_IDENT(tmp)) goto not_ident; } } else { not_ident: - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VAR, HCL_CNODE_GET_LOC(tmp), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VAR, HAK_CNODE_GET_LOC(tmp), HAK_NULL, "invalid variable name '%.*js' for '%.*js'", - HCL_CNODE_GET_TOKLEN(tmp), HCL_CNODE_GET_TOKPTR(tmp), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); goto oops; } @@ -3841,9 +3841,9 @@ static int compile_var (hcl_t* hcl, hcl_cnode_t* src) * the explicit PUSH_NIL here isn't needed */ /* TODO: hack for POP_STACKPOP generated in compile_object_list(). * remove generating this instruction after having fixed the problem in that function */ - if (emit_byte_instruction(hcl, HCL_CODE_PUSH_NIL, HCL_CNODE_GET_LOC(cmd)) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_PUSH_NIL, HAK_CNODE_GET_LOC(cmd)) <= -1) return -1; - POP_CFRAME (hcl); + POP_CFRAME (hak); return 0; @@ -3851,61 +3851,61 @@ oops: return -1; } -static int compile_return (hcl_t* hcl, hcl_cnode_t* src, int ret_from_home) +static int compile_return (hak_t* hak, hak_cnode_t* src, int ret_from_home) { - hcl_cnode_t* obj, * val; - hcl_cframe_t* cf; - hcl_funblk_info_t* fbi; - hcl_ooi_t i; + hak_cnode_t* obj, * val; + hak_cframe_t* cf; + hak_funblk_info_t* fbi; + hak_ooi_t i; - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(src)); - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(src), HCL_CNODE_RETURN) || - HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(src), HCL_CNODE_REVERT)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(src)); + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(src), HAK_CNODE_RETURN) || + HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(src), HAK_CNODE_REVERT)); - fbi = &hcl->c->funblk.info[hcl->c->funblk.depth]; - obj = HCL_CNODE_CONS_CDR(src); + fbi = &hak->c->funblk.info[hak->c->funblk.depth]; + obj = HAK_CNODE_CONS_CDR(src); - for (i = hcl->c->ctlblk.depth; i > hcl->c->funblk.info[hcl->c->funblk.depth].ctlblk_base; --i) + for (i = hak->c->ctlblk.depth; i > hak->c->funblk.info[hak->c->funblk.depth].ctlblk_base; --i) { - switch (hcl->c->ctlblk.info[i]._type) + switch (hak->c->ctlblk.info[i]._type) { - case HCL_CTLBLK_TYPE_LOOP: + case HAK_CTLBLK_TYPE_LOOP: /* do nothing */ break; - case HCL_CTLBLK_TYPE_TRY: - if (emit_byte_instruction(hcl, HCL_CODE_TRY_EXIT, HCL_CNODE_GET_LOC(src)) <= -1) return -1; + case HAK_CTLBLK_TYPE_TRY: + if (emit_byte_instruction(hak, HAK_CODE_TRY_EXIT, HAK_CNODE_GET_LOC(src)) <= -1) return -1; break; - case HCL_CTLBLK_TYPE_CLASS: - if (emit_byte_instruction(hcl, HCL_CODE_CLASS_EXIT, HCL_CNODE_GET_LOC(src)) <= -1) return -1; + case HAK_CTLBLK_TYPE_CLASS: + if (emit_byte_instruction(hak, HAK_CODE_CLASS_EXIT, HAK_CNODE_GET_LOC(src)) <= -1) return -1; break; } } if (fbi->tmpr_nrvars > 0) { - hcl_cnode_t* tmp = HCL_CNODE_CONS_CAR(src); + hak_cnode_t* tmp = HAK_CNODE_CONS_CAR(src); if (ret_from_home) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_BANNED, HCL_CNODE_GET_LOC(src), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_BANNED, HAK_CNODE_GET_LOC(src), HAK_NULL, "%.*js not compatible with return variables", - HCL_CNODE_GET_TOKLEN(tmp), HCL_CNODE_GET_TOKPTR(tmp)); + HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp)); return -1; } /* if a return variable are specified in the current function block, the return statement must not be followed by a return value */ if (obj) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BANNED, HCL_CNODE_GET_LOC(src), HCL_NULL, "use of return value in %.*js not compatible with return variables", HCL_CNODE_GET_TOKLEN(tmp), HCL_CNODE_GET_TOKPTR(tmp)); + hak_setsynerrbfmt(hak, HAK_SYNERR_BANNED, HAK_CNODE_GET_LOC(src), HAK_NULL, "use of return value in %.*js not compatible with return variables", HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp)); return -1; } /* TODO: pop stack if this is not the first statement... */ - if (emit_byte_instruction(hcl, HCL_CODE_PUSH_RETURN_R, HCL_CNODE_GET_LOC(tmp)) <= -1) return -1; - POP_CFRAME (hcl); + if (emit_byte_instruction(hak, HAK_CODE_PUSH_RETURN_R, HAK_CNODE_GET_LOC(tmp)) <= -1) return -1; + POP_CFRAME (hak); } else { @@ -3913,116 +3913,116 @@ static int compile_return (hcl_t* hcl, hcl_cnode_t* src, int ret_from_home) { /* TODO: should i allow (return)? does it return the last value on the stack? */ /* no value */ - hcl_cnode_t* tmp = HCL_CNODE_CONS_CAR(src); - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(src), HCL_NULL, "no value specified in %.*js", HCL_CNODE_GET_TOKLEN(tmp), HCL_CNODE_GET_TOKPTR(tmp)); + hak_cnode_t* tmp = HAK_CNODE_CONS_CAR(src); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(src), HAK_NULL, "no value specified in %.*js", HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp)); return -1; } - else if (!HCL_CNODE_IS_CONS(obj)) + else if (!HAK_CNODE_IS_CONS(obj)) { - hcl_cnode_t* tmp = HCL_CNODE_CONS_CAR(src); - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HCL_CNODE_GET_TOKLEN(tmp), HCL_CNODE_GET_TOKPTR(tmp)); + hak_cnode_t* tmp = HAK_CNODE_CONS_CAR(src); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp)); return -1; } - val = HCL_CNODE_CONS_CAR(obj); + val = HAK_CNODE_CONS_CAR(obj); - obj = HCL_CNODE_CONS_CDR(obj); + obj = HAK_CNODE_CONS_CDR(obj); if (obj) { - hcl_cnode_t* tmp = HCL_CNODE_CONS_CAR(src); - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "more than 1 argument in %.*js", HCL_CNODE_GET_TOKLEN(tmp), HCL_CNODE_GET_TOKPTR(tmp)); + hak_cnode_t* tmp = HAK_CNODE_CONS_CAR(src); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "more than 1 argument in %.*js", HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp)); return -1; } - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT, val); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT, val); - PUSH_SUBCFRAME(hcl, COP_EMIT_RETURN, src); - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_EMIT_RETURN, src); + cf = GET_SUBCFRAME(hak); cf->u._return.from_home = ret_from_home; } return 0; } -static int compile_set (hcl_t* hcl, hcl_cnode_t* src) +static int compile_set (hak_t* hak, hak_cnode_t* src) { - hcl_cframe_t* cf; - hcl_cnode_t* cmd, * obj, * var, * val; - hcl_var_info_t vi; + hak_cframe_t* cf; + hak_cnode_t* cmd, * obj, * var, * val; + hak_var_info_t vi; int x; - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(src)); - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(src), HCL_CNODE_SET)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(src)); + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(src), HAK_CNODE_SET)); - cmd = HCL_CNODE_CONS_CAR(src); - obj = HCL_CNODE_CONS_CDR(src); + cmd = HAK_CNODE_CONS_CAR(src); + obj = HAK_CNODE_CONS_CDR(src); if (!obj) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_VARNAME, HCL_CNODE_GET_LOC(src), HCL_NULL, "no variable name in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(src), HAK_NULL, "no variable name in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - else if (!HCL_CNODE_IS_CONS(obj)) + else if (!HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - var = HCL_CNODE_CONS_CAR(obj); - if (!HCL_CNODE_IS_SYMBOL(var) && !HCL_CNODE_IS_DSYMBOL_CLA(var)) + var = HAK_CNODE_CONS_CAR(obj); + if (!HAK_CNODE_IS_SYMBOL(var) && !HAK_CNODE_IS_DSYMBOL_CLA(var)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_VARNAME, HCL_CNODE_GET_LOC(var), HCL_CNODE_GET_TOK(var), "variable name not symbol in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(var), HAK_CNODE_GET_TOK(var), "variable name not symbol in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - obj = HCL_CNODE_CONS_CDR(obj); + obj = HAK_CNODE_CONS_CDR(obj); if (!obj) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(var), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(var), HAK_NULL, "no value after '%.*js' for '%.*js'", - HCL_CNODE_GET_TOKLEN(var), HCL_CNODE_GET_TOKPTR(var), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(var), HAK_CNODE_GET_TOKPTR(var), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - else if (!HCL_CNODE_IS_CONS(obj)) + else if (!HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - val = HCL_CNODE_CONS_CAR(obj); + val = HAK_CNODE_CONS_CAR(obj); - obj = HCL_CNODE_CONS_CDR(obj); + obj = HAK_CNODE_CONS_CDR(obj); if (obj) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "too many arguments to %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "too many arguments to %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT, val); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT, val); - x = find_variable_backward_with_token(hcl, var, &vi); + x = find_variable_backward_with_token(hak, var, &vi); if (x <= -1) return -1; if (x == 0) { - if (HCL_CNODE_IS_DSYMBOL_CLA(var)) + if (HAK_CNODE_IS_DSYMBOL_CLA(var)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_VARNAMEUNKNOWN, HCL_CNODE_GET_LOC(var), HCL_CNODE_GET_TOK(var), "unknown class-level variable name", HCL_CNODE_GET_TOKLEN(var), HCL_CNODE_GET_TOKPTR(var)); + hak_setsynerrbfmt(hak, HAK_SYNERR_VARNAMEUNKNOWN, HAK_CNODE_GET_LOC(var), HAK_CNODE_GET_TOK(var), "unknown class-level variable name", HAK_CNODE_GET_TOKLEN(var), HAK_CNODE_GET_TOKPTR(var)); return -1; } - PUSH_SUBCFRAME(hcl, COP_EMIT_SET, var); /* set doesn't evaluate the variable name */ - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_EMIT_SET, var); /* set doesn't evaluate the variable name */ + cf = GET_SUBCFRAME(hak); cf->u.set.vi.type = VAR_NAMED; } else { /* the check in compile_fun() must ensure this condition */ - PUSH_SUBCFRAME(hcl, COP_EMIT_SET, cmd); - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_EMIT_SET, cmd); + cf = GET_SUBCFRAME(hak); cf->u.set.vi = vi; } cf->u.set.mode = VAR_ACCESS_STORE; @@ -4030,27 +4030,27 @@ static int compile_set (hcl_t* hcl, hcl_cnode_t* src) return 0; } -static int compile_set_r (hcl_t* hcl, hcl_cnode_t* src) +static int compile_set_r (hak_t* hak, hak_cnode_t* src) { - hcl_cframe_t* cf; - hcl_cnode_t* cmd, * obj, * var, * val, * var_start; - hcl_oow_t nvars, i; - hcl_var_info_t vi; + hak_cframe_t* cf; + hak_cnode_t* cmd, * obj, * var, * val, * var_start; + hak_oow_t nvars, i; + hak_var_info_t vi; - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(src)); - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(src), HCL_CNODE_SET_R)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(src)); + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(src), HAK_CNODE_SET_R)); - cmd = HCL_CNODE_CONS_CAR(src); - obj = HCL_CNODE_CONS_CDR(src); + cmd = HAK_CNODE_CONS_CAR(src); + obj = HAK_CNODE_CONS_CDR(src); if (!obj) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_VARNAME, HCL_CNODE_GET_LOC(src), HCL_NULL, "no variable name in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(src), HAK_NULL, "no variable name in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - else if (!HCL_CNODE_IS_CONS(obj)) + else if (!HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } @@ -4058,73 +4058,73 @@ static int compile_set_r (hcl_t* hcl, hcl_cnode_t* src) var_start = obj; do { - var = HCL_CNODE_CONS_CAR(obj); - if (!HCL_CNODE_IS_SYMBOL(var)) /* TODO: should this be HCL_CNODE_IS_SYMBOL(var)?? */ + var = HAK_CNODE_CONS_CAR(obj); + if (!HAK_CNODE_IS_SYMBOL(var)) /* TODO: should this be HAK_CNODE_IS_SYMBOL(var)?? */ { if (nvars > 0) break; - hcl_setsynerrbfmt(hcl, HCL_SYNERR_VARNAME, HCL_CNODE_GET_LOC(var), HCL_CNODE_GET_TOK(var), "variable name not symbol in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(var), HAK_CNODE_GET_TOK(var), "variable name not symbol in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } nvars++; - obj = HCL_CNODE_CONS_CDR(obj); + obj = HAK_CNODE_CONS_CDR(obj); } while (obj); if (!obj) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(var), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(var), HAK_NULL, "no value after '%.*js' for '%.*js'", - HCL_CNODE_GET_TOKLEN(var), HCL_CNODE_GET_TOKPTR(var), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(var), HAK_CNODE_GET_TOKPTR(var), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - else if (!HCL_CNODE_IS_CONS(obj)) + else if (!HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - val = HCL_CNODE_CONS_CAR(obj); + val = HAK_CNODE_CONS_CAR(obj); - obj = HCL_CNODE_CONS_CDR(obj); + obj = HAK_CNODE_CONS_CDR(obj); if (obj) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "too many arguments to %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "too many arguments to %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT_R, val); /* special for set_r */ - cf = GET_TOP_CFRAME(hcl); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT_R, val); /* special for set_r */ + cf = GET_TOP_CFRAME(hak); cf->u.obj_r.nrets = nvars; /* number of return variables to get assigned */ - for (i = 0, obj = var_start; i < nvars; i++, obj = HCL_CNODE_CONS_CDR(obj)) + for (i = 0, obj = var_start; i < nvars; i++, obj = HAK_CNODE_CONS_CDR(obj)) { int x; - var = HCL_CNODE_CONS_CAR(obj); + var = HAK_CNODE_CONS_CAR(obj); - x = find_variable_backward_with_token(hcl, var, &vi); + x = find_variable_backward_with_token(hak, var, &vi); if (x <= -1) return -1; if (x == 0) { - if (HCL_CNODE_IS_DSYMBOL_CLA(var)) + if (HAK_CNODE_IS_DSYMBOL_CLA(var)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_VARNAMEUNKNOWN, HCL_CNODE_GET_LOC(var), HCL_CNODE_GET_TOK(var), "unknown class-level variable name", HCL_CNODE_GET_TOKLEN(var), HCL_CNODE_GET_TOKPTR(var)); + hak_setsynerrbfmt(hak, HAK_SYNERR_VARNAMEUNKNOWN, HAK_CNODE_GET_LOC(var), HAK_CNODE_GET_TOK(var), "unknown class-level variable name", HAK_CNODE_GET_TOKLEN(var), HAK_CNODE_GET_TOKPTR(var)); return -1; } - PUSH_SUBCFRAME(hcl, COP_EMIT_SET, var); /* set_r doesn't evaluate the variable name */ - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_EMIT_SET, var); /* set_r doesn't evaluate the variable name */ + cf = GET_SUBCFRAME(hak); cf->u.set.vi.type = VAR_NAMED; } else { - PUSH_SUBCFRAME(hcl, COP_EMIT_SET, cmd); - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_EMIT_SET, cmd); + cf = GET_SUBCFRAME(hak); cf->u.set.vi = vi; } @@ -4154,15 +4154,15 @@ static int compile_set_r (hcl_t* hcl, hcl_cnode_t* src) /* ========================================================================= */ -static int compile_try (hcl_t* hcl, hcl_cnode_t* src) +static int compile_try (hak_t* hak, hak_cnode_t* src) { - hcl_cnode_t* cmd, * obj; - hcl_cframe_t* cf; - hcl_ooi_t jump_inst_pos; + hak_cnode_t* cmd, * obj; + hak_cframe_t* cf; + hak_ooi_t jump_inst_pos; - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(src)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(src)); - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(src), HCL_CNODE_TRY)); + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(src), HAK_CNODE_TRY)); /* (try * (perform this) @@ -4173,138 +4173,138 @@ static int compile_try (hcl_t* hcl, hcl_cnode_t* src) * (perform yyy) * ) */ - cmd = HCL_CNODE_CONS_CAR(src); - obj = HCL_CNODE_CONS_CDR(src); + cmd = HAK_CNODE_CONS_CAR(src); + obj = HAK_CNODE_CONS_CDR(src); if (!obj) { /* no value */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(src), HCL_NULL, "no expression specified in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(src), HAK_NULL, "no expression specified in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - else if (!HCL_CNODE_IS_CONS(obj)) + else if (!HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - if (push_ctlblk(hcl, HCL_CNODE_GET_LOC(src), HCL_CTLBLK_TYPE_TRY) <= -1) return -1; + if (push_ctlblk(hak, HAK_CNODE_GET_LOC(src), HAK_CTLBLK_TYPE_TRY) <= -1) return -1; -/* TODO: HCL_TRAIT_INTERACTIVE??? */ +/* TODO: HAK_TRAIT_INTERACTIVE??? */ - jump_inst_pos = hcl->code.bc.len; - if (emit_single_param_instruction(hcl, HCL_CODE_TRY_ENTER, MAX_CODE_JUMP, HCL_CNODE_GET_LOC(cmd)) <= -1) return -1; + jump_inst_pos = hak->code.bc.len; + if (emit_single_param_instruction(hak, HAK_CODE_TRY_ENTER, MAX_CODE_JUMP, HAK_CNODE_GET_LOC(cmd)) <= -1) return -1; - if (check_block_expression_as_body(hcl, obj, cmd, FOR_TRY) <= -1) return -1; + if (check_block_expression_as_body(hak, obj, cmd, FOR_TRY) <= -1) return -1; - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_TRY_OBJECT_LIST, obj); /* 1*/ - PUSH_SUBCFRAME(hcl, COP_POST_TRY, cmd); /* 2 */ - cf = GET_SUBCFRAME(hcl); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_TRY_OBJECT_LIST, obj); /* 1*/ + PUSH_SUBCFRAME(hak, COP_POST_TRY, cmd); /* 2 */ + cf = GET_SUBCFRAME(hak); cf->u.post_try.jump_inst_pos = jump_inst_pos; return 0; } -static HCL_INLINE int patch_nearest_post_try (hcl_t* hcl, hcl_ooi_t* catch_skip_jip) +static HAK_INLINE int patch_nearest_post_try (hak_t* hak, hak_ooi_t* catch_skip_jip) { - hcl_ooi_t jip, block_code_size; - hcl_cframe_t* cf; + hak_ooi_t jip, block_code_size; + hak_cframe_t* cf; - cf = find_cframe_from_top(hcl, COP_POST_TRY); - HCL_ASSERT(hcl, cf != HCL_NULL); - HCL_ASSERT(hcl, cf->opcode == COP_POST_TRY); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = find_cframe_from_top(hak, COP_POST_TRY); + HAK_ASSERT(hak, cf != HAK_NULL); + HAK_ASSERT(hak, cf->opcode == COP_POST_TRY); + HAK_ASSERT(hak, cf->operand != HAK_NULL); jip = cf->u.post_try.jump_inst_pos; - /* HCL_CODE_LONG_PARAM_SIZE + 1 => size of the long JUMP_FORWARD instruction */ - block_code_size = hcl->code.bc.len - jip - (HCL_CODE_LONG_PARAM_SIZE + 1); + /* HAK_CODE_LONG_PARAM_SIZE + 1 => size of the long JUMP_FORWARD instruction */ + block_code_size = hak->code.bc.len - jip - (HAK_CODE_LONG_PARAM_SIZE + 1); if (block_code_size == 0) { /* no body in try */ /* TODO: is this correct??? */ - if (emit_byte_instruction(hcl, HCL_CODE_PUSH_NIL, HCL_CNODE_GET_LOC(cf->operand)) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_PUSH_NIL, HAK_CNODE_GET_LOC(cf->operand)) <= -1) return -1; } - if (emit_byte_instruction(hcl, HCL_CODE_TRY_EXIT, HCL_CNODE_GET_LOC(cf->operand)) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_TRY_EXIT, HAK_CNODE_GET_LOC(cf->operand)) <= -1) return -1; - *catch_skip_jip = hcl->code.bc.len; - if (emit_single_param_instruction(hcl, HCL_CODE_JUMP_FORWARD_0, MAX_CODE_JUMP, HCL_CNODE_GET_LOC(cf->operand)) <= -1) return -1; + *catch_skip_jip = hak->code.bc.len; + if (emit_single_param_instruction(hak, HAK_CODE_JUMP_FORWARD_0, MAX_CODE_JUMP, HAK_CNODE_GET_LOC(cf->operand)) <= -1) return -1; - /* HCL_CODE_LONG_PARAM_SIZE + 1 => size of the long JUMP_FORWARD instruction */ - block_code_size = hcl->code.bc.len - jip - (HCL_CODE_LONG_PARAM_SIZE + 1); + /* HAK_CODE_LONG_PARAM_SIZE + 1 => size of the long JUMP_FORWARD instruction */ + block_code_size = hak->code.bc.len - jip - (HAK_CODE_LONG_PARAM_SIZE + 1); if (block_code_size > MAX_CODE_JUMP * 2) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BLKFLOOD, HCL_CNODE_GET_LOC(cf->operand), HCL_NULL, "code too big - size %zu", block_code_size); + hak_setsynerrbfmt(hak, HAK_SYNERR_BLKFLOOD, HAK_CNODE_GET_LOC(cf->operand), HAK_NULL, "code too big - size %zu", block_code_size); return -1; } - patch_long_jump(hcl, jip, block_code_size); /* patch TRY_ENTER */ + patch_long_jump(hak, jip, block_code_size); /* patch TRY_ENTER */ return 0; } -static HCL_INLINE int compile_catch (hcl_t* hcl) +static HAK_INLINE int compile_catch (hak_t* hak) { - hcl_cnode_t* cmd, * obj, * src, * exarg; - hcl_cframe_t* cf; - hcl_ooi_t jump_inst_pos; - hcl_oow_t exarg_offset; - hcl_var_info_t vi; - hcl_funblk_info_t* fbi; - hcl_oow_t par_tmprcnt; + hak_cnode_t* cmd, * obj, * src, * exarg; + hak_cframe_t* cf; + hak_ooi_t jump_inst_pos; + hak_oow_t exarg_offset; + hak_var_info_t vi; + hak_funblk_info_t* fbi; + hak_oow_t par_tmprcnt; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_COMPILE_CATCH); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_COMPILE_CATCH); src = cf->operand; - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(src)); - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(src), HCL_CNODE_CATCH)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(src)); + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(src), HAK_CNODE_CATCH)); - cmd = HCL_CNODE_CONS_CAR(src); - obj = HCL_CNODE_CONS_CDR(src); + cmd = HAK_CNODE_CONS_CAR(src); + obj = HAK_CNODE_CONS_CDR(src); if (!obj) { /* TODO: change error code */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_VARNAME, HCL_CNODE_GET_LOC(src), HCL_NULL, "no exception variable for '%.*js'", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(src), HAK_NULL, "no exception variable for '%.*js'", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - else if (!HCL_CNODE_IS_CONS(obj)) + else if (!HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - exarg = HCL_CNODE_CONS_CAR(obj); - if (!HCL_CNODE_IS_CONS_CONCODED(exarg, HCL_CONCODE_XLIST) || hcl_countcnodecons(hcl, exarg) != 1) + exarg = HAK_CNODE_CONS_CAR(obj); + if (!HAK_CNODE_IS_CONS_CONCODED(exarg, HAK_CONCODE_XLIST) || hak_countcnodecons(hak, exarg) != 1) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VARNAME, HCL_CNODE_GET_LOC(exarg), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(exarg), HAK_NULL, "improper exception variable for '%.*js'", - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - exarg = HCL_CNODE_CONS_CAR(exarg); - if (!HCL_CNODE_IS_SYMBOL(exarg)) + exarg = HAK_CNODE_CONS_CAR(exarg); + if (!HAK_CNODE_IS_SYMBOL(exarg)) { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_VARNAME, HCL_CNODE_GET_LOC(exarg), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(exarg), HAK_NULL, "invalid exception variable name '%.*js' for '%.*js'", - HCL_CNODE_GET_TOKLEN(exarg), HCL_CNODE_GET_TOKPTR(exarg), - HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + HAK_CNODE_GET_TOKLEN(exarg), HAK_CNODE_GET_TOKPTR(exarg), + HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } /* add the exception variable to the local variable list. increase the number of local variables */ - exarg_offset = hcl->c->tv.s.len; - if (hcl->c->tv.s.len > 0) exarg_offset++; /* if the variable is not the first, add 1 for a preceding space */ + exarg_offset = hak->c->tv.s.len; + if (hak->c->tv.s.len > 0) exarg_offset++; /* if the variable is not the first, add 1 for a preceding space */ - if (hcl->c->funblk.depth > 0) + if (hak->c->funblk.depth > 0) { - fbi = &hcl->c->funblk.info[hcl->c->funblk.depth - 1]; /* parent block */ + fbi = &hak->c->funblk.info[hak->c->funblk.depth - 1]; /* parent block */ par_tmprcnt = fbi->tmprcnt; } else @@ -4317,341 +4317,341 @@ static HCL_INLINE int compile_catch (hcl_t* hcl) * there is no need to call find_variable_backward_with_token() */ vi.type = VAR_INDEXED; vi.ctx_offset = 0; - vi.index_in_ctx = hcl->c->tv.wcount - par_tmprcnt; - if (add_temporary_variable(hcl, exarg, hcl->c->tv.s.len, "exception variable", HCL_NULL) <= -1) return -1; + vi.index_in_ctx = hak->c->tv.wcount - par_tmprcnt; + if (add_temporary_variable(hak, exarg, hak->c->tv.s.len, "exception variable", HAK_NULL) <= -1) return -1; - fbi = &hcl->c->funblk.info[hcl->c->funblk.depth]; + fbi = &hak->c->funblk.info[hak->c->funblk.depth]; /* a variable string inserts a space(' ') between variable name. * if 'exarg' is the first variable in the variable string, there is no preceding space. * if it is not, there is a preceding space. */ - HCL_ASSERT(hcl, (hcl->c->tv.s.len == HCL_CNODE_GET_TOKLEN(exarg) && fbi->tmprlen == hcl->c->tv.s.len - HCL_CNODE_GET_TOKLEN(exarg)) || /* first */ - (hcl->c->tv.s.len > HCL_CNODE_GET_TOKLEN(exarg) && fbi->tmprlen == hcl->c->tv.s.len - HCL_CNODE_GET_TOKLEN(exarg) - 1)); /* not first */ - HCL_ASSERT(hcl, fbi->tmprcnt == vi.index_in_ctx + par_tmprcnt); - fbi->tmprlen = hcl->c->tv.s.len; - fbi->tmprcnt = hcl->c->tv.wcount; + HAK_ASSERT(hak, (hak->c->tv.s.len == HAK_CNODE_GET_TOKLEN(exarg) && fbi->tmprlen == hak->c->tv.s.len - HAK_CNODE_GET_TOKLEN(exarg)) || /* first */ + (hak->c->tv.s.len > HAK_CNODE_GET_TOKLEN(exarg) && fbi->tmprlen == hak->c->tv.s.len - HAK_CNODE_GET_TOKLEN(exarg) - 1)); /* not first */ + HAK_ASSERT(hak, fbi->tmprcnt == vi.index_in_ctx + par_tmprcnt); + fbi->tmprlen = hak->c->tv.s.len; + fbi->tmprcnt = hak->c->tv.wcount; fbi->tmpr_nlvars = fbi->tmpr_nlvars + 1; - HCL_ASSERT(hcl, fbi->tmpr_nargs + fbi->tmpr_nrvars + fbi->tmpr_nlvars == fbi->tmprcnt - par_tmprcnt); + HAK_ASSERT(hak, fbi->tmpr_nargs + fbi->tmpr_nrvars + fbi->tmpr_nlvars == fbi->tmprcnt - par_tmprcnt); - obj = HCL_CNODE_CONS_CDR(obj); - if (check_block_expression_as_body(hcl, obj, cmd, FOR_NONE) <= -1) return -1; + obj = HAK_CNODE_CONS_CDR(obj); + if (check_block_expression_as_body(hak, obj, cmd, FOR_NONE) <= -1) return -1; /* jump_inst_pos hold the instruction pointer that skips the catch block at the end of the try block */ - patch_nearest_post_try(hcl, &jump_inst_pos); + patch_nearest_post_try(hak, &jump_inst_pos); /* produce an instruction to store the exception value to an exception variable pushed by the 'throw' instruction */ - if (emit_variable_access(hcl, VAR_ACCESS_POP, &vi, HCL_CNODE_GET_LOC(src)) <= -1) return -1; + if (emit_variable_access(hak, VAR_ACCESS_POP, &vi, HAK_CNODE_GET_LOC(src)) <= -1) return -1; - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT_LIST, obj); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT_LIST, obj); - PUSH_SUBCFRAME(hcl, COP_POST_CATCH, cmd); - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_POST_CATCH, cmd); + cf = GET_SUBCFRAME(hak); cf->u.post_catch.jump_inst_pos = jump_inst_pos; cf->u.post_catch.exarg_offset = exarg_offset; /* there is only 1 exception variable. using the offset is easier than to use the variable position */ return 0; } -static HCL_INLINE int post_try (hcl_t* hcl) +static HAK_INLINE int post_try (hak_t* hak) { /* TODO: anything else? */ - pop_ctlblk (hcl); - POP_CFRAME (hcl); + pop_ctlblk (hak); + POP_CFRAME (hak); return 0; } -static HCL_INLINE int post_catch (hcl_t* hcl) +static HAK_INLINE int post_catch (hak_t* hak) { - hcl_ooi_t jip, block_code_size; - hcl_cframe_t* cf; + hak_ooi_t jip, block_code_size; + hak_cframe_t* cf; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf != HCL_NULL); - HCL_ASSERT(hcl, cf->opcode == COP_POST_CATCH); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf != HAK_NULL); + HAK_ASSERT(hak, cf->opcode == COP_POST_CATCH); + HAK_ASSERT(hak, cf->operand != HAK_NULL); jip = cf->u.post_catch.jump_inst_pos; /* jump instruction position between the try block and the catch block */ - /* HCL_CODE_LONG_PARAM_SIZE + 1 => size of the long JUMP_FORWARD instruction */ - block_code_size = hcl->code.bc.len - jip - (HCL_CODE_LONG_PARAM_SIZE + 1); + /* HAK_CODE_LONG_PARAM_SIZE + 1 => size of the long JUMP_FORWARD instruction */ + block_code_size = hak->code.bc.len - jip - (HAK_CODE_LONG_PARAM_SIZE + 1); if (block_code_size == 0) { /* no body in try */ /* TODO: is this correct??? */ - if (emit_byte_instruction(hcl, HCL_CODE_PUSH_NIL, HCL_CNODE_GET_LOC(cf->operand)) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_PUSH_NIL, HAK_CNODE_GET_LOC(cf->operand)) <= -1) return -1; block_code_size++; } if (block_code_size > MAX_CODE_JUMP * 2) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BLKFLOOD, HCL_CNODE_GET_LOC(cf->operand), HCL_NULL, "code too big - size %zu", block_code_size); + hak_setsynerrbfmt(hak, HAK_SYNERR_BLKFLOOD, HAK_CNODE_GET_LOC(cf->operand), HAK_NULL, "code too big - size %zu", block_code_size); return -1; } - patch_long_jump(hcl, jip, block_code_size); /* patch the jump between the try block and the catch block */ + patch_long_jump(hak, jip, block_code_size); /* patch the jump between the try block and the catch block */ /* make the exception variable unsearchable outside the catch block. * the variable entity is still be accounted into the local variable list. */ - kill_temporary_variable_at_offset(hcl, cf->u.post_catch.exarg_offset); + kill_temporary_variable_at_offset(hak, cf->u.post_catch.exarg_offset); - POP_CFRAME (hcl); + POP_CFRAME (hak); return 0; } -static int compile_throw (hcl_t* hcl, hcl_cnode_t* src) +static int compile_throw (hak_t* hak, hak_cnode_t* src) { - hcl_cnode_t* obj, * val; - /*hcl_cframe_t* cf;*/ + hak_cnode_t* obj, * val; + /*hak_cframe_t* cf;*/ - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(src)); - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(src), HCL_CNODE_THROW)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(src)); + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(src), HAK_CNODE_THROW)); - obj = HCL_CNODE_CONS_CDR(src); + obj = HAK_CNODE_CONS_CDR(src); if (!obj) { /* TODO: should i allow (throw)? does it return the last value on the stack? */ /* no value */ - hcl_cnode_t* tmp = HCL_CNODE_CONS_CAR(src); - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(src), HCL_NULL, + hak_cnode_t* tmp = HAK_CNODE_CONS_CAR(src); + hak_setsynerrbfmt ( + hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(src), HAK_NULL, "no value or expression after '%.*js'", - HCL_CNODE_GET_TOKLEN(tmp), HCL_CNODE_GET_TOKPTR(tmp)); + HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp)); return -1; } - else if (!HCL_CNODE_IS_CONS(obj)) + else if (!HAK_CNODE_IS_CONS(obj)) { - hcl_cnode_t* tmp = HCL_CNODE_CONS_CAR(src); - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HCL_CNODE_GET_TOKLEN(tmp), HCL_CNODE_GET_TOKPTR(tmp)); + hak_cnode_t* tmp = HAK_CNODE_CONS_CAR(src); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp)); return -1; } - val = HCL_CNODE_CONS_CAR(obj); + val = HAK_CNODE_CONS_CAR(obj); - obj = HCL_CNODE_CONS_CDR(obj); + obj = HAK_CNODE_CONS_CDR(obj); if (obj) { - hcl_cnode_t* tmp = HCL_CNODE_CONS_CAR(src); - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "more than 1 argument in %.*js", HCL_CNODE_GET_TOKLEN(tmp), HCL_CNODE_GET_TOKPTR(tmp)); + hak_cnode_t* tmp = HAK_CNODE_CONS_CAR(src); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "more than 1 argument in %.*js", HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp)); return -1; } /* throw can be located anywhere, however, * if there is no outer try-catch, it ends up with a fatal runtime error */ - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT, val); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT, val); - PUSH_SUBCFRAME(hcl, COP_EMIT_THROW, src); - /*cf = GET_SUBCFRAME(hcl);*/ + PUSH_SUBCFRAME(hak, COP_EMIT_THROW, src); + /*cf = GET_SUBCFRAME(hak);*/ return 0; } /* ========================================================================= */ -static int compile_while (hcl_t* hcl, hcl_cnode_t* src, int next_cop) +static int compile_while (hak_t* hak, hak_cnode_t* src, int next_cop) { /* (while (xxxx) ... ) * (until (xxxx) ... ) */ - hcl_cnode_t* cmd, * obj, * cond, * body; - hcl_oow_t cond_pos; - hcl_cframe_t* cf; + hak_cnode_t* cmd, * obj, * cond, * body; + hak_oow_t cond_pos; + hak_cframe_t* cf; - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(src)); - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(src), HCL_CNODE_UNTIL) || - HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(src), HCL_CNODE_WHILE)); - HCL_ASSERT(hcl, next_cop == COP_POST_UNTIL_COND || next_cop == COP_POST_WHILE_COND); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(src)); + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(src), HAK_CNODE_UNTIL) || + HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(src), HAK_CNODE_WHILE)); + HAK_ASSERT(hak, next_cop == COP_POST_UNTIL_COND || next_cop == COP_POST_WHILE_COND); - cmd = HCL_CNODE_CONS_CAR(src); /* while or until itself */ - obj = HCL_CNODE_CONS_CDR(src); + cmd = HAK_CNODE_CONS_CAR(src); /* while or until itself */ + obj = HAK_CNODE_CONS_CDR(src); if (!obj) { /* no value */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(src), HCL_NULL, "no loop condition specified in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(src), HAK_NULL, "no loop condition specified in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - else if (!HCL_CNODE_IS_CONS(obj)) + else if (!HAK_CNODE_IS_CONS(obj)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "redundant cdr in %*.js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in %*.js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd)); return -1; } - if (push_ctlblk(hcl, HCL_CNODE_GET_LOC(src), HCL_CTLBLK_TYPE_LOOP) <= -1) return -1; + if (push_ctlblk(hak, HAK_CNODE_GET_LOC(src), HAK_CTLBLK_TYPE_LOOP) <= -1) return -1; - HCL_ASSERT(hcl, hcl->code.bc.len < HCL_SMOOI_MAX); - cond_pos = hcl->code.bc.len; /* position where the bytecode for the conditional is emitted */ + HAK_ASSERT(hak, hak->code.bc.len < HAK_SMOOI_MAX); + cond_pos = hak->code.bc.len; /* position where the bytecode for the conditional is emitted */ - cond = HCL_CNODE_CONS_CAR(obj); - body = HCL_CNODE_CONS_CDR(obj); + cond = HAK_CNODE_CONS_CAR(obj); + body = HAK_CNODE_CONS_CDR(obj); - if (check_block_expression_as_body(hcl, body, cmd, FOR_NONE) <= -1) return -1; + if (check_block_expression_as_body(hak, body, cmd, FOR_NONE) <= -1) return -1; - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT, cond); /* 1 */ + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT, cond); /* 1 */ /* pass the cons cell branching to the conditional and the body. see post_while_cond() for the reason */ - PUSH_SUBCFRAME(hcl, next_cop, obj); /* 2 */ - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, next_cop, obj); /* 2 */ + cf = GET_SUBCFRAME(hak); cf->u.post_while.cond_pos = cond_pos; cf->u.post_while.body_pos = -1; /* unknown yet*/ cf->u.post_while.jump_inst_pos = -1; /* not needed */ - cf->u.post_while.start_loc = *HCL_CNODE_GET_LOC(src); + cf->u.post_while.start_loc = *HAK_CNODE_GET_LOC(src); return 0; } /* ========================================================================= */ -static int compile_cons_array_expression (hcl_t* hcl, hcl_cnode_t* obj) +static int compile_cons_array_expression (hak_t* hak, hak_cnode_t* obj) { /* #[ ] */ - hcl_ooi_t nargs; - hcl_cframe_t* cf; + hak_ooi_t nargs; + hak_cframe_t* cf; - nargs = hcl_countcnodecons(hcl, obj); + nargs = hak_countcnodecons(hak, obj); if (nargs > MAX_CODE_PARAM) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGFLOOD, HCL_CNODE_GET_LOC(obj), HCL_NULL, "too many(%zd) elements in array", nargs); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGFLOOD, HAK_CNODE_GET_LOC(obj), HAK_NULL, "too many(%zd) elements in array", nargs); return -1; } - SWITCH_TOP_CFRAME(hcl, COP_EMIT_MAKE_ARRAY, obj); - cf = GET_TOP_CFRAME(hcl); + SWITCH_TOP_CFRAME(hak, COP_EMIT_MAKE_ARRAY, obj); + cf = GET_TOP_CFRAME(hak); cf->u.array_list.index = nargs; /* redundant cdr check is performed inside compile_object_list() */ - PUSH_SUBCFRAME(hcl, COP_COMPILE_ARRAY_LIST, obj); - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_COMPILE_ARRAY_LIST, obj); + cf = GET_SUBCFRAME(hak); cf->u.array_list.index = 0; return 0; } -static int compile_cons_bytearray_expression (hcl_t* hcl, hcl_cnode_t* obj, int concode) +static int compile_cons_bytearray_expression (hak_t* hak, hak_cnode_t* obj, int concode) { /* compile the singular-type array such as byte array or char array */ /* #b[ ] - e.g. #b[1, 2, 3] or #b[ 1 2 3 ] */ - hcl_ooi_t nargs; - hcl_cframe_t* cf; + hak_ooi_t nargs; + hak_cframe_t* cf; - nargs = hcl_countcnodecons(hcl, obj); + nargs = hak_countcnodecons(hak, obj); if (nargs > MAX_CODE_PARAM) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGFLOOD, HCL_CNODE_GET_LOC(obj), HCL_NULL, "too many(%zd) elements in byte-array", nargs); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGFLOOD, HAK_CNODE_GET_LOC(obj), HAK_NULL, "too many(%zd) elements in byte-array", nargs); return -1; } - SWITCH_TOP_CFRAME(hcl, COP_EMIT_MAKE_PURE_ARRAY, obj); - cf = GET_TOP_CFRAME(hcl); + SWITCH_TOP_CFRAME(hak, COP_EMIT_MAKE_PURE_ARRAY, obj); + cf = GET_TOP_CFRAME(hak); cf->u.pure_array_list.elem_type = concode; cf->u.pure_array_list.index = nargs; /* redundant cdr check is performed inside compile_object_list() */ - PUSH_SUBCFRAME(hcl, COP_COMPILE_PURE_ARRAY_LIST, obj); - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_COMPILE_PURE_ARRAY_LIST, obj); + cf = GET_SUBCFRAME(hak); cf->u.pure_array_list.elem_type = concode; cf->u.pure_array_list.index = 0; return 0; } -static int compile_cons_dic_expression (hcl_t* hcl, hcl_cnode_t* obj) +static int compile_cons_dic_expression (hak_t* hak, hak_cnode_t* obj) { /* { } - e.g. {1:2, 3:4,"abc":def, "hwaddr":"00:00:00:01"} or { 1 2 3 4 } */ - hcl_ooi_t nargs; - hcl_cframe_t* cf; + hak_ooi_t nargs; + hak_cframe_t* cf; - nargs = hcl_countcnodecons(hcl, obj); + nargs = hak_countcnodecons(hak, obj); if (nargs > MAX_CODE_PARAM) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGFLOOD, HCL_CNODE_GET_LOC(obj), HCL_NULL, "too many(%zd) elements in dictionary", nargs); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGFLOOD, HAK_CNODE_GET_LOC(obj), HAK_NULL, "too many(%zd) elements in dictionary", nargs); return -1; } - SWITCH_TOP_CFRAME(hcl, COP_EMIT_MAKE_DIC, obj); - cf = GET_TOP_CFRAME(hcl); + SWITCH_TOP_CFRAME(hak, COP_EMIT_MAKE_DIC, obj); + cf = GET_TOP_CFRAME(hak); cf->u.dic_list.index = nargs >> 1; /* only the half */ /* redundant cdr check is performed inside compile_object_list() */ - PUSH_SUBCFRAME(hcl, COP_COMPILE_DIC_LIST, obj); + PUSH_SUBCFRAME(hak, COP_COMPILE_DIC_LIST, obj); return 0; } -static int compile_cons_qlist_expression (hcl_t* hcl, hcl_cnode_t* obj) +static int compile_cons_qlist_expression (hak_t* hak, hak_cnode_t* obj) { /* #( 1 2 3 ) * #(1 (+ 2 3) 5) --> #(1 5 5) * */ - SWITCH_TOP_CFRAME(hcl, COP_EMIT_MAKE_CONS, obj); - PUSH_SUBCFRAME(hcl, COP_COMPILE_QLIST, obj); + SWITCH_TOP_CFRAME(hak, COP_EMIT_MAKE_CONS, obj); + PUSH_SUBCFRAME(hak, COP_COMPILE_QLIST, obj); return 0; } -static int compile_cons_alist_expression (hcl_t* hcl, hcl_cnode_t* cmd) +static int compile_cons_alist_expression (hak_t* hak, hak_cnode_t* cmd) { /* assignment expression */ /* (a := 20) * ([a,b] := (xxx 20)) */ - hcl_cframe_t* cf; - hcl_cnode_t* obj, * var, * val; - hcl_var_info_t vi; + hak_cframe_t* cf; + hak_cnode_t* obj, * var, * val; + hak_var_info_t vi; int x; - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS_CONCODED(cmd, HCL_CONCODE_ALIST)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS_CONCODED(cmd, HAK_CONCODE_ALIST)); - var = HCL_CNODE_CONS_CAR(cmd); - obj = HCL_CNODE_CONS_CDR(cmd); + var = HAK_CNODE_CONS_CAR(cmd); + obj = HAK_CNODE_CONS_CDR(cmd); - HCL_ASSERT(hcl, HCL_CNODE_IS_SYMBOL(var) || HCL_CNODE_IS_DSYMBOL_CLA(var) || HCL_CNODE_IS_CONS_CONCODED(var, HCL_CONCODE_TUPLE)); - HCL_ASSERT(hcl, obj && HCL_CNODE_IS_CONS(obj)); /* reader guaranteed */ + HAK_ASSERT(hak, HAK_CNODE_IS_SYMBOL(var) || HAK_CNODE_IS_DSYMBOL_CLA(var) || HAK_CNODE_IS_CONS_CONCODED(var, HAK_CONCODE_TUPLE)); + HAK_ASSERT(hak, obj && HAK_CNODE_IS_CONS(obj)); /* reader guaranteed */ - val = HCL_CNODE_CONS_CAR(obj); - HCL_ASSERT(hcl, HCL_CNODE_CONS_CDR(obj) == HCL_NULL); /* reader guaranteed */ + val = HAK_CNODE_CONS_CAR(obj); + HAK_ASSERT(hak, HAK_CNODE_CONS_CDR(obj) == HAK_NULL); /* reader guaranteed */ - if (HCL_CNODE_IS_CONS_CONCODED(var, HCL_CONCODE_TUPLE)) + if (HAK_CNODE_IS_CONS_CONCODED(var, HAK_CONCODE_TUPLE)) { /* multi-variable assignment * fun xxx(x :: p q) { p := x + 1; q := x + 2 } * ([a,b] := (xxx 20)) */ - hcl_oow_t nvars, i; + hak_oow_t nvars, i; - nvars = hcl_countcnodecons(hcl, var); + nvars = hak_countcnodecons(hak, var); - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT_R, val); /* special for set_r */ - cf = GET_TOP_CFRAME(hcl); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT_R, val); /* special for set_r */ + cf = GET_TOP_CFRAME(hak); cf->u.obj_r.nrets = nvars; /* number of return variables to get assigned */ - for (i = 0, obj = var; i < nvars; i++, obj = HCL_CNODE_CONS_CDR(obj)) + for (i = 0, obj = var; i < nvars; i++, obj = HAK_CNODE_CONS_CDR(obj)) { int x; - var = HCL_CNODE_CONS_CAR(obj); + var = HAK_CNODE_CONS_CAR(obj); - HCL_ASSERT(hcl, HCL_CNODE_IS_SYMBOL(var) || HCL_CNODE_IS_DSYMBOL_CLA(var)); /* reader guaranteed */ + HAK_ASSERT(hak, HAK_CNODE_IS_SYMBOL(var) || HAK_CNODE_IS_DSYMBOL_CLA(var)); /* reader guaranteed */ - x = find_variable_backward_with_token(hcl, var, &vi); + x = find_variable_backward_with_token(hak, var, &vi); if (x <= -1) return -1; if (x == 0) { - if (HCL_CNODE_IS_DSYMBOL_CLA(var)) + if (HAK_CNODE_IS_DSYMBOL_CLA(var)) { - hcl_setsynerrbfmt(hcl, - HCL_SYNERR_VARNAMEUNKNOWN, HCL_CNODE_GET_LOC(var), HCL_CNODE_GET_TOK(var), - "unknown class-level variable name", HCL_CNODE_GET_TOKLEN(var), HCL_CNODE_GET_TOKPTR(var)); + hak_setsynerrbfmt(hak, + HAK_SYNERR_VARNAMEUNKNOWN, HAK_CNODE_GET_LOC(var), HAK_CNODE_GET_TOK(var), + "unknown class-level variable name", HAK_CNODE_GET_TOKLEN(var), HAK_CNODE_GET_TOKPTR(var)); return -1; } - PUSH_SUBCFRAME(hcl, COP_EMIT_SET, var); /* set_r doesn't evaluate the variable name */ - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_EMIT_SET, var); /* set_r doesn't evaluate the variable name */ + cf = GET_SUBCFRAME(hak); cf->u.set.vi.type = VAR_NAMED; } else { - PUSH_SUBCFRAME(hcl, COP_EMIT_SET, cmd); - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_EMIT_SET, cmd); + cf = GET_SUBCFRAME(hak); cf->u.set.vi = vi; } @@ -4681,32 +4681,32 @@ static int compile_cons_alist_expression (hcl_t* hcl, hcl_cnode_t* cmd) /* single-variable assignment * (a := 20) */ - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT, val); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT, val); - x = find_variable_backward_with_token(hcl, var, &vi); + x = find_variable_backward_with_token(hak, var, &vi); if (x <= -1) return -1; if (x == 0) { /* not found */ - if (HCL_CNODE_IS_DSYMBOL_CLA(var)) + if (HAK_CNODE_IS_DSYMBOL_CLA(var)) { - hcl_setsynerrbfmt(hcl, - HCL_SYNERR_VARNAMEUNKNOWN, HCL_CNODE_GET_LOC(var), HCL_CNODE_GET_TOK(var), - "unknown class-level variable name", HCL_CNODE_GET_TOKLEN(var), HCL_CNODE_GET_TOKPTR(var)); + hak_setsynerrbfmt(hak, + HAK_SYNERR_VARNAMEUNKNOWN, HAK_CNODE_GET_LOC(var), HAK_CNODE_GET_TOK(var), + "unknown class-level variable name", HAK_CNODE_GET_TOKLEN(var), HAK_CNODE_GET_TOKPTR(var)); return -1; } - PUSH_SUBCFRAME(hcl, COP_EMIT_SET, var); /* set doesn't evaluate the variable name */ - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_EMIT_SET, var); /* set doesn't evaluate the variable name */ + cf = GET_SUBCFRAME(hak); cf->u.set.vi.type = VAR_NAMED; } else { /* the check in compile_fun() must ensure this condition */ - PUSH_SUBCFRAME(hcl, COP_EMIT_SET, cmd); - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_EMIT_SET, cmd); + cf = GET_SUBCFRAME(hak); cf->u.set.vi = vi; } cf->u.set.mode = VAR_ACCESS_STORE; @@ -4715,9 +4715,9 @@ static int compile_cons_alist_expression (hcl_t* hcl, hcl_cnode_t* cmd) return 0; } -static int compile_cons_xlist_expression (hcl_t* hcl, hcl_cnode_t* obj, int nrets) +static int compile_cons_xlist_expression (hak_t* hak, hak_cnode_t* obj, int nrets) { - hcl_cnode_t* car; + hak_cnode_t* car; /* a valid function call * (function-name argument-list) @@ -4727,110 +4727,110 @@ static int compile_cons_xlist_expression (hcl_t* hcl, hcl_cnode_t* obj, int nret * if the name is another function call, i can't know if the * function name will be valid at the compile time. */ - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS_CONCODED(obj, HCL_CONCODE_XLIST)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS_CONCODED(obj, HAK_CONCODE_XLIST)); - car = HCL_CNODE_CONS_CAR(obj); - switch (HCL_CNODE_GET_TYPE(car)) + car = HAK_CNODE_CONS_CAR(obj); + switch (HAK_CNODE_GET_TYPE(car)) { - case HCL_CNODE_CLASS: - if (compile_class(hcl, obj) <= -1) return -1; + case HAK_CNODE_CLASS: + if (compile_class(hak, obj) <= -1) return -1; goto done; - case HCL_CNODE_FUN: - if (compile_fun(hcl, obj) <= -1) return -1; + case HAK_CNODE_FUN: + if (compile_fun(hak, obj) <= -1) return -1; goto done; - case HCL_CNODE_VAR: - if (compile_var(hcl, obj) <= -1) return -1; + case HAK_CNODE_VAR: + if (compile_var(hak, obj) <= -1) return -1; goto done; - case HCL_CNODE_DO: - if (compile_do(hcl, obj) <= -1) return -1; + case HAK_CNODE_DO: + if (compile_do(hak, obj) <= -1) return -1; goto done; - case HCL_CNODE_IF: - if (compile_if(hcl, obj) <= -1) return -1; + case HAK_CNODE_IF: + if (compile_if(hak, obj) <= -1) return -1; goto done; - case HCL_CNODE_ELIF: - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ELSE, HCL_CNODE_GET_LOC(car), HCL_CNODE_GET_TOK(car), "elif without if"); + case HAK_CNODE_ELIF: + hak_setsynerrbfmt(hak, HAK_SYNERR_ELSE, HAK_CNODE_GET_LOC(car), HAK_CNODE_GET_TOK(car), "elif without if"); return -1; - case HCL_CNODE_ELSE: - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ELIF, HCL_CNODE_GET_LOC(car), HCL_CNODE_GET_TOK(car), "else without if"); + case HAK_CNODE_ELSE: + hak_setsynerrbfmt(hak, HAK_SYNERR_ELIF, HAK_CNODE_GET_LOC(car), HAK_CNODE_GET_TOK(car), "else without if"); return -1; - case HCL_CNODE_THROW: - if (compile_throw(hcl, obj) <= -1) return -1; + case HAK_CNODE_THROW: + if (compile_throw(hak, obj) <= -1) return -1; goto done; - case HCL_CNODE_TRY: - if (compile_try(hcl, obj) <= -1) return -1; + case HAK_CNODE_TRY: + if (compile_try(hak, obj) <= -1) return -1; goto done; - case HCL_CNODE_CATCH: - hcl_setsynerrbfmt(hcl, HCL_SYNERR_CATCH, HCL_CNODE_GET_LOC(car), HCL_CNODE_GET_TOK(car), "catch without try"); + case HAK_CNODE_CATCH: + hak_setsynerrbfmt(hak, HAK_SYNERR_CATCH, HAK_CNODE_GET_LOC(car), HAK_CNODE_GET_TOK(car), "catch without try"); return -1; - case HCL_CNODE_BREAK: - if (compile_break(hcl, obj) <= -1) return -1; + case HAK_CNODE_BREAK: + if (compile_break(hak, obj) <= -1) return -1; goto done; - case HCL_CNODE_CONTINUE: - if (compile_continue(hcl, obj) <= -1) return -1; + case HAK_CNODE_CONTINUE: + if (compile_continue(hak, obj) <= -1) return -1; goto done; - case HCL_CNODE_UNTIL: - if (compile_while(hcl, obj, COP_POST_UNTIL_COND) <= -1) return -1; + case HAK_CNODE_UNTIL: + if (compile_while(hak, obj, COP_POST_UNTIL_COND) <= -1) return -1; goto done; - case HCL_CNODE_WHILE: - if (compile_while(hcl, obj, COP_POST_WHILE_COND) <= -1) return -1; + case HAK_CNODE_WHILE: + if (compile_while(hak, obj, COP_POST_WHILE_COND) <= -1) return -1; goto done; - case HCL_CNODE_RETURN: + case HAK_CNODE_RETURN: /* (return 10) * (return (+ 10 20)) */ - if (compile_return(hcl, obj, 0) <= -1) return -1; + if (compile_return(hak, obj, 0) <= -1) return -1; goto done; - case HCL_CNODE_REVERT: - if (compile_return(hcl, obj, 1) <= -1) return -1; + case HAK_CNODE_REVERT: + if (compile_return(hak, obj, 1) <= -1) return -1; goto done; - case HCL_CNODE_AND: - if (compile_and(hcl, obj) <= -1) return -1; + case HAK_CNODE_AND: + if (compile_and(hak, obj) <= -1) return -1; goto done; - case HCL_CNODE_OR: - if (compile_or(hcl, obj) <= -1) return -1; + case HAK_CNODE_OR: + if (compile_or(hak, obj) <= -1) return -1; goto done; - case HCL_CNODE_PLUS: - if (compile_plus(hcl, obj) <= -1) return -1; + case HAK_CNODE_PLUS: + if (compile_plus(hak, obj) <= -1) return -1; goto done; - case HCL_CNODE_SET: - if (compile_set(hcl, obj) <= -1) return -1; + case HAK_CNODE_SET: + if (compile_set(hak, obj) <= -1) return -1; goto done; - case HCL_CNODE_SET_R: - if (compile_set_r(hcl, obj) <= -1) return -1; + case HAK_CNODE_SET_R: + if (compile_set_r(hak, obj) <= -1) return -1; goto done; } - if (HCL_CNODE_IS_SYMBOL(car) || HCL_CNODE_IS_DSYMBOL(car) || - HCL_CNODE_IS_CONS_CONCODED(car, HCL_CONCODE_XLIST) || - HCL_CNODE_IS_CONS_CONCODED(car, HCL_CONCODE_MLIST) || - HCL_CNODE_IS_CONS_CONCODED(car, HCL_CONCODE_BLIST) || - HCL_CNODE_IS_CONS_CONCODED(car, HCL_CONCODE_ALIST)) + if (HAK_CNODE_IS_SYMBOL(car) || HAK_CNODE_IS_DSYMBOL(car) || + HAK_CNODE_IS_CONS_CONCODED(car, HAK_CONCODE_XLIST) || + HAK_CNODE_IS_CONS_CONCODED(car, HAK_CONCODE_MLIST) || + HAK_CNODE_IS_CONS_CONCODED(car, HAK_CONCODE_BLIST) || + HAK_CNODE_IS_CONS_CONCODED(car, HAK_CONCODE_ALIST)) { /* normal function call * ( ...) */ - hcl_ooi_t nargs; - hcl_ooi_t oldtop; - hcl_cframe_t* cf; - hcl_cnode_t* cdr; + hak_ooi_t nargs; + hak_ooi_t oldtop; + hak_cframe_t* cf; + hak_cnode_t* cdr; /* NOTE: cframe management functions don't use the object memory. * many operations can be performed without taking GC into account */ @@ -4838,16 +4838,16 @@ static int compile_cons_xlist_expression (hcl_t* hcl, hcl_cnode_t* obj, int nret /* store the position of COP_EMIT_CALL to be produced with * SWITCH_TOP_CFRAME() in oldtop for argument count patching * further down */ - oldtop = GET_TOP_CFRAME_INDEX(hcl); - HCL_ASSERT(hcl, oldtop >= 0); + oldtop = GET_TOP_CFRAME_INDEX(hak); + HAK_ASSERT(hak, oldtop >= 0); - SWITCH_TOP_CFRAME(hcl, COP_EMIT_CALL, car); /* <4> */ + SWITCH_TOP_CFRAME(hak, COP_EMIT_CALL, car); /* <4> */ /* compile */ - PUSH_CFRAME(hcl, COP_COMPILE_OBJECT, car); /* <2> */ + PUSH_CFRAME(hak, COP_COMPILE_OBJECT, car); /* <2> */ /* compile ... etc */ - cdr = HCL_CNODE_CONS_CDR(obj); + cdr = HAK_CNODE_CONS_CDR(obj); if (!cdr) { @@ -4855,39 +4855,39 @@ static int compile_cons_xlist_expression (hcl_t* hcl, hcl_cnode_t* obj, int nret } else { - if (!HCL_CNODE_IS_CONS(cdr)) + if (!HAK_CNODE_IS_CONS(cdr)) { /* (funname . 10) */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(cdr), HCL_CNODE_GET_TOK(cdr), "redundant cdr in function call"); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(cdr), HAK_CNODE_GET_TOK(cdr), "redundant cdr in function call"); return -1; } - nargs = hcl_countcnodecons(hcl, cdr); + nargs = hak_countcnodecons(hak, cdr); if (nargs > MAX_CODE_PARAM) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGFLOOD, HCL_CNODE_GET_LOC(cdr), HCL_NULL, "too many(%zd) parameters in function call", nargs); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGFLOOD, HAK_CNODE_GET_LOC(cdr), HAK_NULL, "too many(%zd) parameters in function call", nargs); return -1; } } - if (HCL_CNODE_IS_SYMBOL(car) || HCL_CNODE_IS_DSYMBOL(car)) + if (HAK_CNODE_IS_SYMBOL(car) || HAK_CNODE_IS_DSYMBOL(car)) { - hcl_oop_cons_t sdc; + hak_oop_cons_t sdc; /* only symbols are added to the system dictionary. * perform this lookup only if car is a symbol */ - sdc = hcl_lookupsysdicforsymbol_noseterr(hcl, HCL_CNODE_GET_TOK(car)); + sdc = hak_lookupsysdicforsymbol_noseterr(hak, HAK_CNODE_GET_TOK(car)); if (sdc) { - hcl_oop_word_t sdv; - sdv = (hcl_oop_word_t)HCL_CONS_CDR(sdc); - if (HCL_IS_PRIM(hcl, sdv)) + hak_oop_word_t sdv; + sdv = (hak_oop_word_t)HAK_CONS_CDR(sdc); + if (HAK_IS_PRIM(hak, sdv)) { if (nargs < sdv->slot[1] || nargs > sdv->slot[2]) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(car), HCL_NULL, + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(car), HAK_NULL, "parameters count(%zd) mismatch in function call - %.*js - expecting %zu-%zu parameters", - nargs, HCL_CNODE_GET_TOKLEN(car), HCL_CNODE_GET_TOKPTR(car), sdv->slot[1], sdv->slot[2]); + nargs, HAK_CNODE_GET_TOKLEN(car), HAK_CNODE_GET_TOKPTR(car), sdv->slot[1], sdv->slot[2]); return -1; } } @@ -4895,24 +4895,24 @@ static int compile_cons_xlist_expression (hcl_t* hcl, hcl_cnode_t* obj, int nret } /* redundant cdr check is performed inside compile_object_list() */ - PUSH_SUBCFRAME(hcl, COP_COMPILE_ARGUMENT_LIST, cdr); /* <3> */ + PUSH_SUBCFRAME(hak, COP_COMPILE_ARGUMENT_LIST, cdr); /* <3> */ /* patch the argument count in the operand field of the COP_EMIT_CALL frame */ - cf = GET_CFRAME(hcl, oldtop); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_CALL); + cf = GET_CFRAME(hak, oldtop); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_CALL); cf->u.call.index = nargs; cf->u.call.nrets = nrets; /* arrange to push a dummy receiver to make the call look like a message send. * if you change the dummy receiver instruction to something else, you must change * the receiver value of the initial context in start_initial_process_and_context(), too */ - PUSH_CFRAME(hcl, COP_EMIT_PUSH_NIL, car); /* <1> this will be executed the COP_COMPILE_OBJECT car frame */ + PUSH_CFRAME(hak, COP_EMIT_PUSH_NIL, car); /* <1> this will be executed the COP_COMPILE_OBJECT car frame */ } else { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_CALLABLE, HCL_CNODE_GET_LOC(car), HCL_NULL, + hak_setsynerrbfmt(hak, HAK_SYNERR_CALLABLE, HAK_CNODE_GET_LOC(car), HAK_NULL, "invalid callable '%.*js' in function call", - HCL_CNODE_GET_TOKLEN(car), HCL_CNODE_GET_TOKPTR(car)); + HAK_CNODE_GET_TOKLEN(car), HAK_CNODE_GET_TOKPTR(car)); return -1; } @@ -4920,98 +4920,98 @@ done: return 0; } -static int compile_cons_mlist_expression (hcl_t* hcl, hcl_cnode_t* obj, int nrets) +static int compile_cons_mlist_expression (hak_t* hak, hak_cnode_t* obj, int nrets) { - hcl_cnode_t* car, * cdr, * rcv; - hcl_ooi_t nargs; - hcl_ooi_t oldtop; - hcl_cframe_t* cf; + hak_cnode_t* car, * cdr, * rcv; + hak_ooi_t nargs; + hak_ooi_t oldtop; + hak_cframe_t* cf; /* message sending * (: ...) * (: ...) * ( */ - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS_CONCODED(obj, HCL_CONCODE_BLIST) || - HCL_CNODE_IS_CONS_CONCODED(obj, HCL_CONCODE_MLIST)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS_CONCODED(obj, HAK_CONCODE_BLIST) || + HAK_CNODE_IS_CONS_CONCODED(obj, HAK_CONCODE_MLIST)); - car = HCL_CNODE_CONS_CAR(obj); + car = HAK_CNODE_CONS_CAR(obj); /* store the position of COP_EMIT_CALL to be produced with * SWITCH_TOP_CFRAME() in oldtop for argument count patching * further down */ - oldtop = GET_TOP_CFRAME_INDEX(hcl); - HCL_ASSERT(hcl, oldtop >= 0); + oldtop = GET_TOP_CFRAME_INDEX(hak); + HAK_ASSERT(hak, oldtop >= 0); /* compile */ rcv = car; /* remember the receiver node to to push it later */ - SWITCH_TOP_CFRAME(hcl, COP_EMIT_SEND, rcv); + SWITCH_TOP_CFRAME(hak, COP_EMIT_SEND, rcv); /* compile */ - cdr = HCL_CNODE_CONS_CDR(obj); + cdr = HAK_CNODE_CONS_CDR(obj); if (!cdr) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_CALLABLE, HCL_CNODE_GET_LOC(car), HCL_CNODE_GET_TOK(car), "missing message"); + hak_setsynerrbfmt(hak, HAK_SYNERR_CALLABLE, HAK_CNODE_GET_LOC(car), HAK_CNODE_GET_TOK(car), "missing message"); return -1; } - if (!HCL_CNODE_IS_CONS(cdr)) + if (!HAK_CNODE_IS_CONS(cdr)) { /* ( . 10) */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(cdr), HCL_CNODE_GET_TOK(cdr), "redundant cdr in message send"); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(cdr), HAK_CNODE_GET_TOK(cdr), "redundant cdr in message send"); return -1; } - car = HCL_CNODE_CONS_CAR(cdr); - if (HCL_CNODE_IS_SYMBOL(car)) + car = HAK_CNODE_CONS_CAR(cdr); + if (HAK_CNODE_IS_SYMBOL(car)) { - PUSH_CFRAME(hcl, COP_EMIT_PUSH_SYMBOL, car); + PUSH_CFRAME(hak, COP_EMIT_PUSH_SYMBOL, car); } else { /* TODO: more sanity check on what can be used as a method */ - PUSH_CFRAME(hcl, COP_COMPILE_OBJECT, car); + PUSH_CFRAME(hak, COP_COMPILE_OBJECT, car); } /* compile ... etc */ - cdr = HCL_CNODE_CONS_CDR(cdr); + cdr = HAK_CNODE_CONS_CDR(cdr); if (!cdr) { nargs = 0; } else { - if (!HCL_CNODE_IS_CONS(cdr)) + if (!HAK_CNODE_IS_CONS(cdr)) { /* (funname . 10) */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(cdr), HCL_CNODE_GET_TOK(cdr), "redundant cdr in function call"); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(cdr), HAK_CNODE_GET_TOK(cdr), "redundant cdr in function call"); return -1; } - nargs = hcl_countcnodecons(hcl, cdr); + nargs = hak_countcnodecons(hak, cdr); if (nargs > MAX_CODE_PARAM) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGFLOOD, HCL_CNODE_GET_LOC(cdr), HCL_NULL, "too many(%zd) parameters in function call", nargs); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGFLOOD, HAK_CNODE_GET_LOC(cdr), HAK_NULL, "too many(%zd) parameters in function call", nargs); return -1; } } #if 0 - if (HCL_CNODE_IS_SYMBOL(car) || HCL_CNODE_IS_DSYMBOL(car)) + if (HAK_CNODE_IS_SYMBOL(car) || HAK_CNODE_IS_DSYMBOL(car)) { - hcl_oop_cons_t sdc; + hak_oop_cons_t sdc; /* only symbols are added to the system dictionary. * perform this lookup only if car is a symbol */ - sdc = hcl_lookupsysdicforsymbol_noseterr(hcl, HCL_CNODE_GET_TOK(car)); + sdc = hak_lookupsysdicforsymbol_noseterr(hak, HAK_CNODE_GET_TOK(car)); if (sdc) { - hcl_oop_word_t sdv; - sdv = (hcl_oop_word_t)HCL_CONS_CDR(sdc); - if (HCL_IS_PRIM(hcl, sdv)) + hak_oop_word_t sdv; + sdv = (hak_oop_word_t)HAK_CONS_CDR(sdc); + if (HAK_IS_PRIM(hak, sdv)) { if (nargs < sdv->slot[1] || nargs > sdv->slot[2]) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ARGCOUNT, HCL_CNODE_GET_LOC(car), HCL_NULL, - "parameters count(%zd) mismatch in function call - %.*js - expecting %zu-%zu parameters", nargs, HCL_CNODE_GET_TOKLEN(car), HCL_CNODE_GET_TOKPTR(car), sdv->slot[1], sdv->slot[2]); + hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(car), HAK_NULL, + "parameters count(%zd) mismatch in function call - %.*js - expecting %zu-%zu parameters", nargs, HAK_CNODE_GET_TOKLEN(car), HAK_CNODE_GET_TOKPTR(car), sdv->slot[1], sdv->slot[2]); return -1; } } @@ -5020,69 +5020,69 @@ static int compile_cons_mlist_expression (hcl_t* hcl, hcl_cnode_t* obj, int nret #endif /* redundant cdr check is performed inside compile_object_list() */ - PUSH_SUBCFRAME(hcl, COP_COMPILE_ARGUMENT_LIST, cdr); + PUSH_SUBCFRAME(hak, COP_COMPILE_ARGUMENT_LIST, cdr); /* patch the argument count in the operand field of the COP_EMIT_CALL frame */ - cf = GET_CFRAME(hcl, oldtop); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_SEND); + cf = GET_CFRAME(hak, oldtop); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_SEND); cf->u.sendmsg.nargs = nargs; cf->u.sendmsg.nrets = nrets; - cf->u.sendmsg.to_super = (HCL_CNODE_GET_TYPE(rcv) == HCL_CNODE_SUPER); + cf->u.sendmsg.to_super = (HAK_CNODE_GET_TYPE(rcv) == HAK_CNODE_SUPER); - PUSH_CFRAME(hcl, COP_COMPILE_OBJECT, rcv); + PUSH_CFRAME(hak, COP_COMPILE_OBJECT, rcv); return 0; } -static int compile_cons_block_expression (hcl_t* hcl, hcl_cnode_t* obj) +static int compile_cons_block_expression (hak_t* hak, hak_cnode_t* obj) { - return compile_expression_block(hcl, obj, "block", CEB_IS_BLOCK); + return compile_expression_block(hak, obj, "block", CEB_IS_BLOCK); } -static HCL_INLINE int compile_symbol (hcl_t* hcl, hcl_cnode_t* obj) +static HAK_INLINE int compile_symbol (hak_t* hak, hak_cnode_t* obj) { - hcl_var_info_t vi; + hak_var_info_t vi; int x; - HCL_ASSERT(hcl, HCL_CNODE_IS_SYMBOL(obj)); + HAK_ASSERT(hak, HAK_CNODE_IS_SYMBOL(obj)); /* check if a symbol is a local variable */ - x = find_variable_backward_with_token(hcl, obj, &vi); + x = find_variable_backward_with_token(hak, obj, &vi); if (x <= -1) return -1; if (x == 0) { - hcl_oop_t sym, cons; - hcl_oow_t index; + hak_oop_t sym, cons; + hak_oow_t index; /* TODO: if i require all variables to be declared, this part is not needed and should handle it as an error */ /* TODO: change the scheme... allow declaration??? */ /* global variable */ - sym = hcl_makesymbol(hcl, HCL_CNODE_GET_TOKPTR(obj), HCL_CNODE_GET_TOKLEN(obj)); - if (HCL_UNLIKELY(!sym)) return -1; + sym = hak_makesymbol(hak, HAK_CNODE_GET_TOKPTR(obj), HAK_CNODE_GET_TOKLEN(obj)); + if (HAK_UNLIKELY(!sym)) return -1; - cons = (hcl_oop_t)hcl_getatsysdic(hcl, sym); + cons = (hak_oop_t)hak_getatsysdic(hak, sym); if (!cons) { - cons = (hcl_oop_t)hcl_putatsysdic(hcl, sym, hcl->_undef); - if (HCL_UNLIKELY(!cons)) return -1; + cons = (hak_oop_t)hak_putatsysdic(hak, sym, hak->_undef); + if (HAK_UNLIKELY(!cons)) return -1; } /* add the entire cons pair to the literal frame */ - if (add_literal(hcl, cons, &index) <= -1 || - emit_single_param_instruction(hcl, HCL_CODE_PUSH_OBJECT_0, index, HCL_CNODE_GET_LOC(obj)) <= -1) return -1; + if (add_literal(hak, cons, &index) <= -1 || + emit_single_param_instruction(hak, HAK_CODE_PUSH_OBJECT_0, index, HAK_CNODE_GET_LOC(obj)) <= -1) return -1; return 0; } else { - HCL_ASSERT(hcl, vi.type != VAR_NAMED); - return emit_variable_access(hcl, VAR_ACCESS_PUSH, &vi, HCL_CNODE_GET_LOC(obj)); + HAK_ASSERT(hak, vi.type != VAR_NAMED); + return emit_variable_access(hak, VAR_ACCESS_PUSH, &vi, HAK_CNODE_GET_LOC(obj)); } } -static HCL_INLINE int compile_dsymbol (hcl_t* hcl, hcl_cnode_t* obj) +static HAK_INLINE int compile_dsymbol (hak_t* hak, hak_cnode_t* obj) { - hcl_oop_t cons; - hcl_oow_t index; + hak_oop_t cons; + hak_oow_t index; /* TODO: need a total revamp on the dotted symbols. * must differentiate module access and dictioary member access... @@ -5091,18 +5091,18 @@ static HCL_INLINE int compile_dsymbol (hcl_t* hcl, hcl_cnode_t* obj) /* the dot notation collides with car/cdr separator? no. dotted symbols don't contains space. * the car cdr separator must be a single character */ { /* HACK FOR NOW */ - const hcl_ooch_t* sep; - hcl_oocs_t name; + const hak_ooch_t* sep; + hak_oocs_t name; int x = 0; - hcl_var_info_t vi; - hcl_funblk_info_t* fbi; + hak_var_info_t vi; + hak_funblk_info_t* fbi; - name = *HCL_CNODE_GET_TOK(obj); - fbi = &hcl->c->funblk.info[hcl->c->funblk.depth]; + name = *HAK_CNODE_GET_TOK(obj); + fbi = &hak->c->funblk.info[hak->c->funblk.depth]; - sep = hcl_find_oochar(name.ptr, name.len, '.'); - HCL_ASSERT(hcl, sep != HCL_NULL); - if (hcl_comp_oochars_bcstr(name.ptr, (sep - (const hcl_ooch_t*)name.ptr), "self") == 0) + sep = hak_find_oochar(name.ptr, name.len, '.'); + HAK_ASSERT(hak, sep != HAK_NULL); + if (hak_comp_oochars_bcstr(name.ptr, (sep - (const hak_ooch_t*)name.ptr), "self") == 0) { /* instance variable? or instance method? */ if (fbi->fun_type >> 8) @@ -5120,31 +5120,31 @@ static HCL_INLINE int compile_dsymbol (hcl_t* hcl, hcl_cnode_t* obj) * } * } */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_VARNAME, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "not allowed to prefix with self in out-of-class method context"); + hak_setsynerrbfmt(hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "not allowed to prefix with self in out-of-class method context"); return -1; } - name.ptr = (hcl_ooch_t*)(sep + 1); + name.ptr = (hak_ooch_t*)(sep + 1); name.len -= 5; - x = find_variable_backward_with_word(hcl, &name, HCL_CNODE_GET_LOC(obj), 1, &vi); + x = find_variable_backward_with_word(hak, &name, HAK_CNODE_GET_LOC(obj), 1, &vi); } - else if (hcl_comp_oochars_bcstr(name.ptr, sep - (const hcl_ooch_t*)name.ptr, "super") == 0) + else if (hak_comp_oochars_bcstr(name.ptr, sep - (const hak_ooch_t*)name.ptr, "super") == 0) { if (fbi->fun_type >> 8) /* if defined using A:xxx syntax */ { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_VARNAME, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "not allowed to prefix with super in out-of-class method context"); + hak_setsynerrbfmt(hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "not allowed to prefix with super in out-of-class method context"); return -1; } - name.ptr = (hcl_ooch_t*)(sep + 1); + name.ptr = (hak_ooch_t*)(sep + 1); name.len -= 6; - x = find_variable_backward_with_word(hcl, &name, HCL_CNODE_GET_LOC(obj), 2, &vi); /* TODO: arrange to skip the current class */ + x = find_variable_backward_with_word(hak, &name, HAK_CNODE_GET_LOC(obj), 2, &vi); /* TODO: arrange to skip the current class */ } if (x <= -1) return -1; /* error */ if (x >= 1) { /* found */ - HCL_ASSERT(hcl, vi.type != VAR_NAMED); - return emit_variable_access(hcl, VAR_ACCESS_PUSH, &vi, HCL_CNODE_GET_LOC(obj)); + HAK_ASSERT(hak, vi.type != VAR_NAMED); + return emit_variable_access(hak, VAR_ACCESS_PUSH, &vi, HAK_CNODE_GET_LOC(obj)); } /* TODO: check if it's the method name??? NOT POSSIBLE??? */ @@ -5152,72 +5152,72 @@ static HCL_INLINE int compile_dsymbol (hcl_t* hcl, hcl_cnode_t* obj) /* if not found or not beginning with self/super, carry on with remaining resolution methods */ } - cons = (hcl_oop_t)hcl_lookupsysdicforsymbol_noseterr(hcl, HCL_CNODE_GET_TOK(obj)); + cons = (hak_oop_t)hak_lookupsysdicforsymbol_noseterr(hak, HAK_CNODE_GET_TOK(obj)); if (!cons) { /* query the module for information if it is the first time * when the dotted symbol is seen */ - hcl_pfbase_t* pfbase; - hcl_mod_t* mod; - hcl_oop_t sym, val; + hak_pfbase_t* pfbase; + hak_mod_t* mod; + hak_oop_t sym, val; unsigned int kernel_bits; - pfbase = hcl_querymod(hcl, HCL_CNODE_GET_TOKPTR(obj), HCL_CNODE_GET_TOKLEN(obj), &mod); + pfbase = hak_querymod(hak, HAK_CNODE_GET_TOKPTR(obj), HAK_CNODE_GET_TOKLEN(obj), &mod); if (!pfbase) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_VARNAME, HCL_CNODE_GET_LOC(obj), HCL_CNODE_GET_TOK(obj), "unknown dotted symbol"); + hak_setsynerrbfmt(hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "unknown dotted symbol"); return -1; } - sym = hcl_makesymbol(hcl, HCL_CNODE_GET_TOKPTR(obj), HCL_CNODE_GET_TOKLEN(obj)); - if (HCL_UNLIKELY(!sym)) return -1; + sym = hak_makesymbol(hak, HAK_CNODE_GET_TOKPTR(obj), HAK_CNODE_GET_TOKLEN(obj)); + if (HAK_UNLIKELY(!sym)) return -1; - hcl_pushvolat(hcl, &sym); + hak_pushvolat(hak, &sym); switch (pfbase->type) { - case HCL_PFBASE_FUNC: + case HAK_PFBASE_FUNC: kernel_bits = 2; - val = hcl_makeprim(hcl, pfbase->handler, pfbase->minargs, pfbase->maxargs, mod); + val = hak_makeprim(hak, pfbase->handler, pfbase->minargs, pfbase->maxargs, mod); break; - case HCL_PFBASE_VAR: + case HAK_PFBASE_VAR: kernel_bits = 1; - val = hcl->_nil; + val = hak->_nil; break; - case HCL_PFBASE_CONST: + case HAK_PFBASE_CONST: /* TODO: create a value from the pfbase information. it needs to get extended first * can i make use of pfbase->handler type-cast to a differnt type? */ kernel_bits = 2; - val = hcl->_nil; + val = hak->_nil; break; default: - hcl_popvolat (hcl); - hcl_seterrbfmt(hcl, HCL_EINVAL, "invalid pfbase type - %d\n", pfbase->type); + hak_popvolat (hak); + hak_seterrbfmt(hak, HAK_EINVAL, "invalid pfbase type - %d\n", pfbase->type); return -1; } - if (!val || !(cons = (hcl_oop_t)hcl_putatsysdic(hcl, sym, val))) + if (!val || !(cons = (hak_oop_t)hak_putatsysdic(hak, sym, val))) { - hcl_popvolat (hcl); + hak_popvolat (hak); return -1; } - hcl_popvolat (hcl); + hak_popvolat (hak); /* make this dotted symbol special that it can't get changed * to a different value */ - HCL_OBJ_SET_FLAGS_KERNEL (sym, kernel_bits); + HAK_OBJ_SET_FLAGS_KERNEL (sym, kernel_bits); } - if (add_literal(hcl, cons, &index) <= -1 || - emit_single_param_instruction(hcl, HCL_CODE_PUSH_OBJECT_0, index, HCL_CNODE_GET_LOC(obj)) <= -1) return -1; + if (add_literal(hak, cons, &index) <= -1 || + emit_single_param_instruction(hak, HAK_CODE_PUSH_OBJECT_0, index, HAK_CNODE_GET_LOC(obj)) <= -1) return -1; return 0; } -HCL_UNUSED static int string_to_ooi (hcl_t* hcl, hcl_oocs_t* str, int radixed, hcl_ooi_t* num) +HAK_UNUSED static int string_to_ooi (hak_t* hak, hak_oocs_t* str, int radixed, hak_ooi_t* num) { /* [NOTE] * it is not a generic conversion functionu @@ -5225,14 +5225,14 @@ HCL_UNUSED static int string_to_ooi (hcl_t* hcl, hcl_oocs_t* str, int radixed, h * done by the lexical analyzer */ int v, negsign, base = 10; - const hcl_ooch_t* ptr, * end; - hcl_oow_t value, old_value; + const hak_ooch_t* ptr, * end; + hak_oow_t value, old_value; negsign = 0; ptr = str->ptr, end = str->ptr + str->len; - HCL_ASSERT(hcl, ptr < end); + HAK_ASSERT(hak, ptr < end); if (*ptr == '+' || *ptr == '-') { @@ -5243,12 +5243,12 @@ HCL_UNUSED static int string_to_ooi (hcl_t* hcl, hcl_oocs_t* str, int radixed, h if (radixed) { /* 0xFF80, 0b1111 */ - HCL_ASSERT(hcl, ptr < end); + HAK_ASSERT(hak, ptr < end); if (*ptr == '0') { ptr++; - HCL_ASSERT(hcl, ptr < end); + HAK_ASSERT(hak, ptr < end); if (*ptr == 'x') base = 16; else if (*ptr == 'o') base = 8; @@ -5264,7 +5264,7 @@ HCL_UNUSED static int string_to_ooi (hcl_t* hcl, hcl_oocs_t* str, int radixed, h base = 0; do { - base = base * 10 + HCL_CHAR_TO_NUM(*ptr, 10); + base = base * 10 + HAK_CHAR_TO_NUM(*ptr, 10); ptr++; } while (*ptr != 'r'); @@ -5273,22 +5273,22 @@ HCL_UNUSED static int string_to_ooi (hcl_t* hcl, hcl_oocs_t* str, int radixed, h if (base < 2 || base > 36) { - hcl_seterrbfmt(hcl, HCL_EINVAL, + hak_seterrbfmt(hak, HAK_EINVAL, "unsupported radix '%d' in radixed number '%.*js'", base, str->len, str->ptr); return -1; } } - HCL_ASSERT(hcl, ptr < end); + HAK_ASSERT(hak, ptr < end); value = old_value = 0; - while (ptr < end && (v = HCL_CHAR_TO_NUM(*ptr, base)) < base) + while (ptr < end && (v = HAK_CHAR_TO_NUM(*ptr, base)) < base) { value = value * base + v; if (value < old_value) { /* overflow must have occurred */ - hcl_seterrbfmt(hcl, HCL_ERANGE, "number too big - %.*js", str->len, str->ptr); + hak_seterrbfmt(hak, HAK_ERANGE, "number too big - %.*js", str->len, str->ptr); return -1; } old_value = value; @@ -5298,13 +5298,13 @@ HCL_UNUSED static int string_to_ooi (hcl_t* hcl, hcl_oocs_t* str, int radixed, h if (ptr < end) { /* trailing garbage? */ - hcl_seterrbfmt(hcl, HCL_EINVAL, "trailing garbage after numeric literal - %.*js", str->len, str->ptr); + hak_seterrbfmt(hak, HAK_EINVAL, "trailing garbage after numeric literal - %.*js", str->len, str->ptr); return -1; } - if (value > HCL_TYPE_MAX(hcl_ooi_t) + (negsign? 1: 0)) /* assume 2's complement */ + if (value > HAK_TYPE_MAX(hak_ooi_t) + (negsign? 1: 0)) /* assume 2's complement */ { - hcl_seterrbfmt(hcl, HCL_ERANGE, "number too big - %.*js", str->len, str->ptr); + hak_seterrbfmt(hak, HAK_ERANGE, "number too big - %.*js", str->len, str->ptr); return -1; } @@ -5314,10 +5314,10 @@ HCL_UNUSED static int string_to_ooi (hcl_t* hcl, hcl_oocs_t* str, int radixed, h return 0; } -static hcl_oop_t string_to_num (hcl_t* hcl, hcl_oocs_t* str, const hcl_loc_t* loc, int radixed) +static hak_oop_t string_to_num (hak_t* hak, hak_oocs_t* str, const hak_loc_t* loc, int radixed) { int negsign, base = 10; - const hcl_ooch_t* ptr, * end; + const hak_ooch_t* ptr, * end; negsign = 0; ptr = str->ptr, @@ -5330,7 +5330,7 @@ static hcl_oop_t string_to_num (hcl_t* hcl, hcl_oocs_t* str, const hcl_loc_t* lo * - it also assumes that the reader ensures that * there is at least 1 valid digit after radix specifier. */ - HCL_ASSERT(hcl, ptr < end); + HAK_ASSERT(hak, ptr < end); if (*ptr == '+' || *ptr == '-') { @@ -5341,12 +5341,12 @@ static hcl_oop_t string_to_num (hcl_t* hcl, hcl_oocs_t* str, const hcl_loc_t* lo if (radixed) { /* 0xFF80, 0b1111 */ - HCL_ASSERT(hcl, ptr < end); + HAK_ASSERT(hak, ptr < end); if (*ptr == '0') { ptr++; - HCL_ASSERT(hcl, ptr < end); + HAK_ASSERT(hak, ptr < end); if (*ptr == 'x') base = 16; else if (*ptr == 'o') base = 8; @@ -5363,33 +5363,33 @@ static hcl_oop_t string_to_num (hcl_t* hcl, hcl_oocs_t* str, const hcl_loc_t* lo base = 0; do { - base = base * 10 + HCL_CHAR_TO_NUM(*ptr, 10); + base = base * 10 + HAK_CHAR_TO_NUM(*ptr, 10); ptr++; } while (*ptr != 'r'); ptr++; } - HCL_ASSERT(hcl, base >= 2 && base <= 36); /* the lexer must guarantee this */ + HAK_ASSERT(hak, base >= 2 && base <= 36); /* the lexer must guarantee this */ /* if (base < 2 || base > 36) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_RADIX, loc, HCL_NULL, + hak_setsynerrbfmt(hak, HAK_SYNERR_RADIX, loc, HAK_NULL, "unsupported radix '%d' in radixed number '%.*js'", base, str->len, str->ptr); - return HCL_NULL; + return HAK_NULL; }*/ } /* TODO: handle floating point numbers ... etc */ if (negsign) base = -base; - return hcl_strtoint(hcl, ptr, end - ptr, base); + return hak_strtoint(hak, ptr, end - ptr, base); } -static hcl_oop_t string_to_fpdec (hcl_t* hcl, hcl_oocs_t* str, const hcl_loc_t* loc) +static hak_oop_t string_to_fpdec (hak_t* hak, hak_oocs_t* str, const hak_loc_t* loc) { - hcl_oow_t pos; - hcl_oow_t scale = 0; - hcl_oop_t v; + hak_oow_t pos; + hak_oow_t scale = 0; + hak_oop_t v; pos = str->len; while (pos > 0) @@ -5398,272 +5398,272 @@ static hcl_oop_t string_to_fpdec (hcl_t* hcl, hcl_oocs_t* str, const hcl_loc_t* if (str->ptr[pos] == '.') { scale = str->len - pos - 1; - if (scale > HCL_SMOOI_MAX) + if (scale > HAK_SMOOI_MAX) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_NUMRANGE, loc, str, "too many digits after decimal point"); - return HCL_NULL; + hak_setsynerrbfmt(hak, HAK_SYNERR_NUMRANGE, loc, str, "too many digits after decimal point"); + return HAK_NULL; } - HCL_ASSERT(hcl, scale > 0); - /*if (scale > 0)*/ HCL_MEMMOVE (&str->ptr[pos], &str->ptr[pos + 1], scale * HCL_SIZEOF(str->ptr[0])); /* remove the decimal point */ + HAK_ASSERT(hak, scale > 0); + /*if (scale > 0)*/ HAK_MEMMOVE (&str->ptr[pos], &str->ptr[pos + 1], scale * HAK_SIZEOF(str->ptr[0])); /* remove the decimal point */ break; } } /* if no decimal point is included or no digit after the point , you must not call this function */ - HCL_ASSERT(hcl, scale > 0); + HAK_ASSERT(hak, scale > 0); - v = hcl_strtoint(hcl, str->ptr, str->len - 1, 10); - if (HCL_UNLIKELY(!v)) return HCL_NULL; + v = hak_strtoint(hak, str->ptr, str->len - 1, 10); + if (HAK_UNLIKELY(!v)) return HAK_NULL; - return hcl_makefpdec(hcl, v, scale); + return hak_makefpdec(hak, v, scale); } -static int compile_symbol_literal (hcl_t* hcl) +static int compile_symbol_literal (hak_t* hak) { - hcl_cframe_t* cf; - hcl_cnode_t* oprnd; - hcl_oop_t lit; + hak_cframe_t* cf; + hak_cnode_t* oprnd; + hak_oop_t lit; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_COMPILE_SYMBOL_LITERAL); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_COMPILE_SYMBOL_LITERAL); + HAK_ASSERT(hak, cf->operand != HAK_NULL); oprnd = cf->operand; - HCL_ASSERT(hcl, HCL_CNODE_GET_TYPE(oprnd) == HCL_CNODE_SYMBOL); + HAK_ASSERT(hak, HAK_CNODE_GET_TYPE(oprnd) == HAK_CNODE_SYMBOL); - lit = hcl_makesymbol(hcl, HCL_CNODE_GET_TOKPTR(oprnd), HCL_CNODE_GET_TOKLEN(oprnd)); - if (HCL_UNLIKELY(!lit)) return -1; + lit = hak_makesymbol(hak, HAK_CNODE_GET_TOKPTR(oprnd), HAK_CNODE_GET_TOKLEN(oprnd)); + if (HAK_UNLIKELY(!lit)) return -1; - if (emit_push_literal(hcl, lit, HCL_CNODE_GET_LOC(oprnd)) <= -1) return -1; - POP_CFRAME (hcl); + if (emit_push_literal(hak, lit, HAK_CNODE_GET_LOC(oprnd)) <= -1) return -1; + POP_CFRAME (hak); return 0; } -static int compile_object (hcl_t* hcl) +static int compile_object (hak_t* hak) { - hcl_cframe_t* cf; - hcl_cnode_t* oprnd; - hcl_oop_t lit; + hak_cframe_t* cf; + hak_cnode_t* oprnd; + hak_oop_t lit; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_COMPILE_OBJECT); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_COMPILE_OBJECT); + HAK_ASSERT(hak, cf->operand != HAK_NULL); oprnd = cf->operand; redo: - switch (HCL_CNODE_GET_TYPE(oprnd)) + switch (HAK_CNODE_GET_TYPE(oprnd)) { - case HCL_CNODE_NIL: - if (emit_byte_instruction(hcl, HCL_CODE_PUSH_NIL, HCL_CNODE_GET_LOC(oprnd)) <= -1) return -1; + case HAK_CNODE_NIL: + if (emit_byte_instruction(hak, HAK_CODE_PUSH_NIL, HAK_CNODE_GET_LOC(oprnd)) <= -1) return -1; goto done; - case HCL_CNODE_TRUE: - if (emit_byte_instruction(hcl, HCL_CODE_PUSH_TRUE, HCL_CNODE_GET_LOC(oprnd)) <= -1) return -1; + case HAK_CNODE_TRUE: + if (emit_byte_instruction(hak, HAK_CODE_PUSH_TRUE, HAK_CNODE_GET_LOC(oprnd)) <= -1) return -1; goto done; - case HCL_CNODE_FALSE: - if (emit_byte_instruction(hcl, HCL_CODE_PUSH_FALSE, HCL_CNODE_GET_LOC(oprnd)) <= -1) return -1; + case HAK_CNODE_FALSE: + if (emit_byte_instruction(hak, HAK_CODE_PUSH_FALSE, HAK_CNODE_GET_LOC(oprnd)) <= -1) return -1; goto done; - case HCL_CNODE_SELF: - case HCL_CNODE_SUPER: + case HAK_CNODE_SELF: + case HAK_CNODE_SUPER: /* if super is not sent a message, super represents the receiver just like self does */ /* TODO: SELF and SUPER must be limited to methods or is it ok if it just pushes the fake receiver in a normal function call?? */ - if (emit_byte_instruction(hcl, HCL_CODE_PUSH_RECEIVER, HCL_CNODE_GET_LOC(oprnd)) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_PUSH_RECEIVER, HAK_CNODE_GET_LOC(oprnd)) <= -1) return -1; goto done; /* TODO: this-context */ - case HCL_CNODE_CHARLIT: - lit = HCL_CHAR_TO_OOP(oprnd->u.charlit.v); + case HAK_CNODE_CHARLIT: + lit = HAK_CHAR_TO_OOP(oprnd->u.charlit.v); goto literal; - case HCL_CNODE_BCHRLIT: /* byte character still converts to charcter */ - lit = HCL_CHAR_TO_OOP((hcl_ooch_t)oprnd->u.bchrlit.v); + case HAK_CNODE_BCHRLIT: /* byte character still converts to charcter */ + lit = HAK_CHAR_TO_OOP((hak_ooch_t)oprnd->u.bchrlit.v); goto literal; - case HCL_CNODE_STRLIT: - lit = hcl_makestring(hcl, HCL_CNODE_GET_TOKPTR(oprnd), HCL_CNODE_GET_TOKLEN(oprnd)); - if (HCL_UNLIKELY(!lit)) return -1; + case HAK_CNODE_STRLIT: + lit = hak_makestring(hak, HAK_CNODE_GET_TOKPTR(oprnd), HAK_CNODE_GET_TOKLEN(oprnd)); + if (HAK_UNLIKELY(!lit)) return -1; goto literal; - case HCL_CNODE_BSTRLIT: - lit = hcl_makebytestring(hcl, HCL_CNODE_GET_TOKPTR(oprnd), HCL_CNODE_GET_TOKLEN(oprnd)); - if (HCL_UNLIKELY(!lit)) return -1; + case HAK_CNODE_BSTRLIT: + lit = hak_makebytestring(hak, HAK_CNODE_GET_TOKPTR(oprnd), HAK_CNODE_GET_TOKLEN(oprnd)); + if (HAK_UNLIKELY(!lit)) return -1; goto literal; - case HCL_CNODE_SYMLIT: - lit = hcl_makesymbol(hcl, HCL_CNODE_GET_TOKPTR(oprnd), HCL_CNODE_GET_TOKLEN(oprnd)); - if (HCL_UNLIKELY(!lit)) return -1; + case HAK_CNODE_SYMLIT: + lit = hak_makesymbol(hak, HAK_CNODE_GET_TOKPTR(oprnd), HAK_CNODE_GET_TOKLEN(oprnd)); + if (HAK_UNLIKELY(!lit)) return -1; goto literal; - case HCL_CNODE_NUMLIT: - lit = string_to_num(hcl, HCL_CNODE_GET_TOK(oprnd), HCL_CNODE_GET_LOC(oprnd), 0); - if (HCL_UNLIKELY(!lit)) return -1; + case HAK_CNODE_NUMLIT: + lit = string_to_num(hak, HAK_CNODE_GET_TOK(oprnd), HAK_CNODE_GET_LOC(oprnd), 0); + if (HAK_UNLIKELY(!lit)) return -1; goto literal; - case HCL_CNODE_RADNUMLIT: - lit = string_to_num(hcl, HCL_CNODE_GET_TOK(oprnd), HCL_CNODE_GET_LOC(oprnd), 1); - if (HCL_UNLIKELY(!lit)) return -1; + case HAK_CNODE_RADNUMLIT: + lit = string_to_num(hak, HAK_CNODE_GET_TOK(oprnd), HAK_CNODE_GET_LOC(oprnd), 1); + if (HAK_UNLIKELY(!lit)) return -1; goto literal; - case HCL_CNODE_FPDECLIT: - lit = string_to_fpdec(hcl, HCL_CNODE_GET_TOK(oprnd), HCL_CNODE_GET_LOC(oprnd)); - if (HCL_UNLIKELY(!lit)) return -1; + case HAK_CNODE_FPDECLIT: + lit = string_to_fpdec(hak, HAK_CNODE_GET_TOK(oprnd), HAK_CNODE_GET_LOC(oprnd)); + if (HAK_UNLIKELY(!lit)) return -1; goto literal; - case HCL_CNODE_SMPTRLIT: - lit = HCL_SMPTR_TO_OOP(oprnd->u.smptrlit.v); + case HAK_CNODE_SMPTRLIT: + lit = HAK_SMPTR_TO_OOP(oprnd->u.smptrlit.v); goto literal; - case HCL_CNODE_ERRLIT: - lit = HCL_ERROR_TO_OOP(oprnd->u.errlit.v); + case HAK_CNODE_ERRLIT: + lit = HAK_ERROR_TO_OOP(oprnd->u.errlit.v); goto literal; - case HCL_CNODE_SYMBOL: /* symbol. but not a literal. usually a variable */ - if (compile_symbol(hcl, oprnd) <= -1) return -1; + case HAK_CNODE_SYMBOL: /* symbol. but not a literal. usually a variable */ + if (compile_symbol(hak, oprnd) <= -1) return -1; goto done; - case HCL_CNODE_DSYMBOL: - if (compile_dsymbol(hcl, oprnd) <= -1) return -1; + case HAK_CNODE_DSYMBOL: + if (compile_dsymbol(hak, oprnd) <= -1) return -1; goto done; - case HCL_CNODE_CONS: + case HAK_CNODE_CONS: { - switch (HCL_CNODE_CONS_CONCODE(oprnd)) + switch (HAK_CNODE_CONS_CONCODE(oprnd)) { - case HCL_CONCODE_ALIST: - if (compile_cons_alist_expression(hcl, oprnd) <= -1) return -1; + case HAK_CONCODE_ALIST: + if (compile_cons_alist_expression(hak, oprnd) <= -1) return -1; break; - case HCL_CONCODE_XLIST: - if (compile_cons_xlist_expression(hcl, oprnd, 0) <= -1) return -1; + case HAK_CONCODE_XLIST: + if (compile_cons_xlist_expression(hak, oprnd, 0) <= -1) return -1; break; - case HCL_CONCODE_BLIST: /* message send with binop */ - case HCL_CONCODE_MLIST: /* message send expression */ - if (compile_cons_mlist_expression(hcl, oprnd, 0) <= -1) return -1; + case HAK_CONCODE_BLIST: /* message send with binop */ + case HAK_CONCODE_MLIST: /* message send expression */ + if (compile_cons_mlist_expression(hak, oprnd, 0) <= -1) return -1; break; - case HCL_CONCODE_BLOCK: - if (compile_cons_block_expression(hcl, oprnd) <= -1) return -1; + case HAK_CONCODE_BLOCK: + if (compile_cons_block_expression(hak, oprnd) <= -1) return -1; break; - case HCL_CONCODE_ARRAY: - if (compile_cons_array_expression(hcl, oprnd) <= -1) return -1; + case HAK_CONCODE_ARRAY: + if (compile_cons_array_expression(hak, oprnd) <= -1) return -1; break; - case HCL_CONCODE_BYTEARRAY: - case HCL_CONCODE_CHARARRAY: - if (compile_cons_bytearray_expression(hcl, oprnd, HCL_CNODE_CONS_CONCODE(oprnd)) <= -1) return -1; + case HAK_CONCODE_BYTEARRAY: + case HAK_CONCODE_CHARARRAY: + if (compile_cons_bytearray_expression(hak, oprnd, HAK_CNODE_CONS_CONCODE(oprnd)) <= -1) return -1; break; - case HCL_CONCODE_DIC: - if (compile_cons_dic_expression(hcl, oprnd) <= -1) return -1; + case HAK_CONCODE_DIC: + if (compile_cons_dic_expression(hak, oprnd) <= -1) return -1; break; - case HCL_CONCODE_QLIST: - if (compile_cons_qlist_expression(hcl, oprnd) <= -1) return -1; + case HAK_CONCODE_QLIST: + if (compile_cons_qlist_expression(hak, oprnd) <= -1) return -1; break; - case HCL_CONCODE_VLIST: - hcl_setsynerrbfmt(hcl, HCL_SYNERR_VARDCLBANNED, HCL_CNODE_GET_LOC(oprnd), HCL_NULL, "variable declaration disallowed"); + case HAK_CONCODE_VLIST: + hak_setsynerrbfmt(hak, HAK_SYNERR_VARDCLBANNED, HAK_CNODE_GET_LOC(oprnd), HAK_NULL, "variable declaration disallowed"); return -1; - case HCL_CONCODE_TUPLE: + case HAK_CONCODE_TUPLE: /* [a, b] is only allowed as a lvalue or in class member varialble declaration for now */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BANNED, HCL_CNODE_GET_LOC(oprnd), HCL_NULL, "tuple disallowed"); + hak_setsynerrbfmt(hak, HAK_SYNERR_BANNED, HAK_CNODE_GET_LOC(oprnd), HAK_NULL, "tuple disallowed"); return -1; default: - hcl_setsynerrbfmt(hcl, HCL_SYNERR_INTERN, HCL_CNODE_GET_LOC(oprnd), HCL_NULL, "internal error - unknown cons type %d", HCL_CNODE_CONS_CONCODE(oprnd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_INTERN, HAK_CNODE_GET_LOC(oprnd), HAK_NULL, "internal error - unknown cons type %d", HAK_CNODE_CONS_CONCODE(oprnd)); return -1; } break; } - case HCL_CNODE_ELIST: + case HAK_CNODE_ELIST: { /* empty list */ - switch (HCL_CNODE_ELIST_CONCODE(oprnd)) + switch (HAK_CNODE_ELIST_CONCODE(oprnd)) { - case HCL_CONCODE_ALIST: - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BANNED, HCL_CNODE_GET_LOC(oprnd), HCL_NULL, "empty assignment list"); + case HAK_CONCODE_ALIST: + hak_setsynerrbfmt(hak, HAK_SYNERR_BANNED, HAK_CNODE_GET_LOC(oprnd), HAK_NULL, "empty assignment list"); return -1; - case HCL_CONCODE_XLIST: - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BANNED, HCL_CNODE_GET_LOC(oprnd), HCL_NULL, "empty executable list"); + case HAK_CONCODE_XLIST: + hak_setsynerrbfmt(hak, HAK_SYNERR_BANNED, HAK_CNODE_GET_LOC(oprnd), HAK_NULL, "empty executable list"); return -1; - case HCL_CONCODE_BLIST: + case HAK_CONCODE_BLIST: /* this must not happend as the reader prevents it */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BANNED, HCL_CNODE_GET_LOC(oprnd), HCL_NULL, "empty binop list"); + hak_setsynerrbfmt(hak, HAK_SYNERR_BANNED, HAK_CNODE_GET_LOC(oprnd), HAK_NULL, "empty binop list"); return -1; - case HCL_CONCODE_MLIST: - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BANNED, HCL_CNODE_GET_LOC(oprnd), HCL_NULL, "empty message send list"); + case HAK_CONCODE_MLIST: + hak_setsynerrbfmt(hak, HAK_SYNERR_BANNED, HAK_CNODE_GET_LOC(oprnd), HAK_NULL, "empty message send list"); return -1; - case HCL_CONCODE_BLOCK: - if (compile_cons_block_expression(hcl, oprnd) <= -1) return -1; + case HAK_CONCODE_BLOCK: + if (compile_cons_block_expression(hak, oprnd) <= -1) return -1; break; - case HCL_CONCODE_ARRAY: - if (emit_single_param_instruction(hcl, HCL_CODE_MAKE_ARRAY, 0, HCL_CNODE_GET_LOC(oprnd)) <= -1) return -1; + case HAK_CONCODE_ARRAY: + if (emit_single_param_instruction(hak, HAK_CODE_MAKE_ARRAY, 0, HAK_CNODE_GET_LOC(oprnd)) <= -1) return -1; goto done; - case HCL_CONCODE_BYTEARRAY: - if (emit_single_param_instruction(hcl, HCL_CODE_MAKE_BYTEARRAY, 0, HCL_CNODE_GET_LOC(oprnd)) <= -1) return -1; + case HAK_CONCODE_BYTEARRAY: + if (emit_single_param_instruction(hak, HAK_CODE_MAKE_BYTEARRAY, 0, HAK_CNODE_GET_LOC(oprnd)) <= -1) return -1; goto done; - case HCL_CONCODE_CHARARRAY: - if (emit_single_param_instruction(hcl, HCL_CODE_MAKE_CHARARRAY, 0, HCL_CNODE_GET_LOC(oprnd)) <= -1) return -1; + case HAK_CONCODE_CHARARRAY: + if (emit_single_param_instruction(hak, HAK_CODE_MAKE_CHARARRAY, 0, HAK_CNODE_GET_LOC(oprnd)) <= -1) return -1; goto done; - case HCL_CONCODE_DIC: - if (emit_single_param_instruction(hcl, HCL_CODE_MAKE_DIC, 16, HCL_CNODE_GET_LOC(oprnd)) <= -1) return -1; + case HAK_CONCODE_DIC: + if (emit_single_param_instruction(hak, HAK_CODE_MAKE_DIC, 16, HAK_CNODE_GET_LOC(oprnd)) <= -1) return -1; goto done; - case HCL_CONCODE_QLIST: - if (emit_byte_instruction(hcl, HCL_CODE_PUSH_NIL, HCL_CNODE_GET_LOC(oprnd)) <= -1) return -1; + case HAK_CONCODE_QLIST: + if (emit_byte_instruction(hak, HAK_CODE_PUSH_NIL, HAK_CNODE_GET_LOC(oprnd)) <= -1) return -1; goto done; - case HCL_CONCODE_VLIST: - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BANNED, HCL_CNODE_GET_LOC(oprnd), HCL_NULL, "empty variable declaration"); + case HAK_CONCODE_VLIST: + hak_setsynerrbfmt(hak, HAK_SYNERR_BANNED, HAK_CNODE_GET_LOC(oprnd), HAK_NULL, "empty variable declaration"); return -1; - case HCL_CONCODE_TUPLE: - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BANNED, HCL_CNODE_GET_LOC(oprnd), HCL_NULL, "empty tuple"); + case HAK_CONCODE_TUPLE: + hak_setsynerrbfmt(hak, HAK_SYNERR_BANNED, HAK_CNODE_GET_LOC(oprnd), HAK_NULL, "empty tuple"); return -1; default: - hcl_setsynerrbfmt(hcl, HCL_SYNERR_INTERN, HCL_CNODE_GET_LOC(oprnd), HCL_NULL, "internal error - unknown list type %d", HCL_CNODE_CONS_CONCODE(oprnd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_INTERN, HAK_CNODE_GET_LOC(oprnd), HAK_NULL, "internal error - unknown list type %d", HAK_CNODE_CONS_CONCODE(oprnd)); return -1; } break; } - case HCL_CNODE_SHELL: + case HAK_CNODE_SHELL: /* a shell node is just a wrapper of an actual node */ oprnd = oprnd->u.shell.obj; goto redo; - case HCL_CNODE_ELLIPSIS: - case HCL_CNODE_TRPCOLONS: - case HCL_CNODE_DBLCOLONS: - case HCL_CNODE_COLON: - case HCL_CNODE_COLONLT: - case HCL_CNODE_COLONGT: + case HAK_CNODE_ELLIPSIS: + case HAK_CNODE_TRPCOLONS: + case HAK_CNODE_DBLCOLONS: + case HAK_CNODE_COLON: + case HAK_CNODE_COLONLT: + case HAK_CNODE_COLONGT: default: /* - hcl_setsynerrbfmt(hcl, HCL_SYNERR_INTERN, HCL_CNODE_GET_LOC(oprnd), HCL_CNODE_GET_TOK(oprnd), "internal error - unexpected object type %d", HCL_CNODE_GET_TYPE(oprnd)); + hak_setsynerrbfmt(hak, HAK_SYNERR_INTERN, HAK_CNODE_GET_LOC(oprnd), HAK_CNODE_GET_TOK(oprnd), "internal error - unexpected object type %d", HAK_CNODE_GET_TYPE(oprnd)); */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BANNED, HCL_CNODE_GET_LOC(oprnd), HCL_NULL, + hak_setsynerrbfmt(hak, HAK_SYNERR_BANNED, HAK_CNODE_GET_LOC(oprnd), HAK_NULL, "'%.*js' prohibited in this context", - HCL_CNODE_GET_TOKLEN(oprnd), HCL_CNODE_GET_TOKPTR(oprnd)); + HAK_CNODE_GET_TOKLEN(oprnd), HAK_CNODE_GET_TOKPTR(oprnd)); return -1; } @@ -5672,40 +5672,40 @@ redo: return 0; literal: - if (emit_push_literal(hcl, lit, HCL_CNODE_GET_LOC(oprnd)) <= -1) return -1; + if (emit_push_literal(hak, lit, HAK_CNODE_GET_LOC(oprnd)) <= -1) return -1; done: - POP_CFRAME (hcl); + POP_CFRAME (hak); return 0; } -static int compile_object_r (hcl_t* hcl) +static int compile_object_r (hak_t* hak) { - hcl_cframe_t* cf; - hcl_cnode_t* oprnd; + hak_cframe_t* cf; + hak_cnode_t* oprnd; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_COMPILE_OBJECT_R); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_COMPILE_OBJECT_R); + HAK_ASSERT(hak, cf->operand != HAK_NULL); oprnd = cf->operand; - if (HCL_CNODE_IS_CONS(oprnd)) + if (HAK_CNODE_IS_CONS(oprnd)) { - hcl_concode_t cc; + hak_concode_t cc; - cc = HCL_CNODE_CONS_CONCODE(oprnd); + cc = HAK_CNODE_CONS_CONCODE(oprnd); switch (cc) { - case HCL_CONCODE_XLIST: - return compile_cons_xlist_expression(hcl, oprnd, cf->u.obj_r.nrets); + case HAK_CONCODE_XLIST: + return compile_cons_xlist_expression(hak, oprnd, cf->u.obj_r.nrets); - case HCL_CONCODE_BLIST: - case HCL_CONCODE_MLIST: - return compile_cons_mlist_expression(hcl, oprnd, cf->u.obj_r.nrets); + case HAK_CONCODE_BLIST: + case HAK_CONCODE_MLIST: + return compile_cons_mlist_expression(hak, oprnd, cf->u.obj_r.nrets); #if 0 - case HCL_CONCODE_ALIST: + case HAK_CONCODE_ALIST: /* TODO: can support it? */ k := ([a, b, c] := (+ 10 20 30)) break; @@ -5715,18 +5715,18 @@ static int compile_object_r (hcl_t* hcl) } } - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BANNED, HCL_CNODE_GET_LOC(oprnd), HCL_NULL, "non-function call/non-message send disallowed"); + hak_setsynerrbfmt(hak, HAK_SYNERR_BANNED, HAK_CNODE_GET_LOC(oprnd), HAK_NULL, "non-function call/non-message send disallowed"); return -1; } -static int compile_object_list (hcl_t* hcl) +static int compile_object_list (hak_t* hak) { - hcl_cframe_t* cf; - hcl_cnode_t* oprnd; + hak_cframe_t* cf; + hak_cnode_t* oprnd; int cop; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_COMPILE_ARGUMENT_LIST || + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_COMPILE_ARGUMENT_LIST || cf->opcode == COP_COMPILE_OBJECT_LIST || cf->opcode == COP_COMPILE_OBJECT_LIST_TAIL || cf->opcode == COP_COMPILE_IF_OBJECT_LIST || @@ -5739,70 +5739,70 @@ static int compile_object_list (hcl_t* hcl) if (!oprnd) { - POP_CFRAME (hcl); + POP_CFRAME (hak); } else { - hcl_cnode_t* car, * cdr; + hak_cnode_t* car, * cdr; #if 0 if (cop != COP_COMPILE_ARGUMENT_LIST) { /* eliminate unnecessary non-function calls. keep the last one */ - while (HCL_CNODE_IS_CONS(oprnd)) + while (HAK_CNODE_IS_CONS(oprnd)) { - cdr = HCL_CNODE_CONS_CDR(oprnd); + cdr = HAK_CNODE_CONS_CDR(oprnd); if (!cdr) break; /* keep the last one */ - if (HCL_CNODE_IS_CONS(cdr)) + if (HAK_CNODE_IS_CONS(cdr)) { /* look ahead */ /* keep the last one before elif or else... */ - car = HCL_CNODE_CONS_CAR(cdr); - if (HCL_CNODE_IS_SYMBOL(car) && HCL_CNODE_SYMBOL_SYNCODE(car)) break; + car = HAK_CNODE_CONS_CAR(cdr); + if (HAK_CNODE_IS_SYMBOL(car) && HAK_CNODE_SYMBOL_SYNCODE(car)) break; } - car = HCL_CNODE_CONS_CAR(oprnd); + car = HAK_CNODE_CONS_CAR(oprnd); /* this optimization is buggy for now... need to perfect the break condition here */ - if (HCL_CNODE_IS_CONS(car) || (HCL_CNODE_IS_SYMBOL(car) && HCL_CNODE_SYMBOL_SYNCODE(car)) || HCL_CNODE_IS_ELLIPSIS(car) || HCL_CNODE_IS_DBLCOLONS(car)) break; + if (HAK_CNODE_IS_CONS(car) || (HAK_CNODE_IS_SYMBOL(car) && HAK_CNODE_SYMBOL_SYNCODE(car)) || HAK_CNODE_IS_ELLIPSIS(car) || HAK_CNODE_IS_DBLCOLONS(car)) break; oprnd = cdr; } - HCL_ASSERT(hcl, oprnd != HCL_NULL); + HAK_ASSERT(hak, oprnd != HAK_NULL); } #endif - if (!HCL_CNODE_IS_CONS(oprnd)) + if (!HAK_CNODE_IS_CONS(oprnd)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(oprnd), HCL_CNODE_GET_TOK(oprnd), "redundant cdr in the object list"); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(oprnd), HAK_CNODE_GET_TOK(oprnd), "redundant cdr in the object list"); return -1; } - car = HCL_CNODE_CONS_CAR(oprnd); - cdr = HCL_CNODE_CONS_CDR(oprnd); + car = HAK_CNODE_CONS_CAR(oprnd); + cdr = HAK_CNODE_CONS_CDR(oprnd); if (cop == COP_COMPILE_IF_OBJECT_LIST || cop == COP_COMPILE_IF_OBJECT_LIST_TAIL) { - if (HCL_CNODE_IS_TYPED(car, HCL_CNODE_ELIF)) + if (HAK_CNODE_IS_TYPED(car, HAK_CNODE_ELIF)) { - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_ELIF, oprnd); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_ELIF, oprnd); goto done; } - else if (HCL_CNODE_IS_TYPED(car, HCL_CNODE_ELSE)) + else if (HAK_CNODE_IS_TYPED(car, HAK_CNODE_ELSE)) { - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_ELSE, oprnd); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_ELSE, oprnd); goto done; } } else if (cop == COP_COMPILE_TRY_OBJECT_LIST || cop == COP_COMPILE_TRY_OBJECT_LIST_TAIL) { - if (HCL_CNODE_IS_TYPED(car, HCL_CNODE_CATCH)) + if (HAK_CNODE_IS_TYPED(car, HAK_CNODE_CATCH)) { - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_CATCH, oprnd); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_CATCH, oprnd); goto done; } } - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT, car); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT, car); if (cdr) { @@ -5822,7 +5822,7 @@ static int compile_object_list (hcl_t* hcl) nextcop = (cop == COP_COMPILE_OBJECT_LIST)? COP_COMPILE_OBJECT_LIST_TAIL: (cop == COP_COMPILE_IF_OBJECT_LIST)? COP_COMPILE_IF_OBJECT_LIST_TAIL: (cop == COP_COMPILE_TRY_OBJECT_LIST)? COP_COMPILE_TRY_OBJECT_LIST_TAIL: cop; - PUSH_SUBCFRAME(hcl, nextcop, cdr); + PUSH_SUBCFRAME(hak, nextcop, cdr); } if (cop == COP_COMPILE_OBJECT_LIST_TAIL || @@ -5833,7 +5833,7 @@ static int compile_object_list (hcl_t* hcl) * and onwards. this goes above COP_COMPILE_OBJECT.*/ /* TODO: if the previous operators is known to divert execution flow, it may skip this. * for instance, some 'RETURN' or 'JUMP' operators or class-level variable declaration with 'var' */ - PUSH_CFRAME(hcl, COP_EMIT_POP_STACKTOP, oprnd); + PUSH_CFRAME(hak, COP_EMIT_POP_STACKTOP, oprnd); } } @@ -5841,80 +5841,80 @@ done: return 0; } -static int compile_array_list (hcl_t* hcl) +static int compile_array_list (hak_t* hak) { - hcl_cframe_t* cf; - hcl_cnode_t* oprnd; + hak_cframe_t* cf; + hak_cnode_t* oprnd; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_COMPILE_ARRAY_LIST); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_COMPILE_ARRAY_LIST); oprnd = cf->operand; if (!oprnd) { - POP_CFRAME (hcl); + POP_CFRAME (hak); } else { - hcl_cnode_t* car, * cdr; - hcl_ooi_t oldidx; + hak_cnode_t* car, * cdr; + hak_ooi_t oldidx; - if (!HCL_CNODE_IS_CONS(oprnd)) + if (!HAK_CNODE_IS_CONS(oprnd)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(oprnd), HCL_CNODE_GET_TOK(oprnd), "redundant cdr in the array list"); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(oprnd), HAK_CNODE_GET_TOK(oprnd), "redundant cdr in the array list"); return -1; } - car = HCL_CNODE_CONS_CAR(oprnd); - cdr = HCL_CNODE_CONS_CDR(oprnd); + car = HAK_CNODE_CONS_CAR(oprnd); + cdr = HAK_CNODE_CONS_CDR(oprnd); oldidx = cf->u.array_list.index; - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT, car); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT, car); if (cdr) { - PUSH_SUBCFRAME(hcl, COP_COMPILE_ARRAY_LIST, cdr); - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_COMPILE_ARRAY_LIST, cdr); + cf = GET_SUBCFRAME(hak); cf->u.array_list.index = oldidx + 1; } - PUSH_SUBCFRAME(hcl, COP_EMIT_POP_INTO_ARRAY, car); - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_EMIT_POP_INTO_ARRAY, car); + cf = GET_SUBCFRAME(hak); cf->u.array_list.index = oldidx; } return 0; } -static int compile_pure_array_list (hcl_t* hcl) +static int compile_pure_array_list (hak_t* hak) { - hcl_cframe_t* cf; - hcl_cnode_t* oprnd; + hak_cframe_t* cf; + hak_cnode_t* oprnd; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_COMPILE_PURE_ARRAY_LIST); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_COMPILE_PURE_ARRAY_LIST); oprnd = cf->operand; if (!oprnd) { - POP_CFRAME (hcl); + POP_CFRAME (hak); } else { - hcl_cnode_t* car, * cdr; - hcl_ooi_t oldidx; + hak_cnode_t* car, * cdr; + hak_ooi_t oldidx; int elem_type; - if (!HCL_CNODE_IS_CONS(oprnd)) + if (!HAK_CNODE_IS_CONS(oprnd)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(oprnd), HCL_CNODE_GET_TOK(oprnd), "redundant cdr in the byte-array list"); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(oprnd), HAK_CNODE_GET_TOK(oprnd), "redundant cdr in the byte-array list"); return -1; } - car = HCL_CNODE_CONS_CAR(oprnd); - cdr = HCL_CNODE_CONS_CDR(oprnd); + car = HAK_CNODE_CONS_CAR(oprnd); + cdr = HAK_CNODE_CONS_CDR(oprnd); oldidx = cf->u.pure_array_list.index; elem_type = cf->u.pure_array_list.elem_type; @@ -5922,17 +5922,17 @@ static int compile_pure_array_list (hcl_t* hcl) /* TODO: compile type check if the data element is literal... runtime check if the data is a variable or something... */ - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT, car); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT, car); if (cdr) { - PUSH_SUBCFRAME(hcl, COP_COMPILE_PURE_ARRAY_LIST, cdr); - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_COMPILE_PURE_ARRAY_LIST, cdr); + cf = GET_SUBCFRAME(hak); cf->u.pure_array_list.elem_type = elem_type; cf->u.pure_array_list.index = oldidx + 1; } - PUSH_SUBCFRAME(hcl, COP_EMIT_POP_INTO_PURE_ARRAY, car); - cf = GET_SUBCFRAME(hcl); + PUSH_SUBCFRAME(hak, COP_EMIT_POP_INTO_PURE_ARRAY, car); + cf = GET_SUBCFRAME(hak); cf->u.pure_array_list.elem_type = elem_type; cf->u.pure_array_list.index = oldidx; } @@ -5941,94 +5941,94 @@ static int compile_pure_array_list (hcl_t* hcl) } -static int compile_dic_list (hcl_t* hcl) +static int compile_dic_list (hak_t* hak) { - hcl_cframe_t* cf; - hcl_cnode_t* oprnd; + hak_cframe_t* cf; + hak_cnode_t* oprnd; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_COMPILE_DIC_LIST); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_COMPILE_DIC_LIST); oprnd = cf->operand; if (!oprnd) { - POP_CFRAME (hcl); + POP_CFRAME (hak); } else { - hcl_cnode_t* car, * cdr, * cadr, * cddr; + hak_cnode_t* car, * cdr, * cadr, * cddr; - if (!HCL_CNODE_IS_CONS(oprnd)) + if (!HAK_CNODE_IS_CONS(oprnd)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_DOTBANNED, HCL_CNODE_GET_LOC(oprnd), HCL_CNODE_GET_TOK(oprnd), "redundant cdr in the dictionary list"); + hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(oprnd), HAK_CNODE_GET_TOK(oprnd), "redundant cdr in the dictionary list"); return -1; } - car = HCL_CNODE_CONS_CAR(oprnd); - cdr = HCL_CNODE_CONS_CDR(oprnd); + car = HAK_CNODE_CONS_CAR(oprnd); + cdr = HAK_CNODE_CONS_CDR(oprnd); - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT, car); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT, car); if (!cdr) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_UNBALKV, HCL_CNODE_GET_LOC(car), HCL_NULL, "no value for key %.*js", HCL_CNODE_GET_TOKLEN(car), HCL_CNODE_GET_TOKPTR(car)); + hak_setsynerrbfmt(hak, HAK_SYNERR_UNBALKV, HAK_CNODE_GET_LOC(car), HAK_NULL, "no value for key %.*js", HAK_CNODE_GET_TOKLEN(car), HAK_CNODE_GET_TOKPTR(car)); return -1; } - cadr = HCL_CNODE_CONS_CAR(cdr); - cddr = HCL_CNODE_CONS_CDR(cdr); + cadr = HAK_CNODE_CONS_CAR(cdr); + cddr = HAK_CNODE_CONS_CDR(cdr); if (cddr) { - PUSH_SUBCFRAME(hcl, COP_COMPILE_DIC_LIST, cddr); + PUSH_SUBCFRAME(hak, COP_COMPILE_DIC_LIST, cddr); } - PUSH_SUBCFRAME(hcl, COP_EMIT_POP_INTO_DIC, cdr); - PUSH_SUBCFRAME(hcl, COP_COMPILE_OBJECT, cadr); + PUSH_SUBCFRAME(hak, COP_EMIT_POP_INTO_DIC, cdr); + PUSH_SUBCFRAME(hak, COP_COMPILE_OBJECT, cadr); } return 0; } -static int compile_qlist (hcl_t* hcl) +static int compile_qlist (hak_t* hak) { - hcl_cframe_t* cf; - hcl_cnode_t* oprnd; + hak_cframe_t* cf; + hak_cnode_t* oprnd; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_COMPILE_QLIST); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_COMPILE_QLIST); oprnd = cf->operand; if (!oprnd) { - POP_CFRAME (hcl); + POP_CFRAME (hak); } else { - if (!HCL_CNODE_IS_CONS(oprnd)) + if (!HAK_CNODE_IS_CONS(oprnd)) { /* the last element after . */ - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT, oprnd); - PUSH_SUBCFRAME(hcl, COP_EMIT_POP_INTO_CONS_CDR, oprnd); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT, oprnd); + PUSH_SUBCFRAME(hak, COP_EMIT_POP_INTO_CONS_CDR, oprnd); } else { - hcl_cnode_t* car, * cdr; + hak_cnode_t* car, * cdr; - car = HCL_CNODE_CONS_CAR(oprnd); - cdr = HCL_CNODE_CONS_CDR(oprnd); + car = HAK_CNODE_CONS_CAR(oprnd); + cdr = HAK_CNODE_CONS_CDR(oprnd); - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT, car); /* 1 */ + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT, car); /* 1 */ if (cdr) { - PUSH_SUBCFRAME(hcl, COP_COMPILE_QLIST, cdr); /* 3 */ - PUSH_SUBCFRAME(hcl, COP_EMIT_POP_INTO_CONS, car); /* 2 */ + PUSH_SUBCFRAME(hak, COP_COMPILE_QLIST, cdr); /* 3 */ + PUSH_SUBCFRAME(hak, COP_EMIT_POP_INTO_CONS, car); /* 2 */ } else { /* the last element */ - PUSH_SUBCFRAME(hcl, COP_EMIT_POP_INTO_CONS_END, car); /* 2 */ + PUSH_SUBCFRAME(hak, COP_EMIT_POP_INTO_CONS_END, car); /* 2 */ } } } @@ -6038,37 +6038,37 @@ static int compile_qlist (hcl_t* hcl) /* ========================================================================= */ -static HCL_INLINE int post_if_cond (hcl_t* hcl) +static HAK_INLINE int post_if_cond (hak_t* hak) { - hcl_cframe_t* cf, * cf2; - hcl_ooi_t jump_inst_pos; - hcl_ooi_t body_pos; + hak_cframe_t* cf, * cf2; + hak_ooi_t jump_inst_pos; + hak_ooi_t body_pos; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_POST_IF_COND); - /* cf->operand can be HCL_NULL in these expressions + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_POST_IF_COND); + /* cf->operand can be HAK_NULL in these expressions * (if true) * (if false) * (if true 20 elif false) */ - /*HCL_ASSERT(hcl, cf->operand != HCL_NULL);*/ + /*HAK_ASSERT(hak, cf->operand != HAK_NULL);*/ - HCL_ASSERT(hcl, hcl->code.bc.len < HCL_SMOOI_MAX); - jump_inst_pos = hcl->code.bc.len; + HAK_ASSERT(hak, hak->code.bc.len < HAK_SMOOI_MAX); + jump_inst_pos = hak->code.bc.len; - if (emit_single_param_instruction(hcl, HCL_CODE_JUMP_FORWARD_IF_FALSE, MAX_CODE_JUMP, &cf->u.post_if.start_loc) <= -1) return -1; + if (emit_single_param_instruction(hak, HAK_CODE_JUMP_FORWARD_IF_FALSE, MAX_CODE_JUMP, &cf->u.post_if.start_loc) <= -1) return -1; /* to drop the result of the conditional when it is true */ - if (emit_byte_instruction(hcl, HCL_CODE_POP_STACKTOP, &cf->u.post_if.start_loc) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_POP_STACKTOP, &cf->u.post_if.start_loc) <= -1) return -1; - HCL_ASSERT(hcl, hcl->code.bc.len < HCL_SMOOI_MAX); - body_pos = hcl->code.bc.len; + HAK_ASSERT(hak, hak->code.bc.len < HAK_SMOOI_MAX); + body_pos = hak->code.bc.len; - if (check_block_expression_as_body(hcl, cf->operand, cf->u.post_if.cmd_cnode, FOR_IF) <= -1) return -1; + if (check_block_expression_as_body(hak, cf->operand, cf->u.post_if.cmd_cnode, FOR_IF) <= -1) return -1; - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_IF_OBJECT_LIST, cf->operand); /* 1 */ - PUSH_SUBCFRAME(hcl, COP_POST_IF_BODY, cf->operand); /* 2 */ - cf2 = GET_SUBCFRAME(hcl); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_IF_OBJECT_LIST, cf->operand); /* 1 */ + PUSH_SUBCFRAME(hak, COP_POST_IF_BODY, cf->operand); /* 2 */ + cf2 = GET_SUBCFRAME(hak); cf2->u.post_if.body_pos = body_pos; cf2->u.post_if.jump_inst_pos = jump_inst_pos; cf2->u.post_if.start_loc = cf->u.post_if.start_loc; @@ -6076,97 +6076,97 @@ static HCL_INLINE int post_if_cond (hcl_t* hcl) return 0; } -static HCL_INLINE int post_if_body (hcl_t* hcl) +static HAK_INLINE int post_if_body (hak_t* hak) { - hcl_cframe_t* cf; - hcl_ooi_t jip; - hcl_oow_t jump_offset; + hak_cframe_t* cf; + hak_ooi_t jip; + hak_oow_t jump_offset; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_POST_IF_BODY); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_POST_IF_BODY); - /* cf->operand can be HCL_NULL in these expressions + /* cf->operand can be HAK_NULL in these expressions * (if true) * (if false) * (if true 20 elif false) */ - /*HCL_ASSERT(hcl, cf->operand != HCL_NULL);*/ + /*HAK_ASSERT(hak, cf->operand != HAK_NULL);*/ jip = cf->u.post_if.jump_inst_pos; - if (hcl->code.bc.len <= cf->u.post_if.body_pos) + if (hak->code.bc.len <= cf->u.post_if.body_pos) { /* if body is empty */ - if (emit_byte_instruction(hcl, HCL_CODE_PUSH_NIL, &cf->u.post_if.start_loc) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_PUSH_NIL, &cf->u.post_if.start_loc) <= -1) return -1; } - /* HCL_CODE_LONG_PARAM_SIZE + 1 => size of the long JUMP_FORWARD_IF_FALSE instruction */ - jump_offset = hcl->code.bc.len - jip - (HCL_CODE_LONG_PARAM_SIZE + 1); + /* HAK_CODE_LONG_PARAM_SIZE + 1 => size of the long JUMP_FORWARD_IF_FALSE instruction */ + jump_offset = hak->code.bc.len - jip - (HAK_CODE_LONG_PARAM_SIZE + 1); if (jump_offset > MAX_CODE_JUMP * 2) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_IFFLOOD, &cf->u.post_if.start_loc, HCL_NULL, "code too big - size %zu", jump_offset); + hak_setsynerrbfmt(hak, HAK_SYNERR_IFFLOOD, &cf->u.post_if.start_loc, HAK_NULL, "code too big - size %zu", jump_offset); return -1; } - patch_long_jump(hcl, jip, jump_offset); + patch_long_jump(hak, jip, jump_offset); - POP_CFRAME (hcl); + POP_CFRAME (hak); return 0; } /* ========================================================================= */ -static HCL_INLINE int post_while_cond (hcl_t* hcl) +static HAK_INLINE int post_while_cond (hak_t* hak) { - hcl_cframe_t* cf; - hcl_ooi_t jump_inst_pos; - hcl_ooi_t cond_pos, body_pos; - hcl_loc_t start_loc; + hak_cframe_t* cf; + hak_ooi_t jump_inst_pos; + hak_ooi_t cond_pos, body_pos; + hak_loc_t start_loc; int jump_inst, next_cop; - hcl_cnode_t* cond, * body; + hak_cnode_t* cond, * body; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_POST_UNTIL_COND || cf->opcode == COP_POST_WHILE_COND); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_POST_UNTIL_COND || cf->opcode == COP_POST_WHILE_COND); + HAK_ASSERT(hak, cf->operand != HAK_NULL); /* the caller must pass the cons cell branching to the conditinal and the body - * if the body cell is given, things get complicated because the body part can be HCL_NULL. + * if the body cell is given, things get complicated because the body part can be HAK_NULL. * for instance, the body part is empty in (while (< i 1) ) */ - cond = HCL_CNODE_CONS_CAR(cf->operand); - body = HCL_CNODE_CONS_CDR(cf->operand); + cond = HAK_CNODE_CONS_CAR(cf->operand); + body = HAK_CNODE_CONS_CDR(cf->operand); cond_pos = cf->u.post_while.cond_pos; start_loc = cf->u.post_while.start_loc; - HCL_ASSERT(hcl, hcl->code.bc.len < HCL_SMOOI_MAX); - jump_inst_pos = hcl->code.bc.len; + HAK_ASSERT(hak, hak->code.bc.len < HAK_SMOOI_MAX); + jump_inst_pos = hak->code.bc.len; if (cf->opcode == COP_POST_UNTIL_COND) { - jump_inst = HCL_CODE_JUMP_FORWARD_IF_TRUE; + jump_inst = HAK_CODE_JUMP_FORWARD_IF_TRUE; next_cop = COP_POST_UNTIL_BODY; } else { - jump_inst = HCL_CODE_JUMP_FORWARD_IF_FALSE; + jump_inst = HAK_CODE_JUMP_FORWARD_IF_FALSE; next_cop = COP_POST_WHILE_BODY; } - if (emit_single_param_instruction(hcl, jump_inst, MAX_CODE_JUMP, HCL_CNODE_GET_LOC(cond)) <= -1) return -1; - if (emit_byte_instruction(hcl, HCL_CODE_POP_STACKTOP, HCL_CNODE_GET_LOC(cond)) <= -1) return -1; + if (emit_single_param_instruction(hak, jump_inst, MAX_CODE_JUMP, HAK_CNODE_GET_LOC(cond)) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_POP_STACKTOP, HAK_CNODE_GET_LOC(cond)) <= -1) return -1; - HCL_ASSERT(hcl, hcl->code.bc.len < HCL_SMOOI_MAX); - body_pos = hcl->code.bc.len; + HAK_ASSERT(hak, hak->code.bc.len < HAK_SMOOI_MAX); + body_pos = hak->code.bc.len; if (body) { - SWITCH_TOP_CFRAME(hcl, COP_COMPILE_OBJECT_LIST, body); /* 1 */ - PUSH_SUBCFRAME(hcl, next_cop, cf->operand); /* 2 */ - cf = GET_SUBCFRAME(hcl); + SWITCH_TOP_CFRAME(hak, COP_COMPILE_OBJECT_LIST, body); /* 1 */ + PUSH_SUBCFRAME(hak, next_cop, cf->operand); /* 2 */ + cf = GET_SUBCFRAME(hak); } else { /* the body is empty */ - SWITCH_TOP_CFRAME(hcl, next_cop, cond); /* 2 */ - cf = GET_TOP_CFRAME(hcl); + SWITCH_TOP_CFRAME(hak, next_cop, cond); /* 2 */ + cf = GET_TOP_CFRAME(hak); } cf->u.post_while.cond_pos = cond_pos; cf->u.post_while.body_pos = body_pos; @@ -6176,18 +6176,18 @@ static HCL_INLINE int post_while_cond (hcl_t* hcl) return 0; } -static HCL_INLINE int post_while_body (hcl_t* hcl) +static HAK_INLINE int post_while_body (hak_t* hak) { - hcl_cframe_t* cf; - hcl_ooi_t jip; - hcl_ooi_t jump_offset; + hak_cframe_t* cf; + hak_ooi_t jip; + hak_ooi_t jump_offset; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_POST_UNTIL_BODY || cf->opcode == COP_POST_WHILE_BODY); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_POST_UNTIL_BODY || cf->opcode == COP_POST_WHILE_BODY); + HAK_ASSERT(hak, cf->operand != HAK_NULL); - HCL_ASSERT(hcl, hcl->code.bc.len >= cf->u.post_while.cond_pos); - if (hcl->code.bc.len > cf->u.post_while.body_pos) + HAK_ASSERT(hak, hak->code.bc.len >= cf->u.post_while.cond_pos); + if (hak->code.bc.len > cf->u.post_while.body_pos) { /* some code exist after POP_STACKTOP after JUMP_FORWARD_IF_TRUE/FALSE. * (until #f) => @@ -6198,28 +6198,28 @@ static HCL_INLINE int post_while_body (hcl_t* hcl) * pop_stacktop * this check prevents another pop_stacktop between 1) and 2) */ - if (emit_byte_instruction(hcl, HCL_CODE_POP_STACKTOP, HCL_CNODE_GET_LOC(cf->operand)) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_POP_STACKTOP, HAK_CNODE_GET_LOC(cf->operand)) <= -1) return -1; } - HCL_ASSERT(hcl, hcl->code.bc.len < HCL_SMOOI_MAX); - jump_offset = hcl->code.bc.len - cf->u.post_while.cond_pos + 1; - if (jump_offset > 3) jump_offset += HCL_CODE_LONG_PARAM_SIZE; - if (emit_single_param_instruction(hcl, HCL_CODE_JUMP_BACKWARD_0, jump_offset, HCL_CNODE_GET_LOC(cf->operand)) <= -1) return -1; + HAK_ASSERT(hak, hak->code.bc.len < HAK_SMOOI_MAX); + jump_offset = hak->code.bc.len - cf->u.post_while.cond_pos + 1; + if (jump_offset > 3) jump_offset += HAK_CODE_LONG_PARAM_SIZE; + if (emit_single_param_instruction(hak, HAK_CODE_JUMP_BACKWARD_0, jump_offset, HAK_CNODE_GET_LOC(cf->operand)) <= -1) return -1; jip = cf->u.post_while.jump_inst_pos; - /* HCL_CODE_LONG_PARAM_SIZE + 1 => size of the long JUMP_FORWARD_IF_FALSE/JUMP_FORWARD_IF_TRUE instruction */ - jump_offset = hcl->code.bc.len - jip - (HCL_CODE_LONG_PARAM_SIZE + 1); + /* HAK_CODE_LONG_PARAM_SIZE + 1 => size of the long JUMP_FORWARD_IF_FALSE/JUMP_FORWARD_IF_TRUE instruction */ + jump_offset = hak->code.bc.len - jip - (HAK_CODE_LONG_PARAM_SIZE + 1); if (jump_offset > MAX_CODE_JUMP * 2) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BLKFLOOD, &cf->u.post_while.start_loc, HCL_NULL, "code too big - size %zu", jump_offset); + hak_setsynerrbfmt(hak, HAK_SYNERR_BLKFLOOD, &cf->u.post_while.start_loc, HAK_NULL, "code too big - size %zu", jump_offset); return -1; } - patch_long_jump(hcl, jip, jump_offset); + patch_long_jump(hak, jip, jump_offset); - POP_CFRAME (hcl); + POP_CFRAME (hak); - HCL_ASSERT(hcl, hcl->c->ctlblk.info[hcl->c->ctlblk.depth]._type == HCL_CTLBLK_TYPE_LOOP); - pop_ctlblk (hcl); + HAK_ASSERT(hak, hak->c->ctlblk.info[hak->c->ctlblk.depth]._type == HAK_CTLBLK_TYPE_LOOP); + pop_ctlblk (hak); return 0; } @@ -6227,240 +6227,240 @@ static HCL_INLINE int post_while_body (hcl_t* hcl) /* ========================================================================= */ -static HCL_INLINE int emit_call (hcl_t* hcl) +static HAK_INLINE int emit_call (hak_t* hak) { - hcl_cframe_t* cf; + hak_cframe_t* cf; int n; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_CALL); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_CALL); + HAK_ASSERT(hak, cf->operand != HAK_NULL); if (cf->u.call.nrets > 0) { - n = emit_double_param_instruction(hcl, HCL_CODE_CALL_R, cf->u.call.index, cf->u.call.nrets, HCL_CNODE_GET_LOC(cf->operand)); + n = emit_double_param_instruction(hak, HAK_CODE_CALL_R, cf->u.call.index, cf->u.call.nrets, HAK_CNODE_GET_LOC(cf->operand)); } else { - n = emit_single_param_instruction(hcl, HCL_CODE_CALL_0, cf->u.call.index, HCL_CNODE_GET_LOC(cf->operand)); + n = emit_single_param_instruction(hak, HAK_CODE_CALL_0, cf->u.call.index, HAK_CNODE_GET_LOC(cf->operand)); } - POP_CFRAME (hcl); + POP_CFRAME (hak); return n; } -static HCL_INLINE int emit_push_nil (hcl_t* hcl) +static HAK_INLINE int emit_push_nil (hak_t* hak) { - hcl_cframe_t* cf; + hak_cframe_t* cf; int n; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_PUSH_NIL); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_PUSH_NIL); + HAK_ASSERT(hak, cf->operand != HAK_NULL); - n = emit_byte_instruction(hcl, HCL_CODE_PUSH_NIL, HCL_CNODE_GET_LOC(cf->operand)); - POP_CFRAME (hcl); + n = emit_byte_instruction(hak, HAK_CODE_PUSH_NIL, HAK_CNODE_GET_LOC(cf->operand)); + POP_CFRAME (hak); return n; } -static HCL_INLINE int emit_push_symbol (hcl_t* hcl) +static HAK_INLINE int emit_push_symbol (hak_t* hak) { - hcl_cframe_t* cf; - hcl_oop_t lit; + hak_cframe_t* cf; + hak_oop_t lit; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_PUSH_SYMBOL); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_PUSH_SYMBOL); + HAK_ASSERT(hak, cf->operand != HAK_NULL); - lit = hcl_makesymbol(hcl, HCL_CNODE_GET_TOKPTR(cf->operand), HCL_CNODE_GET_TOKLEN(cf->operand)); - if (HCL_UNLIKELY(!lit)) return -1; - if (emit_push_literal(hcl, lit, HCL_CNODE_GET_LOC(cf->operand)) <= -1) return -1; + lit = hak_makesymbol(hak, HAK_CNODE_GET_TOKPTR(cf->operand), HAK_CNODE_GET_TOKLEN(cf->operand)); + if (HAK_UNLIKELY(!lit)) return -1; + if (emit_push_literal(hak, lit, HAK_CNODE_GET_LOC(cf->operand)) <= -1) return -1; - POP_CFRAME (hcl); + POP_CFRAME (hak); return 0; } -static HCL_INLINE int emit_send (hcl_t* hcl) +static HAK_INLINE int emit_send (hak_t* hak) { - hcl_cframe_t* cf; + hak_cframe_t* cf; int n; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_SEND); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_SEND); + HAK_ASSERT(hak, cf->operand != HAK_NULL); if (cf->u.sendmsg.nrets > 0) { - n = emit_double_param_instruction(hcl, (cf->u.sendmsg.to_super? HCL_CODE_SEND_TO_SUPER_R: HCL_CODE_SEND_R), cf->u.sendmsg.nargs, cf->u.sendmsg.nrets, HCL_CNODE_GET_LOC(cf->operand)); + n = emit_double_param_instruction(hak, (cf->u.sendmsg.to_super? HAK_CODE_SEND_TO_SUPER_R: HAK_CODE_SEND_R), cf->u.sendmsg.nargs, cf->u.sendmsg.nrets, HAK_CNODE_GET_LOC(cf->operand)); } else { - n = emit_single_param_instruction(hcl, (cf->u.sendmsg.to_super? HCL_CODE_SEND_TO_SUPER_0: HCL_CODE_SEND_0), cf->u.sendmsg.nargs, HCL_CNODE_GET_LOC(cf->operand)); + n = emit_single_param_instruction(hak, (cf->u.sendmsg.to_super? HAK_CODE_SEND_TO_SUPER_0: HAK_CODE_SEND_0), cf->u.sendmsg.nargs, HAK_CNODE_GET_LOC(cf->operand)); } - POP_CFRAME (hcl); + POP_CFRAME (hak); return n; } /* ========================================================================= */ -static HCL_INLINE int emit_make_array (hcl_t* hcl) +static HAK_INLINE int emit_make_array (hak_t* hak) { - hcl_cframe_t* cf; + hak_cframe_t* cf; int n; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_MAKE_ARRAY); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_MAKE_ARRAY); + HAK_ASSERT(hak, cf->operand != HAK_NULL); - n = emit_single_param_instruction(hcl, HCL_CODE_MAKE_ARRAY, cf->u.array_list.index, HCL_CNODE_GET_LOC(cf->operand)); + n = emit_single_param_instruction(hak, HAK_CODE_MAKE_ARRAY, cf->u.array_list.index, HAK_CNODE_GET_LOC(cf->operand)); - POP_CFRAME (hcl); + POP_CFRAME (hak); return n; } -static HCL_INLINE int emit_make_pure_array (hcl_t* hcl) +static HAK_INLINE int emit_make_pure_array (hak_t* hak) { - hcl_cframe_t* cf; + hak_cframe_t* cf; int n, inst; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_MAKE_PURE_ARRAY); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_MAKE_PURE_ARRAY); + HAK_ASSERT(hak, cf->operand != HAK_NULL); - inst = (cf->u.pure_array_list.elem_type == HCL_CONCODE_BYTEARRAY)? HCL_CODE_MAKE_BYTEARRAY: HCL_CODE_MAKE_CHARARRAY; - n = emit_single_param_instruction(hcl, inst, cf->u.pure_array_list.index, HCL_CNODE_GET_LOC(cf->operand)); + inst = (cf->u.pure_array_list.elem_type == HAK_CONCODE_BYTEARRAY)? HAK_CODE_MAKE_BYTEARRAY: HAK_CODE_MAKE_CHARARRAY; + n = emit_single_param_instruction(hak, inst, cf->u.pure_array_list.index, HAK_CNODE_GET_LOC(cf->operand)); - POP_CFRAME (hcl); + POP_CFRAME (hak); return n; } -static HCL_INLINE int emit_make_dic (hcl_t* hcl) +static HAK_INLINE int emit_make_dic (hak_t* hak) { - hcl_cframe_t* cf; + hak_cframe_t* cf; int n; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_MAKE_DIC); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_MAKE_DIC); + HAK_ASSERT(hak, cf->operand != HAK_NULL); - n = emit_single_param_instruction(hcl, HCL_CODE_MAKE_DIC, cf->u.dic_list.index, HCL_CNODE_GET_LOC(cf->operand)); + n = emit_single_param_instruction(hak, HAK_CODE_MAKE_DIC, cf->u.dic_list.index, HAK_CNODE_GET_LOC(cf->operand)); - POP_CFRAME (hcl); + POP_CFRAME (hak); return n; } -static HCL_INLINE int emit_make_cons (hcl_t* hcl) +static HAK_INLINE int emit_make_cons (hak_t* hak) { - hcl_cframe_t* cf; + hak_cframe_t* cf; int n; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_MAKE_CONS); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_MAKE_CONS); + HAK_ASSERT(hak, cf->operand != HAK_NULL); - n = emit_byte_instruction(hcl, HCL_CODE_MAKE_CONS, HCL_CNODE_GET_LOC(cf->operand)); + n = emit_byte_instruction(hak, HAK_CODE_MAKE_CONS, HAK_CNODE_GET_LOC(cf->operand)); - POP_CFRAME (hcl); + POP_CFRAME (hak); return n; } -static HCL_INLINE int emit_pop_into_array (hcl_t* hcl) +static HAK_INLINE int emit_pop_into_array (hak_t* hak) { - hcl_cframe_t* cf; + hak_cframe_t* cf; int n; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_POP_INTO_ARRAY); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_POP_INTO_ARRAY); + HAK_ASSERT(hak, cf->operand != HAK_NULL); - n = emit_single_param_instruction(hcl, HCL_CODE_POP_INTO_ARRAY, cf->u.array_list.index, HCL_CNODE_GET_LOC(cf->operand)); + n = emit_single_param_instruction(hak, HAK_CODE_POP_INTO_ARRAY, cf->u.array_list.index, HAK_CNODE_GET_LOC(cf->operand)); - POP_CFRAME (hcl); + POP_CFRAME (hak); return n; } -static HCL_INLINE int emit_pop_into_pure_array (hcl_t* hcl) +static HAK_INLINE int emit_pop_into_pure_array (hak_t* hak) { - hcl_cframe_t* cf; + hak_cframe_t* cf; int n, inst; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_POP_INTO_PURE_ARRAY); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_POP_INTO_PURE_ARRAY); + HAK_ASSERT(hak, cf->operand != HAK_NULL); - inst = (cf->u.pure_array_list.elem_type == HCL_CONCODE_BYTEARRAY)? HCL_CODE_POP_INTO_BYTEARRAY: HCL_CODE_POP_INTO_CHARARRAY; - n = emit_single_param_instruction(hcl, inst, cf->u.pure_array_list.index, HCL_CNODE_GET_LOC(cf->operand)); + inst = (cf->u.pure_array_list.elem_type == HAK_CONCODE_BYTEARRAY)? HAK_CODE_POP_INTO_BYTEARRAY: HAK_CODE_POP_INTO_CHARARRAY; + n = emit_single_param_instruction(hak, inst, cf->u.pure_array_list.index, HAK_CNODE_GET_LOC(cf->operand)); - POP_CFRAME (hcl); + POP_CFRAME (hak); return n; } -static HCL_INLINE int emit_pop_into_dic (hcl_t* hcl) +static HAK_INLINE int emit_pop_into_dic (hak_t* hak) { - hcl_cframe_t* cf; + hak_cframe_t* cf; int n; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_POP_INTO_DIC); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_POP_INTO_DIC); + HAK_ASSERT(hak, cf->operand != HAK_NULL); - n = emit_byte_instruction(hcl, HCL_CODE_POP_INTO_DIC, HCL_CNODE_GET_LOC(cf->operand)); + n = emit_byte_instruction(hak, HAK_CODE_POP_INTO_DIC, HAK_CNODE_GET_LOC(cf->operand)); - POP_CFRAME (hcl); + POP_CFRAME (hak); return n; } -static HCL_INLINE int emit_pop_into_cons (hcl_t* hcl, int cmd) +static HAK_INLINE int emit_pop_into_cons (hak_t* hak, int cmd) { - hcl_cframe_t* cf; + hak_cframe_t* cf; int n; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_POP_INTO_CONS || + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_POP_INTO_CONS || cf->opcode == COP_EMIT_POP_INTO_CONS_END || cf->opcode == COP_EMIT_POP_INTO_CONS_CDR); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + HAK_ASSERT(hak, cf->operand != HAK_NULL); - n = emit_byte_instruction(hcl, cmd, HCL_CNODE_GET_LOC(cf->operand)); + n = emit_byte_instruction(hak, cmd, HAK_CNODE_GET_LOC(cf->operand)); - POP_CFRAME (hcl); + POP_CFRAME (hak); return n; } /* ========================================================================= */ -static HCL_INLINE int emit_fun (hcl_t* hcl) +static HAK_INLINE int emit_fun (hak_t* hak) { - hcl_cframe_t* cf; - hcl_oow_t block_code_size, lfsize; - hcl_ooi_t jip; - hcl_funblk_info_t* fbi; - hcl_loc_t* oploc; + hak_cframe_t* cf; + hak_oow_t block_code_size, lfsize; + hak_ooi_t jip; + hak_funblk_info_t* fbi; + hak_loc_t* oploc; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_FUN); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_FUN); + HAK_ASSERT(hak, cf->operand != HAK_NULL); - oploc = HCL_CNODE_GET_LOC(cf->operand); - fbi = &hcl->c->funblk.info[hcl->c->funblk.depth]; + oploc = HAK_CNODE_GET_LOC(cf->operand); + fbi = &hak->c->funblk.info[hak->c->funblk.depth]; jip = cf->u.fun.jump_inst_pos; - if (hcl->option.trait & HCL_TRAIT_INTERACTIVE) - lfsize = hcl->code.lit.len - hcl->c->funblk.info[hcl->c->funblk.depth].lfbase; + if (hak->option.trait & HAK_TRAIT_INTERACTIVE) + lfsize = hak->code.lit.len - hak->c->funblk.info[hak->c->funblk.depth].lfbase; - /* HCL_CODE_LONG_PARAM_SIZE + 1 => size of the long JUMP_FORWARD instruction */ - block_code_size = hcl->code.bc.len - jip - (HCL_CODE_LONG_PARAM_SIZE + 1); + /* HAK_CODE_LONG_PARAM_SIZE + 1 => size of the long JUMP_FORWARD instruction */ + block_code_size = hak->code.bc.len - jip - (HAK_CODE_LONG_PARAM_SIZE + 1); if (fbi->tmpr_nrvars > 0) { /* this function block defines one or more return variables */ if (block_code_size > 0) { - if (emit_byte_instruction(hcl, HCL_CODE_POP_STACKTOP, oploc) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_POP_STACKTOP, oploc) <= -1) return -1; block_code_size++; } - if (emit_byte_instruction(hcl, HCL_CODE_PUSH_RETURN_R, oploc) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_PUSH_RETURN_R, oploc) <= -1) return -1; block_code_size++; } else @@ -6472,7 +6472,7 @@ static HCL_INLINE int emit_fun (hcl_t* hcl) { /* no body in fun - (fun (a b c)) */ /* TODO: is this correct??? */ - if (emit_byte_instruction(hcl, HCL_CODE_PUSH_NIL, oploc) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_PUSH_NIL, oploc) <= -1) return -1; block_code_size++; } } @@ -6482,13 +6482,13 @@ static HCL_INLINE int emit_fun (hcl_t* hcl) if (block_code_size == 1) { /* simple optimization not to skip emitting POP_STACKTOP */ - HCL_ASSERT(hcl, hcl->code.bc.len > 0); - if (hcl->code.bc.ptr[hcl->code.bc.len - 1] == HCL_CODE_PUSH_NIL) + HAK_ASSERT(hak, hak->code.bc.len > 0); + if (hak->code.bc.ptr[hak->code.bc.len - 1] == HAK_CODE_PUSH_NIL) { - hcl->code.bc.len--; + hak->code.bc.len--; block_code_size--; } - else if (hcl->code.bc.ptr[hcl->code.bc.len - 1] == HCL_CODE_PUSH_RECEIVER) + else if (hak->code.bc.ptr[hak->code.bc.len - 1] == HAK_CODE_PUSH_RECEIVER) { goto emit_return_from_block; } @@ -6496,44 +6496,44 @@ static HCL_INLINE int emit_fun (hcl_t* hcl) if (block_code_size > 0) { - if (emit_byte_instruction(hcl, HCL_CODE_POP_STACKTOP, oploc) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_POP_STACKTOP, oploc) <= -1) return -1; block_code_size++; } - if (emit_byte_instruction(hcl, HCL_CODE_PUSH_RECEIVER, oploc) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_PUSH_RECEIVER, oploc) <= -1) return -1; block_code_size++; } emit_return_from_block: - if (emit_byte_instruction(hcl, HCL_CODE_RETURN_FROM_BLOCK, oploc) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_RETURN_FROM_BLOCK, oploc) <= -1) return -1; block_code_size++; } if (block_code_size > MAX_CODE_JUMP * 2) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BLKFLOOD, oploc, HCL_NULL, "code too big - size %zu", block_code_size); + hak_setsynerrbfmt(hak, HAK_SYNERR_BLKFLOOD, oploc, HAK_NULL, "code too big - size %zu", block_code_size); return -1; } - patch_long_jump(hcl, jip, block_code_size); + patch_long_jump(hak, jip, block_code_size); - if (hcl->option.trait & HCL_TRAIT_INTERACTIVE) - patch_long_param(hcl, cf->u.fun.lfsize_pos, lfsize); + if (hak->option.trait & HAK_TRAIT_INTERACTIVE) + patch_long_param(hak, cf->u.fun.lfsize_pos, lfsize); - POP_CFRAME (hcl); + POP_CFRAME (hak); return 0; } -static HCL_INLINE int post_fun (hcl_t* hcl) +static HAK_INLINE int post_fun (hak_t* hak) { - hcl_cframe_t* cf; + hak_cframe_t* cf; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_POST_FUN); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_POST_FUN); - /*hcl->c->funblk.depth--; - hcl->c->tv.s.len = hcl->c->funblk.info[hcl->c->funblk.depth].tmprlen; - hcl->c->tv.wcount = hcl->c->funblk.info[hcl->c->funblk.depth].tmprcnt;*/ - pop_funblk (hcl); + /*hak->c->funblk.depth--; + hak->c->tv.s.len = hak->c->funblk.info[hak->c->funblk.depth].tmprlen; + hak->c->tv.wcount = hak->c->funblk.info[hak->c->funblk.depth].tmprcnt;*/ + pop_funblk (hak); if (cf->operand) { @@ -6544,14 +6544,14 @@ static HCL_INLINE int post_fun (hcl_t* hcl) * * the block has been exited(blk.depth--) before finding 'x' in the outer scope. */ - hcl_cnode_t* fun_name = cf->operand; - hcl_cnode_t* class_name = cf->u.fun.class_name; - hcl_var_info_t vi; + hak_cnode_t* fun_name = cf->operand; + hak_cnode_t* class_name = cf->u.fun.class_name; + hak_var_info_t vi; int x; - HCL_ASSERT(hcl, HCL_CNODE_IS_SYMBOL(fun_name)); + HAK_ASSERT(hak, HAK_CNODE_IS_SYMBOL(fun_name)); - if (is_in_class_init_scope(hcl)) + if (is_in_class_init_scope(hak)) { /* method definition */ @@ -6559,14 +6559,14 @@ static HCL_INLINE int post_fun (hcl_t* hcl) { /* something wrong - this must not happen because the reader must prevent this * but if it happens, it is a syntax error */ - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_BANNED, HCL_CNODE_GET_LOC(class_name), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_BANNED, HAK_CNODE_GET_LOC(class_name), HAK_NULL, "class name '%.js' prohibited class initialization context", - HCL_CNODE_GET_TOKLEN(class_name), HCL_CNODE_GET_TOKPTR(class_name)); + HAK_CNODE_GET_TOKLEN(class_name), HAK_CNODE_GET_TOKPTR(class_name)); return -1; } - x = find_variable_backward_with_token(hcl, fun_name, &vi); + x = find_variable_backward_with_token(hak, fun_name, &vi); if (x <= -1) return -1; if (x == 0) { @@ -6574,28 +6574,28 @@ static HCL_INLINE int post_fun (hcl_t* hcl) switch (cf->u.fun.fun_type & 0xFF) { case FUN_CM: /* class method */ - SWITCH_TOP_CFRAME(hcl, COP_EMIT_CLASS_CMSTORE, fun_name); + SWITCH_TOP_CFRAME(hak, COP_EMIT_CLASS_CMSTORE, fun_name); break; case FUN_CIM: /* class instantiation method */ - SWITCH_TOP_CFRAME(hcl, COP_EMIT_CLASS_CIMSTORE, fun_name); + SWITCH_TOP_CFRAME(hak, COP_EMIT_CLASS_CIMSTORE, fun_name); break; case FUN_IM: /* instance method */ - SWITCH_TOP_CFRAME(hcl, COP_EMIT_CLASS_IMSTORE, fun_name); + SWITCH_TOP_CFRAME(hak, COP_EMIT_CLASS_IMSTORE, fun_name); break; default: /* in the class initialization scope, the type must not be other than the listed above */ - HCL_DEBUG1(hcl, "Internal error - invalid method type %d\n", cf->u.fun.fun_type & 0xFF); - hcl_seterrbfmt(hcl, HCL_EINTERN, "internal error - invalid method type %d", cf->u.fun.fun_type & 0xFF); + HAK_DEBUG1(hak, "Internal error - invalid method type %d\n", cf->u.fun.fun_type & 0xFF); + hak_seterrbfmt(hak, HAK_EINTERN, "internal error - invalid method type %d", cf->u.fun.fun_type & 0xFF); return -1; } - cf = GET_TOP_CFRAME(hcl); + cf = GET_TOP_CFRAME(hak); } else { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_VARNAMEDUP, HCL_CNODE_GET_LOC(fun_name), HCL_CNODE_GET_TOK(fun_name), "duplicate method name"); + hak_setsynerrbfmt(hak, HAK_SYNERR_VARNAMEDUP, HAK_CNODE_GET_LOC(fun_name), HAK_CNODE_GET_TOK(fun_name), "duplicate method name"); return -1; } } @@ -6603,18 +6603,18 @@ static HCL_INLINE int post_fun (hcl_t* hcl) { /* the function name must be global or module-wide.(no module implemented yet. so only global) */ #if 0 - x = find_variable_backward_with_token(hcl, fun_name, &vi); + x = find_variable_backward_with_token(hak, fun_name, &vi); if (x <= -1) return -1; if (x == 0) { - SWITCH_TOP_CFRAME(hcl, COP_EMIT_SET, fun_name); - cf = GET_TOP_CFRAME(hcl); + SWITCH_TOP_CFRAME(hak, COP_EMIT_SET, fun_name); + cf = GET_TOP_CFRAME(hak); cf->u.set.vi.type = VAR_NAMED; } else { - SWITCH_TOP_CFRAME(hcl, COP_EMIT_SET, fun_name); - cf = GET_TOP_CFRAME(hcl); + SWITCH_TOP_CFRAME(hak, COP_EMIT_SET, fun_name); + cf = GET_TOP_CFRAME(hak); cf->u.set.vi = vi; } cf->u.set.mode = VAR_ACCESS_STORE; @@ -6623,51 +6623,51 @@ static HCL_INLINE int post_fun (hcl_t* hcl) { /* out-of-class definition */ /* TODO: - other types of out-of-class definition - CIM_STORE, CM_STORE... use different marker? */ - hcl_oow_t index; - hcl_oop_t lit; + hak_oow_t index; + hak_oop_t lit; int inst; /* treat the class name part as a normal variable. * it can be a global variable like 'String' or a local variable declared */ - if (compile_symbol(hcl, class_name) <= -1) return -1; + if (compile_symbol(hak, class_name) <= -1) return -1; - if (emit_byte_instruction(hcl, HCL_CODE_CLASS_LOAD, HCL_CNODE_GET_LOC(class_name)) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_CLASS_LOAD, HAK_CNODE_GET_LOC(class_name)) <= -1) return -1; /* the function name is always named */ - lit = hcl_makesymbol(hcl, HCL_CNODE_GET_TOKPTR(fun_name), HCL_CNODE_GET_TOKLEN(fun_name)); - if (HCL_UNLIKELY(!lit)) return -1; - if (add_literal(hcl, lit, &index) <= -1) return -1; + lit = hak_makesymbol(hak, HAK_CNODE_GET_TOKPTR(fun_name), HAK_CNODE_GET_TOKLEN(fun_name)); + if (HAK_UNLIKELY(!lit)) return -1; + if (add_literal(hak, lit, &index) <= -1) return -1; switch (cf->u.fun.fun_type & 0xFF) { case FUN_CM: /* class method */ - inst = HCL_CODE_CLASS_CMSTORE; + inst = HAK_CODE_CLASS_CMSTORE; break; case FUN_CIM: /* class instantiation method */ - inst = HCL_CODE_CLASS_CIMSTORE; + inst = HAK_CODE_CLASS_CIMSTORE; break; case FUN_IM: /* instance method */ - inst = HCL_CODE_CLASS_IMSTORE; + inst = HAK_CODE_CLASS_IMSTORE; break; default: /* in the class initialization scope, the type must not be other than the listed above */ - HCL_DEBUG1(hcl, "Internal error - invalid function type %d\n", cf->u.fun.fun_type & 0xFF); - hcl_seterrbfmt(hcl, HCL_EINTERN, "internal error - invalid function type %d", cf->u.fun.fun_type & 0xFF); + HAK_DEBUG1(hak, "Internal error - invalid function type %d\n", cf->u.fun.fun_type & 0xFF); + hak_seterrbfmt(hak, HAK_EINTERN, "internal error - invalid function type %d", cf->u.fun.fun_type & 0xFF); return -1; } - if (emit_single_param_instruction(hcl, inst, index, HCL_CNODE_GET_LOC(fun_name)) <= -1) return -1; - if (emit_byte_instruction(hcl, HCL_CODE_CLASS_EXIT, HCL_CNODE_GET_LOC(class_name)) <= -1) return -1; - POP_CFRAME (hcl); + if (emit_single_param_instruction(hak, inst, index, HAK_CNODE_GET_LOC(fun_name)) <= -1) return -1; + if (emit_byte_instruction(hak, HAK_CODE_CLASS_EXIT, HAK_CNODE_GET_LOC(class_name)) <= -1) return -1; + POP_CFRAME (hak); } else { /* An explicitly named function is always global */ - SWITCH_TOP_CFRAME(hcl, COP_EMIT_SET, fun_name); - cf = GET_TOP_CFRAME(hcl); + SWITCH_TOP_CFRAME(hak, COP_EMIT_SET, fun_name); + cf = GET_TOP_CFRAME(hak); cf->u.set.vi.type = VAR_NAMED; cf->u.set.mode = VAR_ACCESS_STORE; } @@ -6676,7 +6676,7 @@ static HCL_INLINE int post_fun (hcl_t* hcl) } else { - POP_CFRAME (hcl); + POP_CFRAME (hak); } return 0; @@ -6684,165 +6684,165 @@ static HCL_INLINE int post_fun (hcl_t* hcl) /* ========================================================================= */ -static HCL_INLINE int emit_pop_stacktop (hcl_t* hcl) +static HAK_INLINE int emit_pop_stacktop (hak_t* hak) { - hcl_cframe_t* cf; + hak_cframe_t* cf; int n; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_POP_STACKTOP); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_POP_STACKTOP); + HAK_ASSERT(hak, cf->operand != HAK_NULL); - n = emit_byte_instruction(hcl, HCL_CODE_POP_STACKTOP, HCL_CNODE_GET_LOC(cf->operand)); + n = emit_byte_instruction(hak, HAK_CODE_POP_STACKTOP, HAK_CNODE_GET_LOC(cf->operand)); - POP_CFRAME (hcl); + POP_CFRAME (hak); return n; } -static HCL_INLINE int emit_return (hcl_t* hcl) +static HAK_INLINE int emit_return (hak_t* hak) { - hcl_cframe_t* cf; + hak_cframe_t* cf; int n; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_RETURN); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_RETURN); + HAK_ASSERT(hak, cf->operand != HAK_NULL); - n = emit_byte_instruction(hcl, (cf->u._return.from_home? HCL_CODE_RETURN_STACKTOP: HCL_CODE_RETURN_FROM_BLOCK), HCL_CNODE_GET_LOC(cf->operand)); + n = emit_byte_instruction(hak, (cf->u._return.from_home? HAK_CODE_RETURN_STACKTOP: HAK_CODE_RETURN_FROM_BLOCK), HAK_CNODE_GET_LOC(cf->operand)); - POP_CFRAME (hcl); + POP_CFRAME (hak); return n; } -static HCL_INLINE int emit_set (hcl_t* hcl) +static HAK_INLINE int emit_set (hak_t* hak) { - hcl_cframe_t* cf; + hak_cframe_t* cf; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_SET); - HCL_ASSERT(hcl, cf->u.set.mode == VAR_ACCESS_POP || cf->u.set.mode == VAR_ACCESS_STORE); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_SET); + HAK_ASSERT(hak, cf->u.set.mode == VAR_ACCESS_POP || cf->u.set.mode == VAR_ACCESS_STORE); if (cf->u.set.vi.type == VAR_NAMED) { - hcl_oow_t index; - hcl_oop_t cons, sym; + hak_oow_t index; + hak_oop_t cons, sym; - HCL_ASSERT(hcl, HCL_CNODE_IS_SYMBOL(cf->operand)); + HAK_ASSERT(hak, HAK_CNODE_IS_SYMBOL(cf->operand)); - sym = hcl_makesymbol(hcl, HCL_CNODE_GET_TOKPTR(cf->operand), HCL_CNODE_GET_TOKLEN(cf->operand)); - if (HCL_UNLIKELY(!sym)) return -1; + sym = hak_makesymbol(hak, HAK_CNODE_GET_TOKPTR(cf->operand), HAK_CNODE_GET_TOKLEN(cf->operand)); + if (HAK_UNLIKELY(!sym)) return -1; - cons = (hcl_oop_t)hcl_getatsysdic(hcl, sym); + cons = (hak_oop_t)hak_getatsysdic(hak, sym); if (!cons) { - cons = (hcl_oop_t)hcl_putatsysdic(hcl, sym, hcl->_nil); - if (HCL_UNLIKELY(!cons)) return -1; + cons = (hak_oop_t)hak_putatsysdic(hak, sym, hak->_nil); + if (HAK_UNLIKELY(!cons)) return -1; } - if (add_literal(hcl, cons, &index) <= -1) return -1; - if (emit_single_param_instruction(hcl, (cf->u.set.mode == VAR_ACCESS_POP? HCL_CODE_POP_INTO_OBJECT_0: HCL_CODE_STORE_INTO_OBJECT_0), index, HCL_CNODE_GET_LOC(cf->operand)) <= -1) return -1; + if (add_literal(hak, cons, &index) <= -1) return -1; + if (emit_single_param_instruction(hak, (cf->u.set.mode == VAR_ACCESS_POP? HAK_CODE_POP_INTO_OBJECT_0: HAK_CODE_STORE_INTO_OBJECT_0), index, HAK_CNODE_GET_LOC(cf->operand)) <= -1) return -1; } else { - HCL_ASSERT(hcl, cf->operand != HCL_NULL); - if (emit_variable_access(hcl, cf->u.set.mode, &cf->u.set.vi, HCL_CNODE_GET_LOC(cf->operand)) <= -1) return -1; + HAK_ASSERT(hak, cf->operand != HAK_NULL); + if (emit_variable_access(hak, cf->u.set.mode, &cf->u.set.vi, HAK_CNODE_GET_LOC(cf->operand)) <= -1) return -1; } - POP_CFRAME (hcl); + POP_CFRAME (hak); return 0; } -static HCL_INLINE int emit_class_cmstore (hcl_t* hcl) +static HAK_INLINE int emit_class_cmstore (hak_t* hak) { - hcl_cframe_t* cf; - hcl_oop_t lit; - hcl_oow_t index; + hak_cframe_t* cf; + hak_oop_t lit; + hak_oow_t index; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_CLASS_CMSTORE); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_CLASS_CMSTORE); - lit = hcl_makesymbol(hcl, HCL_CNODE_GET_TOKPTR(cf->operand), HCL_CNODE_GET_TOKLEN(cf->operand)); - if (HCL_UNLIKELY(!lit)) return -1; + lit = hak_makesymbol(hak, HAK_CNODE_GET_TOKPTR(cf->operand), HAK_CNODE_GET_TOKLEN(cf->operand)); + if (HAK_UNLIKELY(!lit)) return -1; - if (add_literal(hcl, lit, &index) <= -1) return -1; - if (emit_single_param_instruction(hcl, HCL_CODE_CLASS_CMSTORE, index, HCL_CNODE_GET_LOC(cf->operand)) <= -1) return -1; + if (add_literal(hak, lit, &index) <= -1) return -1; + if (emit_single_param_instruction(hak, HAK_CODE_CLASS_CMSTORE, index, HAK_CNODE_GET_LOC(cf->operand)) <= -1) return -1; - POP_CFRAME (hcl); + POP_CFRAME (hak); return 0; } -static HCL_INLINE int emit_class_cimstore (hcl_t* hcl) +static HAK_INLINE int emit_class_cimstore (hak_t* hak) { - hcl_cframe_t* cf; - hcl_oop_t lit; - hcl_oow_t index; + hak_cframe_t* cf; + hak_oop_t lit; + hak_oow_t index; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_CLASS_CIMSTORE); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_CLASS_CIMSTORE); - lit = hcl_makesymbol(hcl, HCL_CNODE_GET_TOKPTR(cf->operand), HCL_CNODE_GET_TOKLEN(cf->operand)); - if (HCL_UNLIKELY(!lit)) return -1; + lit = hak_makesymbol(hak, HAK_CNODE_GET_TOKPTR(cf->operand), HAK_CNODE_GET_TOKLEN(cf->operand)); + if (HAK_UNLIKELY(!lit)) return -1; - if (add_literal(hcl, lit, &index) <= -1) return -1; - if (emit_single_param_instruction(hcl, HCL_CODE_CLASS_CIMSTORE, index, HCL_CNODE_GET_LOC(cf->operand)) <= -1) return -1; + if (add_literal(hak, lit, &index) <= -1) return -1; + if (emit_single_param_instruction(hak, HAK_CODE_CLASS_CIMSTORE, index, HAK_CNODE_GET_LOC(cf->operand)) <= -1) return -1; - POP_CFRAME (hcl); + POP_CFRAME (hak); return 0; } -static HCL_INLINE int emit_class_imstore (hcl_t* hcl) +static HAK_INLINE int emit_class_imstore (hak_t* hak) { - hcl_cframe_t* cf; - hcl_oop_t lit; - hcl_oow_t index; + hak_cframe_t* cf; + hak_oop_t lit; + hak_oow_t index; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_CLASS_IMSTORE); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_CLASS_IMSTORE); - lit = hcl_makesymbol(hcl, HCL_CNODE_GET_TOKPTR(cf->operand), HCL_CNODE_GET_TOKLEN(cf->operand)); - if (HCL_UNLIKELY(!lit)) return -1; + lit = hak_makesymbol(hak, HAK_CNODE_GET_TOKPTR(cf->operand), HAK_CNODE_GET_TOKLEN(cf->operand)); + if (HAK_UNLIKELY(!lit)) return -1; - if (add_literal(hcl, lit, &index) <= -1) return -1; - if (emit_single_param_instruction(hcl, HCL_CODE_CLASS_IMSTORE, index, HCL_CNODE_GET_LOC(cf->operand)) <= -1) return -1; + if (add_literal(hak, lit, &index) <= -1) return -1; + if (emit_single_param_instruction(hak, HAK_CODE_CLASS_IMSTORE, index, HAK_CNODE_GET_LOC(cf->operand)) <= -1) return -1; - POP_CFRAME (hcl); + POP_CFRAME (hak); return 0; } -static HCL_INLINE int emit_throw (hcl_t* hcl) +static HAK_INLINE int emit_throw (hak_t* hak) { - hcl_cframe_t* cf; + hak_cframe_t* cf; int n; - cf = GET_TOP_CFRAME(hcl); - HCL_ASSERT(hcl, cf->opcode == COP_EMIT_THROW); - HCL_ASSERT(hcl, cf->operand != HCL_NULL); + cf = GET_TOP_CFRAME(hak); + HAK_ASSERT(hak, cf->opcode == COP_EMIT_THROW); + HAK_ASSERT(hak, cf->operand != HAK_NULL); - n = emit_byte_instruction(hcl, HCL_CODE_THROW, HCL_CNODE_GET_LOC(cf->operand)); + n = emit_byte_instruction(hak, HAK_CODE_THROW, HAK_CNODE_GET_LOC(cf->operand)); - POP_CFRAME (hcl); + POP_CFRAME (hak); return n; } /* ========================================================================= */ -int hcl_compile (hcl_t* hcl, hcl_cnode_t* obj, int flags) +int hak_compile (hak_t* hak, hak_cnode_t* obj, int flags) { - hcl_oow_t saved_bc_len, saved_lit_len; - hcl_bitmask_t log_default_type_mask; - hcl_funblk_info_t top_funblk_saved; + hak_oow_t saved_bc_len, saved_lit_len; + hak_bitmask_t log_default_type_mask; + hak_funblk_info_t top_funblk_saved; int top_funblk_pushed_here = 0; - hcl->c->flags = flags; + hak->c->flags = flags; - HCL_ASSERT(hcl, hcl->c->funblk.depth <= 0); /* 0 or 1 funblk must exist at this phase */ - HCL_ASSERT(hcl, GET_TOP_CFRAME_INDEX(hcl) < 0); + HAK_ASSERT(hak, hak->c->funblk.depth <= 0); /* 0 or 1 funblk must exist at this phase */ + HAK_ASSERT(hak, GET_TOP_CFRAME_INDEX(hak) < 0); - if (flags & HCL_COMPILE_CLEAR_FUNBLK) + if (flags & HAK_COMPILE_CLEAR_FUNBLK) { /* if the program is executed in the interactive mode, * each compiled expression is executed immediately. - * that is, hcl_compile() is followed by hcl_execute() + * that is, hak_compile() is followed by hak_execute() * immediately. * * (1) a := 20 @@ -6866,17 +6866,17 @@ int hcl_compile (hcl_t* hcl, hcl_cnode_t* obj, int flags) * in the interactive mode, the information doesn't have * to get carried over. */ - while (hcl->c->funblk.depth >= 0) pop_funblk (hcl); - HCL_ASSERT(hcl, hcl->c->funblk.depth == -1); + while (hak->c->funblk.depth >= 0) pop_funblk (hak); + HAK_ASSERT(hak, hak->c->funblk.depth == -1); /* it will be recreated below */ } - if (flags & HCL_COMPILE_CLEAR_CODE) hcl_clearcode (hcl); + if (flags & HAK_COMPILE_CLEAR_CODE) hak_clearcode (hak); - saved_bc_len = hcl->code.bc.len; - saved_lit_len = hcl->code.lit.len; + saved_bc_len = hak->code.bc.len; + saved_lit_len = hak->code.lit.len; - log_default_type_mask = hcl->log.default_type_mask; - hcl->log.default_type_mask |= HCL_LOG_COMPILER; + log_default_type_mask = hak->log.default_type_mask; + hak->log.default_type_mask |= HAK_LOG_COMPILER; /* * In the non-INTERACTIVE mode, the literal frame base(lfbase) doesn't matter. @@ -6885,7 +6885,7 @@ int hcl_compile (hcl_t* hcl, hcl_cnode_t* obj, int flags) * translated to block context objects instead. * * In the INTERACTIVE mode, the literal frame base(lfbase) plays a key role. - * hcl_compile() is called for the top-level expression and the literal + * hak_compile() is called for the top-level expression and the literal * frame base can be 0. The means it is ok for a top-level code to * reference part of the literal frame reserved for a function. * @@ -6910,58 +6910,58 @@ int hcl_compile (hcl_t* hcl, hcl_cnode_t* obj, int flags) */ /* TODO: in case i implement all global variables as block arguments at the top level...what should i do? */ - HCL_ASSERT(hcl, hcl->c->ctlblk.depth == -1); + HAK_ASSERT(hak, hak->c->ctlblk.depth == -1); - if (hcl->c->funblk.depth <= -1) + if (hak->c->funblk.depth <= -1) { - HCL_ASSERT(hcl, hcl->c->funblk.depth == -1); - HCL_ASSERT(hcl, hcl->c->tv.s.len == 0); - HCL_ASSERT(hcl, hcl->c->tv.wcount == 0); + HAK_ASSERT(hak, hak->c->funblk.depth == -1); + HAK_ASSERT(hak, hak->c->tv.s.len == 0); + HAK_ASSERT(hak, hak->c->tv.wcount == 0); /* keep a virtual function block for the top-level compilation. - * pass HCL_TYPE_MAX(hcl_oow_t) as make_inst_pos because there is + * pass HAK_TYPE_MAX(hak_oow_t) as make_inst_pos because there is * no actual MAKE_BLOCK/MAKE_FUNCTION instruction which otherwise * would be patched in pop_funblk(). */ if (push_funblk( - hcl, HCL_NULL, + hak, HAK_NULL, 0, /* tmpr_va */ 0, /* tmpr_nargs */ 0, /* tmpr_nrvars */ - hcl->c->tv.wcount, /* tmpr_nlvars */ - hcl->c->tv.wcount, /* tmpr_count */ - hcl->c->tv.s.len, /* tmpr_len */ - HCL_TYPE_MAX(hcl_oow_t), /* make_inst_pos */ + hak->c->tv.wcount, /* tmpr_nlvars */ + hak->c->tv.wcount, /* tmpr_count */ + hak->c->tv.s.len, /* tmpr_len */ + HAK_TYPE_MAX(hak_oow_t), /* make_inst_pos */ 0, /* lfbase */ FUN_PLAIN /* fun_type */ ) <= -1) return -1; /* must not goto oops */ top_funblk_pushed_here = 1; } - top_funblk_saved = hcl->c->funblk.info[0]; - HCL_ASSERT(hcl, hcl->c->funblk.depth == 0); /* ensure the virtual function block is added */ + top_funblk_saved = hak->c->funblk.info[0]; + HAK_ASSERT(hak, hak->c->funblk.depth == 0); /* ensure the virtual function block is added */ - PUSH_CFRAME(hcl, COP_COMPILE_OBJECT, obj); + PUSH_CFRAME(hak, COP_COMPILE_OBJECT, obj); - while (GET_TOP_CFRAME_INDEX(hcl) >= 0) + while (GET_TOP_CFRAME_INDEX(hak) >= 0) { - hcl_cframe_t* cf; + hak_cframe_t* cf; - cf = GET_TOP_CFRAME(hcl); + cf = GET_TOP_CFRAME(hak); /* TODO: tabulate this switch-based dispatch */ switch (cf->opcode) { case COP_COMPILE_OBJECT: - if (compile_object(hcl) <= -1) goto oops; + if (compile_object(hak) <= -1) goto oops; break; case COP_COMPILE_OBJECT_R: - if (compile_object_r(hcl) <= -1) goto oops; + if (compile_object_r(hak) <= -1) goto oops; break; case COP_COMPILE_SYMBOL_LITERAL: - if (compile_symbol_literal(hcl) <= -1) goto oops; + if (compile_symbol_literal(hak) <= -1) goto oops; break; case COP_COMPILE_ARGUMENT_LIST: @@ -6971,235 +6971,235 @@ int hcl_compile (hcl_t* hcl, hcl_cnode_t* obj, int flags) case COP_COMPILE_IF_OBJECT_LIST_TAIL: case COP_COMPILE_TRY_OBJECT_LIST: case COP_COMPILE_TRY_OBJECT_LIST_TAIL: - if (compile_object_list(hcl) <= -1) goto oops; + if (compile_object_list(hak) <= -1) goto oops; break; case COP_COMPILE_ARRAY_LIST: - if (compile_array_list(hcl) <= -1) goto oops; + if (compile_array_list(hak) <= -1) goto oops; break; case COP_COMPILE_PURE_ARRAY_LIST: - if (compile_pure_array_list(hcl) <= -1) goto oops; + if (compile_pure_array_list(hak) <= -1) goto oops; break; case COP_COMPILE_DIC_LIST: - if (compile_dic_list(hcl) <= -1) goto oops; + if (compile_dic_list(hak) <= -1) goto oops; break; case COP_COMPILE_QLIST: - if (compile_qlist(hcl) <= -1) goto oops; + if (compile_qlist(hak) <= -1) goto oops; break; case COP_COMPILE_ELIF: - if (compile_elif(hcl) <= -1) goto oops; + if (compile_elif(hak) <= -1) goto oops; break; case COP_COMPILE_ELSE: - if (compile_else(hcl) <= -1) goto oops; + if (compile_else(hak) <= -1) goto oops; break; case COP_COMPILE_CATCH: - if (compile_catch(hcl) <= -1) goto oops; + if (compile_catch(hak) <= -1) goto oops; break; case COP_COMPILE_AND_P1: - if (compile_and_p1(hcl) <= -1) goto oops; + if (compile_and_p1(hak) <= -1) goto oops; break; case COP_COMPILE_AND_P2: - if (compile_and_p2(hcl) <= -1) goto oops; + if (compile_and_p2(hak) <= -1) goto oops; break; case COP_COMPILE_BREAK_P1: - if (compile_break_p1(hcl) <= -1) goto oops; + if (compile_break_p1(hak) <= -1) goto oops; break; case COP_COMPILE_CLASS_P1: - if (compile_class_p1(hcl) <= -1) goto oops; + if (compile_class_p1(hak) <= -1) goto oops; break; case COP_COMPILE_CLASS_P2: - if (compile_class_p2(hcl) <= -1) goto oops; + if (compile_class_p2(hak) <= -1) goto oops; break; case COP_COMPILE_DO_P1: - if (compile_do_p1(hcl) <= -1) goto oops; + if (compile_do_p1(hak) <= -1) goto oops; break; case COP_COMPILE_OR_P1: - if (compile_or_p1(hcl) <= -1) goto oops; + if (compile_or_p1(hak) <= -1) goto oops; break; case COP_COMPILE_OR_P2: - if (compile_or_p2(hcl) <= -1) goto oops; + if (compile_or_p2(hak) <= -1) goto oops; break; case COP_EMIT_CALL: - if (emit_call(hcl) <= -1) goto oops; + if (emit_call(hak) <= -1) goto oops; break; case COP_EMIT_PUSH_NIL: - if (emit_push_nil(hcl) <= -1) goto oops; + if (emit_push_nil(hak) <= -1) goto oops; break; case COP_EMIT_PUSH_SYMBOL: - if (emit_push_symbol(hcl) <= -1) goto oops; + if (emit_push_symbol(hak) <= -1) goto oops; break; case COP_EMIT_SEND: - if (emit_send(hcl) <= -1) goto oops; + if (emit_send(hak) <= -1) goto oops; break; case COP_EMIT_MAKE_ARRAY: - if (emit_make_array(hcl) <= -1) goto oops; + if (emit_make_array(hak) <= -1) goto oops; break; case COP_EMIT_MAKE_PURE_ARRAY: - if (emit_make_pure_array(hcl) <= -1) goto oops; + if (emit_make_pure_array(hak) <= -1) goto oops; break; case COP_EMIT_MAKE_DIC: - if (emit_make_dic(hcl) <= -1) goto oops; + if (emit_make_dic(hak) <= -1) goto oops; break; case COP_EMIT_MAKE_CONS: - if (emit_make_cons(hcl) <= -1) goto oops; + if (emit_make_cons(hak) <= -1) goto oops; break; case COP_EMIT_POP_INTO_ARRAY: - if (emit_pop_into_array(hcl) <= -1) goto oops; + if (emit_pop_into_array(hak) <= -1) goto oops; break; case COP_EMIT_POP_INTO_PURE_ARRAY: - if (emit_pop_into_pure_array(hcl) <= -1) goto oops; + if (emit_pop_into_pure_array(hak) <= -1) goto oops; break; case COP_EMIT_POP_INTO_DIC: - if (emit_pop_into_dic(hcl) <= -1) goto oops; + if (emit_pop_into_dic(hak) <= -1) goto oops; break; case COP_EMIT_POP_INTO_CONS: - if (emit_pop_into_cons(hcl, HCL_CODE_POP_INTO_CONS) <= -1) goto oops; + if (emit_pop_into_cons(hak, HAK_CODE_POP_INTO_CONS) <= -1) goto oops; break; case COP_EMIT_POP_INTO_CONS_END: - if (emit_pop_into_cons(hcl, HCL_CODE_POP_INTO_CONS_END) <= -1) goto oops; + if (emit_pop_into_cons(hak, HAK_CODE_POP_INTO_CONS_END) <= -1) goto oops; break; case COP_EMIT_POP_INTO_CONS_CDR: - if (emit_pop_into_cons(hcl, HCL_CODE_POP_INTO_CONS_CDR) <= -1) goto oops; + if (emit_pop_into_cons(hak, HAK_CODE_POP_INTO_CONS_CDR) <= -1) goto oops; break; case COP_EMIT_FUN: - if (emit_fun(hcl) <= -1) goto oops; + if (emit_fun(hak) <= -1) goto oops; break; case COP_EMIT_PLUS: - if (emit_plus(hcl) <= -1) goto oops; + if (emit_plus(hak) <= -1) goto oops; break; case COP_EMIT_POP_STACKTOP: - if (emit_pop_stacktop(hcl) <= -1) goto oops; + if (emit_pop_stacktop(hak) <= -1) goto oops; break; case COP_EMIT_RETURN: - if (emit_return(hcl) <= -1) goto oops; + if (emit_return(hak) <= -1) goto oops; break; case COP_EMIT_SET: - if (emit_set(hcl) <= -1) goto oops; + if (emit_set(hak) <= -1) goto oops; break; case COP_EMIT_CLASS_CMSTORE: - if (emit_class_cmstore(hcl) <= -1) goto oops; + if (emit_class_cmstore(hak) <= -1) goto oops; break; case COP_EMIT_CLASS_CIMSTORE: - if (emit_class_cimstore(hcl) <= -1) goto oops; + if (emit_class_cimstore(hak) <= -1) goto oops; break; case COP_EMIT_CLASS_IMSTORE: - if (emit_class_imstore(hcl) <= -1) goto oops; + if (emit_class_imstore(hak) <= -1) goto oops; break; case COP_EMIT_THROW: - if (emit_throw(hcl) <= -1) goto oops; + if (emit_throw(hak) <= -1) goto oops; break; case COP_POST_IF_COND: - if (post_if_cond(hcl) <= -1) goto oops; + if (post_if_cond(hak) <= -1) goto oops; break; case COP_POST_IF_BODY: - if (post_if_body(hcl) <= -1) goto oops; + if (post_if_body(hak) <= -1) goto oops; break; case COP_POST_UNTIL_BODY: case COP_POST_WHILE_BODY: - if (post_while_body(hcl) <= -1) goto oops; + if (post_while_body(hak) <= -1) goto oops; break; case COP_POST_UNTIL_COND: case COP_POST_WHILE_COND: - if (post_while_cond(hcl) <= -1) goto oops; + if (post_while_cond(hak) <= -1) goto oops; break; case COP_POST_TRY: - if (post_try(hcl) <= -1) goto oops; + if (post_try(hak) <= -1) goto oops; break; case COP_POST_CATCH: - if (post_catch(hcl) <= -1) goto oops; + if (post_catch(hak) <= -1) goto oops; break; case COP_POST_FUN: - if (post_fun(hcl) <= -1) goto oops; + if (post_fun(hak) <= -1) goto oops; break; default: - HCL_DEBUG1(hcl, "Internal error - invalid compiler opcode %d\n", cf->opcode); - hcl_seterrbfmt(hcl, HCL_EINTERN, "internal error - invalid compiler opcode %d", cf->opcode); + HAK_DEBUG1(hak, "Internal error - invalid compiler opcode %d\n", cf->opcode); + hak_seterrbfmt(hak, HAK_EINTERN, "internal error - invalid compiler opcode %d", cf->opcode); goto oops; } } /* emit the pop instruction to clear the final result */ - if (emit_byte_instruction(hcl, HCL_CODE_POP_STACKTOP, HCL_NULL) <= -1) goto oops; + if (emit_byte_instruction(hak, HAK_CODE_POP_STACKTOP, HAK_NULL) <= -1) goto oops; - HCL_ASSERT(hcl, GET_TOP_CFRAME_INDEX(hcl) < 0); - HCL_ASSERT(hcl, hcl->c->tv.s.len >= hcl->c->funblk.info[0].tmprlen); - HCL_ASSERT(hcl, hcl->c->tv.wcount >= hcl->c->funblk.info[0].tmprcnt); - HCL_ASSERT(hcl, hcl->c->ctlblk.depth == -1); /* no control blocks expected at this point */ + HAK_ASSERT(hak, GET_TOP_CFRAME_INDEX(hak) < 0); + HAK_ASSERT(hak, hak->c->tv.s.len >= hak->c->funblk.info[0].tmprlen); + HAK_ASSERT(hak, hak->c->tv.wcount >= hak->c->funblk.info[0].tmprcnt); + HAK_ASSERT(hak, hak->c->ctlblk.depth == -1); /* no control blocks expected at this point */ - HCL_ASSERT(hcl, hcl->c->funblk.depth == 0); /* ensure the virtual function block be the only one left */ - hcl->code.ngtmprs = hcl->c->funblk.info[0].tmprcnt; /* populate the number of global temporary variables */ + HAK_ASSERT(hak, hak->c->funblk.depth == 0); /* ensure the virtual function block be the only one left */ + hak->code.ngtmprs = hak->c->funblk.info[0].tmprcnt; /* populate the number of global temporary variables */ #if defined(CLEAR_FUNBLK_ALWAYS) - pop_funblk (hcl); - HCL_ASSERT(hcl, hcl->c->tv.s.len == 0); - HCL_ASSERT(hcl, hcl->c->tv.wcount == 0); + pop_funblk (hak); + HAK_ASSERT(hak, hak->c->tv.s.len == 0); + HAK_ASSERT(hak, hak->c->tv.wcount == 0); #endif - hcl->log.default_type_mask = log_default_type_mask; + hak->log.default_type_mask = log_default_type_mask; return 0; oops: - POP_ALL_CFRAMES (hcl); + POP_ALL_CFRAMES (hak); - hcl->log.default_type_mask = log_default_type_mask; + hak->log.default_type_mask = log_default_type_mask; /* rollback any bytecodes or literals emitted so far */ - hcl->code.bc.len = saved_bc_len; - hcl->code.lit.len = saved_lit_len; + hak->code.bc.len = saved_bc_len; + hak->code.lit.len = saved_lit_len; - while (hcl->c->funblk.depth > 0) pop_funblk (hcl); - HCL_ASSERT(hcl, hcl->c->funblk.depth == 0); + while (hak->c->funblk.depth > 0) pop_funblk (hak); + HAK_ASSERT(hak, hak->c->funblk.depth == 0); if (top_funblk_pushed_here) { - pop_funblk (hcl); - HCL_ASSERT(hcl, hcl->c->funblk.depth == -1); - HCL_ASSERT(hcl, hcl->c->tv.s.len == 0); - HCL_ASSERT(hcl, hcl->c->tv.wcount == 0); + pop_funblk (hak); + HAK_ASSERT(hak, hak->c->funblk.depth == -1); + HAK_ASSERT(hak, hak->c->tv.s.len == 0); + HAK_ASSERT(hak, hak->c->tv.wcount == 0); } else { @@ -7213,11 +7213,11 @@ oops: */ /* restore the top level function block as it's first captured in this function */ - clear_funblk_inners (hcl); - HCL_ASSERT(hcl, hcl->c->funblk.depth == 0); - hcl->c->funblk.info[0] = top_funblk_saved; - hcl->c->tv.s.len = top_funblk_saved.tmprlen; - hcl->c->tv.wcount = top_funblk_saved.tmprcnt; + clear_funblk_inners (hak); + HAK_ASSERT(hak, hak->c->funblk.depth == 0); + hak->c->funblk.info[0] = top_funblk_saved; + hak->c->tv.s.len = top_funblk_saved.tmprlen; + hak->c->tv.wcount = top_funblk_saved.tmprcnt; } return -1; diff --git a/lib/debug.c b/lib/debug.c index 1c29662..b1235ce 100644 --- a/lib/debug.c +++ b/lib/debug.c @@ -22,47 +22,47 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "hcl-prv.h" +#include "hak-prv.h" -void hcl_dumpsymtab (hcl_t* hcl) +void hak_dumpsymtab (hak_t* hak) { - hcl_oow_t i; - hcl_oop_char_t symbol; + hak_oow_t i; + hak_oop_char_t symbol; - HCL_DEBUG0 (hcl, "--------------------------------------------\n"); - HCL_DEBUG1 (hcl, "HCL Symbol Table %zu\n", HCL_OBJ_GET_SIZE(hcl->symtab->bucket)); - HCL_DEBUG0 (hcl, "--------------------------------------------\n"); + HAK_DEBUG0 (hak, "--------------------------------------------\n"); + HAK_DEBUG1 (hak, "HAK Symbol Table %zu\n", HAK_OBJ_GET_SIZE(hak->symtab->bucket)); + HAK_DEBUG0 (hak, "--------------------------------------------\n"); - for (i = 0; i < HCL_OBJ_GET_SIZE(hcl->symtab->bucket); i++) + for (i = 0; i < HAK_OBJ_GET_SIZE(hak->symtab->bucket); i++) { - symbol = (hcl_oop_char_t)hcl->symtab->bucket->slot[i]; - if ((hcl_oop_t)symbol != hcl->_nil) + symbol = (hak_oop_char_t)hak->symtab->bucket->slot[i]; + if ((hak_oop_t)symbol != hak->_nil) { - HCL_DEBUG2 (hcl, " %07zu %O\n", i, symbol); + HAK_DEBUG2 (hak, " %07zu %O\n", i, symbol); } } - HCL_DEBUG0 (hcl, "--------------------------------------------\n"); + HAK_DEBUG0 (hak, "--------------------------------------------\n"); } -void hcl_dumpdic (hcl_t* hcl, hcl_oop_dic_t dic, const hcl_bch_t* title) +void hak_dumpdic (hak_t* hak, hak_oop_dic_t dic, const hak_bch_t* title) { - hcl_oow_t i; - hcl_oop_cons_t ass; + hak_oow_t i; + hak_oop_cons_t ass; - HCL_DEBUG0 (hcl, "--------------------------------------------\n"); - HCL_DEBUG2 (hcl, "%s %zu\n", title, HCL_OBJ_GET_SIZE(dic->bucket)); - HCL_DEBUG0 (hcl, "--------------------------------------------\n"); + HAK_DEBUG0 (hak, "--------------------------------------------\n"); + HAK_DEBUG2 (hak, "%s %zu\n", title, HAK_OBJ_GET_SIZE(dic->bucket)); + HAK_DEBUG0 (hak, "--------------------------------------------\n"); - for (i = 0; i < HCL_OBJ_GET_SIZE(dic->bucket); i++) + for (i = 0; i < HAK_OBJ_GET_SIZE(dic->bucket); i++) { - ass = (hcl_oop_cons_t)dic->bucket->slot[i]; - if ((hcl_oop_t)ass != hcl->_nil) + ass = (hak_oop_cons_t)dic->bucket->slot[i]; + if ((hak_oop_t)ass != hak->_nil) { - HCL_DEBUG2 (hcl, " %07zu %O\n", i, ass->car); + HAK_DEBUG2 (hak, " %07zu %O\n", i, ass->car); } } - HCL_DEBUG0 (hcl, "--------------------------------------------\n"); + HAK_DEBUG0 (hak, "--------------------------------------------\n"); } diff --git a/lib/decode.c b/lib/decode.c index ae22fec..1786274 100644 --- a/lib/decode.c +++ b/lib/decode.c @@ -22,50 +22,50 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "hcl-prv.h" +#include "hak-prv.h" -#define DECODE_LOG_MASK (HCL_LOG_MNEMONIC | HCL_LOG_INFO) +#define DECODE_LOG_MASK (HAK_LOG_MNEMONIC | HAK_LOG_INFO) -#define LOG_INST_0(hcl,fmt) HCL_LOG1(hcl, DECODE_LOG_MASK, " %06zd " fmt "\n", fetched_instruction_pointer) -#define LOG_INST_1(hcl,fmt,a1) HCL_LOG2(hcl, DECODE_LOG_MASK, " %06zd " fmt "\n", fetched_instruction_pointer, a1) -#define LOG_INST_2(hcl,fmt,a1,a2) HCL_LOG3(hcl, DECODE_LOG_MASK, " %06zd " fmt "\n", fetched_instruction_pointer, a1, a2) -#define LOG_INST_3(hcl,fmt,a1,a2,a3) HCL_LOG4(hcl, DECODE_LOG_MASK, " %06zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3) -#define LOG_INST_4(hcl,fmt,a1,a2,a3,a4) HCL_LOG5(hcl, DECODE_LOG_MASK, " %06zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3, a4) -#define LOG_INST_5(hcl,fmt,a1,a2,a3,a4,a5) HCL_LOG6(hcl, DECODE_LOG_MASK, " %06zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3, a4, a5) -#define LOG_INST_6(hcl,fmt,a1,a2,a3,a4,a5,a6) HCL_LOG7(hcl, DECODE_LOG_MASK, " %06zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3, a4, a5, a6) -#define LOG_INST_7(hcl,fmt,a1,a2,a3,a4,a5,a6,a7) HCL_LOG8(hcl, DECODE_LOG_MASK, " %06zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3, a4, a5, a6, a7) +#define LOG_INST_0(hak,fmt) HAK_LOG1(hak, DECODE_LOG_MASK, " %06zd " fmt "\n", fetched_instruction_pointer) +#define LOG_INST_1(hak,fmt,a1) HAK_LOG2(hak, DECODE_LOG_MASK, " %06zd " fmt "\n", fetched_instruction_pointer, a1) +#define LOG_INST_2(hak,fmt,a1,a2) HAK_LOG3(hak, DECODE_LOG_MASK, " %06zd " fmt "\n", fetched_instruction_pointer, a1, a2) +#define LOG_INST_3(hak,fmt,a1,a2,a3) HAK_LOG4(hak, DECODE_LOG_MASK, " %06zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3) +#define LOG_INST_4(hak,fmt,a1,a2,a3,a4) HAK_LOG5(hak, DECODE_LOG_MASK, " %06zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3, a4) +#define LOG_INST_5(hak,fmt,a1,a2,a3,a4,a5) HAK_LOG6(hak, DECODE_LOG_MASK, " %06zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3, a4, a5) +#define LOG_INST_6(hak,fmt,a1,a2,a3,a4,a5,a6) HAK_LOG7(hak, DECODE_LOG_MASK, " %06zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3, a4, a5, a6) +#define LOG_INST_7(hak,fmt,a1,a2,a3,a4,a5,a6,a7) HAK_LOG8(hak, DECODE_LOG_MASK, " %06zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3, a4, a5, a6, a7) -#define FETCH_BYTE_CODE(hcl) (cdptr[ip++]) -#define FETCH_BYTE_CODE_TO(hcl,v_ooi) (v_ooi = FETCH_BYTE_CODE(hcl)) -#if (HCL_CODE_LONG_PARAM_SIZE == 2) -# define FETCH_PARAM_CODE_TO(hcl,v_ooi) \ +#define FETCH_BYTE_CODE(hak) (cdptr[ip++]) +#define FETCH_BYTE_CODE_TO(hak,v_ooi) (v_ooi = FETCH_BYTE_CODE(hak)) +#if (HAK_CODE_LONG_PARAM_SIZE == 2) +# define FETCH_PARAM_CODE_TO(hak,v_ooi) \ do { \ - v_ooi = FETCH_BYTE_CODE(hcl); \ - v_ooi = (v_ooi << 8) | FETCH_BYTE_CODE(hcl); \ + v_ooi = FETCH_BYTE_CODE(hak); \ + v_ooi = (v_ooi << 8) | FETCH_BYTE_CODE(hak); \ } while (0) #else -# define FETCH_PARAM_CODE_TO(hcl,v_ooi) (v_ooi = FETCH_BYTE_CODE(hcl)) +# define FETCH_PARAM_CODE_TO(hak,v_ooi) (v_ooi = FETCH_BYTE_CODE(hak)) #endif /* TODO: check if ip shoots beyond the maximum length in fetching code and parameters */ -int hcl_decode (hcl_t* hcl, const hcl_code_t* code, hcl_oow_t start, hcl_oow_t end) +int hak_decode (hak_t* hak, const hak_code_t* code, hak_oow_t start, hak_oow_t end) { - hcl_oob_t bcode, * cdptr; - hcl_ooi_t ip = start, fetched_instruction_pointer; - hcl_oow_t b1, b2; + hak_oob_t bcode, * cdptr; + hak_ooi_t ip = start, fetched_instruction_pointer; + hak_oow_t b1, b2; /* the instruction at the offset 'end' is not decoded. * decoding offset range is from start to end - 1. */ - if (!code) code = &hcl->code; + if (!code) code = &hak->code; - HCL_ASSERT (hcl, start >= 0 && end >= 0); - HCL_ASSERT (hcl, code->bc.len < HCL_SMOOI_MAX); /* asserted by the compiler */ - HCL_ASSERT (hcl, end <= code->bc.len); /* not harmful though this fails */ + HAK_ASSERT (hak, start >= 0 && end >= 0); + HAK_ASSERT (hak, code->bc.len < HAK_SMOOI_MAX); /* asserted by the compiler */ + HAK_ASSERT (hak, end <= code->bc.len); /* not harmful though this fails */ if (start >= code->bc.len) { - hcl_seterrnum (hcl, HCL_EINVAL); + hak_seterrnum (hak, HAK_EINVAL); return -1; } if (end > code->bc.len) end = code->bc.len; @@ -77,104 +77,104 @@ int hcl_decode (hcl_t* hcl, const hcl_code_t* code, hcl_oow_t start, hcl_oow_t e while (ip < end) { fetched_instruction_pointer = ip; - FETCH_BYTE_CODE_TO(hcl, bcode); + FETCH_BYTE_CODE_TO(hak, bcode); switch (bcode) { /* -------------------------------------------------------- */ - case HCL_CODE_PLUS: - LOG_INST_0 (hcl, "plus"); + case HAK_CODE_PLUS: + LOG_INST_0 (hak, "plus"); break; /* -------------------------------------------------------- */ - case HCL_CODE_PUSH_IVAR_X: - FETCH_PARAM_CODE_TO (hcl, b1); + case HAK_CODE_PUSH_IVAR_X: + FETCH_PARAM_CODE_TO (hak, b1); goto push_ivar; - case HCL_CODE_PUSH_IVAR_0: - case HCL_CODE_PUSH_IVAR_1: - case HCL_CODE_PUSH_IVAR_2: - case HCL_CODE_PUSH_IVAR_3: - case HCL_CODE_PUSH_IVAR_4: - case HCL_CODE_PUSH_IVAR_5: - case HCL_CODE_PUSH_IVAR_6: - case HCL_CODE_PUSH_IVAR_7: + case HAK_CODE_PUSH_IVAR_0: + case HAK_CODE_PUSH_IVAR_1: + case HAK_CODE_PUSH_IVAR_2: + case HAK_CODE_PUSH_IVAR_3: + case HAK_CODE_PUSH_IVAR_4: + case HAK_CODE_PUSH_IVAR_5: + case HAK_CODE_PUSH_IVAR_6: + case HAK_CODE_PUSH_IVAR_7: b1 = bcode & 0x7; /* low 3 bits */ push_ivar: - LOG_INST_1 (hcl, "push_ivar %zu", b1); + LOG_INST_1 (hak, "push_ivar %zu", b1); break; /* ------------------------------------------------- */ - case HCL_CODE_STORE_INTO_IVAR_X: - FETCH_PARAM_CODE_TO (hcl, b1); + case HAK_CODE_STORE_INTO_IVAR_X: + FETCH_PARAM_CODE_TO (hak, b1); goto store_into_ivar; - case HCL_CODE_STORE_INTO_IVAR_0: - case HCL_CODE_STORE_INTO_IVAR_1: - case HCL_CODE_STORE_INTO_IVAR_2: - case HCL_CODE_STORE_INTO_IVAR_3: - case HCL_CODE_STORE_INTO_IVAR_4: - case HCL_CODE_STORE_INTO_IVAR_5: - case HCL_CODE_STORE_INTO_IVAR_6: - case HCL_CODE_STORE_INTO_IVAR_7: + case HAK_CODE_STORE_INTO_IVAR_0: + case HAK_CODE_STORE_INTO_IVAR_1: + case HAK_CODE_STORE_INTO_IVAR_2: + case HAK_CODE_STORE_INTO_IVAR_3: + case HAK_CODE_STORE_INTO_IVAR_4: + case HAK_CODE_STORE_INTO_IVAR_5: + case HAK_CODE_STORE_INTO_IVAR_6: + case HAK_CODE_STORE_INTO_IVAR_7: b1 = bcode & 0x7; /* low 3 bits */ store_into_ivar: - LOG_INST_1 (hcl, "store_into_ivar %zu", b1); + LOG_INST_1 (hak, "store_into_ivar %zu", b1); break; - case HCL_CODE_POP_INTO_IVAR_X: - FETCH_PARAM_CODE_TO (hcl, b1); + case HAK_CODE_POP_INTO_IVAR_X: + FETCH_PARAM_CODE_TO (hak, b1); goto pop_into_ivar; - case HCL_CODE_POP_INTO_IVAR_0: - case HCL_CODE_POP_INTO_IVAR_1: - case HCL_CODE_POP_INTO_IVAR_2: - case HCL_CODE_POP_INTO_IVAR_3: - case HCL_CODE_POP_INTO_IVAR_4: - case HCL_CODE_POP_INTO_IVAR_5: - case HCL_CODE_POP_INTO_IVAR_6: - case HCL_CODE_POP_INTO_IVAR_7: + case HAK_CODE_POP_INTO_IVAR_0: + case HAK_CODE_POP_INTO_IVAR_1: + case HAK_CODE_POP_INTO_IVAR_2: + case HAK_CODE_POP_INTO_IVAR_3: + case HAK_CODE_POP_INTO_IVAR_4: + case HAK_CODE_POP_INTO_IVAR_5: + case HAK_CODE_POP_INTO_IVAR_6: + case HAK_CODE_POP_INTO_IVAR_7: b1 = bcode & 0x7; /* low 3 bits */ pop_into_ivar: - LOG_INST_1 (hcl, "pop_into_ivar %zu", b1); + LOG_INST_1 (hak, "pop_into_ivar %zu", b1); break; /* ------------------------------------------------- */ - case HCL_CODE_PUSH_TEMPVAR_X: - case HCL_CODE_STORE_INTO_TEMPVAR_X: - case HCL_CODE_POP_INTO_TEMPVAR_X: - FETCH_PARAM_CODE_TO (hcl, b1); + case HAK_CODE_PUSH_TEMPVAR_X: + case HAK_CODE_STORE_INTO_TEMPVAR_X: + case HAK_CODE_POP_INTO_TEMPVAR_X: + FETCH_PARAM_CODE_TO (hak, b1); goto handle_tempvar; - case HCL_CODE_PUSH_TEMPVAR_0: - case HCL_CODE_PUSH_TEMPVAR_1: - case HCL_CODE_PUSH_TEMPVAR_2: - case HCL_CODE_PUSH_TEMPVAR_3: - case HCL_CODE_PUSH_TEMPVAR_4: - case HCL_CODE_PUSH_TEMPVAR_5: - case HCL_CODE_PUSH_TEMPVAR_6: - case HCL_CODE_PUSH_TEMPVAR_7: - case HCL_CODE_STORE_INTO_TEMPVAR_0: - case HCL_CODE_STORE_INTO_TEMPVAR_1: - case HCL_CODE_STORE_INTO_TEMPVAR_2: - case HCL_CODE_STORE_INTO_TEMPVAR_3: - case HCL_CODE_STORE_INTO_TEMPVAR_4: - case HCL_CODE_STORE_INTO_TEMPVAR_5: - case HCL_CODE_STORE_INTO_TEMPVAR_6: - case HCL_CODE_STORE_INTO_TEMPVAR_7: - case HCL_CODE_POP_INTO_TEMPVAR_0: - case HCL_CODE_POP_INTO_TEMPVAR_1: - case HCL_CODE_POP_INTO_TEMPVAR_2: - case HCL_CODE_POP_INTO_TEMPVAR_3: - case HCL_CODE_POP_INTO_TEMPVAR_4: - case HCL_CODE_POP_INTO_TEMPVAR_5: - case HCL_CODE_POP_INTO_TEMPVAR_6: - case HCL_CODE_POP_INTO_TEMPVAR_7: + case HAK_CODE_PUSH_TEMPVAR_0: + case HAK_CODE_PUSH_TEMPVAR_1: + case HAK_CODE_PUSH_TEMPVAR_2: + case HAK_CODE_PUSH_TEMPVAR_3: + case HAK_CODE_PUSH_TEMPVAR_4: + case HAK_CODE_PUSH_TEMPVAR_5: + case HAK_CODE_PUSH_TEMPVAR_6: + case HAK_CODE_PUSH_TEMPVAR_7: + case HAK_CODE_STORE_INTO_TEMPVAR_0: + case HAK_CODE_STORE_INTO_TEMPVAR_1: + case HAK_CODE_STORE_INTO_TEMPVAR_2: + case HAK_CODE_STORE_INTO_TEMPVAR_3: + case HAK_CODE_STORE_INTO_TEMPVAR_4: + case HAK_CODE_STORE_INTO_TEMPVAR_5: + case HAK_CODE_STORE_INTO_TEMPVAR_6: + case HAK_CODE_STORE_INTO_TEMPVAR_7: + case HAK_CODE_POP_INTO_TEMPVAR_0: + case HAK_CODE_POP_INTO_TEMPVAR_1: + case HAK_CODE_POP_INTO_TEMPVAR_2: + case HAK_CODE_POP_INTO_TEMPVAR_3: + case HAK_CODE_POP_INTO_TEMPVAR_4: + case HAK_CODE_POP_INTO_TEMPVAR_5: + case HAK_CODE_POP_INTO_TEMPVAR_6: + case HAK_CODE_POP_INTO_TEMPVAR_7: b1 = bcode & 0x7; /* low 3 bits */ handle_tempvar: if ((bcode >> 4) & 1) { /* push - bit 4 on */ - LOG_INST_1 (hcl, "push_tempvar %zu", b1); + LOG_INST_1 (hak, "push_tempvar %zu", b1); } else { @@ -182,257 +182,257 @@ int hcl_decode (hcl_t* hcl, const hcl_code_t* code, hcl_oow_t start, hcl_oow_t e if ((bcode >> 3) & 1) { /* pop - bit 3 on */ - LOG_INST_1 (hcl, "pop_into_tempvar %zu", b1); + LOG_INST_1 (hak, "pop_into_tempvar %zu", b1); } else { - LOG_INST_1 (hcl, "store_into_tempvar %zu", b1); + LOG_INST_1 (hak, "store_into_tempvar %zu", b1); } } break; /* ------------------------------------------------- */ - case HCL_CODE_PUSH_LITERAL_X2: - FETCH_PARAM_CODE_TO (hcl, b1); - FETCH_PARAM_CODE_TO (hcl, b2); - b1 = (b1 << (8 * HCL_CODE_LONG_PARAM_SIZE)) | b2; + case HAK_CODE_PUSH_LITERAL_X2: + FETCH_PARAM_CODE_TO (hak, b1); + FETCH_PARAM_CODE_TO (hak, b2); + b1 = (b1 << (8 * HAK_CODE_LONG_PARAM_SIZE)) | b2; goto push_literal; - case HCL_CODE_PUSH_LITERAL_X: - FETCH_PARAM_CODE_TO (hcl, b1); + case HAK_CODE_PUSH_LITERAL_X: + FETCH_PARAM_CODE_TO (hak, b1); goto push_literal; - case HCL_CODE_PUSH_LITERAL_0: - case HCL_CODE_PUSH_LITERAL_1: - case HCL_CODE_PUSH_LITERAL_2: - case HCL_CODE_PUSH_LITERAL_3: - case HCL_CODE_PUSH_LITERAL_4: - case HCL_CODE_PUSH_LITERAL_5: - case HCL_CODE_PUSH_LITERAL_6: - case HCL_CODE_PUSH_LITERAL_7: + case HAK_CODE_PUSH_LITERAL_0: + case HAK_CODE_PUSH_LITERAL_1: + case HAK_CODE_PUSH_LITERAL_2: + case HAK_CODE_PUSH_LITERAL_3: + case HAK_CODE_PUSH_LITERAL_4: + case HAK_CODE_PUSH_LITERAL_5: + case HAK_CODE_PUSH_LITERAL_6: + case HAK_CODE_PUSH_LITERAL_7: b1 = bcode & 0x7; /* low 3 bits */ push_literal: - LOG_INST_1 (hcl, "push_literal @%zu", b1); + LOG_INST_1 (hak, "push_literal @%zu", b1); break; /* ------------------------------------------------- */ - case HCL_CODE_PUSH_OBJECT_X: - case HCL_CODE_STORE_INTO_OBJECT_X: - case HCL_CODE_POP_INTO_OBJECT_X: - FETCH_PARAM_CODE_TO (hcl, b1); + case HAK_CODE_PUSH_OBJECT_X: + case HAK_CODE_STORE_INTO_OBJECT_X: + case HAK_CODE_POP_INTO_OBJECT_X: + FETCH_PARAM_CODE_TO (hak, b1); goto handle_object; - case HCL_CODE_PUSH_OBJECT_0: - case HCL_CODE_PUSH_OBJECT_1: - case HCL_CODE_PUSH_OBJECT_2: - case HCL_CODE_PUSH_OBJECT_3: - case HCL_CODE_STORE_INTO_OBJECT_0: - case HCL_CODE_STORE_INTO_OBJECT_1: - case HCL_CODE_STORE_INTO_OBJECT_2: - case HCL_CODE_STORE_INTO_OBJECT_3: - case HCL_CODE_POP_INTO_OBJECT_0: - case HCL_CODE_POP_INTO_OBJECT_1: - case HCL_CODE_POP_INTO_OBJECT_2: - case HCL_CODE_POP_INTO_OBJECT_3: + case HAK_CODE_PUSH_OBJECT_0: + case HAK_CODE_PUSH_OBJECT_1: + case HAK_CODE_PUSH_OBJECT_2: + case HAK_CODE_PUSH_OBJECT_3: + case HAK_CODE_STORE_INTO_OBJECT_0: + case HAK_CODE_STORE_INTO_OBJECT_1: + case HAK_CODE_STORE_INTO_OBJECT_2: + case HAK_CODE_STORE_INTO_OBJECT_3: + case HAK_CODE_POP_INTO_OBJECT_0: + case HAK_CODE_POP_INTO_OBJECT_1: + case HAK_CODE_POP_INTO_OBJECT_2: + case HAK_CODE_POP_INTO_OBJECT_3: b1 = bcode & 0x3; /* low 2 bits */ handle_object: if ((bcode >> 3) & 1) { if ((bcode >> 2) & 1) { - LOG_INST_1 (hcl, "pop_into_object @%zu", b1); + LOG_INST_1 (hak, "pop_into_object @%zu", b1); } else { - LOG_INST_1 (hcl, "store_into_object @%zu", b1); + LOG_INST_1 (hak, "store_into_object @%zu", b1); } } else { - LOG_INST_1 (hcl, "push_object @%zu", b1); + LOG_INST_1 (hak, "push_object @%zu", b1); } break; /* -------------------------------------------------------- */ - case HCL_CODE_JUMP_FORWARD_X: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump_forward %zu", b1); + case HAK_CODE_JUMP_FORWARD_X: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump_forward %zu", b1); break; - case HCL_CODE_JUMP_FORWARD_0: - case HCL_CODE_JUMP_FORWARD_1: - case HCL_CODE_JUMP_FORWARD_2: - case HCL_CODE_JUMP_FORWARD_3: - LOG_INST_1 (hcl, "jump_forward %zu", (hcl_oow_t)(bcode & 0x3)); /* low 2 bits */ + case HAK_CODE_JUMP_FORWARD_0: + case HAK_CODE_JUMP_FORWARD_1: + case HAK_CODE_JUMP_FORWARD_2: + case HAK_CODE_JUMP_FORWARD_3: + LOG_INST_1 (hak, "jump_forward %zu", (hak_oow_t)(bcode & 0x3)); /* low 2 bits */ break; - case HCL_CODE_JUMP_BACKWARD_X: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump_backward %zu", b1); - hcl->ip += b1; + case HAK_CODE_JUMP_BACKWARD_X: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump_backward %zu", b1); + hak->ip += b1; break; - case HCL_CODE_JUMP_BACKWARD_0: - case HCL_CODE_JUMP_BACKWARD_1: - case HCL_CODE_JUMP_BACKWARD_2: - case HCL_CODE_JUMP_BACKWARD_3: - LOG_INST_1 (hcl, "jump_backward %zu", (hcl_oow_t)(bcode & 0x3)); /* low 2 bits */ + case HAK_CODE_JUMP_BACKWARD_0: + case HAK_CODE_JUMP_BACKWARD_1: + case HAK_CODE_JUMP_BACKWARD_2: + case HAK_CODE_JUMP_BACKWARD_3: + LOG_INST_1 (hak, "jump_backward %zu", (hak_oow_t)(bcode & 0x3)); /* low 2 bits */ break; - case HCL_CODE_JUMP_FORWARD_IF_TRUE: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump_forward_if_true %zu", b1); + case HAK_CODE_JUMP_FORWARD_IF_TRUE: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump_forward_if_true %zu", b1); break; - case HCL_CODE_JUMP2_FORWARD_IF_TRUE: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump2_forward_if_true %zu", b1); + case HAK_CODE_JUMP2_FORWARD_IF_TRUE: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump2_forward_if_true %zu", b1); break; - case HCL_CODE_JUMP_FORWARD_IF_FALSE: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump_forward_if_false %zu", b1); + case HAK_CODE_JUMP_FORWARD_IF_FALSE: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump_forward_if_false %zu", b1); break; - case HCL_CODE_JUMP2_FORWARD_IF_FALSE: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump2_forward_if_false %zu", b1); + case HAK_CODE_JUMP2_FORWARD_IF_FALSE: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump2_forward_if_false %zu", b1); break; - case HCL_CODE_JUMP2_FORWARD: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump2_forward %zu", b1); + case HAK_CODE_JUMP2_FORWARD: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump2_forward %zu", b1); break; - case HCL_CODE_JUMP_BACKWARD_IF_TRUE: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump_backward_if_true %zu", b1); + case HAK_CODE_JUMP_BACKWARD_IF_TRUE: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump_backward_if_true %zu", b1); break; - case HCL_CODE_JUMP2_BACKWARD_IF_TRUE: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump2_backward_if_true %zu", b1); + case HAK_CODE_JUMP2_BACKWARD_IF_TRUE: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump2_backward_if_true %zu", b1); break; - case HCL_CODE_JUMP_BACKWARD_IF_FALSE: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump_backward_if_false %zu", b1); + case HAK_CODE_JUMP_BACKWARD_IF_FALSE: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump_backward_if_false %zu", b1); break; - case HCL_CODE_JUMP2_BACKWARD_IF_FALSE: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump2_backward_if_false %zu", b1); + case HAK_CODE_JUMP2_BACKWARD_IF_FALSE: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump2_backward_if_false %zu", b1); break; - case HCL_CODE_JUMP2_BACKWARD: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump2_backward %zu", b1); + case HAK_CODE_JUMP2_BACKWARD: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump2_backward %zu", b1); break; /* -------------------------------------------------------- */ - case HCL_CODE_PUSH_RETURN_R: - LOG_INST_0 (hcl, "push_return_r"); + case HAK_CODE_PUSH_RETURN_R: + LOG_INST_0 (hak, "push_return_r"); break; - case HCL_CODE_CALL_R: - FETCH_PARAM_CODE_TO (hcl, b1); /* nargs */ - FETCH_PARAM_CODE_TO (hcl, b2); /* nrvars */ - LOG_INST_2 (hcl, "call %zu %zu", b1, b2); + case HAK_CODE_CALL_R: + FETCH_PARAM_CODE_TO (hak, b1); /* nargs */ + FETCH_PARAM_CODE_TO (hak, b2); /* nrvars */ + LOG_INST_2 (hak, "call %zu %zu", b1, b2); break; - case HCL_CODE_CALL_X: - FETCH_PARAM_CODE_TO (hcl, b1); + case HAK_CODE_CALL_X: + FETCH_PARAM_CODE_TO (hak, b1); goto handle_call; - case HCL_CODE_CALL_0: - case HCL_CODE_CALL_1: - case HCL_CODE_CALL_2: - case HCL_CODE_CALL_3: + case HAK_CODE_CALL_0: + case HAK_CODE_CALL_1: + case HAK_CODE_CALL_2: + case HAK_CODE_CALL_3: b1 = bcode & 0x3; /* low 2 bits */ handle_call: - LOG_INST_1 (hcl, "call %zu", b1); + LOG_INST_1 (hak, "call %zu", b1); break; /* -------------------------------------------------------- */ - case HCL_CODE_TRY_ENTER: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "try_enter %zu", b1); + case HAK_CODE_TRY_ENTER: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "try_enter %zu", b1); break; - case HCL_CODE_TRY_ENTER2: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "try_enter2 %zu", b1); + case HAK_CODE_TRY_ENTER2: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "try_enter2 %zu", b1); break; - case HCL_CODE_TRY_EXIT: - LOG_INST_0 (hcl, "try_exit"); + case HAK_CODE_TRY_EXIT: + LOG_INST_0 (hak, "try_exit"); break; - case HCL_CODE_THROW: - LOG_INST_0 (hcl, "throw"); + case HAK_CODE_THROW: + LOG_INST_0 (hak, "throw"); break; /* -------------------------------------------------------- */ - case HCL_CODE_CLASS_LOAD: - LOG_INST_0 (hcl, "class_load"); + case HAK_CODE_CLASS_LOAD: + LOG_INST_0 (hak, "class_load"); break; - case HCL_CODE_CLASS_ENTER: + case HAK_CODE_CLASS_ENTER: { - hcl_oow_t b3, b4, b5; - FETCH_PARAM_CODE_TO (hcl, b1); - FETCH_PARAM_CODE_TO (hcl, b2); - FETCH_PARAM_CODE_TO (hcl, b3); - FETCH_BYTE_CODE_TO (hcl, b4); /* spec/selfspec */ - FETCH_BYTE_CODE_TO (hcl, b5); /* indexed_type */ - LOG_INST_5 (hcl, "class_enter %zu %zu %zu %#zx %zu", b1, b2, b3, b4, b5); + hak_oow_t b3, b4, b5; + FETCH_PARAM_CODE_TO (hak, b1); + FETCH_PARAM_CODE_TO (hak, b2); + FETCH_PARAM_CODE_TO (hak, b3); + FETCH_BYTE_CODE_TO (hak, b4); /* spec/selfspec */ + FETCH_BYTE_CODE_TO (hak, b5); /* indexed_type */ + LOG_INST_5 (hak, "class_enter %zu %zu %zu %#zx %zu", b1, b2, b3, b4, b5); break; } - case HCL_CODE_CLASS_EXIT: - LOG_INST_0 (hcl, "class_exit"); + case HAK_CODE_CLASS_EXIT: + LOG_INST_0 (hak, "class_exit"); break; - case HCL_CODE_CLASS_PEXIT: - LOG_INST_0 (hcl, "class_pexit"); + case HAK_CODE_CLASS_PEXIT: + LOG_INST_0 (hak, "class_pexit"); break; - case HCL_CODE_CLASS_CMSTORE: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "class_cmstore @%zu", b1); + case HAK_CODE_CLASS_CMSTORE: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "class_cmstore @%zu", b1); break; - case HCL_CODE_CLASS_CIMSTORE: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "class_cimstore @%zu", b1); + case HAK_CODE_CLASS_CIMSTORE: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "class_cimstore @%zu", b1); break; - case HCL_CODE_CLASS_IMSTORE: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "class_imstore @%zu", b1); + case HAK_CODE_CLASS_IMSTORE: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "class_imstore @%zu", b1); break; /* -------------------------------------------------------- */ - case HCL_CODE_PUSH_CTXTEMPVAR_X: - case HCL_CODE_STORE_INTO_CTXTEMPVAR_X: - case HCL_CODE_POP_INTO_CTXTEMPVAR_X: - FETCH_PARAM_CODE_TO (hcl, b1); - FETCH_PARAM_CODE_TO (hcl, b2); + case HAK_CODE_PUSH_CTXTEMPVAR_X: + case HAK_CODE_STORE_INTO_CTXTEMPVAR_X: + case HAK_CODE_POP_INTO_CTXTEMPVAR_X: + FETCH_PARAM_CODE_TO (hak, b1); + FETCH_PARAM_CODE_TO (hak, b2); goto handle_ctxtempvar; - case HCL_CODE_PUSH_CTXTEMPVAR_0: - case HCL_CODE_PUSH_CTXTEMPVAR_1: - case HCL_CODE_PUSH_CTXTEMPVAR_2: - case HCL_CODE_PUSH_CTXTEMPVAR_3: - case HCL_CODE_STORE_INTO_CTXTEMPVAR_0: - case HCL_CODE_STORE_INTO_CTXTEMPVAR_1: - case HCL_CODE_STORE_INTO_CTXTEMPVAR_2: - case HCL_CODE_STORE_INTO_CTXTEMPVAR_3: - case HCL_CODE_POP_INTO_CTXTEMPVAR_0: - case HCL_CODE_POP_INTO_CTXTEMPVAR_1: - case HCL_CODE_POP_INTO_CTXTEMPVAR_2: - case HCL_CODE_POP_INTO_CTXTEMPVAR_3: + case HAK_CODE_PUSH_CTXTEMPVAR_0: + case HAK_CODE_PUSH_CTXTEMPVAR_1: + case HAK_CODE_PUSH_CTXTEMPVAR_2: + case HAK_CODE_PUSH_CTXTEMPVAR_3: + case HAK_CODE_STORE_INTO_CTXTEMPVAR_0: + case HAK_CODE_STORE_INTO_CTXTEMPVAR_1: + case HAK_CODE_STORE_INTO_CTXTEMPVAR_2: + case HAK_CODE_STORE_INTO_CTXTEMPVAR_3: + case HAK_CODE_POP_INTO_CTXTEMPVAR_0: + case HAK_CODE_POP_INTO_CTXTEMPVAR_1: + case HAK_CODE_POP_INTO_CTXTEMPVAR_2: + case HAK_CODE_POP_INTO_CTXTEMPVAR_3: b1 = bcode & 0x3; /* low 2 bits */ - FETCH_BYTE_CODE_TO (hcl, b2); + FETCH_BYTE_CODE_TO (hak, b2); handle_ctxtempvar: if ((bcode >> 3) & 1) @@ -441,45 +441,45 @@ int hcl_decode (hcl_t* hcl, const hcl_code_t* code, hcl_oow_t start, hcl_oow_t e if ((bcode >> 2) & 1) { - LOG_INST_2 (hcl, "pop_into_ctxtempvar %zu %zu", b1, b2); + LOG_INST_2 (hak, "pop_into_ctxtempvar %zu %zu", b1, b2); } else { - LOG_INST_2 (hcl, "store_into_ctxtempvar %zu %zu", b1, b2); + LOG_INST_2 (hak, "store_into_ctxtempvar %zu %zu", b1, b2); } } else { /* push */ - LOG_INST_2 (hcl, "push_ctxtempvar %zu %zu", b1, b2); + LOG_INST_2 (hak, "push_ctxtempvar %zu %zu", b1, b2); } break; /* -------------------------------------------------------- */ - case HCL_CODE_PUSH_OBJVAR_X: - case HCL_CODE_STORE_INTO_OBJVAR_X: - case HCL_CODE_POP_INTO_OBJVAR_X: - FETCH_PARAM_CODE_TO (hcl, b1); - FETCH_PARAM_CODE_TO (hcl, b2); + case HAK_CODE_PUSH_OBJVAR_X: + case HAK_CODE_STORE_INTO_OBJVAR_X: + case HAK_CODE_POP_INTO_OBJVAR_X: + FETCH_PARAM_CODE_TO (hak, b1); + FETCH_PARAM_CODE_TO (hak, b2); goto handle_objvar; - case HCL_CODE_PUSH_OBJVAR_0: - case HCL_CODE_PUSH_OBJVAR_1: - case HCL_CODE_PUSH_OBJVAR_2: - case HCL_CODE_PUSH_OBJVAR_3: - case HCL_CODE_STORE_INTO_OBJVAR_0: - case HCL_CODE_STORE_INTO_OBJVAR_1: - case HCL_CODE_STORE_INTO_OBJVAR_2: - case HCL_CODE_STORE_INTO_OBJVAR_3: - case HCL_CODE_POP_INTO_OBJVAR_0: - case HCL_CODE_POP_INTO_OBJVAR_1: - case HCL_CODE_POP_INTO_OBJVAR_2: - case HCL_CODE_POP_INTO_OBJVAR_3: + case HAK_CODE_PUSH_OBJVAR_0: + case HAK_CODE_PUSH_OBJVAR_1: + case HAK_CODE_PUSH_OBJVAR_2: + case HAK_CODE_PUSH_OBJVAR_3: + case HAK_CODE_STORE_INTO_OBJVAR_0: + case HAK_CODE_STORE_INTO_OBJVAR_1: + case HAK_CODE_STORE_INTO_OBJVAR_2: + case HAK_CODE_STORE_INTO_OBJVAR_3: + case HAK_CODE_POP_INTO_OBJVAR_0: + case HAK_CODE_POP_INTO_OBJVAR_1: + case HAK_CODE_POP_INTO_OBJVAR_2: + case HAK_CODE_POP_INTO_OBJVAR_3: /* b1 -> variable index to the object indicated by b2. * b2 -> object index stored in the literal frame. */ b1 = bcode & 0x3; /* low 2 bits */ - FETCH_BYTE_CODE_TO (hcl, b2); + FETCH_BYTE_CODE_TO (hak, b2); handle_objvar: if ((bcode >> 3) & 1) @@ -487,234 +487,234 @@ int hcl_decode (hcl_t* hcl, const hcl_code_t* code, hcl_oow_t start, hcl_oow_t e /* store or pop */ if ((bcode >> 2) & 1) { - LOG_INST_2 (hcl, "pop_into_objvar %zu %zu", b1, b2); + LOG_INST_2 (hak, "pop_into_objvar %zu %zu", b1, b2); } else { - LOG_INST_2 (hcl, "store_into_objvar %zu %zu", b1, b2); + LOG_INST_2 (hak, "store_into_objvar %zu %zu", b1, b2); } } else { - LOG_INST_2 (hcl, "push_objvar %zu %zu", b1, b2); + LOG_INST_2 (hak, "push_objvar %zu %zu", b1, b2); } break; /* -------------------------------------------------------- */ - case HCL_CODE_SEND_R: - FETCH_PARAM_CODE_TO (hcl, b1); /* nargs */ - FETCH_PARAM_CODE_TO (hcl, b2); /* nrvars */ - LOG_INST_2 (hcl, "send_r %zu %zu", b1, b2); + case HAK_CODE_SEND_R: + FETCH_PARAM_CODE_TO (hak, b1); /* nargs */ + FETCH_PARAM_CODE_TO (hak, b2); /* nrvars */ + LOG_INST_2 (hak, "send_r %zu %zu", b1, b2); break; - case HCL_CODE_SEND_TO_SUPER_R: - FETCH_PARAM_CODE_TO (hcl, b1); /* nargs */ - FETCH_PARAM_CODE_TO (hcl, b2); /* nrvars */ - LOG_INST_2 (hcl, "send_to_super_r %zu %zu", b1, b2); + case HAK_CODE_SEND_TO_SUPER_R: + FETCH_PARAM_CODE_TO (hak, b1); /* nargs */ + FETCH_PARAM_CODE_TO (hak, b2); /* nrvars */ + LOG_INST_2 (hak, "send_to_super_r %zu %zu", b1, b2); break; - case HCL_CODE_SEND_X: - case HCL_CODE_SEND_TO_SUPER_X: - FETCH_PARAM_CODE_TO (hcl, b1); + case HAK_CODE_SEND_X: + case HAK_CODE_SEND_TO_SUPER_X: + FETCH_PARAM_CODE_TO (hak, b1); goto handle_send; - case HCL_CODE_SEND_0: - case HCL_CODE_SEND_1: - case HCL_CODE_SEND_2: - case HCL_CODE_SEND_3: - case HCL_CODE_SEND_TO_SUPER_0: - case HCL_CODE_SEND_TO_SUPER_1: - case HCL_CODE_SEND_TO_SUPER_2: - case HCL_CODE_SEND_TO_SUPER_3: + case HAK_CODE_SEND_0: + case HAK_CODE_SEND_1: + case HAK_CODE_SEND_2: + case HAK_CODE_SEND_3: + case HAK_CODE_SEND_TO_SUPER_0: + case HAK_CODE_SEND_TO_SUPER_1: + case HAK_CODE_SEND_TO_SUPER_2: + case HAK_CODE_SEND_TO_SUPER_3: b1 = bcode & 0x3; /* low 2 bits */ handle_send: - LOG_INST_2 (hcl, "send%hs %zu", (((bcode >> 2) & 1)? "_to_super": ""), b1); + LOG_INST_2 (hak, "send%hs %zu", (((bcode >> 2) & 1)? "_to_super": ""), b1); break; /* -------------------------------------------------------- */ - case HCL_CODE_PUSH_CVAR_I_X: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "push_cvar_i %zu", b1); + case HAK_CODE_PUSH_CVAR_I_X: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "push_cvar_i %zu", b1); break; - case HCL_CODE_STORE_INTO_CVAR_I_X: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "store_into_cvar_i %zu", b1); + case HAK_CODE_STORE_INTO_CVAR_I_X: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "store_into_cvar_i %zu", b1); break; - case HCL_CODE_POP_INTO_CVAR_I_X: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "pop_into_cvar_i %zu", b1); + case HAK_CODE_POP_INTO_CVAR_I_X: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "pop_into_cvar_i %zu", b1); break; /* -------------------------------------------------------- */ - case HCL_CODE_PUSH_CVAR_M_X: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "push_cvar_m %zu", b1); + case HAK_CODE_PUSH_CVAR_M_X: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "push_cvar_m %zu", b1); break; - case HCL_CODE_STORE_INTO_CVAR_M_X: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "store_into_cvar_m %zu", b1); + case HAK_CODE_STORE_INTO_CVAR_M_X: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "store_into_cvar_m %zu", b1); break; - case HCL_CODE_POP_INTO_CVAR_M_X: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "pop_into_cvar_m %zu", b1); + case HAK_CODE_POP_INTO_CVAR_M_X: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "pop_into_cvar_m %zu", b1); break; /* -------------------------------------------------------- */ - case HCL_CODE_PUSH_RECEIVER: - LOG_INST_0 (hcl, "push_receiver"); + case HAK_CODE_PUSH_RECEIVER: + LOG_INST_0 (hak, "push_receiver"); break; - case HCL_CODE_PUSH_NIL: - LOG_INST_0 (hcl, "push_nil"); + case HAK_CODE_PUSH_NIL: + LOG_INST_0 (hak, "push_nil"); break; - case HCL_CODE_PUSH_TRUE: - LOG_INST_0 (hcl, "push_true"); + case HAK_CODE_PUSH_TRUE: + LOG_INST_0 (hak, "push_true"); break; - case HCL_CODE_PUSH_FALSE: - LOG_INST_0 (hcl, "push_false"); + case HAK_CODE_PUSH_FALSE: + LOG_INST_0 (hak, "push_false"); break; - case HCL_CODE_PUSH_CONTEXT: - LOG_INST_0 (hcl, "push_context"); + case HAK_CODE_PUSH_CONTEXT: + LOG_INST_0 (hak, "push_context"); break; - case HCL_CODE_PUSH_PROCESS: - LOG_INST_0 (hcl, "push_process"); + case HAK_CODE_PUSH_PROCESS: + LOG_INST_0 (hak, "push_process"); break; - case HCL_CODE_PUSH_NEGONE: - LOG_INST_0 (hcl, "push_negone"); + case HAK_CODE_PUSH_NEGONE: + LOG_INST_0 (hak, "push_negone"); break; - case HCL_CODE_PUSH_ZERO: - LOG_INST_0 (hcl, "push_zero"); + case HAK_CODE_PUSH_ZERO: + LOG_INST_0 (hak, "push_zero"); break; - case HCL_CODE_PUSH_ONE: - LOG_INST_0 (hcl, "push_one"); + case HAK_CODE_PUSH_ONE: + LOG_INST_0 (hak, "push_one"); break; - case HCL_CODE_PUSH_TWO: - LOG_INST_0 (hcl, "push_two"); + case HAK_CODE_PUSH_TWO: + LOG_INST_0 (hak, "push_two"); break; - case HCL_CODE_PUSH_INTLIT: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "push_intlit %zu", b1); + case HAK_CODE_PUSH_INTLIT: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "push_intlit %zu", b1); break; - case HCL_CODE_PUSH_NEGINTLIT: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "push_negintlit %zu", b1); + case HAK_CODE_PUSH_NEGINTLIT: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "push_negintlit %zu", b1); break; - case HCL_CODE_PUSH_CHARLIT: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "push_charlit %zu", b1); + case HAK_CODE_PUSH_CHARLIT: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "push_charlit %zu", b1); break; /* -------------------------------------------------------- */ - case HCL_CODE_MAKE_ARRAY: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "make_array %zu", b1); + case HAK_CODE_MAKE_ARRAY: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "make_array %zu", b1); break; - case HCL_CODE_POP_INTO_ARRAY: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "pop_into_array %zu", b1); + case HAK_CODE_POP_INTO_ARRAY: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "pop_into_array %zu", b1); break; - case HCL_CODE_MAKE_BYTEARRAY: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "make_bytearray %zu", b1); + case HAK_CODE_MAKE_BYTEARRAY: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "make_bytearray %zu", b1); break; - case HCL_CODE_POP_INTO_BYTEARRAY: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "pop_into_bytearray %zu", b1); + case HAK_CODE_POP_INTO_BYTEARRAY: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "pop_into_bytearray %zu", b1); break; - case HCL_CODE_MAKE_CHARARRAY: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "make_chararray %zu", b1); + case HAK_CODE_MAKE_CHARARRAY: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "make_chararray %zu", b1); break; - case HCL_CODE_POP_INTO_CHARARRAY: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "pop_into_chararray %zu", b1); + case HAK_CODE_POP_INTO_CHARARRAY: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "pop_into_chararray %zu", b1); break; - case HCL_CODE_MAKE_DIC: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "make_dic %zu", b1); + case HAK_CODE_MAKE_DIC: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "make_dic %zu", b1); break; - case HCL_CODE_POP_INTO_DIC: - LOG_INST_0 (hcl, "pop_into_dic"); + case HAK_CODE_POP_INTO_DIC: + LOG_INST_0 (hak, "pop_into_dic"); break; - case HCL_CODE_MAKE_CONS: - LOG_INST_0 (hcl, "make_cons"); + case HAK_CODE_MAKE_CONS: + LOG_INST_0 (hak, "make_cons"); break; - case HCL_CODE_POP_INTO_CONS: - LOG_INST_0 (hcl, "pop_into_cons"); + case HAK_CODE_POP_INTO_CONS: + LOG_INST_0 (hak, "pop_into_cons"); break; - case HCL_CODE_POP_INTO_CONS_END: - LOG_INST_0 (hcl, "pop_into_cons_end"); + case HAK_CODE_POP_INTO_CONS_END: + LOG_INST_0 (hak, "pop_into_cons_end"); break; - case HCL_CODE_POP_INTO_CONS_CDR: - LOG_INST_0 (hcl, "pop_into_cons_cdr"); + case HAK_CODE_POP_INTO_CONS_CDR: + LOG_INST_0 (hak, "pop_into_cons_cdr"); break; /* -------------------------------------------------------- */ - case HCL_CODE_DUP_STACKTOP: - LOG_INST_0 (hcl, "dup_stacktop"); + case HAK_CODE_DUP_STACKTOP: + LOG_INST_0 (hak, "dup_stacktop"); break; - case HCL_CODE_POP_STACKTOP: - LOG_INST_0 (hcl, "pop_stacktop"); + case HAK_CODE_POP_STACKTOP: + LOG_INST_0 (hak, "pop_stacktop"); break; - case HCL_CODE_RETURN_STACKTOP: - LOG_INST_0 (hcl, "return_stacktop"); + case HAK_CODE_RETURN_STACKTOP: + LOG_INST_0 (hak, "return_stacktop"); break; - case HCL_CODE_RETURN_RECEIVER: - LOG_INST_0 (hcl, "return_receiver"); + case HAK_CODE_RETURN_RECEIVER: + LOG_INST_0 (hak, "return_receiver"); break; - case HCL_CODE_RETURN_FROM_BLOCK: - LOG_INST_0 (hcl, "return_from_block"); + case HAK_CODE_RETURN_FROM_BLOCK: + LOG_INST_0 (hak, "return_from_block"); break; - case HCL_CODE_MAKE_FUNCTION: + case HAK_CODE_MAKE_FUNCTION: { - hcl_oow_t b3, b4; + hak_oow_t b3, b4; /* b1 - block mask * b2 - block mask * b3 - base literal frame start * b4 - base literal frame end */ - FETCH_PARAM_CODE_TO (hcl, b1); - FETCH_PARAM_CODE_TO (hcl, b2); - FETCH_PARAM_CODE_TO (hcl, b3); - FETCH_PARAM_CODE_TO (hcl, b4); + FETCH_PARAM_CODE_TO (hak, b1); + FETCH_PARAM_CODE_TO (hak, b2); + FETCH_PARAM_CODE_TO (hak, b3); + FETCH_PARAM_CODE_TO (hak, b4); - b1 = (b1 << (8 * HCL_CODE_LONG_PARAM_SIZE)) | b2; - LOG_INST_7 (hcl, "make_function %zu %zu %zu %zu %zu %zu %zu", + b1 = (b1 << (8 * HAK_CODE_LONG_PARAM_SIZE)) | b2; + LOG_INST_7 (hak, "make_function %zu %zu %zu %zu %zu %zu %zu", GET_BLK_MASK_INSTA(b1), GET_BLK_MASK_VA(b1), GET_BLK_MASK_NARGS(b1), @@ -722,35 +722,35 @@ int hcl_decode (hcl_t* hcl, const hcl_code_t* code, hcl_oow_t start, hcl_oow_t e GET_BLK_MASK_NLVARS(b1), b3, b4); - HCL_ASSERT (hcl, b1 >= 0); + HAK_ASSERT (hak, b1 >= 0); break; } - case HCL_CODE_MAKE_BLOCK: + case HAK_CODE_MAKE_BLOCK: /* b1 - block mask * b2 - block mask */ - FETCH_PARAM_CODE_TO (hcl, b1); - FETCH_PARAM_CODE_TO (hcl, b2); - b1 = (b1 << (8 * HCL_CODE_LONG_PARAM_SIZE)) | b2; + FETCH_PARAM_CODE_TO (hak, b1); + FETCH_PARAM_CODE_TO (hak, b2); + b1 = (b1 << (8 * HAK_CODE_LONG_PARAM_SIZE)) | b2; - LOG_INST_5 (hcl, "make_block %zu %zu %zu %zu %zu", + LOG_INST_5 (hak, "make_block %zu %zu %zu %zu %zu", GET_BLK_MASK_INSTA(b1), GET_BLK_MASK_VA(b1), GET_BLK_MASK_NARGS(b1), GET_BLK_MASK_NRVARS(b1), GET_BLK_MASK_NLVARS(b1)); - HCL_ASSERT (hcl, b1 >= 0); + HAK_ASSERT (hak, b1 >= 0); break; - case HCL_CODE_NOOP: + case HAK_CODE_NOOP: /* do nothing */ - LOG_INST_0 (hcl, "noop"); + LOG_INST_0 (hak, "noop"); break; default: - LOG_INST_1 (hcl, "UNKNOWN BYTE CODE ENCOUNTERED %x", (int)bcode); - hcl_seterrnum (hcl, HCL_EINTERN); + LOG_INST_1 (hak, "UNKNOWN BYTE CODE ENCOUNTERED %x", (int)bcode); + hak_seterrnum (hak, HAK_EINTERN); break; } } @@ -760,7 +760,7 @@ int hcl_decode (hcl_t* hcl, const hcl_code_t* code, hcl_oow_t start, hcl_oow_t e /* print literal frame contents */ for (ip = 0; ip < code->lit.len; ip++) { - HCL_LOG2(hcl, DECODE_LOG_MASK, "@%-9zd %O\n", ip, ((hcl_oop_oop_t)code->lit.arr)->slot[ip]); + HAK_LOG2(hak, DECODE_LOG_MASK, "@%-9zd %O\n", ip, ((hak_oop_oop_t)code->lit.arr)->slot[ip]); } return 0; diff --git a/lib/dic.c b/lib/dic.c index 088f8a8..3fe27d7 100644 --- a/lib/dic.c +++ b/lib/dic.c @@ -22,7 +22,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "hcl-prv.h" +#include "hak-prv.h" /* The dictionary functions in this file are used for storing * a dictionary object enclosed in {}. So putting a non-symbol @@ -30,13 +30,13 @@ * so SYMBOL_ONLY_KEY must not be defined */ /*#define SYMBOL_ONLY_KEY*/ -static hcl_oop_oop_t expand_bucket (hcl_t* hcl, hcl_oop_oop_t oldbuc) +static hak_oop_oop_t expand_bucket (hak_t* hak, hak_oop_oop_t oldbuc) { - hcl_oop_oop_t newbuc; - hcl_oow_t oldsz, newsz, index; - hcl_oop_cons_t ass; + hak_oop_oop_t newbuc; + hak_oow_t oldsz, newsz, index; + hak_oop_cons_t ass; - oldsz = HCL_OBJ_GET_SIZE(oldbuc); + oldsz = HAK_OBJ_GET_SIZE(oldbuc); /* TODO: better growth policy? */ if (oldsz < 5000) newsz = oldsz + oldsz; @@ -48,77 +48,77 @@ static hcl_oop_oop_t expand_bucket (hcl_t* hcl, hcl_oop_oop_t oldbuc) else if (oldsz < 1600000) newsz = oldsz + (oldsz / 64); else { - hcl_oow_t inc, inc_max; + hak_oow_t inc, inc_max; inc = oldsz / 128; - inc_max = HCL_OBJ_SIZE_MAX - oldsz; + inc_max = HAK_OBJ_SIZE_MAX - oldsz; if (inc > inc_max) { if (inc_max > 0) inc = inc_max; else { - hcl_seterrnum (hcl, HCL_EOOMEM); - return HCL_NULL; + hak_seterrnum (hak, HAK_EOOMEM); + return HAK_NULL; } } newsz = oldsz + inc; } - hcl_pushvolat (hcl, (hcl_oop_t*)&oldbuc); - newbuc = (hcl_oop_oop_t)hcl_makearray(hcl, newsz); - hcl_popvolat (hcl); - if (!newbuc) return HCL_NULL; + hak_pushvolat (hak, (hak_oop_t*)&oldbuc); + newbuc = (hak_oop_oop_t)hak_makearray(hak, newsz); + hak_popvolat (hak); + if (!newbuc) return HAK_NULL; while (oldsz > 0) { - ass = (hcl_oop_cons_t)oldbuc->slot[--oldsz]; - if ((hcl_oop_t)ass != hcl->_nil) + ass = (hak_oop_cons_t)oldbuc->slot[--oldsz]; + if ((hak_oop_t)ass != hak->_nil) { #if defined(SYMBOL_ONLY_KEY) - hcl_oop_char_t key; - HCL_ASSERT (hcl, HCL_IS_CONS(hcl,ass)); - key = (hcl_oop_char_t)ass->car; - HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl,key)); - index = hcl_hash_oochars(key->slot, HCL_OBJ_GET_SIZE(key)) % newsz; + hak_oop_char_t key; + HAK_ASSERT (hak, HAK_IS_CONS(hak,ass)); + key = (hak_oop_char_t)ass->car; + HAK_ASSERT (hak, HAK_IS_SYMBOL(hak,key)); + index = hak_hash_oochars(key->slot, HAK_OBJ_GET_SIZE(key)) % newsz; #else int n; - HCL_ASSERT (hcl, HCL_IS_CONS(hcl,ass)); - n = hcl_hashobj(hcl, ass->car, &index); - HCL_ASSERT (hcl, n == 0); /* since it's expanding, the existing one in the bucket should always be hashable */ + HAK_ASSERT (hak, HAK_IS_CONS(hak,ass)); + n = hak_hashobj(hak, ass->car, &index); + HAK_ASSERT (hak, n == 0); /* since it's expanding, the existing one in the bucket should always be hashable */ index %= newsz; #endif - while (newbuc->slot[index] != hcl->_nil) index = (index + 1) % newsz; - newbuc->slot[index] = (hcl_oop_t)ass; + while (newbuc->slot[index] != hak->_nil) index = (index + 1) % newsz; + newbuc->slot[index] = (hak_oop_t)ass; } } return newbuc; } -static hcl_oop_cons_t find_or_upsert (hcl_t* hcl, hcl_oop_dic_t dic, hcl_oop_t key, hcl_oop_t value, int is_method) +static hak_oop_cons_t find_or_upsert (hak_t* hak, hak_oop_dic_t dic, hak_oop_t key, hak_oop_t value, int is_method) { - hcl_ooi_t tally; - hcl_oow_t index; - hcl_oop_cons_t ass; - hcl_oow_t tmp_count = 0; + hak_ooi_t tally; + hak_oow_t index; + hak_oop_cons_t ass; + hak_oow_t tmp_count = 0; /* the system dictionary is not a generic dictionary. * it accepts only a symbol as a key. */ #if defined(SYMBOL_ONLY_KEY) - HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl,key)); + HAK_ASSERT (hak, HAK_IS_SYMBOL(hak,key)); #endif - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(dic->tally)); - HCL_ASSERT (hcl, HCL_IS_ARRAY(hcl,dic->bucket)); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(dic->tally)); + HAK_ASSERT (hak, HAK_IS_ARRAY(hak,dic->bucket)); #if defined(SYMBOL_ONLY_KEY) - index = hcl_hash_oochars(HCL_OBJ_GET_CHAR_SLOT(key), HCL_OBJ_GET_SIZE(key)) % HCL_OBJ_GET_SIZE(dic->bucket); + index = hak_hash_oochars(HAK_OBJ_GET_CHAR_SLOT(key), HAK_OBJ_GET_SIZE(key)) % HAK_OBJ_GET_SIZE(dic->bucket); #else - if (hcl_hashobj(hcl, key, &index) <= -1) return HCL_NULL; - index %= HCL_OBJ_GET_SIZE(dic->bucket); + if (hak_hashobj(hak, key, &index) <= -1) return HAK_NULL; + index %= HAK_OBJ_GET_SIZE(dic->bucket); #endif /* find */ - while (dic->bucket->slot[index] != hcl->_nil) + while (dic->bucket->slot[index] != hak->_nil) { #if defined(SYMBOL_ONLY_KEY) /* nothing */ @@ -126,28 +126,28 @@ static hcl_oop_cons_t find_or_upsert (hcl_t* hcl, hcl_oop_dic_t dic, hcl_oop_t k int n; #endif - ass = (hcl_oop_cons_t)dic->bucket->slot[index]; - HCL_ASSERT (hcl, HCL_IS_CONS(hcl,ass)); + ass = (hak_oop_cons_t)dic->bucket->slot[index]; + HAK_ASSERT (hak, HAK_IS_CONS(hak,ass)); #if defined(SYMBOL_ONLY_KEY) - HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl,ass->car)); - if (HCL_OBJ_GET_SIZE(key) == HCL_OBJ_GET_SIZE(ass->car) && - hcl_equal_oochars(HCL_OBJ_GET_CHAR_SLOT(key), HCL_OBJ_GET_CHAR_SLOT(ass->car), HCL_OBJ_GET_SIZE(key))) + HAK_ASSERT (hak, HAK_IS_SYMBOL(hak,ass->car)); + if (HAK_OBJ_GET_SIZE(key) == HAK_OBJ_GET_SIZE(ass->car) && + hak_equal_oochars(HAK_OBJ_GET_CHAR_SLOT(key), HAK_OBJ_GET_CHAR_SLOT(ass->car), HAK_OBJ_GET_SIZE(key))) #else - n = hcl_equalobjs(hcl, key, ass->car); - if (n <= -1) return HCL_NULL; + n = hak_equalobjs(hak, key, ass->car); + if (n <= -1) return HAK_NULL; if (n >= 1) #endif { - /* the value of HCL_NULL indicates no insertion or update. */ + /* the value of HAK_NULL indicates no insertion or update. */ if (value) { if (is_method) { - hcl_oop_cons_t pair; - pair = (hcl_oop_cons_t)ass->cdr; /* once found, this must be a pair of method pointers */ - HCL_ASSERT (hcl, HCL_IS_CONS(hcl, pair)); - HCL_ASSERT (hcl, HCL_IS_COMPILED_BLOCK(hcl, value)); + hak_oop_cons_t pair; + pair = (hak_oop_cons_t)ass->cdr; /* once found, this must be a pair of method pointers */ + HAK_ASSERT (hak, HAK_IS_CONS(hak, pair)); + HAK_ASSERT (hak, HAK_IS_COMPILED_BLOCK(hak, value)); if (is_method & 1) pair->car = value; /* class method */ if (is_method & 2) pair->cdr = value; /* instance method */ /* the class instantiation method goes to both cells. @@ -159,39 +159,39 @@ static hcl_oop_cons_t find_or_upsert (hcl_t* hcl, hcl_oop_dic_t dic, hcl_oop_t k return ass; } - index = (index + 1) % HCL_OBJ_GET_SIZE(dic->bucket); + index = (index + 1) % HAK_OBJ_GET_SIZE(dic->bucket); } if (!value) { - /* when value is HCL_NULL, perform no insertion. - * the value of HCL_NULL indicates no insertion or update. */ - hcl_seterrbfmt (hcl, HCL_ENOENT, "key not found - %O", key); - return HCL_NULL; + /* when value is HAK_NULL, perform no insertion. + * the value of HAK_NULL indicates no insertion or update. */ + hak_seterrbfmt (hak, HAK_ENOENT, "key not found - %O", key); + return HAK_NULL; } /* the key is not found. insert it. */ - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(dic->tally)); - tally = HCL_OOP_TO_SMOOI(dic->tally); - if (tally >= HCL_SMOOI_MAX) + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(dic->tally)); + tally = HAK_OOP_TO_SMOOI(dic->tally); + if (tally >= HAK_SMOOI_MAX) { /* this built-in dictionary is not allowed to hold more than - * HCL_SMOOI_MAX items for efficiency sake */ - hcl_seterrnum (hcl, HCL_EDFULL); - return HCL_NULL; + * HAK_SMOOI_MAX items for efficiency sake */ + hak_seterrnum (hak, HAK_EDFULL); + return HAK_NULL; } - hcl_pushvolat (hcl, (hcl_oop_t*)&dic); tmp_count++; - hcl_pushvolat (hcl, (hcl_oop_t*)&key); tmp_count++; - hcl_pushvolat (hcl, &value); tmp_count++; + hak_pushvolat (hak, (hak_oop_t*)&dic); tmp_count++; + hak_pushvolat (hak, (hak_oop_t*)&key); tmp_count++; + hak_pushvolat (hak, &value); tmp_count++; - /* no conversion to hcl_oow_t is necessary for tally + 1. - * the maximum value of tally is checked to be HCL_SMOOI_MAX - 1. - * tally + 1 can produce at most HCL_SMOOI_MAX. above all, - * HCL_SMOOI_MAX is way smaller than HCL_TYPE_MAX(hcl_ooi_t). */ - if (tally + 1 >= HCL_OBJ_GET_SIZE(dic->bucket)) + /* no conversion to hak_oow_t is necessary for tally + 1. + * the maximum value of tally is checked to be HAK_SMOOI_MAX - 1. + * tally + 1 can produce at most HAK_SMOOI_MAX. above all, + * HAK_SMOOI_MAX is way smaller than HAK_TYPE_MAX(hak_ooi_t). */ + if (tally + 1 >= HAK_OBJ_GET_SIZE(dic->bucket)) { - hcl_oop_oop_t bucket; + hak_oop_oop_t bucket; /* TODO: make the growth policy configurable instead of growing it just before it gets full. The polcy can be grow it @@ -201,213 +201,213 @@ static hcl_oop_cons_t find_or_upsert (hcl_t* hcl, hcl_oop_dic_t dic, hcl_oop_t k * make sure that it has at least one free slot left * after having added a new symbol. this is to help * traversal end at a _nil slot if no entry is found. */ - bucket = expand_bucket(hcl, dic->bucket); + bucket = expand_bucket(hak, dic->bucket); if (!bucket) goto oops; dic->bucket = bucket; #if defined(SYMBOL_ONLY_KEY) /* recalculate the index for the expanded bucket */ - index = hcl_hash_oochars(HCL_OBJ_GET_CHAR_SLOT(key), HCL_OBJ_GET_SIZE(key)) % HCL_OBJ_GET_SIZE(dic->bucket); + index = hak_hash_oochars(HAK_OBJ_GET_CHAR_SLOT(key), HAK_OBJ_GET_SIZE(key)) % HAK_OBJ_GET_SIZE(dic->bucket); #else - hcl_hashobj(hcl, key, &index); /* this must succeed as i know 'key' is hashable */ - index %= HCL_OBJ_GET_SIZE(dic->bucket); + hak_hashobj(hak, key, &index); /* this must succeed as i know 'key' is hashable */ + index %= HAK_OBJ_GET_SIZE(dic->bucket); #endif - while (dic->bucket->slot[index] != hcl->_nil) - index = (index + 1) % HCL_OBJ_GET_SIZE(dic->bucket); + while (dic->bucket->slot[index] != hak->_nil) + index = (index + 1) % HAK_OBJ_GET_SIZE(dic->bucket); } if (is_method) { /* create a new pair that holds a class method at the first cell and an instance method at the second cell */ - hcl_oop_t pair; - HCL_ASSERT (hcl, HCL_IS_COMPILED_BLOCK(hcl, value)); - hcl_pushvolat (hcl, &key); - pair = hcl_makecons(hcl, (is_method & 1? value: hcl->_nil), (is_method & 2? value: hcl->_nil)); - hcl_popvolat (hcl); - if (HCL_UNLIKELY(!pair)) goto oops; + hak_oop_t pair; + HAK_ASSERT (hak, HAK_IS_COMPILED_BLOCK(hak, value)); + hak_pushvolat (hak, &key); + pair = hak_makecons(hak, (is_method & 1? value: hak->_nil), (is_method & 2? value: hak->_nil)); + hak_popvolat (hak); + if (HAK_UNLIKELY(!pair)) goto oops; value = pair; } /* create a new assocation of a key and a value since * the key isn't found in the root dictionary */ - ass = (hcl_oop_cons_t)hcl_makecons(hcl, (hcl_oop_t)key, value); - if (HCL_UNLIKELY(!ass)) goto oops; + ass = (hak_oop_cons_t)hak_makecons(hak, (hak_oop_t)key, value); + if (HAK_UNLIKELY(!ass)) goto oops; /* the current tally must be less than the maximum value. otherwise, * it overflows after increment below */ - HCL_ASSERT (hcl, tally < HCL_SMOOI_MAX); - dic->tally = HCL_SMOOI_TO_OOP(tally + 1); - dic->bucket->slot[index] = (hcl_oop_t)ass; + HAK_ASSERT (hak, tally < HAK_SMOOI_MAX); + dic->tally = HAK_SMOOI_TO_OOP(tally + 1); + dic->bucket->slot[index] = (hak_oop_t)ass; - hcl_popvolats (hcl, tmp_count); + hak_popvolats (hak, tmp_count); return ass; oops: - hcl_popvolats (hcl, tmp_count); - return HCL_NULL; + hak_popvolats (hak, tmp_count); + return HAK_NULL; } -static hcl_oop_cons_t lookupdic_noseterr (hcl_t* hcl, hcl_oop_dic_t dic, const hcl_oocs_t* name) +static hak_oop_cons_t lookupdic_noseterr (hak_t* hak, hak_oop_dic_t dic, const hak_oocs_t* name) { - /* this is special version of hcl_getatsysdic() that performs + /* this is special version of hak_getatsysdic() that performs * lookup using a plain symbol specified */ - hcl_oow_t index; - hcl_oop_cons_t ass; + hak_oow_t index; + hak_oop_cons_t ass; - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(dic->tally)); - HCL_ASSERT (hcl, HCL_IS_ARRAY(hcl,dic->bucket)); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(dic->tally)); + HAK_ASSERT (hak, HAK_IS_ARRAY(hak,dic->bucket)); - index = hcl_hash_oochars(name->ptr, name->len) % HCL_OBJ_GET_SIZE(dic->bucket); + index = hak_hash_oochars(name->ptr, name->len) % HAK_OBJ_GET_SIZE(dic->bucket); - while ((hcl_oop_t)(ass = (hcl_oop_cons_t)HCL_OBJ_GET_OOP_VAL(dic->bucket, index)) != hcl->_nil) + while ((hak_oop_t)(ass = (hak_oop_cons_t)HAK_OBJ_GET_OOP_VAL(dic->bucket, index)) != hak->_nil) { - HCL_ASSERT (hcl, HCL_IS_CONS(hcl,ass)); - if (HCL_IS_SYMBOL(hcl, ass->car)) + HAK_ASSERT (hak, HAK_IS_CONS(hak,ass)); + if (HAK_IS_SYMBOL(hak, ass->car)) { - if (name->len == HCL_OBJ_GET_SIZE(ass->car) && - hcl_equal_oochars(name->ptr, HCL_OBJ_GET_CHAR_SLOT(ass->car), name->len)) + if (name->len == HAK_OBJ_GET_SIZE(ass->car) && + hak_equal_oochars(name->ptr, HAK_OBJ_GET_CHAR_SLOT(ass->car), name->len)) { return ass; } } - index = (index + 1) % HCL_OBJ_GET_SIZE(dic->bucket); + index = (index + 1) % HAK_OBJ_GET_SIZE(dic->bucket); } - /* when value is HCL_NULL, perform no insertion */ + /* when value is HAK_NULL, perform no insertion */ - /* hcl_seterrXXX() is not called here. the dictionary lookup is very frequent - * and so is lookup failure. for instance, hcl_findmethod() calls this over + /* hak_seterrXXX() is not called here. the dictionary lookup is very frequent + * and so is lookup failure. for instance, hak_findmethod() calls this over * a class chain. there might be a failure at each class level. it's waste to * set the error information whenever the failure occurs. * the caller of this function must set the error information upon failure */ - return HCL_NULL; + return HAK_NULL; } -static HCL_INLINE hcl_oop_cons_t lookupdic (hcl_t* hcl, hcl_oop_dic_t dic, const hcl_oocs_t* name) +static HAK_INLINE hak_oop_cons_t lookupdic (hak_t* hak, hak_oop_dic_t dic, const hak_oocs_t* name) { - hcl_oop_cons_t ass = lookupdic_noseterr(hcl, dic, name); - if (!ass) hcl_seterrbfmt(hcl, HCL_ENOENT, "unable to find %.*js in a dictionary", name->len, name->ptr); + hak_oop_cons_t ass = lookupdic_noseterr(hak, dic, name); + if (!ass) hak_seterrbfmt(hak, HAK_ENOENT, "unable to find %.*js in a dictionary", name->len, name->ptr); return ass; } -hcl_oop_cons_t hcl_lookupdicforsymbol_noseterr (hcl_t* hcl, hcl_oop_dic_t dic, const hcl_oocs_t* name) +hak_oop_cons_t hak_lookupdicforsymbol_noseterr (hak_t* hak, hak_oop_dic_t dic, const hak_oocs_t* name) { - return lookupdic_noseterr(hcl, dic, name); + return lookupdic_noseterr(hak, dic, name); } -hcl_oop_cons_t hcl_lookupdicforsymbol (hcl_t* hcl, hcl_oop_dic_t dic, const hcl_oocs_t* name) +hak_oop_cons_t hak_lookupdicforsymbol (hak_t* hak, hak_oop_dic_t dic, const hak_oocs_t* name) { - return lookupdic(hcl, dic, name); + return lookupdic(hak, dic, name); } -hcl_oop_cons_t hcl_putatsysdic (hcl_t* hcl, hcl_oop_t key, hcl_oop_t value) +hak_oop_cons_t hak_putatsysdic (hak_t* hak, hak_oop_t key, hak_oop_t value) { #if defined(SYMBOL_ONLY_KEY) - HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl,key)); + HAK_ASSERT (hak, HAK_IS_SYMBOL(hak,key)); #endif - return find_or_upsert(hcl, hcl->sysdic, key, value, 0); + return find_or_upsert(hak, hak->sysdic, key, value, 0); } -hcl_oop_cons_t hcl_getatsysdic (hcl_t* hcl, hcl_oop_t key) +hak_oop_cons_t hak_getatsysdic (hak_t* hak, hak_oop_t key) { #if defined(SYMBOL_ONLY_KEY) - HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl,key)); + HAK_ASSERT (hak, HAK_IS_SYMBOL(hak,key)); #endif - return find_or_upsert(hcl, hcl->sysdic, key, HCL_NULL, 0); + return find_or_upsert(hak, hak->sysdic, key, HAK_NULL, 0); } -hcl_oop_cons_t hcl_lookupsysdicforsymbol_noseterr (hcl_t* hcl, const hcl_oocs_t* name) +hak_oop_cons_t hak_lookupsysdicforsymbol_noseterr (hak_t* hak, const hak_oocs_t* name) { - return lookupdic_noseterr(hcl, hcl->sysdic, name); + return lookupdic_noseterr(hak, hak->sysdic, name); } -hcl_oop_cons_t hcl_lookupsysdicforsymbol (hcl_t* hcl, const hcl_oocs_t* name) +hak_oop_cons_t hak_lookupsysdicforsymbol (hak_t* hak, const hak_oocs_t* name) { - return lookupdic(hcl, hcl->sysdic, name); + return lookupdic(hak, hak->sysdic, name); } -int hcl_zapatsysdic (hcl_t* hcl, hcl_oop_t key) +int hak_zapatsysdic (hak_t* hak, hak_oop_t key) { #if defined(SYMBOL_ONLY_KEY) - HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl,key)); + HAK_ASSERT (hak, HAK_IS_SYMBOL(hak,key)); #endif - return hcl_zapatdic(hcl, hcl->sysdic, key); + return hak_zapatdic(hak, hak->sysdic, key); } -hcl_oop_cons_t hcl_putatdic (hcl_t* hcl, hcl_oop_dic_t dic, hcl_oop_t key, hcl_oop_t value) +hak_oop_cons_t hak_putatdic (hak_t* hak, hak_oop_dic_t dic, hak_oop_t key, hak_oop_t value) { #if defined(SYMBOL_ONLY_KEY) - HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl,key)); + HAK_ASSERT (hak, HAK_IS_SYMBOL(hak,key)); #endif - return find_or_upsert(hcl, dic, key, value, 0); + return find_or_upsert(hak, dic, key, value, 0); } -hcl_oop_cons_t hcl_putatdic_method (hcl_t* hcl, hcl_oop_dic_t dic, hcl_oop_t key, hcl_oop_t value, int mtype) +hak_oop_cons_t hak_putatdic_method (hak_t* hak, hak_oop_dic_t dic, hak_oop_t key, hak_oop_t value, int mtype) { #if defined(SYMBOL_ONLY_KEY) - HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl,key)); + HAK_ASSERT (hak, HAK_IS_SYMBOL(hak,key)); #endif - return find_or_upsert(hcl, dic, key, value, mtype); + return find_or_upsert(hak, dic, key, value, mtype); } -hcl_oop_cons_t hcl_getatdic (hcl_t* hcl, hcl_oop_dic_t dic, hcl_oop_t key) +hak_oop_cons_t hak_getatdic (hak_t* hak, hak_oop_dic_t dic, hak_oop_t key) { #if defined(SYMBOL_ONLY_KEY) - HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl,key)); + HAK_ASSERT (hak, HAK_IS_SYMBOL(hak,key)); #endif - return find_or_upsert(hcl, dic, key, HCL_NULL, 0); + return find_or_upsert(hak, dic, key, HAK_NULL, 0); } -int hcl_zapatdic (hcl_t* hcl, hcl_oop_dic_t dic, hcl_oop_t key) +int hak_zapatdic (hak_t* hak, hak_oop_dic_t dic, hak_oop_t key) { - hcl_ooi_t tally; - hcl_oow_t index, bs, i, x, y, z; - hcl_oop_cons_t ass; + hak_ooi_t tally; + hak_oow_t index, bs, i, x, y, z; + hak_oop_cons_t ass; - tally = HCL_OOP_TO_SMOOI(dic->tally); - bs = HCL_OBJ_GET_SIZE(dic->bucket); + tally = HAK_OOP_TO_SMOOI(dic->tally); + bs = HAK_OBJ_GET_SIZE(dic->bucket); /* the system dictionary is not a generic dictionary. * it accepts only a symbol as a key. */ #if defined(SYMBOL_ONLY_KEY) - HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl,key)); + HAK_ASSERT (hak, HAK_IS_SYMBOL(hak,key)); #endif - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(dic->tally)); - HCL_ASSERT (hcl, HCL_IS_ARRAY(hcl,dic->bucket)); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(dic->tally)); + HAK_ASSERT (hak, HAK_IS_ARRAY(hak,dic->bucket)); #if defined(SYMBOL_ONLY_KEY) - index = hcl_hash_oochars(HCL_OBJ_GET_CHAR_SLOT(key), HCL_OBJ_GET_SIZE(key)) % bs; + index = hak_hash_oochars(HAK_OBJ_GET_CHAR_SLOT(key), HAK_OBJ_GET_SIZE(key)) % bs; #else - if (hcl_hashobj(hcl, key, &index) <= -1) return -1; + if (hak_hashobj(hak, key, &index) <= -1) return -1; index %= bs; #endif /* find */ - while (dic->bucket->slot[index] != hcl->_nil) + while (dic->bucket->slot[index] != hak->_nil) { #if defined(SYMBOL_ONLY_KEY) - ass = (hcl_oop_cons_t)dic->bucket->slot[index]; - HCL_ASSERT (hcl, HCL_IS_CONS(hcl,ass)); - HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl,ass->car)); + ass = (hak_oop_cons_t)dic->bucket->slot[index]; + HAK_ASSERT (hak, HAK_IS_CONS(hak,ass)); + HAK_ASSERT (hak, HAK_IS_SYMBOL(hak,ass->car)); - if (HCL_OBJ_GET_SIZE(key) == HCL_OBJ_GET_SIZE(ass->car) && - hcl_equal_oochars(HCL_OBJ_GET_CHAR_SLOT(key), HCL_OBJ_GET_CHAR_SLOT(ass->car), HCL_OBJ_GET_SIZE(key))) + if (HAK_OBJ_GET_SIZE(key) == HAK_OBJ_GET_SIZE(ass->car) && + hak_equal_oochars(HAK_OBJ_GET_CHAR_SLOT(key), HAK_OBJ_GET_CHAR_SLOT(ass->car), HAK_OBJ_GET_SIZE(key))) { - /* the value of HCL_NULL indicates no insertion or update. */ + /* the value of HAK_NULL indicates no insertion or update. */ goto found; } #else int n; - ass = (hcl_oop_cons_t)dic->bucket->slot[index]; - HCL_ASSERT (hcl, HCL_IS_CONS(hcl,ass)); + ass = (hak_oop_cons_t)dic->bucket->slot[index]; + HAK_ASSERT (hak, HAK_IS_CONS(hak,ass)); - n = hcl_equalobjs(hcl, (hcl_oop_t)key, ass->car); + n = hak_equalobjs(hak, (hak_oop_t)key, ass->car); if (n <= -1) return -1; if (n >= 1) goto found; #endif @@ -415,7 +415,7 @@ int hcl_zapatdic (hcl_t* hcl, hcl_oop_dic_t dic, hcl_oop_t key) index = (index + 1) % bs; } - hcl_seterrnum (hcl, HCL_ENOENT); + hak_seterrnum (hak, HAK_ENOENT); return -1; found: @@ -425,15 +425,15 @@ found: y = (y + 1) % bs; /* done if the slot at the current index is empty */ - if (dic->bucket->slot[y] == hcl->_nil) break; + if (dic->bucket->slot[y] == hak->_nil) break; - ass = (hcl_oop_cons_t)dic->bucket->slot[y]; + ass = (hak_oop_cons_t)dic->bucket->slot[y]; #if defined(SYMBOL_ONLY_KEY) /* get the natural hash index for the data in the slot at * the current hash index */ - z = hcl_hash_oochars(HCL_OBJ_GET_CHAR_SLOT(ass->car), HCL_OBJ_GET_SIZE(ass->car)) % bs; + z = hak_hash_oochars(HAK_OBJ_GET_CHAR_SLOT(ass->car), HAK_OBJ_GET_SIZE(ass->car)) % bs; #else - if (hcl_hashobj(hcl, ass->car, &z) <= -1) return -1; + if (hak_hashobj(hak, ass->car, &z) <= -1) return -1; z %= bs; #endif @@ -446,82 +446,82 @@ found: } } - dic->bucket->slot[x] = hcl->_nil; + dic->bucket->slot[x] = hak->_nil; tally--; - dic->tally = HCL_SMOOI_TO_OOP(tally); + dic->tally = HAK_SMOOI_TO_OOP(tally); return 0; } -hcl_oop_t hcl_makedic (hcl_t* hcl, hcl_oow_t inisize) +hak_oop_t hak_makedic (hak_t* hak, hak_oow_t inisize) { #if 0 - hcl_oop_dic_t obj; + hak_oop_dic_t obj; - obj = (hcl_oop_dic_t)hcl_allocoopobj(hcl, HCL_BRAND_DIC, 2); + obj = (hak_oop_dic_t)hak_allocoopobj(hak, HAK_BRAND_DIC, 2); if (obj) { - hcl_oop_oop_t bucket; + hak_oop_oop_t bucket; - obj->tally = HCL_SMOOI_TO_OOP(0); + obj->tally = HAK_SMOOI_TO_OOP(0); - hcl_pushvolat (hcl, (hcl_oop_t*)&obj); - bucket = (hcl_oop_oop_t)hcl_makearray(hcl, inisize); - hcl_popvolat (hcl); + hak_pushvolat (hak, (hak_oop_t*)&obj); + bucket = (hak_oop_oop_t)hak_makearray(hak, inisize); + hak_popvolat (hak); - if (!bucket) obj = HCL_NULL; + if (!bucket) obj = HAK_NULL; else obj->bucket = bucket; } - return (hcl_oop_t)obj; + return (hak_oop_t)obj; #else - hcl_oop_dic_t v; + hak_oop_dic_t v; - v = (hcl_oop_dic_t)hcl_instantiate(hcl, hcl->c_dictionary, HCL_NULL, 0); - if (HCL_UNLIKELY(!v)) + v = (hak_oop_dic_t)hak_instantiate(hak, hak->c_dictionary, HAK_NULL, 0); + if (HAK_UNLIKELY(!v)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), - "unable to instantiate %O - %js", hcl->c_dictionary->name, orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), + "unable to instantiate %O - %js", hak->c_dictionary->name, orgmsg); } else { - hcl_oop_oop_t bucket; + hak_oop_oop_t bucket; - v->tally = HCL_SMOOI_TO_OOP(0); + v->tally = HAK_SMOOI_TO_OOP(0); - hcl_pushvolat (hcl, (hcl_oop_t*)&v); - bucket = (hcl_oop_oop_t)hcl_makearray(hcl, inisize); - hcl_popvolat (hcl); + hak_pushvolat (hak, (hak_oop_t*)&v); + bucket = (hak_oop_oop_t)hak_makearray(hak, inisize); + hak_popvolat (hak); - if (HCL_UNLIKELY(!bucket)) + if (HAK_UNLIKELY(!bucket)) { /* TODO: can I remove the instanated object immediately above? * it must be ok as the dictionary object is never referenced. * some care must be taken not to screw up gc metadata... */ - v = HCL_NULL; + v = HAK_NULL; } else v->bucket = bucket; } - return (hcl_oop_t)v; + return (hak_oop_t)v; #endif } -int hcl_walkdic (hcl_t* hcl, hcl_oop_dic_t dic, hcl_dic_walker_t walker, void* ctx) +int hak_walkdic (hak_t* hak, hak_oop_dic_t dic, hak_dic_walker_t walker, void* ctx) { - hcl_oow_t i; + hak_oow_t i; - hcl_pushvolat (hcl, (hcl_oop_t*)&dic); + hak_pushvolat (hak, (hak_oop_t*)&dic); - for (i = 0; i < HCL_OBJ_GET_SIZE(dic->bucket); i++) + for (i = 0; i < HAK_OBJ_GET_SIZE(dic->bucket); i++) { - hcl_oop_t tmp = dic->bucket->slot[i]; - if (HCL_IS_CONS(hcl, tmp) && walker(hcl, dic, (hcl_oop_cons_t)tmp, ctx) <= -1) return -1; + hak_oop_t tmp = dic->bucket->slot[i]; + if (HAK_IS_CONS(hak, tmp) && walker(hak, dic, (hak_oop_cons_t)tmp, ctx) <= -1) return -1; } - hcl_popvolat (hcl); + hak_popvolat (hak); return 0; } diff --git a/lib/err.c b/lib/err.c index 376b57b..6498d4b 100644 --- a/lib/err.c +++ b/lib/err.c @@ -22,65 +22,65 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "hcl-prv.h" +#include "hak-prv.h" -#if defined(HCL_ENABLE_LIBUNWIND) +#if defined(HAK_ENABLE_LIBUNWIND) # define UNW_LOCAL_ONLY # include #endif -static hcl_ooch_t errstr_0[] = {'n','o',' ','e','r','r','o','r','\0'}; -static hcl_ooch_t errstr_1[] = {'g','e','n','e','r','i','c',' ','e','r','r','o','r','\0'}; -static hcl_ooch_t errstr_2[] = {'n','o','t',' ','i','m','p','l','e','m','e','n','t','e','d','\0'}; -static hcl_ooch_t errstr_3[] = {'s','u','b','s','y','s','t','e','m',' ','e','r','r','o','r','\0'}; -static hcl_ooch_t errstr_4[] = {'i','n','t','e','r','n','a','l',' ','e','r','r','o','r',' ','t','h','a','t',' ','s','h','o','u','l','d',' ','n','e','v','e','r',' ','h','a','v','e',' ','h','a','p','p','e','n','e','d','\0'}; +static hak_ooch_t errstr_0[] = {'n','o',' ','e','r','r','o','r','\0'}; +static hak_ooch_t errstr_1[] = {'g','e','n','e','r','i','c',' ','e','r','r','o','r','\0'}; +static hak_ooch_t errstr_2[] = {'n','o','t',' ','i','m','p','l','e','m','e','n','t','e','d','\0'}; +static hak_ooch_t errstr_3[] = {'s','u','b','s','y','s','t','e','m',' ','e','r','r','o','r','\0'}; +static hak_ooch_t errstr_4[] = {'i','n','t','e','r','n','a','l',' ','e','r','r','o','r',' ','t','h','a','t',' ','s','h','o','u','l','d',' ','n','e','v','e','r',' ','h','a','v','e',' ','h','a','p','p','e','n','e','d','\0'}; -static hcl_ooch_t errstr_5[] = {'i','n','s','u','f','f','i','c','i','e','n','t',' ','s','y','s','t','e','m',' ','m','e','m','o','r','y','\0'}; -static hcl_ooch_t errstr_6[] = {'i','n','s','u','f','f','i','c','i','e','n','t',' ','o','b','j','e','c','t',' ','m','e','m','o','r','y','\0'}; -static hcl_ooch_t errstr_7[] = {'i','n','v','a','l','i','d',' ','c','l','a','s','s','/','t','y','p','e','\0'}; -static hcl_ooch_t errstr_8[] = {'i','n','v','a','l','i','d',' ','p','a','r','a','m','e','t','e','r','/','a','r','g','u','m','e','n','t','\0'}; -static hcl_ooch_t errstr_9[] = {'d','a','t','a',' ','n','o','t',' ','f','o','u','n','d','\0'}; +static hak_ooch_t errstr_5[] = {'i','n','s','u','f','f','i','c','i','e','n','t',' ','s','y','s','t','e','m',' ','m','e','m','o','r','y','\0'}; +static hak_ooch_t errstr_6[] = {'i','n','s','u','f','f','i','c','i','e','n','t',' ','o','b','j','e','c','t',' ','m','e','m','o','r','y','\0'}; +static hak_ooch_t errstr_7[] = {'i','n','v','a','l','i','d',' ','c','l','a','s','s','/','t','y','p','e','\0'}; +static hak_ooch_t errstr_8[] = {'i','n','v','a','l','i','d',' ','p','a','r','a','m','e','t','e','r','/','a','r','g','u','m','e','n','t','\0'}; +static hak_ooch_t errstr_9[] = {'d','a','t','a',' ','n','o','t',' ','f','o','u','n','d','\0'}; -static hcl_ooch_t errstr_10[] = {'e','x','i','s','t','i','n','g','/','d','u','p','l','i','c','a','t','e',' ','d','a','t','a','\0'}; -static hcl_ooch_t errstr_11[] = {'b','u','s','y','\0'}; -static hcl_ooch_t errstr_12[] = {'a','c','c','e','s','s',' ','d','e','n','i','e','d','\0'}; -static hcl_ooch_t errstr_13[] = {'o','p','e','r','a','t','i','o','n',' ','n','o','t',' ','p','e','r','m','i','t','t','e','d','\0'}; -static hcl_ooch_t errstr_14[] = {'n','o','t',' ','a',' ','d','i','r','e','c','t','o','r','y','\0'}; +static hak_ooch_t errstr_10[] = {'e','x','i','s','t','i','n','g','/','d','u','p','l','i','c','a','t','e',' ','d','a','t','a','\0'}; +static hak_ooch_t errstr_11[] = {'b','u','s','y','\0'}; +static hak_ooch_t errstr_12[] = {'a','c','c','e','s','s',' ','d','e','n','i','e','d','\0'}; +static hak_ooch_t errstr_13[] = {'o','p','e','r','a','t','i','o','n',' ','n','o','t',' ','p','e','r','m','i','t','t','e','d','\0'}; +static hak_ooch_t errstr_14[] = {'n','o','t',' ','a',' ','d','i','r','e','c','t','o','r','y','\0'}; -static hcl_ooch_t errstr_15[] = {'i','n','t','e','r','r','u','p','t','e','d','\0'}; -static hcl_ooch_t errstr_16[] = {'p','i','p','e',' ','e','r','r','o','r','\0'}; -static hcl_ooch_t errstr_17[] = {'r','e','s','o','u','r','c','e',' ','t','e','m','p','o','r','a','r','i','l','y',' ','u','n','a','v','a','i','l','a','b','l','e','\0'}; -static hcl_ooch_t errstr_18[] = {'b','a','d',' ','s','y','s','t','e','m',' ','h','a','n','d','l','e','\0'}; -static hcl_ooch_t errstr_19[] = {'t','o','o',' ','m','a','n','y',' ','f','r','a','m','e','s','\0'}; +static hak_ooch_t errstr_15[] = {'i','n','t','e','r','r','u','p','t','e','d','\0'}; +static hak_ooch_t errstr_16[] = {'p','i','p','e',' ','e','r','r','o','r','\0'}; +static hak_ooch_t errstr_17[] = {'r','e','s','o','u','r','c','e',' ','t','e','m','p','o','r','a','r','i','l','y',' ','u','n','a','v','a','i','l','a','b','l','e','\0'}; +static hak_ooch_t errstr_18[] = {'b','a','d',' ','s','y','s','t','e','m',' ','h','a','n','d','l','e','\0'}; +static hak_ooch_t errstr_19[] = {'t','o','o',' ','m','a','n','y',' ','f','r','a','m','e','s','\0'}; -static hcl_ooch_t errstr_20[] = {'m','e','s','s','a','g','e',' ','r','e','c','e','i','v','e','r',' ','e','r','r','o','r','\0'}; -static hcl_ooch_t errstr_21[] = {'m','e','s','s','a','g','e',' ','s','e','n','d','i','n','g',' ','e','r','r','o','r','\0'}; -static hcl_ooch_t errstr_22[] = {'w','r','o','n','g',' ','n','u','m','b','e','r',' ','o','f',' ','a','r','g','u','m','e','n','t','s','\0'}; -static hcl_ooch_t errstr_23[] = {'r','a','n','g','e',' ','e','r','r','o','r','\0'}; -static hcl_ooch_t errstr_24[] = {'b','y','t','e','-','c','o','d','e',' ','f','u','l','l','\0'}; +static hak_ooch_t errstr_20[] = {'m','e','s','s','a','g','e',' ','r','e','c','e','i','v','e','r',' ','e','r','r','o','r','\0'}; +static hak_ooch_t errstr_21[] = {'m','e','s','s','a','g','e',' ','s','e','n','d','i','n','g',' ','e','r','r','o','r','\0'}; +static hak_ooch_t errstr_22[] = {'w','r','o','n','g',' ','n','u','m','b','e','r',' ','o','f',' ','a','r','g','u','m','e','n','t','s','\0'}; +static hak_ooch_t errstr_23[] = {'r','a','n','g','e',' ','e','r','r','o','r','\0'}; +static hak_ooch_t errstr_24[] = {'b','y','t','e','-','c','o','d','e',' ','f','u','l','l','\0'}; -static hcl_ooch_t errstr_25[] = {'d','i','c','t','i','o','n','a','r','y',' ','f','u','l','l','\0'}; -static hcl_ooch_t errstr_26[] = {'p','r','o','c','e','s','s','o','r',' ','f','u','l','l','\0'}; -static hcl_ooch_t errstr_27[] = {'n','o',' ','m','o','r','e',' ','i','n','p','u','t','\0'}; -static hcl_ooch_t errstr_28[] = {'t','o','o',' ','m','a','n','y',' ','i','t','e','m','s','\0'}; -static hcl_ooch_t errstr_29[] = {'d','i','v','i','d','e',' ','b','y',' ','z','e','r','o','\0'}; +static hak_ooch_t errstr_25[] = {'d','i','c','t','i','o','n','a','r','y',' ','f','u','l','l','\0'}; +static hak_ooch_t errstr_26[] = {'p','r','o','c','e','s','s','o','r',' ','f','u','l','l','\0'}; +static hak_ooch_t errstr_27[] = {'n','o',' ','m','o','r','e',' ','i','n','p','u','t','\0'}; +static hak_ooch_t errstr_28[] = {'t','o','o',' ','m','a','n','y',' ','i','t','e','m','s','\0'}; +static hak_ooch_t errstr_29[] = {'d','i','v','i','d','e',' ','b','y',' ','z','e','r','o','\0'}; -static hcl_ooch_t errstr_30[] = {'I','/','O',' ','e','r','r','o','r','\0'}; -static hcl_ooch_t errstr_31[] = {'e','n','c','o','d','i','n','g',' ','c','o','n','v','e','r','s','i','o','n',' ','e','r','r','o','r','\0'}; -static hcl_ooch_t errstr_32[] = {'b','u','f','f','e','r',' ','f','u','l','l','\0'}; -static hcl_ooch_t errstr_33[] = {'s','y','n','t','a','x',' ','e','r','r','o','r','\0'}; -static hcl_ooch_t errstr_34[] = {'c','a','l','l',' ','e','r','r','o','r','\0'}; +static hak_ooch_t errstr_30[] = {'I','/','O',' ','e','r','r','o','r','\0'}; +static hak_ooch_t errstr_31[] = {'e','n','c','o','d','i','n','g',' ','c','o','n','v','e','r','s','i','o','n',' ','e','r','r','o','r','\0'}; +static hak_ooch_t errstr_32[] = {'b','u','f','f','e','r',' ','f','u','l','l','\0'}; +static hak_ooch_t errstr_33[] = {'s','y','n','t','a','x',' ','e','r','r','o','r','\0'}; +static hak_ooch_t errstr_34[] = {'c','a','l','l',' ','e','r','r','o','r','\0'}; -static hcl_ooch_t errstr_35[] = {'a','r','g','u','m','e','n','t',' ','n','u','m','b','e','r',' ','e','r','r','o','r','\0'}; -static hcl_ooch_t errstr_36[] = {'r','e','t','u','r','n',' ','c','o','u','n','t',' ','e','r','r','o','r','\0'}; -static hcl_ooch_t errstr_37[] = {'t','o','o',' ','m','a','n','y',' ','s','e','m','a','p','h','o','r','e','s','\0'}; -static hcl_ooch_t errstr_38[] = {'e','x','c','e','p','a','i','o','n',' ','n','o','t',' ','h','a','n','d','l','e','d','\0'}; -static hcl_ooch_t errstr_39[] = {'s','t','a','c','k',' ','u','n','d','e','r','f','l','o','w','\0'}; +static hak_ooch_t errstr_35[] = {'a','r','g','u','m','e','n','t',' ','n','u','m','b','e','r',' ','e','r','r','o','r','\0'}; +static hak_ooch_t errstr_36[] = {'r','e','t','u','r','n',' ','c','o','u','n','t',' ','e','r','r','o','r','\0'}; +static hak_ooch_t errstr_37[] = {'t','o','o',' ','m','a','n','y',' ','s','e','m','a','p','h','o','r','e','s','\0'}; +static hak_ooch_t errstr_38[] = {'e','x','c','e','p','a','i','o','n',' ','n','o','t',' ','h','a','n','d','l','e','d','\0'}; +static hak_ooch_t errstr_39[] = {'s','t','a','c','k',' ','u','n','d','e','r','f','l','o','w','\0'}; -static hcl_ooch_t errstr_40[] = {'s','t','a','c','k',' ','o','v','e','r','f','l','o','w','\0'}; -static hcl_ooch_t errstr_41[] = {'u','n','d','e','f','i','n','e','d',' ','v','a','r','i','a','b','l','e',' ','a','c','c','e','s','s','\0'}; +static hak_ooch_t errstr_40[] = {'s','t','a','c','k',' ','o','v','e','r','f','l','o','w','\0'}; +static hak_ooch_t errstr_41[] = {'u','n','d','e','f','i','n','e','d',' ','v','a','r','i','a','b','l','e',' ','a','c','c','e','s','s','\0'}; -static hcl_ooch_t* errstr[] = +static hak_ooch_t* errstr[] = { errstr_0, errstr_1, errstr_2, errstr_3, errstr_4, errstr_5, errstr_6, errstr_7, errstr_8, errstr_9, errstr_10, errstr_11, errstr_12, errstr_13, errstr_14, errstr_15, @@ -175,414 +175,414 @@ static const char* synerrstr[] = * ERROR NUMBER TO STRING CONVERSION * -------------------------------------------------------------------------- */ -static hcl_bch_t e_unknown_b[] = {'u','n','k','n','o','w','n',' ','e','r','r','o','r','\0'}; -static hcl_uch_t e_unknown_u[] = {'u','n','k','n','o','w','n',' ','e','r','r','o','r','\0'}; -#if defined(HCL_OOCH_IS_BCH) +static hak_bch_t e_unknown_b[] = {'u','n','k','n','o','w','n',' ','e','r','r','o','r','\0'}; +static hak_uch_t e_unknown_u[] = {'u','n','k','n','o','w','n',' ','e','r','r','o','r','\0'}; +#if defined(HAK_OOCH_IS_BCH) # define e_unknown e_unknown_b #else # define e_unknown e_unknown_u #endif -int hcl_errnum_is_synerr (hcl_errnum_t errnum) +int hak_errnum_is_synerr (hak_errnum_t errnum) { - return errnum == HCL_ESYNERR; + return errnum == HAK_ESYNERR; } -const hcl_ooch_t* hcl_errnum_to_errstr (hcl_errnum_t errnum) +const hak_ooch_t* hak_errnum_to_errstr (hak_errnum_t errnum) { - return (errnum >= 0 && errnum < HCL_COUNTOF(errstr))? errstr[errnum]: e_unknown; + return (errnum >= 0 && errnum < HAK_COUNTOF(errstr))? errstr[errnum]: e_unknown; } -const hcl_bch_t* hcl_errnum_to_errbcstr (hcl_errnum_t errnum, hcl_bch_t* buf, hcl_oow_t len) +const hak_bch_t* hak_errnum_to_errbcstr (hak_errnum_t errnum, hak_bch_t* buf, hak_oow_t len) { /* it's ok to copy without conversion because the messages above are simple acsii text */ -#if defined(HCL_OOCH_IS_BCH) - hcl_copy_bcstr(buf, len, (errnum >= 0 && errnum < HCL_COUNTOF(errstr))? errstr[errnum]: e_unknown_b); +#if defined(HAK_OOCH_IS_BCH) + hak_copy_bcstr(buf, len, (errnum >= 0 && errnum < HAK_COUNTOF(errstr))? errstr[errnum]: e_unknown_b); #else - hcl_copy_ucstr_to_bcstr(buf, len, (errnum >= 0 && errnum < HCL_COUNTOF(errstr))? errstr[errnum]: e_unknown_u); + hak_copy_ucstr_to_bcstr(buf, len, (errnum >= 0 && errnum < HAK_COUNTOF(errstr))? errstr[errnum]: e_unknown_u); #endif return buf; } -const hcl_uch_t* hcl_errnum_to_errucstr (hcl_errnum_t errnum, hcl_uch_t* buf, hcl_oow_t len) +const hak_uch_t* hak_errnum_to_errucstr (hak_errnum_t errnum, hak_uch_t* buf, hak_oow_t len) { /* it's ok to copy without conversion because the messages above are simple acsii text */ -#if defined(HCL_OOCH_IS_BCH) - hcl_copy_bcstr_to_ucstr(buf, len, (errnum >= 0 && errnum < HCL_COUNTOF(errstr))? errstr[errnum]: e_unknown_b); +#if defined(HAK_OOCH_IS_BCH) + hak_copy_bcstr_to_ucstr(buf, len, (errnum >= 0 && errnum < HAK_COUNTOF(errstr))? errstr[errnum]: e_unknown_b); #else - hcl_copy_ucstr(buf, len, (errnum >= 0 && errnum < HCL_COUNTOF(errstr))? errstr[errnum]: e_unknown_u); + hak_copy_ucstr(buf, len, (errnum >= 0 && errnum < HAK_COUNTOF(errstr))? errstr[errnum]: e_unknown_u); #endif return buf; } -static const hcl_bch_t* synerr_to_errstr (hcl_synerrnum_t errnum) +static const hak_bch_t* synerr_to_errstr (hak_synerrnum_t errnum) { - return (errnum >= 0 && errnum < HCL_COUNTOF(synerrstr))? synerrstr[errnum]: e_unknown_b; + return (errnum >= 0 && errnum < HAK_COUNTOF(synerrstr))? synerrstr[errnum]: e_unknown_b; } /* -------------------------------------------------------------------------- * ERROR NUMBER/MESSAGE HANDLING * -------------------------------------------------------------------------- */ -const hcl_ooch_t* hcl_geterrstr (hcl_t* hcl) +const hak_ooch_t* hak_geterrstr (hak_t* hak) { - return hcl_errnum_to_errstr(hcl->errnum); + return hak_errnum_to_errstr(hak->errnum); } /* -const hcl_ooch_t* hcl_geterrmsg (hcl_t* hcl) +const hak_ooch_t* hak_geterrmsg (hak_t* hak) { - if (hcl->errmsg.len <= 0) return hcl_errnum_to_errstr(hcl->errnum); - return hcl->errmsg.buf; + if (hak->errmsg.len <= 0) return hak_errnum_to_errstr(hak->errnum); + return hak->errmsg.buf; } */ -const hcl_bch_t* hcl_geterrbmsg (hcl_t* hcl) +const hak_bch_t* hak_geterrbmsg (hak_t* hak) { -#if defined(HCL_OOCH_IS_BCH) - return (hcl->errmsg.len <= 0)? hcl_errnum_to_errstr(hcl->errnum): hcl->errmsg.buf; +#if defined(HAK_OOCH_IS_BCH) + return (hak->errmsg.len <= 0)? hak_errnum_to_errstr(hak->errnum): hak->errmsg.buf; #else - const hcl_ooch_t* msg; - hcl_oow_t wcslen, mbslen; + const hak_ooch_t* msg; + hak_oow_t wcslen, mbslen; - msg = (hcl->errmsg.len <= 0)? hcl_errnum_to_errstr(hcl->errnum): hcl->errmsg.buf; + msg = (hak->errmsg.len <= 0)? hak_errnum_to_errstr(hak->errnum): hak->errmsg.buf; - mbslen = HCL_COUNTOF(hcl->errmsg.xerrmsg); - hcl_conv_ucstr_to_bcstr_with_cmgr (msg, &wcslen, hcl->errmsg.xerrmsg, &mbslen, HCL_CMGR(hcl)); + mbslen = HAK_COUNTOF(hak->errmsg.xerrmsg); + hak_conv_ucstr_to_bcstr_with_cmgr (msg, &wcslen, hak->errmsg.xerrmsg, &mbslen, HAK_CMGR(hak)); - return hcl->errmsg.xerrmsg; + return hak->errmsg.xerrmsg; #endif } -const hcl_uch_t* hcl_geterrumsg (hcl_t* hcl) +const hak_uch_t* hak_geterrumsg (hak_t* hak) { -#if defined(HCL_OOCH_IS_BCH) - const hcl_ooch_t* msg; - hcl_oow_t wcslen, mbslen; +#if defined(HAK_OOCH_IS_BCH) + const hak_ooch_t* msg; + hak_oow_t wcslen, mbslen; - msg = (hcl->errmsg.len <= 0)? hcl_errnum_to_errstr(hcl->errnum): hcl->errmsg.buf; + msg = (hak->errmsg.len <= 0)? hak_errnum_to_errstr(hak->errnum): hak->errmsg.buf; - wcslen = HCL_COUNTOF(hcl->errmsg.xerrmsg); - hcl_conv_bcstr_to_ucstr_with_cmgr (msg, &mbslen, hcl->errmsg.xerrmsg, &wcslen, HCL_CMGR(hcl), 1); + wcslen = HAK_COUNTOF(hak->errmsg.xerrmsg); + hak_conv_bcstr_to_ucstr_with_cmgr (msg, &mbslen, hak->errmsg.xerrmsg, &wcslen, HAK_CMGR(hak), 1); - return hcl->errmsg.xerrmsg; + return hak->errmsg.xerrmsg; #else - return (hcl->errmsg.len == '\0')? hcl_errnum_to_errstr(hcl->errnum): hcl->errmsg.buf; + return (hak->errmsg.len == '\0')? hak_errnum_to_errstr(hak->errnum): hak->errmsg.buf; #endif } -hcl_oow_t hcl_copyerrbmsg (hcl_t* hcl, hcl_bch_t* buf, hcl_oow_t len) +hak_oow_t hak_copyerrbmsg (hak_t* hak, hak_bch_t* buf, hak_oow_t len) { - return hcl_copy_bcstr(buf, len, hcl_geterrbmsg(hcl)); + return hak_copy_bcstr(buf, len, hak_geterrbmsg(hak)); } -hcl_oow_t hcl_copyerrumsg (hcl_t* hcl, hcl_uch_t* buf, hcl_oow_t len) +hak_oow_t hak_copyerrumsg (hak_t* hak, hak_uch_t* buf, hak_oow_t len) { - return hcl_copy_ucstr(buf, len, hcl_geterrumsg(hcl)); + return hak_copy_ucstr(buf, len, hak_geterrumsg(hak)); } -const hcl_ooch_t* hcl_backuperrmsg (hcl_t* hcl) +const hak_ooch_t* hak_backuperrmsg (hak_t* hak) { - hcl_copy_oocstr (hcl->errmsg.tmpbuf.ooch, HCL_COUNTOF(hcl->errmsg.tmpbuf.ooch), hcl_geterrmsg(hcl)); - return hcl->errmsg.tmpbuf.ooch; + hak_copy_oocstr (hak->errmsg.tmpbuf.ooch, HAK_COUNTOF(hak->errmsg.tmpbuf.ooch), hak_geterrmsg(hak)); + return hak->errmsg.tmpbuf.ooch; } -hcl_errnum_t hcl_geterrnum (hcl_t* hcl) +hak_errnum_t hak_geterrnum (hak_t* hak) { - return HCL_ERRNUM(hcl); + return HAK_ERRNUM(hak); } -void hcl_seterrnum (hcl_t* hcl, hcl_errnum_t errnum) +void hak_seterrnum (hak_t* hak, hak_errnum_t errnum) { - if (hcl->shuterr) return; - hcl->errnum = errnum; - hcl->errmsg.len = 0; - HCL_MEMSET (&hcl->errloc, 0, HCL_SIZEOF(hcl->errloc)); + if (hak->shuterr) return; + hak->errnum = errnum; + hak->errmsg.len = 0; + HAK_MEMSET (&hak->errloc, 0, HAK_SIZEOF(hak->errloc)); } -void hcl_geterrloc (hcl_t* hcl, hcl_loc_t* loc) +void hak_geterrloc (hak_t* hak, hak_loc_t* loc) { - if (loc) *loc = hcl->errloc; + if (loc) *loc = hak->errloc; } -void hcl_seterrbmsg (hcl_t* hcl, hcl_errnum_t errnum, const hcl_bch_t* errmsg) +void hak_seterrbmsg (hak_t* hak, hak_errnum_t errnum, const hak_bch_t* errmsg) { - hcl_seterrbfmt(hcl, errnum, "%hs", errmsg); + hak_seterrbfmt(hak, errnum, "%hs", errmsg); } -void hcl_seterrumsg (hcl_t* hcl, hcl_errnum_t errnum, const hcl_uch_t* errmsg) +void hak_seterrumsg (hak_t* hak, hak_errnum_t errnum, const hak_uch_t* errmsg) { - hcl_seterrbfmt(hcl, errnum, "%ls", errmsg); + hak_seterrbfmt(hak, errnum, "%ls", errmsg); } -static int err_bcs (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_bch_t* ptr, hcl_oow_t len) +static int err_bcs (hak_t* hak, hak_fmtout_t* fmtout, const hak_bch_t* ptr, hak_oow_t len) { - hcl_oow_t max; + hak_oow_t max; - max = HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len - 1; + max = HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len - 1; -#if defined(HCL_OOCH_IS_UCH) +#if defined(HAK_OOCH_IS_UCH) if (max <= 0) return 1; - hcl_conv_bchars_to_uchars_with_cmgr (ptr, &len, &hcl->errmsg.buf[hcl->errmsg.len], &max, HCL_CMGR(hcl), 1); - hcl->errmsg.len += max; + hak_conv_bchars_to_uchars_with_cmgr (ptr, &len, &hak->errmsg.buf[hak->errmsg.len], &max, HAK_CMGR(hak), 1); + hak->errmsg.len += max; #else if (len > max) len = max; if (len <= 0) return 1; - HCL_MEMCPY (&hcl->errmsg.buf[hcl->errmsg.len], ptr, len * HCL_SIZEOF(*ptr)); - hcl->errmsg.len += len; + HAK_MEMCPY (&hak->errmsg.buf[hak->errmsg.len], ptr, len * HAK_SIZEOF(*ptr)); + hak->errmsg.len += len; #endif - hcl->errmsg.buf[hcl->errmsg.len] = '\0'; + hak->errmsg.buf[hak->errmsg.len] = '\0'; return 1; /* success */ } -static int err_ucs (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_uch_t* ptr, hcl_oow_t len) +static int err_ucs (hak_t* hak, hak_fmtout_t* fmtout, const hak_uch_t* ptr, hak_oow_t len) { - hcl_oow_t max; + hak_oow_t max; - max = HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len - 1; + max = HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len - 1; -#if defined(HCL_OOCH_IS_UCH) +#if defined(HAK_OOCH_IS_UCH) if (len > max) len = max; if (len <= 0) return 1; - HCL_MEMCPY (&hcl->errmsg.buf[hcl->errmsg.len], ptr, len * HCL_SIZEOF(*ptr)); - hcl->errmsg.len += len; + HAK_MEMCPY (&hak->errmsg.buf[hak->errmsg.len], ptr, len * HAK_SIZEOF(*ptr)); + hak->errmsg.len += len; #else if (max <= 0) return 1; - hcl_conv_uchars_to_bchars_with_cmgr (ptr, &len, &hcl->errmsg.buf[hcl->errmsg.len], &max, HCL_CMGR(hcl)); - hcl->errmsg.len += max; + hak_conv_uchars_to_bchars_with_cmgr (ptr, &len, &hak->errmsg.buf[hak->errmsg.len], &max, HAK_CMGR(hak)); + hak->errmsg.len += max; #endif - hcl->errmsg.buf[hcl->errmsg.len] = '\0'; + hak->errmsg.buf[hak->errmsg.len] = '\0'; return 1; /* success */ } -void hcl_seterrbfmt (hcl_t* hcl, hcl_errnum_t errnum, const hcl_bch_t* fmt, ...) +void hak_seterrbfmt (hak_t* hak, hak_errnum_t errnum, const hak_bch_t* fmt, ...) { va_list ap; - hcl_fmtout_t fo; + hak_fmtout_t fo; - if (hcl->shuterr) return; - hcl->errmsg.len = 0; + if (hak->shuterr) return; + hak->errmsg.len = 0; - HCL_MEMSET (&fo, 0, HCL_SIZEOF(fo)); + HAK_MEMSET (&fo, 0, HAK_SIZEOF(fo)); fo.putbchars = err_bcs; fo.putuchars = err_ucs; - fo.putobj = hcl_fmt_object; + fo.putobj = hak_fmt_object; va_start (ap, fmt); - hcl_bfmt_outv (hcl, &fo, fmt, ap); + hak_bfmt_outv (hak, &fo, fmt, ap); va_end (ap); - hcl->errnum = errnum; - HCL_MEMSET (&hcl->errloc, 0, HCL_SIZEOF(hcl->errloc)); + hak->errnum = errnum; + HAK_MEMSET (&hak->errloc, 0, HAK_SIZEOF(hak->errloc)); } -void hcl_seterrufmt (hcl_t* hcl, hcl_errnum_t errnum, const hcl_uch_t* fmt, ...) +void hak_seterrufmt (hak_t* hak, hak_errnum_t errnum, const hak_uch_t* fmt, ...) { va_list ap; - hcl_fmtout_t fo; + hak_fmtout_t fo; - if (hcl->shuterr) return; - hcl->errmsg.len = 0; + if (hak->shuterr) return; + hak->errmsg.len = 0; - HCL_MEMSET (&fo, 0, HCL_SIZEOF(fo)); + HAK_MEMSET (&fo, 0, HAK_SIZEOF(fo)); fo.putbchars = err_bcs; fo.putuchars = err_ucs; - fo.putobj = hcl_fmt_object; + fo.putobj = hak_fmt_object; va_start (ap, fmt); - hcl_ufmt_outv (hcl, &fo, fmt, ap); + hak_ufmt_outv (hak, &fo, fmt, ap); va_end (ap); - hcl->errnum = errnum; - HCL_MEMSET (&hcl->errloc, 0, HCL_SIZEOF(hcl->errloc)); + hak->errnum = errnum; + HAK_MEMSET (&hak->errloc, 0, HAK_SIZEOF(hak->errloc)); } -void hcl_seterrbfmtv (hcl_t* hcl, hcl_errnum_t errnum, const hcl_bch_t* fmt, va_list ap) +void hak_seterrbfmtv (hak_t* hak, hak_errnum_t errnum, const hak_bch_t* fmt, va_list ap) { - hcl_fmtout_t fo; + hak_fmtout_t fo; - if (hcl->shuterr) return; + if (hak->shuterr) return; - hcl->errmsg.len = 0; + hak->errmsg.len = 0; - HCL_MEMSET (&fo, 0, HCL_SIZEOF(fo)); + HAK_MEMSET (&fo, 0, HAK_SIZEOF(fo)); fo.putbchars = err_bcs; fo.putuchars = err_ucs; - fo.putobj = hcl_fmt_object; + fo.putobj = hak_fmt_object; - hcl_bfmt_outv (hcl, &fo, fmt, ap); - hcl->errnum = errnum; - HCL_MEMSET (&hcl->errloc, 0, HCL_SIZEOF(hcl->errloc)); + hak_bfmt_outv (hak, &fo, fmt, ap); + hak->errnum = errnum; + HAK_MEMSET (&hak->errloc, 0, HAK_SIZEOF(hak->errloc)); } -void hcl_seterrufmtv (hcl_t* hcl, hcl_errnum_t errnum, const hcl_uch_t* fmt, va_list ap) +void hak_seterrufmtv (hak_t* hak, hak_errnum_t errnum, const hak_uch_t* fmt, va_list ap) { - hcl_fmtout_t fo; + hak_fmtout_t fo; - if (hcl->shuterr) return; + if (hak->shuterr) return; - hcl->errmsg.len = 0; + hak->errmsg.len = 0; - HCL_MEMSET (&fo, 0, HCL_SIZEOF(fo)); + HAK_MEMSET (&fo, 0, HAK_SIZEOF(fo)); fo.putbchars = err_bcs; fo.putuchars = err_ucs; - fo.putobj = hcl_fmt_object; + fo.putobj = hak_fmt_object; - hcl_ufmt_outv (hcl, &fo, fmt, ap); - hcl->errnum = errnum; - HCL_MEMSET (&hcl->errloc, 0, HCL_SIZEOF(hcl->errloc)); + hak_ufmt_outv (hak, &fo, fmt, ap); + hak->errnum = errnum; + HAK_MEMSET (&hak->errloc, 0, HAK_SIZEOF(hak->errloc)); } -void hcl_seterrbfmtloc (hcl_t* hcl, hcl_errnum_t errnum, const hcl_loc_t* loc, const hcl_bch_t* fmt, ...) +void hak_seterrbfmtloc (hak_t* hak, hak_errnum_t errnum, const hak_loc_t* loc, const hak_bch_t* fmt, ...) { va_list ap; va_start (ap, fmt); - hcl_seterrbfmtv (hcl, errnum, fmt, ap); + hak_seterrbfmtv (hak, errnum, fmt, ap); va_end (ap); - hcl->errloc = *loc; + hak->errloc = *loc; } -void hcl_seterrufmtloc (hcl_t* hcl, hcl_errnum_t errnum, const hcl_loc_t* loc, const hcl_uch_t* fmt, ...) +void hak_seterrufmtloc (hak_t* hak, hak_errnum_t errnum, const hak_loc_t* loc, const hak_uch_t* fmt, ...) { va_list ap; va_start (ap, fmt); - hcl_seterrufmtv (hcl, errnum, fmt, ap); + hak_seterrufmtv (hak, errnum, fmt, ap); va_end (ap); - hcl->errloc = *loc; + hak->errloc = *loc; } -void hcl_seterrwithsyserr (hcl_t* hcl, int syserr_type, int syserr_code) +void hak_seterrwithsyserr (hak_t* hak, int syserr_type, int syserr_code) { - hcl_errnum_t errnum; + hak_errnum_t errnum; - if (hcl->shuterr) return; + if (hak->shuterr) return; - if (hcl->vmprim.syserrstrb) + if (hak->vmprim.syserrstrb) { - errnum = hcl->vmprim.syserrstrb(hcl, syserr_type, syserr_code, hcl->errmsg.tmpbuf.bch, HCL_COUNTOF(hcl->errmsg.tmpbuf.bch)); - hcl_seterrbfmt (hcl, errnum, "%hs", hcl->errmsg.tmpbuf.bch); + errnum = hak->vmprim.syserrstrb(hak, syserr_type, syserr_code, hak->errmsg.tmpbuf.bch, HAK_COUNTOF(hak->errmsg.tmpbuf.bch)); + hak_seterrbfmt (hak, errnum, "%hs", hak->errmsg.tmpbuf.bch); } else { - HCL_ASSERT (hcl, hcl->vmprim.syserrstru != HCL_NULL); - errnum = hcl->vmprim.syserrstru(hcl, syserr_type, syserr_code, hcl->errmsg.tmpbuf.uch, HCL_COUNTOF(hcl->errmsg.tmpbuf.uch)); - hcl_seterrbfmt (hcl, errnum, "%ls", hcl->errmsg.tmpbuf.uch); + HAK_ASSERT (hak, hak->vmprim.syserrstru != HAK_NULL); + errnum = hak->vmprim.syserrstru(hak, syserr_type, syserr_code, hak->errmsg.tmpbuf.uch, HAK_COUNTOF(hak->errmsg.tmpbuf.uch)); + hak_seterrbfmt (hak, errnum, "%ls", hak->errmsg.tmpbuf.uch); } } -void hcl_seterrbfmtwithsyserr (hcl_t* hcl, int syserr_type, int syserr_code, const hcl_bch_t* fmt, ...) +void hak_seterrbfmtwithsyserr (hak_t* hak, int syserr_type, int syserr_code, const hak_bch_t* fmt, ...) { - hcl_errnum_t errnum; - hcl_oow_t ucslen, bcslen; + hak_errnum_t errnum; + hak_oow_t ucslen, bcslen; va_list ap; - if (hcl->shuterr) return; + if (hak->shuterr) return; - if (hcl->vmprim.syserrstrb) + if (hak->vmprim.syserrstrb) { - errnum = hcl->vmprim.syserrstrb(hcl, syserr_type, syserr_code, hcl->errmsg.tmpbuf.bch, HCL_COUNTOF(hcl->errmsg.tmpbuf.bch)); + errnum = hak->vmprim.syserrstrb(hak, syserr_type, syserr_code, hak->errmsg.tmpbuf.bch, HAK_COUNTOF(hak->errmsg.tmpbuf.bch)); va_start (ap, fmt); - hcl_seterrbfmtv (hcl, errnum, fmt, ap); + hak_seterrbfmtv (hak, errnum, fmt, ap); va_end (ap); - if (HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len >= 5) + if (HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len >= 5) { - hcl->errmsg.buf[hcl->errmsg.len++] = ' '; - hcl->errmsg.buf[hcl->errmsg.len++] = '-'; - hcl->errmsg.buf[hcl->errmsg.len++] = ' '; + hak->errmsg.buf[hak->errmsg.len++] = ' '; + hak->errmsg.buf[hak->errmsg.len++] = '-'; + hak->errmsg.buf[hak->errmsg.len++] = ' '; - #if defined(HCL_OOCH_IS_BCH) - hcl->errmsg.len += hcl_copy_bcstr(&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, hcl->errmsg.tmpbuf.bch); + #if defined(HAK_OOCH_IS_BCH) + hak->errmsg.len += hak_copy_bcstr(&hak->errmsg.buf[hak->errmsg.len], HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len, hak->errmsg.tmpbuf.bch); #else - ucslen = HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len; - hcl_convbtoucstr (hcl, hcl->errmsg.tmpbuf.bch, &bcslen, &hcl->errmsg.buf[hcl->errmsg.len], &ucslen); - hcl->errmsg.len += ucslen; + ucslen = HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len; + hak_convbtoucstr (hak, hak->errmsg.tmpbuf.bch, &bcslen, &hak->errmsg.buf[hak->errmsg.len], &ucslen); + hak->errmsg.len += ucslen; #endif } } else { - HCL_ASSERT (hcl, hcl->vmprim.syserrstru != HCL_NULL); - errnum = hcl->vmprim.syserrstru(hcl, syserr_type, syserr_code, hcl->errmsg.tmpbuf.uch, HCL_COUNTOF(hcl->errmsg.tmpbuf.uch)); + HAK_ASSERT (hak, hak->vmprim.syserrstru != HAK_NULL); + errnum = hak->vmprim.syserrstru(hak, syserr_type, syserr_code, hak->errmsg.tmpbuf.uch, HAK_COUNTOF(hak->errmsg.tmpbuf.uch)); va_start (ap, fmt); - hcl_seterrbfmtv (hcl, errnum, fmt, ap); + hak_seterrbfmtv (hak, errnum, fmt, ap); va_end (ap); - if (HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len >= 5) + if (HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len >= 5) { - hcl->errmsg.buf[hcl->errmsg.len++] = ' '; - hcl->errmsg.buf[hcl->errmsg.len++] = '-'; - hcl->errmsg.buf[hcl->errmsg.len++] = ' '; + hak->errmsg.buf[hak->errmsg.len++] = ' '; + hak->errmsg.buf[hak->errmsg.len++] = '-'; + hak->errmsg.buf[hak->errmsg.len++] = ' '; - #if defined(HCL_OOCH_IS_BCH) - bcslen = HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len; - hcl_convutobcstr (hcl, hcl->errmsg.tmpbuf.uch, &ucslen, &hcl->errmsg.buf[hcl->errmsg.len], &bcslen); - hcl->errmsg.len += bcslen; + #if defined(HAK_OOCH_IS_BCH) + bcslen = HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len; + hak_convutobcstr (hak, hak->errmsg.tmpbuf.uch, &ucslen, &hak->errmsg.buf[hak->errmsg.len], &bcslen); + hak->errmsg.len += bcslen; #else - hcl->errmsg.len += hcl_copy_ucstr(&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, hcl->errmsg.tmpbuf.uch); + hak->errmsg.len += hak_copy_ucstr(&hak->errmsg.buf[hak->errmsg.len], HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len, hak->errmsg.tmpbuf.uch); #endif } } } -void hcl_seterrufmtwithsyserr (hcl_t* hcl, int syserr_type, int syserr_code, const hcl_uch_t* fmt, ...) +void hak_seterrufmtwithsyserr (hak_t* hak, int syserr_type, int syserr_code, const hak_uch_t* fmt, ...) { - hcl_errnum_t errnum; - hcl_oow_t ucslen, bcslen; + hak_errnum_t errnum; + hak_oow_t ucslen, bcslen; va_list ap; - if (hcl->shuterr) return; + if (hak->shuterr) return; - if (hcl->vmprim.syserrstrb) + if (hak->vmprim.syserrstrb) { - errnum = hcl->vmprim.syserrstrb(hcl, syserr_type, syserr_code, hcl->errmsg.tmpbuf.bch, HCL_COUNTOF(hcl->errmsg.tmpbuf.bch)); + errnum = hak->vmprim.syserrstrb(hak, syserr_type, syserr_code, hak->errmsg.tmpbuf.bch, HAK_COUNTOF(hak->errmsg.tmpbuf.bch)); va_start (ap, fmt); - hcl_seterrufmtv (hcl, errnum, fmt, ap); + hak_seterrufmtv (hak, errnum, fmt, ap); va_end (ap); - if (HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len >= 5) + if (HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len >= 5) { - hcl->errmsg.buf[hcl->errmsg.len++] = ' '; - hcl->errmsg.buf[hcl->errmsg.len++] = '-'; - hcl->errmsg.buf[hcl->errmsg.len++] = ' '; + hak->errmsg.buf[hak->errmsg.len++] = ' '; + hak->errmsg.buf[hak->errmsg.len++] = '-'; + hak->errmsg.buf[hak->errmsg.len++] = ' '; - #if defined(HCL_OOCH_IS_BCH) - hcl->errmsg.len += hcl_copy_bcstr(&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, hcl->errmsg.tmpbuf.bch); + #if defined(HAK_OOCH_IS_BCH) + hak->errmsg.len += hak_copy_bcstr(&hak->errmsg.buf[hak->errmsg.len], HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len, hak->errmsg.tmpbuf.bch); #else - ucslen = HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len; - hcl_convbtoucstr (hcl, hcl->errmsg.tmpbuf.bch, &bcslen, &hcl->errmsg.buf[hcl->errmsg.len], &ucslen); - hcl->errmsg.len += ucslen; + ucslen = HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len; + hak_convbtoucstr (hak, hak->errmsg.tmpbuf.bch, &bcslen, &hak->errmsg.buf[hak->errmsg.len], &ucslen); + hak->errmsg.len += ucslen; #endif } } else { - HCL_ASSERT (hcl, hcl->vmprim.syserrstru != HCL_NULL); - errnum = hcl->vmprim.syserrstru(hcl, syserr_type, syserr_code, hcl->errmsg.tmpbuf.uch, HCL_COUNTOF(hcl->errmsg.tmpbuf.uch)); + HAK_ASSERT (hak, hak->vmprim.syserrstru != HAK_NULL); + errnum = hak->vmprim.syserrstru(hak, syserr_type, syserr_code, hak->errmsg.tmpbuf.uch, HAK_COUNTOF(hak->errmsg.tmpbuf.uch)); va_start (ap, fmt); - hcl_seterrufmtv (hcl, errnum, fmt, ap); + hak_seterrufmtv (hak, errnum, fmt, ap); va_end (ap); - if (HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len >= 5) + if (HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len >= 5) { - hcl->errmsg.buf[hcl->errmsg.len++] = ' '; - hcl->errmsg.buf[hcl->errmsg.len++] = '-'; - hcl->errmsg.buf[hcl->errmsg.len++] = ' '; + hak->errmsg.buf[hak->errmsg.len++] = ' '; + hak->errmsg.buf[hak->errmsg.len++] = '-'; + hak->errmsg.buf[hak->errmsg.len++] = ' '; - #if defined(HCL_OOCH_IS_BCH) - bcslen = HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len; - hcl_convutobcstr (hcl, hcl->errmsg.tmpbuf.uch, &ucslen, &hcl->errmsg.buf[hcl->errmsg.len], &bcslen); - hcl->errmsg.len += bcslen; + #if defined(HAK_OOCH_IS_BCH) + bcslen = HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len; + hak_convutobcstr (hak, hak->errmsg.tmpbuf.uch, &ucslen, &hak->errmsg.buf[hak->errmsg.len], &bcslen); + hak->errmsg.len += bcslen; #else - hcl->errmsg.len += hcl_copy_ucstr(&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, hcl->errmsg.tmpbuf.uch); + hak->errmsg.len += hak_copy_ucstr(&hak->errmsg.buf[hak->errmsg.len], HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len, hak->errmsg.tmpbuf.uch); #endif } } @@ -592,23 +592,23 @@ void hcl_seterrufmtwithsyserr (hcl_t* hcl, int syserr_type, int syserr_code, con * SYNTAX ERROR HANDLING * -------------------------------------------------------------------------- */ -void hcl_getsynerr (hcl_t* hcl, hcl_synerr_t* synerr) +void hak_getsynerr (hak_t* hak, hak_synerr_t* synerr) { - HCL_ASSERT (hcl, hcl->c != HCL_NULL); - if (synerr) *synerr = hcl->c->synerr; + HAK_ASSERT (hak, hak->c != HAK_NULL); + if (synerr) *synerr = hak->c->synerr; } -hcl_synerrnum_t hcl_getsynerrnum (hcl_t* hcl) +hak_synerrnum_t hak_getsynerrnum (hak_t* hak) { - HCL_ASSERT (hcl, hcl->c != HCL_NULL); - return hcl->c->synerr.num; + HAK_ASSERT (hak, hak->c != HAK_NULL); + return hak->c->synerr.num; } -void hcl_setsynerrbfmt (hcl_t* hcl, hcl_synerrnum_t num, const hcl_loc_t* loc, const hcl_oocs_t* tgt, const hcl_bch_t* msgfmt, ...) +void hak_setsynerrbfmt (hak_t* hak, hak_synerrnum_t num, const hak_loc_t* loc, const hak_oocs_t* tgt, const hak_bch_t* msgfmt, ...) { - static hcl_bch_t syntax_error[] = "syntax error - "; + static hak_bch_t syntax_error[] = "syntax error - "; - if (hcl->shuterr) return; + if (hak->shuterr) return; if (msgfmt) { @@ -616,58 +616,58 @@ void hcl_setsynerrbfmt (hcl_t* hcl, hcl_synerrnum_t num, const hcl_loc_t* loc, c int i, selen; va_start (ap, msgfmt); - hcl_seterrbfmtv (hcl, HCL_ESYNERR, msgfmt, ap); + hak_seterrbfmtv (hak, HAK_ESYNERR, msgfmt, ap); va_end (ap); - selen = HCL_COUNTOF(syntax_error) - 1; - HCL_MEMMOVE (&hcl->errmsg.buf[selen], &hcl->errmsg.buf[0], HCL_SIZEOF(hcl->errmsg.buf[0]) * (HCL_COUNTOF(hcl->errmsg.buf) - selen)); - for (i = 0; i < selen; i++) hcl->errmsg.buf[i] = syntax_error[i]; - hcl->errmsg.buf[HCL_COUNTOF(hcl->errmsg.buf) - 1] = '\0'; + selen = HAK_COUNTOF(syntax_error) - 1; + HAK_MEMMOVE (&hak->errmsg.buf[selen], &hak->errmsg.buf[0], HAK_SIZEOF(hak->errmsg.buf[0]) * (HAK_COUNTOF(hak->errmsg.buf) - selen)); + for (i = 0; i < selen; i++) hak->errmsg.buf[i] = syntax_error[i]; + hak->errmsg.buf[HAK_COUNTOF(hak->errmsg.buf) - 1] = '\0'; } else { - hcl_seterrbfmt (hcl, HCL_ESYNERR, "%hs%hs", syntax_error, synerr_to_errstr(num)); + hak_seterrbfmt (hak, HAK_ESYNERR, "%hs%hs", syntax_error, synerr_to_errstr(num)); } - hcl->c->synerr.num = num; + hak->c->synerr.num = num; /* The SCO compiler complains of this ternary operation saying: * error: operands have incompatible types: op ":" * it seems to complain of type mismatch between *loc and - * hcl->c->tok.loc due to 'const' prefixed to loc. */ - /*hcl->c->synerr.loc = loc? *loc: hcl->c->tok.loc;*/ + * hak->c->tok.loc due to 'const' prefixed to loc. */ + /*hak->c->synerr.loc = loc? *loc: hak->c->tok.loc;*/ if (loc) { - hcl->c->synerr.loc = *loc; + hak->c->synerr.loc = *loc; } else { - hcl->c->synerr.loc = hcl->c->tok.loc; + hak->c->synerr.loc = hak->c->tok.loc; } if (tgt) { - hcl_oow_t n; - n = hcl_copy_oochars_to_oocstr(hcl->c->synerr.tgt.val, HCL_COUNTOF(hcl->c->synerr.tgt.val), tgt->ptr, tgt->len); + hak_oow_t n; + n = hak_copy_oochars_to_oocstr(hak->c->synerr.tgt.val, HAK_COUNTOF(hak->c->synerr.tgt.val), tgt->ptr, tgt->len); if (n < tgt->len) { - hcl->c->synerr.tgt.val[n - 1] = '.'; - hcl->c->synerr.tgt.val[n - 2] = '.'; - hcl->c->synerr.tgt.val[n - 3] = '.'; + hak->c->synerr.tgt.val[n - 1] = '.'; + hak->c->synerr.tgt.val[n - 2] = '.'; + hak->c->synerr.tgt.val[n - 3] = '.'; } - hcl->c->synerr.tgt.len = n; + hak->c->synerr.tgt.len = n; } else { - hcl->c->synerr.tgt.val[0] = '\0'; - hcl->c->synerr.tgt.len = 0; + hak->c->synerr.tgt.val[0] = '\0'; + hak->c->synerr.tgt.len = 0; } } -void hcl_setsynerrufmt (hcl_t* hcl, hcl_synerrnum_t num, const hcl_loc_t* loc, const hcl_oocs_t* tgt, const hcl_uch_t* msgfmt, ...) +void hak_setsynerrufmt (hak_t* hak, hak_synerrnum_t num, const hak_loc_t* loc, const hak_oocs_t* tgt, const hak_uch_t* msgfmt, ...) { - static hcl_bch_t syntax_error[] = "syntax error - "; + static hak_bch_t syntax_error[] = "syntax error - "; - if (hcl->shuterr) return; + if (hak->shuterr) return; if (msgfmt) { @@ -675,50 +675,50 @@ void hcl_setsynerrufmt (hcl_t* hcl, hcl_synerrnum_t num, const hcl_loc_t* loc, c int i, selen; va_start (ap, msgfmt); - hcl_seterrufmtv (hcl, HCL_ESYNERR, msgfmt, ap); + hak_seterrufmtv (hak, HAK_ESYNERR, msgfmt, ap); va_end (ap); - selen = HCL_COUNTOF(syntax_error) - 1; - HCL_MEMMOVE (&hcl->errmsg.buf[selen], &hcl->errmsg.buf[0], HCL_SIZEOF(hcl->errmsg.buf[0]) * (HCL_COUNTOF(hcl->errmsg.buf) - selen)); - for (i = 0; i < selen; i++) hcl->errmsg.buf[i] = syntax_error[i]; - hcl->errmsg.buf[HCL_COUNTOF(hcl->errmsg.buf) - 1] = '\0'; + selen = HAK_COUNTOF(syntax_error) - 1; + HAK_MEMMOVE (&hak->errmsg.buf[selen], &hak->errmsg.buf[0], HAK_SIZEOF(hak->errmsg.buf[0]) * (HAK_COUNTOF(hak->errmsg.buf) - selen)); + for (i = 0; i < selen; i++) hak->errmsg.buf[i] = syntax_error[i]; + hak->errmsg.buf[HAK_COUNTOF(hak->errmsg.buf) - 1] = '\0'; } else { - hcl_seterrbfmt (hcl, HCL_ESYNERR, "%hs%hs", syntax_error, synerr_to_errstr(num)); + hak_seterrbfmt (hak, HAK_ESYNERR, "%hs%hs", syntax_error, synerr_to_errstr(num)); } - hcl->c->synerr.num = num; + hak->c->synerr.num = num; /* The SCO compiler complains of this ternary operation saying: * error: operands have incompatible types: op ":" * it seems to complain of type mismatch between *loc and - * hcl->c->tok.loc due to 'const' prefixed to loc. */ - /*hcl->c->synerr.loc = loc? *loc: hcl->c->tok.loc;*/ + * hak->c->tok.loc due to 'const' prefixed to loc. */ + /*hak->c->synerr.loc = loc? *loc: hak->c->tok.loc;*/ if (loc) { - hcl->c->synerr.loc = *loc; + hak->c->synerr.loc = *loc; } else { - hcl->c->synerr.loc = hcl->c->tok.loc; + hak->c->synerr.loc = hak->c->tok.loc; } if (tgt) { - hcl_oow_t n; - n = hcl_copy_oochars_to_oocstr(hcl->c->synerr.tgt.val, HCL_COUNTOF(hcl->c->synerr.tgt.val), tgt->ptr, tgt->len); + hak_oow_t n; + n = hak_copy_oochars_to_oocstr(hak->c->synerr.tgt.val, HAK_COUNTOF(hak->c->synerr.tgt.val), tgt->ptr, tgt->len); if (n < tgt->len) { - hcl->c->synerr.tgt.val[n - 1] = '.'; - hcl->c->synerr.tgt.val[n - 2] = '.'; - hcl->c->synerr.tgt.val[n - 3] = '.'; + hak->c->synerr.tgt.val[n - 1] = '.'; + hak->c->synerr.tgt.val[n - 2] = '.'; + hak->c->synerr.tgt.val[n - 3] = '.'; } - hcl->c->synerr.tgt.len = n; + hak->c->synerr.tgt.len = n; } else { - hcl->c->synerr.tgt.val[0] = '\0'; - hcl->c->synerr.tgt.len = 0; + hak->c->synerr.tgt.val[0] = '\0'; + hak->c->synerr.tgt.len = 0; } } diff --git a/lib/exec.c b/lib/exec.c index 39c738a..6fadfa3 100644 --- a/lib/exec.c +++ b/lib/exec.c @@ -23,7 +23,7 @@ */ -#include "hcl-prv.h" +#include "hak-prv.h" static const char* io_type_str[] = { @@ -31,9 +31,9 @@ static const char* io_type_str[] = "output" }; -static HCL_INLINE const char* proc_state_to_string (int state) +static HAK_INLINE const char* proc_state_to_string (int state) { - static const hcl_bch_t* str[] = + static const hak_bch_t* str[] = { "TERMINATED", "SUSPENDED", @@ -45,7 +45,7 @@ static HCL_INLINE const char* proc_state_to_string (int state) return str[state + 1]; } -static hcl_ooch_t oocstr_dash[] = { '-', '\0' }; +static hak_ooch_t oocstr_dash[] = { '-', '\0' }; #define PROC_MAP_INC 64 @@ -64,247 +64,247 @@ static hcl_ooch_t oocstr_dash[] = { '-', '\0' }; #define SEM_HEAP_RIGHT(x) ((x) * 2 + 2) #define SEM_HEAP_EARLIER_THAN(stx,x,y) ( \ - (HCL_OOP_TO_SMOOI((x)->u.timed.ftime_sec) < HCL_OOP_TO_SMOOI((y)->u.timed.ftime_sec)) || \ - (HCL_OOP_TO_SMOOI((x)->u.timed.ftime_sec) == HCL_OOP_TO_SMOOI((y)->u.timed.ftime_sec) && HCL_OOP_TO_SMOOI((x)->u.timed.ftime_nsec) < HCL_OOP_TO_SMOOI((y)->u.timed.ftime_nsec)) \ + (HAK_OOP_TO_SMOOI((x)->u.timed.ftime_sec) < HAK_OOP_TO_SMOOI((y)->u.timed.ftime_sec)) || \ + (HAK_OOP_TO_SMOOI((x)->u.timed.ftime_sec) == HAK_OOP_TO_SMOOI((y)->u.timed.ftime_sec) && HAK_OOP_TO_SMOOI((x)->u.timed.ftime_nsec) < HAK_OOP_TO_SMOOI((y)->u.timed.ftime_nsec)) \ ) -#define LOAD_IP(hcl, v_ctx) ((hcl)->ip = HCL_OOP_TO_SMOOI((v_ctx)->ip)) -#define STORE_IP(hcl, v_ctx) ((v_ctx)->ip = HCL_SMOOI_TO_OOP((hcl)->ip)) +#define LOAD_IP(hak, v_ctx) ((hak)->ip = HAK_OOP_TO_SMOOI((v_ctx)->ip)) +#define STORE_IP(hak, v_ctx) ((v_ctx)->ip = HAK_SMOOI_TO_OOP((hak)->ip)) -#define LOAD_SP(hcl, v_ctx) ((hcl)->sp = HCL_OOP_TO_SMOOI((v_ctx)->sp)) -#define STORE_SP(hcl, v_ctx) ((v_ctx)->sp = HCL_SMOOI_TO_OOP((hcl)->sp)) +#define LOAD_SP(hak, v_ctx) ((hak)->sp = HAK_OOP_TO_SMOOI((v_ctx)->sp)) +#define STORE_SP(hak, v_ctx) ((v_ctx)->sp = HAK_SMOOI_TO_OOP((hak)->sp)) -#define LOAD_ACTIVE_IP(hcl) LOAD_IP(hcl, (hcl)->active_context) -#define STORE_ACTIVE_IP(hcl) STORE_IP(hcl, (hcl)->active_context) +#define LOAD_ACTIVE_IP(hak) LOAD_IP(hak, (hak)->active_context) +#define STORE_ACTIVE_IP(hak) STORE_IP(hak, (hak)->active_context) -#define LOAD_ACTIVE_SP(hcl) LOAD_SP(hcl, (hcl)->processor->active) -#define STORE_ACTIVE_SP(hcl) STORE_SP(hcl, (hcl)->processor->active) +#define LOAD_ACTIVE_SP(hak) LOAD_SP(hak, (hak)->processor->active) +#define STORE_ACTIVE_SP(hak) STORE_SP(hak, (hak)->processor->active) -#define SWITCH_ACTIVE_CONTEXT(hcl,v_ctx) \ +#define SWITCH_ACTIVE_CONTEXT(hak,v_ctx) \ do \ { \ - STORE_ACTIVE_IP (hcl); \ - (hcl)->active_context = (v_ctx); \ - (hcl)->active_function = (hcl)->active_context->base; \ - (hcl)->active_code = HCL_FUNCTION_GET_CODE_BYTE((hcl)->active_function); \ - LOAD_ACTIVE_IP (hcl); \ - (hcl)->processor->active->current_context = (hcl)->active_context; \ + STORE_ACTIVE_IP (hak); \ + (hak)->active_context = (v_ctx); \ + (hak)->active_function = (hak)->active_context->base; \ + (hak)->active_code = HAK_FUNCTION_GET_CODE_BYTE((hak)->active_function); \ + LOAD_ACTIVE_IP (hak); \ + (hak)->processor->active->current_context = (hak)->active_context; \ } while (0) -/*#define FETCH_BYTE_CODE(hcl) ((hcl)->code.bc.arr->slot[(hcl)->ip++])*/ -#define FETCH_BYTE_CODE(hcl) ((hcl)->active_code[(hcl)->ip++]) -#define FETCH_BYTE_CODE_TO(hcl, v_oow) (v_oow = FETCH_BYTE_CODE(hcl)) -#if (HCL_CODE_LONG_PARAM_SIZE == 2) -# define FETCH_PARAM_CODE_TO(hcl, v_oow) \ +/*#define FETCH_BYTE_CODE(hak) ((hak)->code.bc.arr->slot[(hak)->ip++])*/ +#define FETCH_BYTE_CODE(hak) ((hak)->active_code[(hak)->ip++]) +#define FETCH_BYTE_CODE_TO(hak, v_oow) (v_oow = FETCH_BYTE_CODE(hak)) +#if (HAK_CODE_LONG_PARAM_SIZE == 2) +# define FETCH_PARAM_CODE_TO(hak, v_oow) \ do { \ - v_oow = FETCH_BYTE_CODE(hcl); \ - v_oow = (v_oow << 8) | FETCH_BYTE_CODE(hcl); \ + v_oow = FETCH_BYTE_CODE(hak); \ + v_oow = (v_oow << 8) | FETCH_BYTE_CODE(hak); \ } while (0) #else -# define FETCH_PARAM_CODE_TO(hcl, v_oow) (v_oow = FETCH_BYTE_CODE(hcl)) +# define FETCH_PARAM_CODE_TO(hak, v_oow) (v_oow = FETCH_BYTE_CODE(hak)) #endif -#if defined(HCL_DEBUG_VM_EXEC) -# define LOG_MASK_INST (HCL_LOG_IC | HCL_LOG_MNEMONIC | HCL_LOG_INFO) +#if defined(HAK_DEBUG_VM_EXEC) +# define LOG_MASK_INST (HAK_LOG_IC | HAK_LOG_MNEMONIC | HAK_LOG_INFO) -# define LOG_INST_0(hcl,fmt) HCL_LOG1(hcl, LOG_MASK_INST, "%010zd " fmt "\n", fetched_instruction_pointer) -# define LOG_INST_1(hcl,fmt,a1) HCL_LOG2(hcl, LOG_MASK_INST, "%010zd " fmt "\n",fetched_instruction_pointer, a1) -# define LOG_INST_2(hcl,fmt,a1,a2) HCL_LOG3(hcl, LOG_MASK_INST, "%010zd " fmt "\n", fetched_instruction_pointer, a1, a2) -# define LOG_INST_3(hcl,fmt,a1,a2,a3) HCL_LOG4(hcl, LOG_MASK_INST, "%010zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3) -# define LOG_INST_4(hcl,fmt,a1,a2,a3,a4) HCL_LOG5(hcl, LOG_MASK_INST, "%010zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3, a4) -# define LOG_INST_5(hcl,fmt,a1,a2,a3,a4,a5) HCL_LOG6(hcl, LOG_MASK_INST, "%010zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3, a4, a5) -# define LOG_INST_6(hcl,fmt,a1,a2,a3,a4,a5,a6) HCL_LOG7(hcl, LOG_MASK_INST, "%010zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3, a4, a5, a6) -# define LOG_INST_7(hcl,fmt,a1,a2,a3,a4,a5,a6,a7) HCL_LOG8(hcl, LOG_MASK_INST, "%010zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3, a4, a5, a6, a7) +# define LOG_INST_0(hak,fmt) HAK_LOG1(hak, LOG_MASK_INST, "%010zd " fmt "\n", fetched_instruction_pointer) +# define LOG_INST_1(hak,fmt,a1) HAK_LOG2(hak, LOG_MASK_INST, "%010zd " fmt "\n",fetched_instruction_pointer, a1) +# define LOG_INST_2(hak,fmt,a1,a2) HAK_LOG3(hak, LOG_MASK_INST, "%010zd " fmt "\n", fetched_instruction_pointer, a1, a2) +# define LOG_INST_3(hak,fmt,a1,a2,a3) HAK_LOG4(hak, LOG_MASK_INST, "%010zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3) +# define LOG_INST_4(hak,fmt,a1,a2,a3,a4) HAK_LOG5(hak, LOG_MASK_INST, "%010zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3, a4) +# define LOG_INST_5(hak,fmt,a1,a2,a3,a4,a5) HAK_LOG6(hak, LOG_MASK_INST, "%010zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3, a4, a5) +# define LOG_INST_6(hak,fmt,a1,a2,a3,a4,a5,a6) HAK_LOG7(hak, LOG_MASK_INST, "%010zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3, a4, a5, a6) +# define LOG_INST_7(hak,fmt,a1,a2,a3,a4,a5,a6,a7) HAK_LOG8(hak, LOG_MASK_INST, "%010zd " fmt "\n", fetched_instruction_pointer, a1, a2, a3, a4, a5, a6, a7) #else -# define LOG_INST_0(hcl,fmt) -# define LOG_INST_1(hcl,fmt,a1) -# define LOG_INST_2(hcl,fmt,a1,a2) -# define LOG_INST_3(hcl,fmt,a1,a2,a3) -# define LOG_INST_4(hcl,fmt,a1,a2,a3,a4) -# define LOG_INST_5(hcl,fmt,a1,a2,a3,a4,a5) -# define LOG_INST_6(hcl,fmt,a1,a2,a3,a4,a5,a6) -# define LOG_INST_7(hcl,fmt,a1,a2,a3,a4,a5,a6,a7) +# define LOG_INST_0(hak,fmt) +# define LOG_INST_1(hak,fmt,a1) +# define LOG_INST_2(hak,fmt,a1,a2) +# define LOG_INST_3(hak,fmt,a1,a2,a3) +# define LOG_INST_4(hak,fmt,a1,a2,a3,a4) +# define LOG_INST_5(hak,fmt,a1,a2,a3,a4,a5) +# define LOG_INST_6(hak,fmt,a1,a2,a3,a4,a5,a6) +# define LOG_INST_7(hak,fmt,a1,a2,a3,a4,a5,a6,a7) #endif -static int delete_sem_from_sem_io_tuple (hcl_t* hcl, hcl_oop_semaphore_t sem, int force); -static void signal_io_semaphore (hcl_t* hcl, hcl_ooi_t io_handle, hcl_ooi_t mask); -static void terminate_all_processes (hcl_t* hcl); +static int delete_sem_from_sem_io_tuple (hak_t* hak, hak_oop_semaphore_t sem, int force); +static void signal_io_semaphore (hak_t* hak, hak_ooi_t io_handle, hak_ooi_t mask); +static void terminate_all_processes (hak_t* hak); /* ------------------------------------------------------------------------- */ -#define HCL_EXSTACK_PUSH(hcl, ctx_, ip_, clsp_, sp_) \ +#define HAK_EXSTACK_PUSH(hak, ctx_, ip_, clsp_, sp_) \ do { \ - hcl_oop_process_t ap = (hcl)->processor->active; \ - hcl_ooi_t exsp = HCL_OOP_TO_SMOOI(ap->exsp); \ - if (exsp >= HCL_OOP_TO_SMOOI(ap->exst) - 1) \ + hak_oop_process_t ap = (hak)->processor->active; \ + hak_ooi_t exsp = HAK_OOP_TO_SMOOI(ap->exsp); \ + if (exsp >= HAK_OOP_TO_SMOOI(ap->exst) - 1) \ { \ - hcl_seterrbfmt (hcl, HCL_EOOMEM, "process exception stack overflow"); \ - (hcl)->abort_req = -1; \ + hak_seterrbfmt (hak, HAK_EOOMEM, "process exception stack overflow"); \ + (hak)->abort_req = -1; \ } \ - exsp++; ap->slot[exsp] = (hcl_oop_t)(ctx_); \ - exsp++; ap->slot[exsp] = HCL_SMOOI_TO_OOP(ip_); \ - exsp++; ap->slot[exsp] = HCL_SMOOI_TO_OOP(clsp_); \ - exsp++; ap->slot[exsp] = HCL_SMOOI_TO_OOP(sp_); \ - ap->exsp = HCL_SMOOI_TO_OOP(exsp); \ + exsp++; ap->slot[exsp] = (hak_oop_t)(ctx_); \ + exsp++; ap->slot[exsp] = HAK_SMOOI_TO_OOP(ip_); \ + exsp++; ap->slot[exsp] = HAK_SMOOI_TO_OOP(clsp_); \ + exsp++; ap->slot[exsp] = HAK_SMOOI_TO_OOP(sp_); \ + ap->exsp = HAK_SMOOI_TO_OOP(exsp); \ } while (0) -#define HCL_EXSTACK_POP(hcl) \ +#define HAK_EXSTACK_POP(hak) \ do { \ - hcl_oop_process_t ap = (hcl)->processor->active; \ - hcl_ooi_t exsp = HCL_OOP_TO_SMOOI(ap->exsp); \ + hak_oop_process_t ap = (hak)->processor->active; \ + hak_ooi_t exsp = HAK_OOP_TO_SMOOI(ap->exsp); \ exsp -= 4; \ - ap->exsp = HCL_SMOOI_TO_OOP(exsp); \ + ap->exsp = HAK_SMOOI_TO_OOP(exsp); \ } while (0) -#define HCL_EXSTACK_POP_TO(hcl, ctx_, ip_, clsp_, sp_) \ +#define HAK_EXSTACK_POP_TO(hak, ctx_, ip_, clsp_, sp_) \ do { \ - hcl_oop_process_t ap = (hcl)->processor->active; \ - hcl_ooi_t exsp = HCL_OOP_TO_SMOOI(ap->exsp); \ - sp_ = HCL_OOP_TO_SMOOI(ap->slot[exsp]); exsp--; \ - clsp_ = HCL_OOP_TO_SMOOI(ap->slot[exsp]); exsp--; \ - ip_ = HCL_OOP_TO_SMOOI(ap->slot[exsp]); exsp--; \ - ctx_ = (hcl_oop_context_t)ap->slot[exsp]; exsp--; \ - ap->exsp = HCL_SMOOI_TO_OOP(exsp); \ + hak_oop_process_t ap = (hak)->processor->active; \ + hak_ooi_t exsp = HAK_OOP_TO_SMOOI(ap->exsp); \ + sp_ = HAK_OOP_TO_SMOOI(ap->slot[exsp]); exsp--; \ + clsp_ = HAK_OOP_TO_SMOOI(ap->slot[exsp]); exsp--; \ + ip_ = HAK_OOP_TO_SMOOI(ap->slot[exsp]); exsp--; \ + ctx_ = (hak_oop_context_t)ap->slot[exsp]; exsp--; \ + ap->exsp = HAK_SMOOI_TO_OOP(exsp); \ } while (0) -#define HCL_EXSTACK_GET_ST(hcl) HCL_OOP_TO_SMOOI(((hcl)->processor->active)->exst) -#define HCL_EXSTACK_GET_SP(hcl) HCL_OOP_TO_SMOOI(((hcl)->processor->active)->exsp) +#define HAK_EXSTACK_GET_ST(hak) HAK_OOP_TO_SMOOI(((hak)->processor->active)->exst) +#define HAK_EXSTACK_GET_SP(hak) HAK_OOP_TO_SMOOI(((hak)->processor->active)->exsp) -#define HCL_EXSTACK_IS_EMPTY(hcl) (HCL_OOP_TO_SMOOI(((hcl)->processor->active)->exsp) <= HCL_OOP_TO_SMOOI(((hcl)->processor->active)->st)) +#define HAK_EXSTACK_IS_EMPTY(hak) (HAK_OOP_TO_SMOOI(((hak)->processor->active)->exsp) <= HAK_OOP_TO_SMOOI(((hak)->processor->active)->st)) /* ------------------------------------------------------------------------- */ -#define HCL_CLSTACK_PUSH(hcl, v) \ +#define HAK_CLSTACK_PUSH(hak, v) \ do { \ - hcl_oop_process_t ap = (hcl)->processor->active; \ - hcl_ooi_t clsp_ = HCL_OOP_TO_SMOOI(ap->clsp); \ - if (clsp_ >= HCL_OOP_TO_SMOOI(ap->clst)) \ + hak_oop_process_t ap = (hak)->processor->active; \ + hak_ooi_t clsp_ = HAK_OOP_TO_SMOOI(ap->clsp); \ + if (clsp_ >= HAK_OOP_TO_SMOOI(ap->clst)) \ { \ - hcl_seterrbfmt (hcl, HCL_EOOMEM, "process class stack overflow"); \ - (hcl)->abort_req = -1; \ + hak_seterrbfmt (hak, HAK_EOOMEM, "process class stack overflow"); \ + (hak)->abort_req = -1; \ } \ clsp_++; ap->slot[clsp_] = (v); \ - ap->clsp = HCL_SMOOI_TO_OOP(clsp_); \ + ap->clsp = HAK_SMOOI_TO_OOP(clsp_); \ } while (0) -#define HCL_CLSTACK_POP(hcl) \ +#define HAK_CLSTACK_POP(hak) \ do { \ - hcl_oop_process_t ap = (hcl)->processor->active; \ - hcl_ooi_t clsp_ = HCL_OOP_TO_SMOOI(ap->clsp); \ + hak_oop_process_t ap = (hak)->processor->active; \ + hak_ooi_t clsp_ = HAK_OOP_TO_SMOOI(ap->clsp); \ clsp_--; \ - ap->clsp = HCL_SMOOI_TO_OOP(clsp_); \ + ap->clsp = HAK_SMOOI_TO_OOP(clsp_); \ } while (0) -#define HCL_CLSTACK_POPS(hcl, count) \ +#define HAK_CLSTACK_POPS(hak, count) \ do { \ - hcl_oop_process_t ap = (hcl)->processor->active; \ - hcl_ooi_t clsp_ = HCL_OOP_TO_SMOOI(ap->clsp); \ + hak_oop_process_t ap = (hak)->processor->active; \ + hak_ooi_t clsp_ = HAK_OOP_TO_SMOOI(ap->clsp); \ clsp_ -= count; \ - ap->clsp = HCL_SMOOI_TO_OOP(clsp_); \ + ap->clsp = HAK_SMOOI_TO_OOP(clsp_); \ } while (0) -#define HCL_CLSTACK_POP_TO(hcl, v) \ +#define HAK_CLSTACK_POP_TO(hak, v) \ do { \ - hcl_oop_process_t ap = (hcl)->processor->active; \ - hcl_ooi_t clsp_ = HCL_OOP_TO_SMOOI(ap->clsp); \ + hak_oop_process_t ap = (hak)->processor->active; \ + hak_ooi_t clsp_ = HAK_OOP_TO_SMOOI(ap->clsp); \ v = ap->slot[clsp_]; clsp_--; \ - ap->clsp = HCL_SMOOI_TO_OOP(clsp_); \ + ap->clsp = HAK_SMOOI_TO_OOP(clsp_); \ } while (0) -#define HCL_CLSTACK_FETCH_TOP_TO(hcl, v) \ +#define HAK_CLSTACK_FETCH_TOP_TO(hak, v) \ do { \ - hcl_oop_process_t ap = (hcl)->processor->active; \ - hcl_ooi_t clsp_ = HCL_OOP_TO_SMOOI(ap->clsp); \ + hak_oop_process_t ap = (hak)->processor->active; \ + hak_ooi_t clsp_ = HAK_OOP_TO_SMOOI(ap->clsp); \ v = ap->slot[clsp_]; \ } while (0) -#define HCL_CLSTACK_CHOP(hcl, clsp_) ((hcl)->processor->active->clsp = HCL_SMOOI_TO_OOP(clsp_)) +#define HAK_CLSTACK_CHOP(hak, clsp_) ((hak)->processor->active->clsp = HAK_SMOOI_TO_OOP(clsp_)) -#define HCL_CLSTACK_GET_ST(hcl) HCL_OOP_TO_SMOOI(((hcl)->processor->active)->clst) -#define HCL_CLSTACK_GET_SP(hcl) HCL_OOP_TO_SMOOI(((hcl)->processor->active)->clsp) +#define HAK_CLSTACK_GET_ST(hak) HAK_OOP_TO_SMOOI(((hak)->processor->active)->clst) +#define HAK_CLSTACK_GET_SP(hak) HAK_OOP_TO_SMOOI(((hak)->processor->active)->clsp) -#define HCL_CLSTACK_IS_EMPTY(hcl) (HCL_OOP_TO_SMOOI(((hcl)->processor->active)->clsp) <= HCL_OOP_TO_SMOOI(((hcl)->processor->active)->exst)) +#define HAK_CLSTACK_IS_EMPTY(hak) (HAK_OOP_TO_SMOOI(((hak)->processor->active)->clsp) <= HAK_OOP_TO_SMOOI(((hak)->processor->active)->exst)) /* ------------------------------------------------------------------------- */ -static HCL_INLINE int vm_startup (hcl_t* hcl) +static HAK_INLINE int vm_startup (hak_t* hak) { - hcl_cb_t* cb; - hcl_oow_t i; + hak_cb_t* cb; + hak_oow_t i; - HCL_DEBUG1 (hcl, "VM started up at IP %zd\n", hcl->ip); + HAK_DEBUG1 (hak, "VM started up at IP %zd\n", hak->ip); - for (cb = hcl->cblist; cb; cb = cb->next) + for (cb = hak->cblist; cb; cb = cb->next) { - if (cb->vm_startup && cb->vm_startup(hcl) <= -1) + if (cb->vm_startup && cb->vm_startup(hak) <= -1) { for (cb = cb->prev; cb; cb = cb->prev) { - if (cb->vm_cleanup) cb->vm_cleanup (hcl); + if (cb->vm_cleanup) cb->vm_cleanup (hak); } return -1; } } - for (i = 0; i < hcl->sem_io_map_capa; i++) + for (i = 0; i < hak->sem_io_map_capa; i++) { - hcl->sem_io_map[i] = -1; + hak->sem_io_map[i] = -1; } #if defined(ENABLE_GCFIN) - hcl->sem_gcfin = (hcl_oop_semaphore_t)hcl->_nil; - hcl->sem_gcfin_sigreq = 0; + hak->sem_gcfin = (hak_oop_semaphore_t)hak->_nil; + hak->sem_gcfin_sigreq = 0; #endif - hcl->vmprim.vm_gettime (hcl, &hcl->exec_start_time); /* raw time. no adjustment */ + hak->vmprim.vm_gettime (hak, &hak->exec_start_time); /* raw time. no adjustment */ return 0; } -static void vm_cleanup (hcl_t* hcl) +static void vm_cleanup (hak_t* hak) { - hcl_cb_t* cb; - hcl_oow_t i; + hak_cb_t* cb; + hak_oow_t i; - if (hcl->processor->total_count != HCL_SMOOI_TO_OOP(0)) + if (hak->processor->total_count != HAK_SMOOI_TO_OOP(0)) { /* if there is a suspended process, your program is probably wrong */ - HCL_LOG3 (hcl, HCL_LOG_WARN, "Warning - non-zero number of processes upon VM clean-up - total: %zd runnable: %zd suspended: %zd\n", - (hcl_ooi_t)HCL_OOP_TO_SMOOI(hcl->processor->total_count), - (hcl_ooi_t)HCL_OOP_TO_SMOOI(hcl->processor->runnable.count), - (hcl_ooi_t)HCL_OOP_TO_SMOOI(hcl->processor->suspended.count)); + HAK_LOG3 (hak, HAK_LOG_WARN, "Warning - non-zero number of processes upon VM clean-up - total: %zd runnable: %zd suspended: %zd\n", + (hak_ooi_t)HAK_OOP_TO_SMOOI(hak->processor->total_count), + (hak_ooi_t)HAK_OOP_TO_SMOOI(hak->processor->runnable.count), + (hak_ooi_t)HAK_OOP_TO_SMOOI(hak->processor->suspended.count)); - HCL_LOG0 (hcl, HCL_LOG_WARN, "Warning - terminating all residue processes\n"); - terminate_all_processes (hcl); + HAK_LOG0 (hak, HAK_LOG_WARN, "Warning - terminating all residue processes\n"); + terminate_all_processes (hak); } - HCL_ASSERT (hcl, hcl->processor->active == hcl->nil_process); - HCL_ASSERT (hcl, HCL_OOP_TO_SMOOI(hcl->processor->total_count) == 0); - HCL_ASSERT (hcl, HCL_OOP_TO_SMOOI(hcl->processor->runnable.count) == 0); - HCL_ASSERT (hcl, HCL_OOP_TO_SMOOI(hcl->processor->suspended.count) == 0); + HAK_ASSERT (hak, hak->processor->active == hak->nil_process); + HAK_ASSERT (hak, HAK_OOP_TO_SMOOI(hak->processor->total_count) == 0); + HAK_ASSERT (hak, HAK_OOP_TO_SMOOI(hak->processor->runnable.count) == 0); + HAK_ASSERT (hak, HAK_OOP_TO_SMOOI(hak->processor->suspended.count) == 0); - for (i = 0; i < hcl->sem_io_map_capa;) + for (i = 0; i < hak->sem_io_map_capa;) { - hcl_ooi_t sem_io_index; - if ((sem_io_index = hcl->sem_io_map[i]) >= 0) + hak_ooi_t sem_io_index; + if ((sem_io_index = hak->sem_io_map[i]) >= 0) { - HCL_ASSERT (hcl, sem_io_index < hcl->sem_io_tuple_count); - HCL_ASSERT (hcl, hcl->sem_io_tuple[sem_io_index].sem[HCL_SEMAPHORE_IO_TYPE_INPUT] || - hcl->sem_io_tuple[sem_io_index].sem[HCL_SEMAPHORE_IO_TYPE_OUTPUT]); + HAK_ASSERT (hak, sem_io_index < hak->sem_io_tuple_count); + HAK_ASSERT (hak, hak->sem_io_tuple[sem_io_index].sem[HAK_SEMAPHORE_IO_TYPE_INPUT] || + hak->sem_io_tuple[sem_io_index].sem[HAK_SEMAPHORE_IO_TYPE_OUTPUT]); - if (hcl->sem_io_tuple[sem_io_index].sem[HCL_SEMAPHORE_IO_TYPE_INPUT]) + if (hak->sem_io_tuple[sem_io_index].sem[HAK_SEMAPHORE_IO_TYPE_INPUT]) { - delete_sem_from_sem_io_tuple (hcl, hcl->sem_io_tuple[sem_io_index].sem[HCL_SEMAPHORE_IO_TYPE_INPUT], 1); + delete_sem_from_sem_io_tuple (hak, hak->sem_io_tuple[sem_io_index].sem[HAK_SEMAPHORE_IO_TYPE_INPUT], 1); } - if (hcl->sem_io_tuple[sem_io_index].sem[HCL_SEMAPHORE_IO_TYPE_OUTPUT]) + if (hak->sem_io_tuple[sem_io_index].sem[HAK_SEMAPHORE_IO_TYPE_OUTPUT]) { - delete_sem_from_sem_io_tuple (hcl, hcl->sem_io_tuple[sem_io_index].sem[HCL_SEMAPHORE_IO_TYPE_OUTPUT], 1); + delete_sem_from_sem_io_tuple (hak, hak->sem_io_tuple[sem_io_index].sem[HAK_SEMAPHORE_IO_TYPE_OUTPUT], 1); } - HCL_ASSERT (hcl, hcl->sem_io_map[i] <= -1); + HAK_ASSERT (hak, hak->sem_io_map[i] <= -1); } else { @@ -312,241 +312,241 @@ static void vm_cleanup (hcl_t* hcl) } } - HCL_ASSERT (hcl, hcl->sem_io_tuple_count == 0); - HCL_ASSERT (hcl, hcl->sem_io_count == 0); + HAK_ASSERT (hak, hak->sem_io_tuple_count == 0); + HAK_ASSERT (hak, hak->sem_io_count == 0); - hcl->vmprim.vm_gettime (hcl, &hcl->exec_end_time); /* raw time. no adjustment */ - for (cb = hcl->cblist; cb; cb = cb->next) + hak->vmprim.vm_gettime (hak, &hak->exec_end_time); /* raw time. no adjustment */ + for (cb = hak->cblist; cb; cb = cb->next) { - if (cb->vm_cleanup) cb->vm_cleanup(hcl); + if (cb->vm_cleanup) cb->vm_cleanup(hak); } #if defined(ENABLE_GCFIN) - hcl->sem_gcfin = (hcl_oop_semaphore_t)hcl->_nil; - hcl->sem_gcfin_sigreq = 0; + hak->sem_gcfin = (hak_oop_semaphore_t)hak->_nil; + hak->sem_gcfin_sigreq = 0; /* deregister all pending finalizable objects pending just in case these * have not been removed for various reasons. (e.g. sudden VM abortion) */ - hcl_deregallfinalizables (hcl); + hak_deregallfinalizables (hak); #endif - HCL_DEBUG0 (hcl, "VM cleaned up\n"); + HAK_DEBUG0 (hak, "VM cleaned up\n"); } -static HCL_INLINE void vm_gettime (hcl_t* hcl, hcl_ntime_t* now) +static HAK_INLINE void vm_gettime (hak_t* hak, hak_ntime_t* now) { - hcl->vmprim.vm_gettime (hcl, now); - /* in vm_startup(), hcl->exec_start_time has been set to the time of - * that moment. time returned here get offset by hcl->exec_start_time and + hak->vmprim.vm_gettime (hak, now); + /* in vm_startup(), hak->exec_start_time has been set to the time of + * that moment. time returned here get offset by hak->exec_start_time and * thus becomes relative to it. this way, it is kept small such that it * can be represented in a small integer with leaving almost zero chance * of overflow. */ - HCL_SUB_NTIME (now, now, &hcl->exec_start_time); /* now = now - exec_start_time */ + HAK_SUB_NTIME (now, now, &hak->exec_start_time); /* now = now - exec_start_time */ } -static HCL_INLINE int vm_sleep (hcl_t* hcl, const hcl_ntime_t* dur) +static HAK_INLINE int vm_sleep (hak_t* hak, const hak_ntime_t* dur) { /* TODO: return 1 if it gets into the halting state */ - hcl->vmprim.vm_sleep(hcl, dur); + hak->vmprim.vm_sleep(hak, dur); return 0; } -static HCL_INLINE void vm_muxwait (hcl_t* hcl, const hcl_ntime_t* dur) +static HAK_INLINE void vm_muxwait (hak_t* hak, const hak_ntime_t* dur) { - hcl->vmprim.vm_muxwait (hcl, dur, signal_io_semaphore); + hak->vmprim.vm_muxwait (hak, dur, signal_io_semaphore); } -static void vm_checkbc (hcl_t* hcl, hcl_oob_t bcode) +static void vm_checkbc (hak_t* hak, hak_oob_t bcode) { - hcl_cb_t* cb; - for (cb = hcl->cblist; cb; cb = cb->next) + hak_cb_t* cb; + for (cb = hak->cblist; cb; cb = cb->next) { - if (cb->vm_checkbc) cb->vm_checkbc(hcl, bcode); + if (cb->vm_checkbc) cb->vm_checkbc(hak, bcode); } } /* ------------------------------------------------------------------------- */ -static HCL_INLINE hcl_oop_context_t make_context (hcl_t* hcl, hcl_ooi_t ntmprs) +static HAK_INLINE hak_oop_context_t make_context (hak_t* hak, hak_ooi_t ntmprs) { - hcl_oop_context_t ctx; - HCL_ASSERT (hcl, ntmprs >= 0); - /*return (hcl_oop_context_t)hcl_allocoopobj(hcl, HCL_BRAND_CONTEXT, HCL_CONTEXT_NAMED_INSTVARS + (hcl_oow_t)ntmprs);*/ - ctx = (hcl_oop_context_t)hcl_instantiate(hcl, hcl->c_block_context, HCL_NULL, ntmprs); + hak_oop_context_t ctx; + HAK_ASSERT (hak, ntmprs >= 0); + /*return (hak_oop_context_t)hak_allocoopobj(hak, HAK_BRAND_CONTEXT, HAK_CONTEXT_NAMED_INSTVARS + (hak_oow_t)ntmprs);*/ + ctx = (hak_oop_context_t)hak_instantiate(hak, hak->c_block_context, HAK_NULL, ntmprs); - /* TODO: a good way to initialize smooi field to 0 in hcl_insstantiate()? + /* TODO: a good way to initialize smooi field to 0 in hak_insstantiate()? * for this, there must be a way to specify the type of the member variables... * it's error-prone to initialize the numeric value to nil where 0 is necessary */ - if (HCL_LIKELY(ctx)) ctx->ivaroff = HCL_SMOOI_TO_OOP(0); + if (HAK_LIKELY(ctx)) ctx->ivaroff = HAK_SMOOI_TO_OOP(0); return ctx; } -static HCL_INLINE hcl_oop_function_t make_function (hcl_t* hcl, hcl_oow_t lfsize, const hcl_oob_t* bptr, hcl_oow_t blen, hcl_dbgi_t* dbgi) +static HAK_INLINE hak_oop_function_t make_function (hak_t* hak, hak_oow_t lfsize, const hak_oob_t* bptr, hak_oow_t blen, hak_dbgi_t* dbgi) { - hcl_oop_function_t func; + hak_oop_function_t func; /* the literal frame is placed in the variable part. * the byte code is placed in the trailer space. */ - /*func = (hcl_oop_function_t)hcl_allocoopobjwithtrailer(hcl, HCL_BRAND_FUNCTION, HCL_FUNCTION_NAMED_INSTVARS + lfsize, bptr, blen);*/ - func = (hcl_oop_function_t)hcl_instantiatewithtrailer(hcl, hcl->c_function, lfsize, bptr, blen); - if (HCL_UNLIKELY(!func)) return HCL_NULL; + /*func = (hak_oop_function_t)hak_allocoopobjwithtrailer(hak, HAK_BRAND_FUNCTION, HAK_FUNCTION_NAMED_INSTVARS + lfsize, bptr, blen);*/ + func = (hak_oop_function_t)hak_instantiatewithtrailer(hak, hak->c_function, lfsize, bptr, blen); + if (HAK_UNLIKELY(!func)) return HAK_NULL; if (dbgi) { - hcl_oop_t tmp; - hcl_pushvolat (hcl, (hcl_oop_t*)&func); - tmp = hcl_makebytearray(hcl, (hcl_oob_t*)dbgi, HCL_SIZEOF(*dbgi) * blen); - hcl_popvolat (hcl); - if (HCL_LIKELY(tmp)) func->dbgi = tmp; + hak_oop_t tmp; + hak_pushvolat (hak, (hak_oop_t*)&func); + tmp = hak_makebytearray(hak, (hak_oob_t*)dbgi, HAK_SIZEOF(*dbgi) * blen); + hak_popvolat (hak); + if (HAK_LIKELY(tmp)) func->dbgi = tmp; } - func->attr_mask = HCL_SMOOI_TO_OOP(0); + func->attr_mask = HAK_SMOOI_TO_OOP(0); return func; } -static HCL_INLINE void fill_function_data (hcl_t* hcl, hcl_oop_function_t func, hcl_ooi_t attr_mask, hcl_oop_context_t homectx, const hcl_oop_t* lfptr, hcl_oow_t lfsize) +static HAK_INLINE void fill_function_data (hak_t* hak, hak_oop_function_t func, hak_ooi_t attr_mask, hak_oop_context_t homectx, const hak_oop_t* lfptr, hak_oow_t lfsize) { /* Although this function could be integrated into make_function(), * this function has been separated from make_function() to make GC handling simpler */ - hcl_oow_t i; + hak_oow_t i; - HCL_ASSERT (hcl, attr_mask >= 0 && attr_mask <= HCL_SMOOI_MAX); + HAK_ASSERT (hak, attr_mask >= 0 && attr_mask <= HAK_SMOOI_MAX); /* copy literal frames */ - HCL_ASSERT (hcl, lfsize <= HCL_OBJ_GET_SIZE(func) - HCL_FUNCTION_NAMED_INSTVARS); + HAK_ASSERT (hak, lfsize <= HAK_OBJ_GET_SIZE(func) - HAK_FUNCTION_NAMED_INSTVARS); for (i = 0; i < lfsize; i++) { func->literal_frame[i] = lfptr[i]; #if 0 - HCL_DEBUG2 (hcl, "literal frame %d => %O\n", (int)i, lfptr[i]); + HAK_DEBUG2 (hak, "literal frame %d => %O\n", (int)i, lfptr[i]); #endif } /* initialize other fields */ func->home = homectx; - func->attr_mask = HCL_SMOOI_TO_OOP(attr_mask); + func->attr_mask = HAK_SMOOI_TO_OOP(attr_mask); } -static HCL_INLINE hcl_oop_block_t make_compiled_block (hcl_t* hcl) +static HAK_INLINE hak_oop_block_t make_compiled_block (hak_t* hak) { /* create a base block used for creation of a block context */ - /*return (hcl_oop_block_t)hcl_allocoopobj(hcl, HCL_BRAND_BLOCK, HCL_BLOCK_NAMED_INSTVARS);*/ - return (hcl_oop_block_t)hcl_instantiate(hcl, hcl->c_compiled_block, HCL_NULL, 0); + /*return (hak_oop_block_t)hak_allocoopobj(hak, HAK_BRAND_BLOCK, HAK_BLOCK_NAMED_INSTVARS);*/ + return (hak_oop_block_t)hak_instantiate(hak, hak->c_compiled_block, HAK_NULL, 0); } -static HCL_INLINE void fill_block_data (hcl_t* hcl, hcl_oop_block_t blk, hcl_ooi_t attr_mask, hcl_ooi_t ip, hcl_oop_context_t homectx) +static HAK_INLINE void fill_block_data (hak_t* hak, hak_oop_block_t blk, hak_ooi_t attr_mask, hak_ooi_t ip, hak_oop_context_t homectx) { - HCL_ASSERT (hcl, attr_mask >= 0 && attr_mask <= HCL_SMOOI_MAX); - HCL_ASSERT (hcl, ip >= 0 && ip <= HCL_SMOOI_MAX); + HAK_ASSERT (hak, attr_mask >= 0 && attr_mask <= HAK_SMOOI_MAX); + HAK_ASSERT (hak, ip >= 0 && ip <= HAK_SMOOI_MAX); blk->home = homectx; - blk->ip = HCL_SMOOI_TO_OOP(ip); - blk->attr_mask = HCL_SMOOI_TO_OOP(attr_mask); + blk->ip = HAK_SMOOI_TO_OOP(ip); + blk->attr_mask = HAK_SMOOI_TO_OOP(attr_mask); } -static HCL_INLINE int prepare_to_alloc_pid (hcl_t* hcl) +static HAK_INLINE int prepare_to_alloc_pid (hak_t* hak) { - hcl_oow_t new_capa; - hcl_ooi_t i, j; - hcl_oop_t* tmp; + hak_oow_t new_capa; + hak_ooi_t i, j; + hak_oop_t* tmp; - HCL_ASSERT (hcl, hcl->proc_map_free_first <= -1); - HCL_ASSERT (hcl, hcl->proc_map_free_last <= -1); + HAK_ASSERT (hak, hak->proc_map_free_first <= -1); + HAK_ASSERT (hak, hak->proc_map_free_last <= -1); - new_capa = hcl->proc_map_capa + PROC_MAP_INC; - if (new_capa > HCL_SMOOI_MAX) + new_capa = hak->proc_map_capa + PROC_MAP_INC; + if (new_capa > HAK_SMOOI_MAX) { - if (hcl->proc_map_capa >= HCL_SMOOI_MAX) + if (hak->proc_map_capa >= HAK_SMOOI_MAX) { - #if defined(HCL_DEBUG_VM_PROCESSOR) - HCL_LOG0 (hcl, HCL_LOG_IC | HCL_LOG_FATAL, "Processor - too many processes\n"); + #if defined(HAK_DEBUG_VM_PROCESSOR) + HAK_LOG0 (hak, HAK_LOG_IC | HAK_LOG_FATAL, "Processor - too many processes\n"); #endif - hcl_seterrbfmt (hcl, HCL_EPFULL, "maximum number(%zd) of processes reached", HCL_SMOOI_MAX); + hak_seterrbfmt (hak, HAK_EPFULL, "maximum number(%zd) of processes reached", HAK_SMOOI_MAX); return -1; } - new_capa = HCL_SMOOI_MAX; + new_capa = HAK_SMOOI_MAX; } - tmp = (hcl_oop_t*)hcl_reallocmem(hcl, hcl->proc_map, HCL_SIZEOF(hcl_oop_t) * new_capa); - if (HCL_UNLIKELY(!tmp)) return -1; + tmp = (hak_oop_t*)hak_reallocmem(hak, hak->proc_map, HAK_SIZEOF(hak_oop_t) * new_capa); + if (HAK_UNLIKELY(!tmp)) return -1; - hcl->proc_map_free_first = hcl->proc_map_capa; - for (i = hcl->proc_map_capa, j = hcl->proc_map_capa + 1; j < new_capa; i++, j++) + hak->proc_map_free_first = hak->proc_map_capa; + for (i = hak->proc_map_capa, j = hak->proc_map_capa + 1; j < new_capa; i++, j++) { - tmp[i] = HCL_SMOOI_TO_OOP(j); + tmp[i] = HAK_SMOOI_TO_OOP(j); } - tmp[i] = HCL_SMOOI_TO_OOP(-1); - hcl->proc_map_free_last = i; + tmp[i] = HAK_SMOOI_TO_OOP(-1); + hak->proc_map_free_last = i; - hcl->proc_map = tmp; - hcl->proc_map_capa = new_capa; + hak->proc_map = tmp; + hak->proc_map_capa = new_capa; return 0; } -static HCL_INLINE void alloc_pid (hcl_t* hcl, hcl_oop_process_t proc) +static HAK_INLINE void alloc_pid (hak_t* hak, hak_oop_process_t proc) { - hcl_ooi_t pid; + hak_ooi_t pid; - pid = hcl->proc_map_free_first; - proc->id = HCL_SMOOI_TO_OOP(pid); - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(hcl->proc_map[pid])); - hcl->proc_map_free_first = HCL_OOP_TO_SMOOI(hcl->proc_map[pid]); - if (hcl->proc_map_free_first <= -1) hcl->proc_map_free_last = -1; - hcl->proc_map[pid] = (hcl_oop_t)proc; - hcl->proc_map_used++; + pid = hak->proc_map_free_first; + proc->id = HAK_SMOOI_TO_OOP(pid); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(hak->proc_map[pid])); + hak->proc_map_free_first = HAK_OOP_TO_SMOOI(hak->proc_map[pid]); + if (hak->proc_map_free_first <= -1) hak->proc_map_free_last = -1; + hak->proc_map[pid] = (hak_oop_t)proc; + hak->proc_map_used++; } -static HCL_INLINE void free_pid (hcl_t* hcl, hcl_oop_process_t proc) +static HAK_INLINE void free_pid (hak_t* hak, hak_oop_process_t proc) { - hcl_ooi_t pid; + hak_ooi_t pid; - pid = HCL_OOP_TO_SMOOI(proc->id); - HCL_ASSERT (hcl, pid < hcl->proc_map_capa); - HCL_ASSERT (hcl, hcl->proc_map_used > 0); + pid = HAK_OOP_TO_SMOOI(proc->id); + HAK_ASSERT (hak, pid < hak->proc_map_capa); + HAK_ASSERT (hak, hak->proc_map_used > 0); - hcl->proc_map[pid] = HCL_SMOOI_TO_OOP(-1); - if (hcl->proc_map_free_last <= -1) + hak->proc_map[pid] = HAK_SMOOI_TO_OOP(-1); + if (hak->proc_map_free_last <= -1) { - HCL_ASSERT (hcl, hcl->proc_map_free_first <= -1); - hcl->proc_map_free_first = pid; + HAK_ASSERT (hak, hak->proc_map_free_first <= -1); + hak->proc_map_free_first = pid; } else { - hcl->proc_map[hcl->proc_map_free_last] = HCL_SMOOI_TO_OOP(pid); + hak->proc_map[hak->proc_map_free_last] = HAK_SMOOI_TO_OOP(pid); } - hcl->proc_map_free_last = pid; - hcl->proc_map_used--; + hak->proc_map_free_last = pid; + hak->proc_map_used--; } -static hcl_oop_process_t make_process (hcl_t* hcl, hcl_oop_context_t c) +static hak_oop_process_t make_process (hak_t* hak, hak_oop_context_t c) { - hcl_oop_process_t proc; - hcl_oow_t stksize, exstksize, clstksize, maxsize; - hcl_ooi_t total_count; - hcl_ooi_t suspended_count; + hak_oop_process_t proc; + hak_oow_t stksize, exstksize, clstksize, maxsize; + hak_ooi_t total_count; + hak_ooi_t suspended_count; - total_count = HCL_OOP_TO_SMOOI(hcl->processor->total_count); - if (total_count >= HCL_SMOOI_MAX) + total_count = HAK_OOP_TO_SMOOI(hak->processor->total_count); + if (total_count >= HAK_SMOOI_MAX) { - #if defined(HCL_DEBUG_VM_PROCESSOR) - HCL_LOG0 (hcl, HCL_LOG_IC | HCL_LOG_FATAL, "Processor - too many processes\n"); + #if defined(HAK_DEBUG_VM_PROCESSOR) + HAK_LOG0 (hak, HAK_LOG_IC | HAK_LOG_FATAL, "Processor - too many processes\n"); #endif - hcl_seterrbfmt (hcl, HCL_EPFULL, "maximum number(%zd) of processes reached", HCL_SMOOI_MAX); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EPFULL, "maximum number(%zd) of processes reached", HAK_SMOOI_MAX); + return HAK_NULL; } - if (hcl->proc_map_free_first <= -1 && prepare_to_alloc_pid(hcl) <= -1) return HCL_NULL; + if (hak->proc_map_free_first <= -1 && prepare_to_alloc_pid(hak) <= -1) return HAK_NULL; - stksize = hcl->option.dfl_procstk_size; /* stack */ + stksize = hak->option.dfl_procstk_size; /* stack */ exstksize = 128; /* exception stack size */ /* TODO: make it configurable */ clstksize = 64; /* class stack size */ /* TODO: make it configurable too */ - maxsize = (HCL_TYPE_MAX(hcl_ooi_t) - HCL_PROCESS_NAMED_INSTVARS) / 3; + maxsize = (HAK_TYPE_MAX(hak_ooi_t) - HAK_PROCESS_NAMED_INSTVARS) / 3; if (stksize > maxsize) stksize = maxsize; else if (stksize < 192) stksize = 192; @@ -557,482 +557,482 @@ static hcl_oop_process_t make_process (hcl_t* hcl, hcl_oop_context_t c) if (clstksize > maxsize) clstksize = maxsize; else if (clstksize < 32) clstksize = 32; - hcl_pushvolat (hcl, (hcl_oop_t*)&c); - proc = (hcl_oop_process_t)hcl_instantiate(hcl, hcl->c_process, HCL_NULL, stksize + exstksize + clstksize); - hcl_popvolat (hcl); - if (HCL_UNLIKELY(!proc)) + hak_pushvolat (hak, (hak_oop_t*)&c); + proc = (hak_oop_process_t)hak_instantiate(hak, hak->c_process, HAK_NULL, stksize + exstksize + clstksize); + hak_popvolat (hak); + if (HAK_UNLIKELY(!proc)) { - const hcl_ooch_t* oldmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, hcl->errnum, - "unable to instantiate %O - %js", hcl->c_process->name, oldmsg); - return HCL_NULL; + const hak_ooch_t* oldmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, hak->errnum, + "unable to instantiate %O - %js", hak->c_process->name, oldmsg); + return HAK_NULL; } - HCL_OBJ_SET_FLAGS_PROC (proc, 1); /* a special flag to indicate an object is a process instance */ - proc->state = HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_SUSPENDED); + HAK_OBJ_SET_FLAGS_PROC (proc, 1); /* a special flag to indicate an object is a process instance */ + proc->state = HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_SUSPENDED); /* assign a process id to the process */ - alloc_pid (hcl, proc); + alloc_pid (hak, proc); proc->initial_context = c; proc->current_context = c; /* stack */ - proc->sp = HCL_SMOOI_TO_OOP(-1); /* no item */ - proc->st = HCL_SMOOI_TO_OOP(stksize - 1); + proc->sp = HAK_SMOOI_TO_OOP(-1); /* no item */ + proc->st = HAK_SMOOI_TO_OOP(stksize - 1); /* exception stack */ proc->exsp = proc->st; /* no item pushed yet */ - proc->exst = HCL_SMOOI_TO_OOP(stksize + exstksize - 1); + proc->exst = HAK_SMOOI_TO_OOP(stksize + exstksize - 1); /* class stack */ proc->clsp = proc->exst; /* no item pushed yet */ - proc->clst = HCL_SMOOI_TO_OOP(stksize + exstksize + clstksize - 1); + proc->clst = HAK_SMOOI_TO_OOP(stksize + exstksize + clstksize - 1); - HCL_ASSERT (hcl, (hcl_oop_t)c->sender == hcl->_nil); + HAK_ASSERT (hak, (hak_oop_t)c->sender == hak->_nil); -#if defined(HCL_DEBUG_VM_PROCESSOR) - HCL_LOG2 (hcl, HCL_LOG_IC | HCL_LOG_DEBUG, "Processor - process[%zd] **CREATED**->%hs\n", HCL_OOP_TO_SMOOI(proc->id), proc_state_to_string(HCL_OOP_TO_SMOOI(proc->state))); +#if defined(HAK_DEBUG_VM_PROCESSOR) + HAK_LOG2 (hak, HAK_LOG_IC | HAK_LOG_DEBUG, "Processor - process[%zd] **CREATED**->%hs\n", HAK_OOP_TO_SMOOI(proc->id), proc_state_to_string(HAK_OOP_TO_SMOOI(proc->state))); #endif /* a process is created in the SUSPENDED state. chain it to the suspended process list */ - suspended_count = HCL_OOP_TO_SMOOI(hcl->processor->suspended.count); - HCL_APPEND_TO_OOP_LIST (hcl, &hcl->processor->suspended, hcl_oop_process_t, proc, ps); + suspended_count = HAK_OOP_TO_SMOOI(hak->processor->suspended.count); + HAK_APPEND_TO_OOP_LIST (hak, &hak->processor->suspended, hak_oop_process_t, proc, ps); suspended_count++; - hcl->processor->suspended.count = HCL_SMOOI_TO_OOP(suspended_count); + hak->processor->suspended.count = HAK_SMOOI_TO_OOP(suspended_count); total_count++; - hcl->processor->total_count = HCL_SMOOI_TO_OOP(total_count); + hak->processor->total_count = HAK_SMOOI_TO_OOP(total_count); return proc; } -static HCL_INLINE void sleep_active_process (hcl_t* hcl, int state) +static HAK_INLINE void sleep_active_process (hak_t* hak, int state) { - STORE_ACTIVE_SP (hcl); + STORE_ACTIVE_SP (hak); /* store the current active context to the current process. * it is the suspended context of the process to be suspended */ - HCL_ASSERT (hcl, hcl->processor->active != hcl->nil_process); + HAK_ASSERT (hak, hak->processor->active != hak->nil_process); -#if defined(HCL_DEBUG_VM_PROCESSOR) - HCL_LOG3 (hcl, HCL_LOG_IC | HCL_LOG_DEBUG, "Processor - process[%zd] %hs->%hs in sleep_active_process\n", HCL_OOP_TO_SMOOI(hcl->processor->active->id), proc_state_to_string(HCL_OOP_TO_SMOOI(hcl->processor->active->state)), proc_state_to_string(state)); +#if defined(HAK_DEBUG_VM_PROCESSOR) + HAK_LOG3 (hak, HAK_LOG_IC | HAK_LOG_DEBUG, "Processor - process[%zd] %hs->%hs in sleep_active_process\n", HAK_OOP_TO_SMOOI(hak->processor->active->id), proc_state_to_string(HAK_OOP_TO_SMOOI(hak->processor->active->state)), proc_state_to_string(state)); #endif - hcl->processor->active->current_context = hcl->active_context; - hcl->processor->active->state = HCL_SMOOI_TO_OOP(state); + hak->processor->active->current_context = hak->active_context; + hak->processor->active->state = HAK_SMOOI_TO_OOP(state); } -static HCL_INLINE void wake_process (hcl_t* hcl, hcl_oop_process_t proc) +static HAK_INLINE void wake_process (hak_t* hak, hak_oop_process_t proc) { -#if defined(HCL_DEBUG_VM_PROCESSOR) - HCL_LOG2 (hcl, HCL_LOG_IC | HCL_LOG_DEBUG, "Processor - process[%zd] %hs->RUNNING in wake_process\n", HCL_OOP_TO_SMOOI(proc->id), proc_state_to_string(HCL_OOP_TO_SMOOI(proc->state))); +#if defined(HAK_DEBUG_VM_PROCESSOR) + HAK_LOG2 (hak, HAK_LOG_IC | HAK_LOG_DEBUG, "Processor - process[%zd] %hs->RUNNING in wake_process\n", HAK_OOP_TO_SMOOI(proc->id), proc_state_to_string(HAK_OOP_TO_SMOOI(proc->state))); #endif /* activate the given process */ - HCL_ASSERT (hcl, proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_RUNNABLE)); - proc->state = HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_RUNNING); - hcl->processor->active = proc; + HAK_ASSERT (hak, proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_RUNNABLE)); + proc->state = HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_RUNNING); + hak->processor->active = proc; - LOAD_ACTIVE_SP(hcl); + LOAD_ACTIVE_SP(hak); /* activate the suspended context of the new process */ - SWITCH_ACTIVE_CONTEXT (hcl, proc->current_context); + SWITCH_ACTIVE_CONTEXT (hak, proc->current_context); -#if defined(HCL_DEBUG_VM_PROCESSOR) && (HCL_DEBUG_VM_PROCESSOR >= 2) - HCL_LOG3 (hcl, HCL_LOG_IC | HCL_LOG_DEBUG, "Processor - woke up process[%zd] context %O ip=%zd\n", HCL_OOP_TO_SMOOI(hcl->processor->active->id), hcl->active_context, hcl->ip); +#if defined(HAK_DEBUG_VM_PROCESSOR) && (HAK_DEBUG_VM_PROCESSOR >= 2) + HAK_LOG3 (hak, HAK_LOG_IC | HAK_LOG_DEBUG, "Processor - woke up process[%zd] context %O ip=%zd\n", HAK_OOP_TO_SMOOI(hak->processor->active->id), hak->active_context, hak->ip); #endif } -static void switch_to_process (hcl_t* hcl, hcl_oop_process_t proc, int new_state_for_old_active) +static void switch_to_process (hak_t* hak, hak_oop_process_t proc, int new_state_for_old_active) { /* the new process must not be the currently active process */ - HCL_ASSERT (hcl, hcl->processor->active != proc); + HAK_ASSERT (hak, hak->processor->active != proc); /* the new process must be in the runnable state */ - HCL_ASSERT (hcl, proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_RUNNABLE) || - proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_WAITING)); + HAK_ASSERT (hak, proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_RUNNABLE) || + proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_WAITING)); - sleep_active_process (hcl, new_state_for_old_active); - wake_process (hcl, proc); + sleep_active_process (hak, new_state_for_old_active); + wake_process (hak, proc); - hcl->proc_switched = 1; + hak->proc_switched = 1; } -static HCL_INLINE void switch_to_process_from_nil (hcl_t* hcl, hcl_oop_process_t proc) +static HAK_INLINE void switch_to_process_from_nil (hak_t* hak, hak_oop_process_t proc) { - HCL_ASSERT (hcl, hcl->processor->active == hcl->nil_process); - wake_process (hcl, proc); - hcl->proc_switched = 1; + HAK_ASSERT (hak, hak->processor->active == hak->nil_process); + wake_process (hak, proc); + hak->proc_switched = 1; } -static HCL_INLINE hcl_oop_process_t find_next_runnable_process (hcl_t* hcl) +static HAK_INLINE hak_oop_process_t find_next_runnable_process (hak_t* hak) { - hcl_oop_process_t nrp; - HCL_ASSERT (hcl, hcl->processor->active->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_RUNNING)); - nrp = hcl->processor->active->ps.next; - if ((hcl_oop_t)nrp == hcl->_nil) nrp = hcl->processor->runnable.first; + hak_oop_process_t nrp; + HAK_ASSERT (hak, hak->processor->active->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_RUNNING)); + nrp = hak->processor->active->ps.next; + if ((hak_oop_t)nrp == hak->_nil) nrp = hak->processor->runnable.first; return nrp; } -static HCL_INLINE void switch_to_next_runnable_process (hcl_t* hcl) +static HAK_INLINE void switch_to_next_runnable_process (hak_t* hak) { - hcl_oop_process_t nrp; - nrp = find_next_runnable_process(hcl); - if (nrp != hcl->processor->active) switch_to_process (hcl, nrp, HCL_PROCESS_STATE_RUNNABLE); + hak_oop_process_t nrp; + nrp = find_next_runnable_process(hak); + if (nrp != hak->processor->active) switch_to_process (hak, nrp, HAK_PROCESS_STATE_RUNNABLE); } -static HCL_INLINE void chain_into_processor (hcl_t* hcl, hcl_oop_process_t proc, int new_state) +static HAK_INLINE void chain_into_processor (hak_t* hak, hak_oop_process_t proc, int new_state) { /* the process is not scheduled at all. * link it to the processor's process list. */ - hcl_ooi_t runnable_count; - hcl_ooi_t suspended_count; + hak_ooi_t runnable_count; + hak_ooi_t suspended_count; - /*HCL_ASSERT (hcl, (hcl_oop_t)proc->ps.prev == hcl->_nil); - HCL_ASSERT (hcl, (hcl_oop_t)proc->ps.next == hcl->_nil);*/ + /*HAK_ASSERT (hak, (hak_oop_t)proc->ps.prev == hak->_nil); + HAK_ASSERT (hak, (hak_oop_t)proc->ps.next == hak->_nil);*/ - HCL_ASSERT (hcl, proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_SUSPENDED)); - HCL_ASSERT (hcl, new_state == HCL_PROCESS_STATE_RUNNABLE || new_state == HCL_PROCESS_STATE_RUNNING); + HAK_ASSERT (hak, proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_SUSPENDED)); + HAK_ASSERT (hak, new_state == HAK_PROCESS_STATE_RUNNABLE || new_state == HAK_PROCESS_STATE_RUNNING); -#if defined(HCL_DEBUG_VM_PROCESSOR) - HCL_LOG3 (hcl, HCL_LOG_IC | HCL_LOG_DEBUG, +#if defined(HAK_DEBUG_VM_PROCESSOR) + HAK_LOG3 (hak, HAK_LOG_IC | HAK_LOG_DEBUG, "Processor - process[%zd] %hs->%hs in chain_into_processor\n", - HCL_OOP_TO_SMOOI(proc->id), - proc_state_to_string(HCL_OOP_TO_SMOOI(proc->state)), + HAK_OOP_TO_SMOOI(proc->id), + proc_state_to_string(HAK_OOP_TO_SMOOI(proc->state)), proc_state_to_string(new_state)); #endif - runnable_count = HCL_OOP_TO_SMOOI(hcl->processor->runnable.count); + runnable_count = HAK_OOP_TO_SMOOI(hak->processor->runnable.count); - HCL_ASSERT (hcl, runnable_count >= 0); + HAK_ASSERT (hak, runnable_count >= 0); - suspended_count = HCL_OOP_TO_SMOOI(hcl->processor->suspended.count); - HCL_DELETE_FROM_OOP_LIST (hcl, &hcl->processor->suspended, proc, ps); + suspended_count = HAK_OOP_TO_SMOOI(hak->processor->suspended.count); + HAK_DELETE_FROM_OOP_LIST (hak, &hak->processor->suspended, proc, ps); suspended_count--; - hcl->processor->suspended.count = HCL_SMOOI_TO_OOP(suspended_count); + hak->processor->suspended.count = HAK_SMOOI_TO_OOP(suspended_count); /* append to the runnable list */ - HCL_APPEND_TO_OOP_LIST (hcl, &hcl->processor->runnable, hcl_oop_process_t, proc, ps); - proc->state = HCL_SMOOI_TO_OOP(new_state); + HAK_APPEND_TO_OOP_LIST (hak, &hak->processor->runnable, hak_oop_process_t, proc, ps); + proc->state = HAK_SMOOI_TO_OOP(new_state); runnable_count++; - hcl->processor->runnable.count = HCL_SMOOI_TO_OOP(runnable_count); + hak->processor->runnable.count = HAK_SMOOI_TO_OOP(runnable_count); } -static HCL_INLINE void unchain_from_processor (hcl_t* hcl, hcl_oop_process_t proc, int new_state) +static HAK_INLINE void unchain_from_processor (hak_t* hak, hak_oop_process_t proc, int new_state) { - hcl_ooi_t runnable_count; - hcl_ooi_t suspended_count; - hcl_ooi_t total_count; + hak_ooi_t runnable_count; + hak_ooi_t suspended_count; + hak_ooi_t total_count; - HCL_ASSERT (hcl, proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_RUNNING) || - proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_RUNNABLE) || - proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_SUSPENDED)); + HAK_ASSERT (hak, proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_RUNNING) || + proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_RUNNABLE) || + proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_SUSPENDED)); - HCL_ASSERT (hcl, proc->state != HCL_SMOOI_TO_OOP(new_state)); + HAK_ASSERT (hak, proc->state != HAK_SMOOI_TO_OOP(new_state)); -#if defined(HCL_DEBUG_VM_PROCESSOR) - HCL_LOG3 (hcl, HCL_LOG_IC | HCL_LOG_DEBUG, "Processor - process[%zd] %hs->%hs in unchain_from_processor\n", HCL_OOP_TO_SMOOI(proc->id), proc_state_to_string(HCL_OOP_TO_SMOOI(proc->state)), proc_state_to_string(HCL_OOP_TO_SMOOI(new_state))); +#if defined(HAK_DEBUG_VM_PROCESSOR) + HAK_LOG3 (hak, HAK_LOG_IC | HAK_LOG_DEBUG, "Processor - process[%zd] %hs->%hs in unchain_from_processor\n", HAK_OOP_TO_SMOOI(proc->id), proc_state_to_string(HAK_OOP_TO_SMOOI(proc->state)), proc_state_to_string(HAK_OOP_TO_SMOOI(new_state))); #endif - if (proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_SUSPENDED)) + if (proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_SUSPENDED)) { - suspended_count = HCL_OOP_TO_SMOOI(hcl->processor->suspended.count); - HCL_ASSERT (hcl, suspended_count > 0); - HCL_DELETE_FROM_OOP_LIST (hcl, &hcl->processor->suspended, proc, ps); + suspended_count = HAK_OOP_TO_SMOOI(hak->processor->suspended.count); + HAK_ASSERT (hak, suspended_count > 0); + HAK_DELETE_FROM_OOP_LIST (hak, &hak->processor->suspended, proc, ps); suspended_count--; - hcl->processor->suspended.count = HCL_SMOOI_TO_OOP(suspended_count); + hak->processor->suspended.count = HAK_SMOOI_TO_OOP(suspended_count); } else { - runnable_count = HCL_OOP_TO_SMOOI(hcl->processor->runnable.count); - HCL_ASSERT (hcl, runnable_count > 0); - HCL_DELETE_FROM_OOP_LIST (hcl, &hcl->processor->runnable, proc, ps); + runnable_count = HAK_OOP_TO_SMOOI(hak->processor->runnable.count); + HAK_ASSERT (hak, runnable_count > 0); + HAK_DELETE_FROM_OOP_LIST (hak, &hak->processor->runnable, proc, ps); runnable_count--; - hcl->processor->runnable.count = HCL_SMOOI_TO_OOP(runnable_count); - if (runnable_count == 0) hcl->processor->active = hcl->nil_process; + hak->processor->runnable.count = HAK_SMOOI_TO_OOP(runnable_count); + if (runnable_count == 0) hak->processor->active = hak->nil_process; } - if (new_state == HCL_PROCESS_STATE_TERMINATED) + if (new_state == HAK_PROCESS_STATE_TERMINATED) { /* do not chain it to the suspended process list as it's being terminated */ - proc->ps.prev = (hcl_oop_process_t)hcl->_nil; - proc->ps.next = (hcl_oop_process_t)hcl->_nil; + proc->ps.prev = (hak_oop_process_t)hak->_nil; + proc->ps.next = (hak_oop_process_t)hak->_nil; - total_count = HCL_OOP_TO_SMOOI(hcl->processor->total_count); + total_count = HAK_OOP_TO_SMOOI(hak->processor->total_count); total_count--; - hcl->processor->total_count = HCL_SMOOI_TO_OOP(total_count); + hak->processor->total_count = HAK_SMOOI_TO_OOP(total_count); } else { /* append to the suspended process list */ - HCL_ASSERT (hcl, new_state == HCL_PROCESS_STATE_SUSPENDED); + HAK_ASSERT (hak, new_state == HAK_PROCESS_STATE_SUSPENDED); - suspended_count = HCL_OOP_TO_SMOOI(hcl->processor->suspended.count); - HCL_APPEND_TO_OOP_LIST (hcl, &hcl->processor->suspended, hcl_oop_process_t, proc, ps); + suspended_count = HAK_OOP_TO_SMOOI(hak->processor->suspended.count); + HAK_APPEND_TO_OOP_LIST (hak, &hak->processor->suspended, hak_oop_process_t, proc, ps); suspended_count++; - hcl->processor->suspended.count= HCL_SMOOI_TO_OOP(suspended_count); + hak->processor->suspended.count= HAK_SMOOI_TO_OOP(suspended_count); } - proc->state = HCL_SMOOI_TO_OOP(new_state); + proc->state = HAK_SMOOI_TO_OOP(new_state); } -static HCL_INLINE void chain_into_semaphore (hcl_t* hcl, hcl_oop_process_t proc, hcl_oop_semaphore_t sem) +static HAK_INLINE void chain_into_semaphore (hak_t* hak, hak_oop_process_t proc, hak_oop_semaphore_t sem) { /* append a process to the process list of a semaphore or a semaphore group */ /* a process chained to a semaphore cannot get chained to * a semaphore again. a process can get chained to a single semaphore * or a single semaphore group only */ - if ((hcl_oop_t)proc->sem != hcl->_nil) return; /* ignore it if it happens anyway. TODO: is it desirable???? */ + if ((hak_oop_t)proc->sem != hak->_nil) return; /* ignore it if it happens anyway. TODO: is it desirable???? */ - HCL_ASSERT (hcl, (hcl_oop_t)proc->sem == hcl->_nil); - HCL_ASSERT (hcl, (hcl_oop_t)proc->sem_wait.prev == hcl->_nil); - HCL_ASSERT (hcl, (hcl_oop_t)proc->sem_wait.next == hcl->_nil); + HAK_ASSERT (hak, (hak_oop_t)proc->sem == hak->_nil); + HAK_ASSERT (hak, (hak_oop_t)proc->sem_wait.prev == hak->_nil); + HAK_ASSERT (hak, (hak_oop_t)proc->sem_wait.next == hak->_nil); /* a semaphore or a semaphore group must be given for process chaining */ - HCL_ASSERT (hcl, HCL_IS_SEMAPHORE(hcl, sem) || HCL_IS_SEMAPHORE_GROUP(hcl, sem)); + HAK_ASSERT (hak, HAK_IS_SEMAPHORE(hak, sem) || HAK_IS_SEMAPHORE_GROUP(hak, sem)); /* i assume the head part of the semaphore has the same layout as * the semaphore group */ - HCL_ASSERT (hcl, HCL_OFFSETOF(hcl_semaphore_t,waiting) == - HCL_OFFSETOF(hcl_semaphore_group_t,waiting)); + HAK_ASSERT (hak, HAK_OFFSETOF(hak_semaphore_t,waiting) == + HAK_OFFSETOF(hak_semaphore_group_t,waiting)); - HCL_APPEND_TO_OOP_LIST (hcl, &sem->waiting, hcl_oop_process_t, proc, sem_wait); + HAK_APPEND_TO_OOP_LIST (hak, &sem->waiting, hak_oop_process_t, proc, sem_wait); - proc->sem = (hcl_oop_t)sem; + proc->sem = (hak_oop_t)sem; } -static HCL_INLINE void unchain_from_semaphore (hcl_t* hcl, hcl_oop_process_t proc) +static HAK_INLINE void unchain_from_semaphore (hak_t* hak, hak_oop_process_t proc) { - hcl_oop_semaphore_t sem; + hak_oop_semaphore_t sem; - HCL_ASSERT (hcl, (hcl_oop_t)proc->sem != hcl->_nil); - HCL_ASSERT (hcl, HCL_IS_SEMAPHORE(hcl, proc->sem) || HCL_IS_SEMAPHORE_GROUP(hcl, proc->sem)); - HCL_ASSERT (hcl, HCL_OFFSETOF(hcl_semaphore_t,waiting) == HCL_OFFSETOF(hcl_semaphore_group_t,waiting)); + HAK_ASSERT (hak, (hak_oop_t)proc->sem != hak->_nil); + HAK_ASSERT (hak, HAK_IS_SEMAPHORE(hak, proc->sem) || HAK_IS_SEMAPHORE_GROUP(hak, proc->sem)); + HAK_ASSERT (hak, HAK_OFFSETOF(hak_semaphore_t,waiting) == HAK_OFFSETOF(hak_semaphore_group_t,waiting)); /* proc->sem may be one of a semaphore or a semaphore group. * i assume that 'waiting' is defined to the same position * in both Semaphore and SemaphoreGroup. there is no need to * write different code for each class. */ - sem = (hcl_oop_semaphore_t)proc->sem; /* semgrp = (hcl_oop_semaphore_group_t)proc->sem */ - HCL_DELETE_FROM_OOP_LIST (hcl, &sem->waiting, proc, sem_wait); + sem = (hak_oop_semaphore_t)proc->sem; /* semgrp = (hak_oop_semaphore_group_t)proc->sem */ + HAK_DELETE_FROM_OOP_LIST (hak, &sem->waiting, proc, sem_wait); - proc->sem_wait.prev = (hcl_oop_process_t)hcl->_nil; - proc->sem_wait.next = (hcl_oop_process_t)hcl->_nil; - proc->sem = hcl->_nil; + proc->sem_wait.prev = (hak_oop_process_t)hak->_nil; + proc->sem_wait.next = (hak_oop_process_t)hak->_nil; + proc->sem = hak->_nil; } -static void dump_process_info (hcl_t* hcl, hcl_bitmask_t log_mask) +static void dump_process_info (hak_t* hak, hak_bitmask_t log_mask) { - if (HCL_OOP_TO_SMOOI(hcl->processor->runnable.count) > 0) + if (HAK_OOP_TO_SMOOI(hak->processor->runnable.count) > 0) { - hcl_oop_process_t p; - HCL_LOG0 (hcl, log_mask, "> Runnable:"); - p = hcl->processor->runnable.first; + hak_oop_process_t p; + HAK_LOG0 (hak, log_mask, "> Runnable:"); + p = hak->processor->runnable.first; while (p) { - HCL_LOG1 (hcl, log_mask, " %O", p->id); - if (p == hcl->processor->runnable.last) break; + HAK_LOG1 (hak, log_mask, " %O", p->id); + if (p == hak->processor->runnable.last) break; p = p->ps.next; } - HCL_LOG0 (hcl, log_mask, "\n"); + HAK_LOG0 (hak, log_mask, "\n"); } - if (HCL_OOP_TO_SMOOI(hcl->processor->suspended.count) > 0) + if (HAK_OOP_TO_SMOOI(hak->processor->suspended.count) > 0) { - hcl_oop_process_t p; - HCL_LOG0 (hcl, log_mask, "> Suspended:"); - p = hcl->processor->suspended.first; + hak_oop_process_t p; + HAK_LOG0 (hak, log_mask, "> Suspended:"); + p = hak->processor->suspended.first; while (p) { - HCL_LOG1 (hcl, log_mask, " %O", p->id); - if (p == hcl->processor->suspended.last) break; + HAK_LOG1 (hak, log_mask, " %O", p->id); + if (p == hak->processor->suspended.last) break; p = p->ps.next; } - HCL_LOG0 (hcl, log_mask, "\n"); + HAK_LOG0 (hak, log_mask, "\n"); } - if (hcl->sem_io_wait_count > 0) + if (hak->sem_io_wait_count > 0) { - hcl_ooi_t io_handle; + hak_ooi_t io_handle; - HCL_LOG0 (hcl, log_mask, "> IO semaphores:"); - for (io_handle = 0; io_handle < hcl->sem_io_map_capa; io_handle++) + HAK_LOG0 (hak, log_mask, "> IO semaphores:"); + for (io_handle = 0; io_handle < hak->sem_io_map_capa; io_handle++) { - hcl_ooi_t index; + hak_ooi_t index; - index = hcl->sem_io_map[io_handle]; + index = hak->sem_io_map[io_handle]; if (index >= 0) { - hcl_oop_semaphore_t sem; + hak_oop_semaphore_t sem; - HCL_LOG1 (hcl, log_mask, " h=%zd", io_handle); + HAK_LOG1 (hak, log_mask, " h=%zd", io_handle); /* dump process IDs waiting for input signaling */ - HCL_LOG0 (hcl, log_mask, "(wpi"); - sem = hcl->sem_io_tuple[index].sem[HCL_SEMAPHORE_IO_TYPE_INPUT]; + HAK_LOG0 (hak, log_mask, "(wpi"); + sem = hak->sem_io_tuple[index].sem[HAK_SEMAPHORE_IO_TYPE_INPUT]; if (sem) { - hcl_oop_process_t wp; /* waiting process */ - for (wp = sem->waiting.first; (hcl_oop_t)wp != hcl->_nil; wp = wp->sem_wait.next) + hak_oop_process_t wp; /* waiting process */ + for (wp = sem->waiting.first; (hak_oop_t)wp != hak->_nil; wp = wp->sem_wait.next) { - HCL_LOG1 (hcl, log_mask, ":%zd", HCL_OOP_TO_SMOOI(wp->id)); + HAK_LOG1 (hak, log_mask, ":%zd", HAK_OOP_TO_SMOOI(wp->id)); } } else { - HCL_LOG0 (hcl, log_mask, ":none"); + HAK_LOG0 (hak, log_mask, ":none"); } /* dump process IDs waitingt for output signaling */ - HCL_LOG0 (hcl, log_mask, ",wpo"); - sem = hcl->sem_io_tuple[index].sem[HCL_SEMAPHORE_IO_TYPE_OUTPUT]; + HAK_LOG0 (hak, log_mask, ",wpo"); + sem = hak->sem_io_tuple[index].sem[HAK_SEMAPHORE_IO_TYPE_OUTPUT]; if (sem) { - hcl_oop_process_t wp; /* waiting process */ - for (wp = sem->waiting.first; (hcl_oop_t)wp != hcl->_nil; wp = wp->sem_wait.next) + hak_oop_process_t wp; /* waiting process */ + for (wp = sem->waiting.first; (hak_oop_t)wp != hak->_nil; wp = wp->sem_wait.next) { - HCL_LOG1 (hcl, log_mask, ":%zd", HCL_OOP_TO_SMOOI(wp->id)); + HAK_LOG1 (hak, log_mask, ":%zd", HAK_OOP_TO_SMOOI(wp->id)); } } else { - HCL_LOG0 (hcl, log_mask, ":none"); + HAK_LOG0 (hak, log_mask, ":none"); } - HCL_LOG0 (hcl, log_mask, ")"); + HAK_LOG0 (hak, log_mask, ")"); } } - HCL_LOG0 (hcl, log_mask, "\n"); + HAK_LOG0 (hak, log_mask, "\n"); } } -static HCL_INLINE void reset_process_stack_pointers (hcl_t* hcl, hcl_oop_process_t proc) +static HAK_INLINE void reset_process_stack_pointers (hak_t* hak, hak_oop_process_t proc) { -#if defined(HCL_DEBUG_VM_PROCESSOR) - HCL_LOG4 (hcl, HCL_LOG_IC | HCL_LOG_DEBUG, +#if defined(HAK_DEBUG_VM_PROCESSOR) + HAK_LOG4 (hak, HAK_LOG_IC | HAK_LOG_DEBUG, "Processor - process[%zd] SP: %zd(%zd) ST: %zd", - HCL_OOP_TO_SMOOI(proc->id), - HCL_OOP_TO_SMOOI(proc->sp), HCL_OOP_TO_SMOOI(proc->sp) - (-1), HCL_OOP_TO_SMOOI(proc->st)); - HCL_LOG6 (hcl, HCL_LOG_IC | HCL_LOG_DEBUG, + HAK_OOP_TO_SMOOI(proc->id), + HAK_OOP_TO_SMOOI(proc->sp), HAK_OOP_TO_SMOOI(proc->sp) - (-1), HAK_OOP_TO_SMOOI(proc->st)); + HAK_LOG6 (hak, HAK_LOG_IC | HAK_LOG_DEBUG, " EXSP: %zd(%zd) EXST: %zd CLSP: %zd(%zd) CLST: %zd\n", - HCL_OOP_TO_SMOOI(proc->exsp), HCL_OOP_TO_SMOOI(proc->exsp) - HCL_OOP_TO_SMOOI(proc->st), HCL_OOP_TO_SMOOI(proc->exst), - HCL_OOP_TO_SMOOI(proc->clsp), HCL_OOP_TO_SMOOI(proc->clsp) - HCL_OOP_TO_SMOOI(proc->exst), HCL_OOP_TO_SMOOI(proc->clst)); + HAK_OOP_TO_SMOOI(proc->exsp), HAK_OOP_TO_SMOOI(proc->exsp) - HAK_OOP_TO_SMOOI(proc->st), HAK_OOP_TO_SMOOI(proc->exst), + HAK_OOP_TO_SMOOI(proc->clsp), HAK_OOP_TO_SMOOI(proc->clsp) - HAK_OOP_TO_SMOOI(proc->exst), HAK_OOP_TO_SMOOI(proc->clst)); #endif - proc->sp = HCL_SMOOI_TO_OOP(-1); /* invalidate the process stack */ + proc->sp = HAK_SMOOI_TO_OOP(-1); /* invalidate the process stack */ proc->exsp = proc->st; proc->clsp = proc->clst; } -static void terminate_process (hcl_t* hcl, hcl_oop_process_t proc) +static void terminate_process (hak_t* hak, hak_oop_process_t proc) { - if (proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_RUNNING) || - proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_RUNNABLE)) + if (proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_RUNNING) || + proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_RUNNABLE)) { /* RUNNING/RUNNABLE ---> TERMINATED */ - #if defined(HCL_DEBUG_VM_PROCESSOR) - HCL_LOG2 (hcl, HCL_LOG_IC | HCL_LOG_DEBUG, "Processor - process[%zd] %hs->TERMINATED in terminate_process\n", HCL_OOP_TO_SMOOI(proc->id), proc_state_to_string(HCL_OOP_TO_SMOOI(proc->state))); + #if defined(HAK_DEBUG_VM_PROCESSOR) + HAK_LOG2 (hak, HAK_LOG_IC | HAK_LOG_DEBUG, "Processor - process[%zd] %hs->TERMINATED in terminate_process\n", HAK_OOP_TO_SMOOI(proc->id), proc_state_to_string(HAK_OOP_TO_SMOOI(proc->state))); #endif - if (proc == hcl->processor->active) + if (proc == hak->processor->active) { - hcl_oop_process_t nrp; + hak_oop_process_t nrp; /* terminating the active process */ - HCL_ASSERT (hcl, proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_RUNNING)); + HAK_ASSERT (hak, proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_RUNNING)); - nrp = find_next_runnable_process(hcl); + nrp = find_next_runnable_process(hak); - STORE_ACTIVE_SP (hcl); /* commit the stack pointer before termination */ + STORE_ACTIVE_SP (hak); /* commit the stack pointer before termination */ - unchain_from_processor (hcl, proc, HCL_PROCESS_STATE_TERMINATED); - reset_process_stack_pointers (hcl, proc); /* invalidate the process stack */ + unchain_from_processor (hak, proc, HAK_PROCESS_STATE_TERMINATED); + reset_process_stack_pointers (hak, proc); /* invalidate the process stack */ proc->current_context = proc->initial_context; /* not needed but just in case */ /* a runnable or running process must not be chanined to the * process list of a semaphore */ - HCL_ASSERT (hcl, (hcl_oop_t)proc->sem == hcl->_nil); + HAK_ASSERT (hak, (hak_oop_t)proc->sem == hak->_nil); if (nrp == proc) { /* no runnable process after termination */ - HCL_ASSERT (hcl, hcl->processor->active == hcl->nil_process); - if (HCL_LOG_ENABLED(hcl, HCL_LOG_IC | HCL_LOG_DEBUG)) + HAK_ASSERT (hak, hak->processor->active == hak->nil_process); + if (HAK_LOG_ENABLED(hak, HAK_LOG_IC | HAK_LOG_DEBUG)) { - HCL_LOG5 (hcl, HCL_LOG_IC | HCL_LOG_DEBUG, + HAK_LOG5 (hak, HAK_LOG_IC | HAK_LOG_DEBUG, "No runnable process after termination of process %zd - total %zd runnable/running %zd suspended %zd - sem_io_wait_count %zu\n", - HCL_OOP_TO_SMOOI(proc->id), - HCL_OOP_TO_SMOOI(hcl->processor->total_count), - HCL_OOP_TO_SMOOI(hcl->processor->runnable.count), - HCL_OOP_TO_SMOOI(hcl->processor->suspended.count), - hcl->sem_io_wait_count + HAK_OOP_TO_SMOOI(proc->id), + HAK_OOP_TO_SMOOI(hak->processor->total_count), + HAK_OOP_TO_SMOOI(hak->processor->runnable.count), + HAK_OOP_TO_SMOOI(hak->processor->suspended.count), + hak->sem_io_wait_count ); - dump_process_info (hcl, HCL_LOG_IC | HCL_LOG_DEBUG); + dump_process_info (hak, HAK_LOG_IC | HAK_LOG_DEBUG); } } else { /* there are other processes to schedule */ - switch_to_process (hcl, nrp, HCL_PROCESS_STATE_TERMINATED); + switch_to_process (hak, nrp, HAK_PROCESS_STATE_TERMINATED); } } else { /* termiante a runnable process which is not an actively running process */ - HCL_ASSERT (hcl, proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_RUNNABLE)); - unchain_from_processor (hcl, proc, HCL_PROCESS_STATE_TERMINATED); - reset_process_stack_pointers (hcl, proc); /* invalidate the process stack */ + HAK_ASSERT (hak, proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_RUNNABLE)); + unchain_from_processor (hak, proc, HAK_PROCESS_STATE_TERMINATED); + reset_process_stack_pointers (hak, proc); /* invalidate the process stack */ } /* when terminated, clear it from the pid table and set the process id to a negative number */ - free_pid (hcl, proc); + free_pid (hak, proc); } - else if (proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_SUSPENDED)) + else if (proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_SUSPENDED)) { /* SUSPENDED ---> TERMINATED */ - #if defined(HCL_DEBUG_VM_PROCESSOR) - HCL_LOG2 (hcl, HCL_LOG_IC | HCL_LOG_DEBUG, "Processor - process[%zd] %hs->TERMINATED in terminate_process\n", HCL_OOP_TO_SMOOI(proc->id), proc_state_to_string(HCL_OOP_TO_SMOOI(proc->state))); + #if defined(HAK_DEBUG_VM_PROCESSOR) + HAK_LOG2 (hak, HAK_LOG_IC | HAK_LOG_DEBUG, "Processor - process[%zd] %hs->TERMINATED in terminate_process\n", HAK_OOP_TO_SMOOI(proc->id), proc_state_to_string(HAK_OOP_TO_SMOOI(proc->state))); #endif - /*proc->state = HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_TERMINATED);*/ - unchain_from_processor (hcl, proc, HCL_PROCESS_STATE_TERMINATED); - reset_process_stack_pointers (hcl, proc); /* invalidate the process stack */ + /*proc->state = HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_TERMINATED);*/ + unchain_from_processor (hak, proc, HAK_PROCESS_STATE_TERMINATED); + reset_process_stack_pointers (hak, proc); /* invalidate the process stack */ - if ((hcl_oop_t)proc->sem != hcl->_nil) + if ((hak_oop_t)proc->sem != hak->_nil) { - if (HCL_IS_SEMAPHORE_GROUP(hcl, proc->sem)) + if (HAK_IS_SEMAPHORE_GROUP(hak, proc->sem)) { - if (HCL_OOP_TO_SMOOI(((hcl_oop_semaphore_group_t)proc->sem)->sem_io_count) > 0) + if (HAK_OOP_TO_SMOOI(((hak_oop_semaphore_group_t)proc->sem)->sem_io_count) > 0) { - HCL_ASSERT (hcl, hcl->sem_io_wait_count > 0); - hcl->sem_io_wait_count--; - HCL_DEBUG1 (hcl, "terminate_process(sg) - lowered sem_io_wait_count to %zu\n", hcl->sem_io_wait_count); + HAK_ASSERT (hak, hak->sem_io_wait_count > 0); + hak->sem_io_wait_count--; + HAK_DEBUG1 (hak, "terminate_process(sg) - lowered sem_io_wait_count to %zu\n", hak->sem_io_wait_count); } } else { - HCL_ASSERT (hcl, HCL_IS_SEMAPHORE(hcl, proc->sem)); - if (((hcl_oop_semaphore_t)proc->sem)->subtype == HCL_SMOOI_TO_OOP(HCL_SEMAPHORE_SUBTYPE_IO)) + HAK_ASSERT (hak, HAK_IS_SEMAPHORE(hak, proc->sem)); + if (((hak_oop_semaphore_t)proc->sem)->subtype == HAK_SMOOI_TO_OOP(HAK_SEMAPHORE_SUBTYPE_IO)) { - HCL_ASSERT (hcl, hcl->sem_io_wait_count > 0); - hcl->sem_io_wait_count--; - HCL_DEBUG3 (hcl, "terminate_process(s) - lowered sem_io_wait_count to %zu for IO semaphore at index %zd handle %zd\n", - hcl->sem_io_wait_count, - HCL_OOP_TO_SMOOI(((hcl_oop_semaphore_t)proc->sem)->u.io.index), - HCL_OOP_TO_SMOOI(((hcl_oop_semaphore_t)proc->sem)->u.io.handle) + HAK_ASSERT (hak, hak->sem_io_wait_count > 0); + hak->sem_io_wait_count--; + HAK_DEBUG3 (hak, "terminate_process(s) - lowered sem_io_wait_count to %zu for IO semaphore at index %zd handle %zd\n", + hak->sem_io_wait_count, + HAK_OOP_TO_SMOOI(((hak_oop_semaphore_t)proc->sem)->u.io.index), + HAK_OOP_TO_SMOOI(((hak_oop_semaphore_t)proc->sem)->u.io.handle) ); } } - unchain_from_semaphore (hcl, proc); + unchain_from_semaphore (hak, proc); } /* when terminated, clear it from the pid table and set the process id to a negative number */ - free_pid (hcl, proc); + free_pid (hak, proc); } #if 0 - else if (proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_WAITING)) + else if (proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_WAITING)) { /* WAITING ---> TERMINATED */ /* TODO: */ @@ -1040,77 +1040,77 @@ static void terminate_process (hcl_t* hcl, hcl_oop_process_t proc) #endif } -static void terminate_all_processes (hcl_t* hcl) +static void terminate_all_processes (hak_t* hak) { - while (HCL_OOP_TO_SMOOI(hcl->processor->suspended.count) > 0) + while (HAK_OOP_TO_SMOOI(hak->processor->suspended.count) > 0) { - terminate_process (hcl, hcl->processor->suspended.first); + terminate_process (hak, hak->processor->suspended.first); } - while (HCL_OOP_TO_SMOOI(hcl->processor->runnable.count) > 0) + while (HAK_OOP_TO_SMOOI(hak->processor->runnable.count) > 0) { - terminate_process (hcl, hcl->processor->runnable.first); + terminate_process (hak, hak->processor->runnable.first); } - HCL_ASSERT (hcl, HCL_OOP_TO_SMOOI(hcl->processor->total_count) == 0); - HCL_ASSERT (hcl, hcl->processor->active == hcl->nil_process); + HAK_ASSERT (hak, HAK_OOP_TO_SMOOI(hak->processor->total_count) == 0); + HAK_ASSERT (hak, hak->processor->active == hak->nil_process); } -static void resume_process (hcl_t* hcl, hcl_oop_process_t proc) +static void resume_process (hak_t* hak, hak_oop_process_t proc) { - if (proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_SUSPENDED)) + if (proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_SUSPENDED)) { /* SUSPENDED ---> RUNNABLE */ - /*HCL_ASSERT (hcl, (hcl_oop_t)proc->ps.prev == hcl->_nil); - HCL_ASSERT (hcl, (hcl_oop_t)proc->ps.next == hcl->_nil);*/ + /*HAK_ASSERT (hak, (hak_oop_t)proc->ps.prev == hak->_nil); + HAK_ASSERT (hak, (hak_oop_t)proc->ps.next == hak->_nil);*/ - #if defined(HCL_DEBUG_VM_PROCESSOR) - HCL_LOG2 (hcl, HCL_LOG_IC | HCL_LOG_DEBUG, "Processor - process[%zd] %hs->RUNNABLE in resume_process\n", HCL_OOP_TO_SMOOI(proc->id), proc_state_to_string(HCL_OOP_TO_SMOOI(proc->state))); + #if defined(HAK_DEBUG_VM_PROCESSOR) + HAK_LOG2 (hak, HAK_LOG_IC | HAK_LOG_DEBUG, "Processor - process[%zd] %hs->RUNNABLE in resume_process\n", HAK_OOP_TO_SMOOI(proc->id), proc_state_to_string(HAK_OOP_TO_SMOOI(proc->state))); #endif /* don't switch to this process. just change the state to RUNNABLE. * process switching should be triggerd by the process scheduler. */ - chain_into_processor (hcl, proc, HCL_PROCESS_STATE_RUNNABLE); + chain_into_processor (hak, proc, HAK_PROCESS_STATE_RUNNABLE); /*proc->current_context = proc->initial_context;*/ } #if 0 - else if (proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_RUNNABLE)) + else if (proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_RUNNABLE)) { /* RUNNABLE ---> RUNNING */ /* TODO: should i allow this? */ - HCL_ASSERT (hcl, hcl->processor->active != proc); - switch_to_process (hcl, proc, HCL_PROCESS_STATE_RUNNABLE); + HAK_ASSERT (hak, hak->processor->active != proc); + switch_to_process (hak, proc, HAK_PROCESS_STATE_RUNNABLE); } #endif } -static void suspend_process (hcl_t* hcl, hcl_oop_process_t proc) +static void suspend_process (hak_t* hak, hak_oop_process_t proc) { - if (proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_RUNNING) || - proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_RUNNABLE)) + if (proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_RUNNING) || + proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_RUNNABLE)) { /* RUNNING/RUNNABLE ---> SUSPENDED */ - #if defined(HCL_DEBUG_VM_PROCESSOR) - HCL_LOG2 (hcl, HCL_LOG_IC | HCL_LOG_DEBUG, "Processor - process[%zd] %hs->SUSPENDED in suspend_process\n", HCL_OOP_TO_SMOOI(proc->id), proc_state_to_string(HCL_OOP_TO_SMOOI(proc->state))); + #if defined(HAK_DEBUG_VM_PROCESSOR) + HAK_LOG2 (hak, HAK_LOG_IC | HAK_LOG_DEBUG, "Processor - process[%zd] %hs->SUSPENDED in suspend_process\n", HAK_OOP_TO_SMOOI(proc->id), proc_state_to_string(HAK_OOP_TO_SMOOI(proc->state))); #endif - if (proc == hcl->processor->active) + if (proc == hak->processor->active) { /* suspend the active process */ - hcl_oop_process_t nrp; + hak_oop_process_t nrp; - nrp = find_next_runnable_process(hcl); + nrp = find_next_runnable_process(hak); if (nrp == proc) { /* no runnable process after suspension */ - sleep_active_process (hcl, HCL_PROCESS_STATE_RUNNABLE); - unchain_from_processor (hcl, proc, HCL_PROCESS_STATE_SUSPENDED); + sleep_active_process (hak, HAK_PROCESS_STATE_RUNNABLE); + unchain_from_processor (hak, proc, HAK_PROCESS_STATE_SUSPENDED); /* the last running/runnable process has been unchained * from the processor and set to SUSPENDED. the active * process must be the nil process */ - HCL_ASSERT (hcl, hcl->processor->active == hcl->nil_process); + HAK_ASSERT (hak, hak->processor->active == hak->nil_process); } else { @@ -1122,89 +1122,89 @@ static void suspend_process (hcl_t* hcl, hcl_oop_process_t proc) * done in unchain_from_processor(). the state of the active * process is somewhat wrong for a short period of time until * switch_to_process() has changed the active process. */ - unchain_from_processor (hcl, proc, HCL_PROCESS_STATE_SUSPENDED); - HCL_ASSERT (hcl, hcl->processor->active != hcl->nil_process); - switch_to_process (hcl, nrp, HCL_PROCESS_STATE_SUSPENDED); + unchain_from_processor (hak, proc, HAK_PROCESS_STATE_SUSPENDED); + HAK_ASSERT (hak, hak->processor->active != hak->nil_process); + switch_to_process (hak, nrp, HAK_PROCESS_STATE_SUSPENDED); } } else { - unchain_from_processor (hcl, proc, HCL_PROCESS_STATE_SUSPENDED); + unchain_from_processor (hak, proc, HAK_PROCESS_STATE_SUSPENDED); } } } -static void yield_process (hcl_t* hcl, hcl_oop_process_t proc) +static void yield_process (hak_t* hak, hak_oop_process_t proc) { - if (proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_RUNNING)) + if (proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_RUNNING)) { /* RUNNING --> RUNNABLE */ - hcl_oop_process_t nrp; + hak_oop_process_t nrp; - HCL_ASSERT (hcl, proc == hcl->processor->active); - HCL_ASSERT (hcl, HCL_IS_PROCESS(hcl, proc)); + HAK_ASSERT (hak, proc == hak->processor->active); + HAK_ASSERT (hak, HAK_IS_PROCESS(hak, proc)); - nrp = find_next_runnable_process(hcl); + nrp = find_next_runnable_process(hak); /* if there are more than 1 runnable processes, the next * runnable process must be different from proc */ if (nrp != proc) { - #if defined(HCL_DEBUG_VM_PROCESSOR) - HCL_LOG2 (hcl, HCL_LOG_IC | HCL_LOG_DEBUG, "Processor - process[%zd] %hs->RUNNABLE in yield_process\n", HCL_OOP_TO_SMOOI(proc->id), proc_state_to_string(HCL_OOP_TO_SMOOI(proc->state))); + #if defined(HAK_DEBUG_VM_PROCESSOR) + HAK_LOG2 (hak, HAK_LOG_IC | HAK_LOG_DEBUG, "Processor - process[%zd] %hs->RUNNABLE in yield_process\n", HAK_OOP_TO_SMOOI(proc->id), proc_state_to_string(HAK_OOP_TO_SMOOI(proc->state))); #endif - switch_to_process (hcl, nrp, HCL_PROCESS_STATE_RUNNABLE); + switch_to_process (hak, nrp, HAK_PROCESS_STATE_RUNNABLE); } } } -static int async_signal_semaphore (hcl_t* hcl, hcl_oop_semaphore_t sem) +static int async_signal_semaphore (hak_t* hak, hak_oop_semaphore_t sem) { #if 0 - if (hcl->sem_list_count >= SEM_LIST_MAX) + if (hak->sem_list_count >= SEM_LIST_MAX) { - hcl_seterrnum (hcl, HCL_ESLFULL); + hak_seterrnum (hak, HAK_ESLFULL); return -1; } - if (hcl->sem_list_count >= hcl->sem_list_capa) + if (hak->sem_list_count >= hak->sem_list_capa) { - hcl_oow_t new_capa; - hcl_oop_semaphore_t* tmp; + hak_oow_t new_capa; + hak_oop_semaphore_t* tmp; - new_capa = hcl->sem_list_capa + SEM_LIST_INC; /* TODO: overflow check.. */ - tmp = (hcl_oop_semaphore_t*)hcl_reallocmem(hcl, hcl->sem_list, HCL_SIZEOF(hcl_oop_semaphore_t) * new_capa); - if (HCL_UNLIKELY(!tmp)) return -1; + new_capa = hak->sem_list_capa + SEM_LIST_INC; /* TODO: overflow check.. */ + tmp = (hak_oop_semaphore_t*)hak_reallocmem(hak, hak->sem_list, HAK_SIZEOF(hak_oop_semaphore_t) * new_capa); + if (HAK_UNLIKELY(!tmp)) return -1; - hcl->sem_list = tmp; - hcl->sem_list_capa = new_capa; + hak->sem_list = tmp; + hak->sem_list_capa = new_capa; } - hcl->sem_list[hcl->sem_list_count] = sem; - hcl->sem_list_count++; + hak->sem_list[hak->sem_list_count] = sem; + hak->sem_list_count++; #endif return 0; } -static hcl_oop_process_t signal_semaphore (hcl_t* hcl, hcl_oop_semaphore_t sem) +static hak_oop_process_t signal_semaphore (hak_t* hak, hak_oop_semaphore_t sem) { - hcl_oop_process_t proc; - hcl_ooi_t count; - hcl_oop_semaphore_group_t sg; + hak_oop_process_t proc; + hak_ooi_t count; + hak_oop_semaphore_group_t sg; sg = sem->group; - if ((hcl_oop_t)sg != hcl->_nil) + if ((hak_oop_t)sg != hak->_nil) { /* the semaphore belongs to a semaphore group */ - if ((hcl_oop_t)sg->waiting.first != hcl->_nil) + if ((hak_oop_t)sg->waiting.first != hak->_nil) { - hcl_ooi_t sp; + hak_ooi_t sp; /* there is a process waiting on the process group */ proc = sg->waiting.first; /* will wake the first process in the waiting list */ - unchain_from_semaphore (hcl, proc); - resume_process (hcl, proc); + unchain_from_semaphore (hak, proc); + resume_process (hak, proc); /* [IMPORTANT] RETURN VALUE of SemaphoreGroup's wait. * ------------------------------------------------------------ @@ -1214,17 +1214,17 @@ static hcl_oop_process_t signal_semaphore (hcl_t* hcl, hcl_oop_semaphore_t sem) * return value set by await_semaphore() or await_semaphore_group(). * change the return value forcibly to the actual signaled * semaphore */ - HCL_ASSERT (hcl, HCL_OOP_TO_SMOOI(proc->sp) < (hcl_ooi_t)(HCL_OBJ_GET_SIZE(proc) - HCL_PROCESS_NAMED_INSTVARS)); - sp = HCL_OOP_TO_SMOOI(proc->sp); - proc->slot[sp] = (hcl_oop_t)sem; + HAK_ASSERT (hak, HAK_OOP_TO_SMOOI(proc->sp) < (hak_ooi_t)(HAK_OBJ_GET_SIZE(proc) - HAK_PROCESS_NAMED_INSTVARS)); + sp = HAK_OOP_TO_SMOOI(proc->sp); + proc->slot[sp] = (hak_oop_t)sem; /* i should decrement the counter as long as the group being * signaled contains an IO semaphore */ - if (HCL_OOP_TO_SMOOI(sg->sem_io_count) > 0) + if (HAK_OOP_TO_SMOOI(sg->sem_io_count) > 0) { - HCL_ASSERT (hcl, hcl->sem_io_wait_count > 0); - hcl->sem_io_wait_count--; - HCL_DEBUG2 (hcl, "signal_semaphore(sg) - lowered sem_io_wait_count to %zu for handle %zd\n", hcl->sem_io_wait_count, HCL_OOP_TO_SMOOI(sem->u.io.handle)); + HAK_ASSERT (hak, hak->sem_io_wait_count > 0); + hak->sem_io_wait_count--; + HAK_DEBUG2 (hak, "signal_semaphore(sg) - lowered sem_io_wait_count to %zu for handle %zd\n", hak->sem_io_wait_count, HAK_OOP_TO_SMOOI(sem->u.io.handle)); } return proc; } @@ -1240,43 +1240,43 @@ static hcl_oop_process_t signal_semaphore (hcl_t* hcl, hcl_oop_semaphore_t sem) * * if it doesn't belong to a sempahore group, i'm free from the starvation issue. */ - if ((hcl_oop_t)sem->waiting.first == hcl->_nil) + if ((hak_oop_t)sem->waiting.first == hak->_nil) { /* no process is waiting on this semaphore */ - count = HCL_OOP_TO_SMOOI(sem->count); + count = HAK_OOP_TO_SMOOI(sem->count); count++; - sem->count = HCL_SMOOI_TO_OOP(count); + sem->count = HAK_SMOOI_TO_OOP(count); - HCL_ASSERT (hcl, count >= 1); - if (count == 1 && (hcl_oop_t)sg != hcl->_nil) + HAK_ASSERT (hak, count >= 1); + if (count == 1 && (hak_oop_t)sg != hak->_nil) { /* move the semaphore from the unsignaled list to the signaled list * if the semaphore count has changed from 0 to 1 in a group */ - HCL_DELETE_FROM_OOP_LIST (hcl, &sg->sems[HCL_SEMAPHORE_GROUP_SEMS_UNSIG], sem, grm); - HCL_APPEND_TO_OOP_LIST (hcl, &sg->sems[HCL_SEMAPHORE_GROUP_SEMS_SIG], hcl_oop_semaphore_t, sem, grm); + HAK_DELETE_FROM_OOP_LIST (hak, &sg->sems[HAK_SEMAPHORE_GROUP_SEMS_UNSIG], sem, grm); + HAK_APPEND_TO_OOP_LIST (hak, &sg->sems[HAK_SEMAPHORE_GROUP_SEMS_SIG], hak_oop_semaphore_t, sem, grm); } /* no process has been resumed */ - return (hcl_oop_process_t)hcl->_nil; + return (hak_oop_process_t)hak->_nil; } else { proc = sem->waiting.first; - /* [NOTE] no GC must occur as 'proc' isn't protected with hcl_pushvolat(). */ + /* [NOTE] no GC must occur as 'proc' isn't protected with hak_pushvolat(). */ /* detach a process from a semaphore's waiting list and * make it runnable */ - unchain_from_semaphore (hcl, proc); - resume_process (hcl, proc); + unchain_from_semaphore (hak, proc); + resume_process (hak, proc); - if (sem->subtype == HCL_SMOOI_TO_OOP(HCL_SEMAPHORE_SUBTYPE_IO)) + if (sem->subtype == HAK_SMOOI_TO_OOP(HAK_SEMAPHORE_SUBTYPE_IO)) { - HCL_ASSERT (hcl, hcl->sem_io_wait_count > 0); - hcl->sem_io_wait_count--; - HCL_DEBUG3 (hcl, "signal_semaphore(s) - lowered sem_io_wait_count to %zu for IO semaphore at index %zd handle %zd\n", - hcl->sem_io_wait_count, HCL_OOP_TO_SMOOI(sem->u.io.index), HCL_OOP_TO_SMOOI(sem->u.io.handle)); + HAK_ASSERT (hak, hak->sem_io_wait_count > 0); + hak->sem_io_wait_count--; + HAK_DEBUG3 (hak, "signal_semaphore(s) - lowered sem_io_wait_count to %zu for IO semaphore at index %zd handle %zd\n", + hak->sem_io_wait_count, HAK_OOP_TO_SMOOI(sem->u.io.index), HAK_OOP_TO_SMOOI(sem->u.io.handle)); } /* return the resumed(runnable) process */ @@ -1284,178 +1284,178 @@ static hcl_oop_process_t signal_semaphore (hcl_t* hcl, hcl_oop_semaphore_t sem) } } -static HCL_INLINE int can_await_semaphore (hcl_t* hcl, hcl_oop_semaphore_t sem) +static HAK_INLINE int can_await_semaphore (hak_t* hak, hak_oop_semaphore_t sem) { /* a sempahore that doesn't belong to a gruop can be waited on */ - return (hcl_oop_t)sem->group == hcl->_nil; + return (hak_oop_t)sem->group == hak->_nil; } -static HCL_INLINE void await_semaphore (hcl_t* hcl, hcl_oop_semaphore_t sem) +static HAK_INLINE void await_semaphore (hak_t* hak, hak_oop_semaphore_t sem) { - hcl_oop_process_t proc; - hcl_ooi_t count; - hcl_oop_semaphore_group_t semgrp; + hak_oop_process_t proc; + hak_ooi_t count; + hak_oop_semaphore_group_t semgrp; semgrp = sem->group; /* the caller of this function must ensure that the semaphore doesn't belong to a group */ - HCL_ASSERT (hcl, (hcl_oop_t)semgrp == hcl->_nil); + HAK_ASSERT (hak, (hak_oop_t)semgrp == hak->_nil); - count = HCL_OOP_TO_SMOOI(sem->count); + count = HAK_OOP_TO_SMOOI(sem->count); if (count > 0) { /* it's already signaled */ count--; - sem->count = HCL_SMOOI_TO_OOP(count); + sem->count = HAK_SMOOI_TO_OOP(count); - if ((hcl_oop_t)semgrp != hcl->_nil && count == 0) + if ((hak_oop_t)semgrp != hak->_nil && count == 0) { int sems_idx; /* TODO: if i disallow individual wait on a semaphore in a group, * this membership manipulation is redundant */ - HCL_DELETE_FROM_OOP_LIST (hcl, &semgrp->sems[HCL_SEMAPHORE_GROUP_SEMS_SIG], sem, grm); - sems_idx = count > 0? HCL_SEMAPHORE_GROUP_SEMS_SIG: HCL_SEMAPHORE_GROUP_SEMS_UNSIG; - HCL_APPEND_TO_OOP_LIST (hcl, &semgrp->sems[sems_idx], hcl_oop_semaphore_t, sem, grm); + HAK_DELETE_FROM_OOP_LIST (hak, &semgrp->sems[HAK_SEMAPHORE_GROUP_SEMS_SIG], sem, grm); + sems_idx = count > 0? HAK_SEMAPHORE_GROUP_SEMS_SIG: HAK_SEMAPHORE_GROUP_SEMS_UNSIG; + HAK_APPEND_TO_OOP_LIST (hak, &semgrp->sems[sems_idx], hak_oop_semaphore_t, sem, grm); } } else { /* not signaled. need to wait */ - proc = hcl->processor->active; + proc = hak->processor->active; /* suspend the active process */ - suspend_process (hcl, proc); + suspend_process (hak, proc); /* link the suspended process to the semaphore's process list */ - chain_into_semaphore (hcl, proc, sem); + chain_into_semaphore (hak, proc, sem); - HCL_ASSERT (hcl, sem->waiting.last == proc); + HAK_ASSERT (hak, sem->waiting.last == proc); - if (sem->subtype == HCL_SMOOI_TO_OOP(HCL_SEMAPHORE_SUBTYPE_IO)) + if (sem->subtype == HAK_SMOOI_TO_OOP(HAK_SEMAPHORE_SUBTYPE_IO)) { - hcl->sem_io_wait_count++; - HCL_DEBUG3 (hcl, "await_semaphore - raised sem_io_wait_count to %zu for IO semaphore at index %zd handle %zd\n", - hcl->sem_io_wait_count, HCL_OOP_TO_SMOOI(sem->u.io.index), HCL_OOP_TO_SMOOI(sem->u.io.handle)); + hak->sem_io_wait_count++; + HAK_DEBUG3 (hak, "await_semaphore - raised sem_io_wait_count to %zu for IO semaphore at index %zd handle %zd\n", + hak->sem_io_wait_count, HAK_OOP_TO_SMOOI(sem->u.io.index), HAK_OOP_TO_SMOOI(sem->u.io.handle)); } - HCL_ASSERT (hcl, hcl->processor->active != proc); + HAK_ASSERT (hak, hak->processor->active != proc); } } -static HCL_INLINE hcl_oop_t await_semaphore_group (hcl_t* hcl, hcl_oop_semaphore_group_t semgrp) +static HAK_INLINE hak_oop_t await_semaphore_group (hak_t* hak, hak_oop_semaphore_group_t semgrp) { /* wait for one of semaphores in the group to be signaled */ - hcl_oop_process_t proc; - hcl_oop_semaphore_t sem; + hak_oop_process_t proc; + hak_oop_semaphore_t sem; - HCL_ASSERT (hcl, HCL_IS_SEMAPHORE_GROUP(hcl, semgrp)); + HAK_ASSERT (hak, HAK_IS_SEMAPHORE_GROUP(hak, semgrp)); - if (HCL_OOP_TO_SMOOI(semgrp->sem_count) <= 0) + if (HAK_OOP_TO_SMOOI(semgrp->sem_count) <= 0) { /* cannot wait on a semaphore group that has no member semaphores. * return failure if waiting on such a semapohre group is attempted */ - HCL_ASSERT (hcl, (hcl_oop_t)semgrp->sems[HCL_SEMAPHORE_GROUP_SEMS_SIG].first == hcl->_nil); - HCL_ASSERT (hcl, (hcl_oop_t)semgrp->sems[HCL_SEMAPHORE_GROUP_SEMS_SIG].last == hcl->_nil); - return HCL_ERROR_TO_OOP(HCL_EINVAL); /* TODO: better error code? */ + HAK_ASSERT (hak, (hak_oop_t)semgrp->sems[HAK_SEMAPHORE_GROUP_SEMS_SIG].first == hak->_nil); + HAK_ASSERT (hak, (hak_oop_t)semgrp->sems[HAK_SEMAPHORE_GROUP_SEMS_SIG].last == hak->_nil); + return HAK_ERROR_TO_OOP(HAK_EINVAL); /* TODO: better error code? */ } - sem = semgrp->sems[HCL_SEMAPHORE_GROUP_SEMS_SIG].first; - if ((hcl_oop_t)sem != hcl->_nil) + sem = semgrp->sems[HAK_SEMAPHORE_GROUP_SEMS_SIG].first; + if ((hak_oop_t)sem != hak->_nil) { - hcl_ooi_t count; + hak_ooi_t count; int sems_idx; /* there is a semaphore signaled in the group */ - count = HCL_OOP_TO_SMOOI(sem->count); - HCL_ASSERT (hcl, count > 0); + count = HAK_OOP_TO_SMOOI(sem->count); + HAK_ASSERT (hak, count > 0); count--; - sem->count = HCL_SMOOI_TO_OOP(count); + sem->count = HAK_SMOOI_TO_OOP(count); - HCL_DELETE_FROM_OOP_LIST (hcl, &semgrp->sems[HCL_SEMAPHORE_GROUP_SEMS_SIG], sem, grm); - sems_idx = count > 0? HCL_SEMAPHORE_GROUP_SEMS_SIG: HCL_SEMAPHORE_GROUP_SEMS_UNSIG; - HCL_APPEND_TO_OOP_LIST (hcl, &semgrp->sems[sems_idx], hcl_oop_semaphore_t, sem, grm); + HAK_DELETE_FROM_OOP_LIST (hak, &semgrp->sems[HAK_SEMAPHORE_GROUP_SEMS_SIG], sem, grm); + sems_idx = count > 0? HAK_SEMAPHORE_GROUP_SEMS_SIG: HAK_SEMAPHORE_GROUP_SEMS_UNSIG; + HAK_APPEND_TO_OOP_LIST (hak, &semgrp->sems[sems_idx], hak_oop_semaphore_t, sem, grm); - return (hcl_oop_t)sem; + return (hak_oop_t)sem; } /* no semaphores have been signaled. suspend the current process * until at least one of them is signaled */ - proc = hcl->processor->active; + proc = hak->processor->active; /* suspend the active process */ - suspend_process (hcl, proc); + suspend_process (hak, proc); /* link the suspended process to the semaphore group's process list */ - chain_into_semaphore (hcl, proc, (hcl_oop_semaphore_t)semgrp); + chain_into_semaphore (hak, proc, (hak_oop_semaphore_t)semgrp); - HCL_ASSERT (hcl, semgrp->waiting.last == proc); + HAK_ASSERT (hak, semgrp->waiting.last == proc); - if (HCL_OOP_TO_SMOOI(semgrp->sem_io_count) > 0) + if (HAK_OOP_TO_SMOOI(semgrp->sem_io_count) > 0) { /* there might be more than 1 IO semaphores in the group - * but i increment hcl->sem_io_wait_count by 1 only */ - hcl->sem_io_wait_count++; - HCL_DEBUG1 (hcl, "await_semaphore_group - raised sem_io_wait_count to %zu\n", hcl->sem_io_wait_count); + * but i increment hak->sem_io_wait_count by 1 only */ + hak->sem_io_wait_count++; + HAK_DEBUG1 (hak, "await_semaphore_group - raised sem_io_wait_count to %zu\n", hak->sem_io_wait_count); } /* the current process will get suspended after the caller (mostly a * a primitive function handler) is over as it's added to a suspened * process list above */ - HCL_ASSERT (hcl, hcl->processor->active != proc); - return hcl->_nil; + HAK_ASSERT (hak, hak->processor->active != proc); + return hak->_nil; } -static void sift_up_sem_heap (hcl_t* hcl, hcl_ooi_t index) +static void sift_up_sem_heap (hak_t* hak, hak_ooi_t index) { if (index > 0) { - hcl_ooi_t parent; - hcl_oop_semaphore_t sem, parsem; + hak_ooi_t parent; + hak_oop_semaphore_t sem, parsem; parent = SEM_HEAP_PARENT(index); - sem = hcl->sem_heap[index]; - parsem = hcl->sem_heap[parent]; - if (SEM_HEAP_EARLIER_THAN(hcl, sem, parsem)) + sem = hak->sem_heap[index]; + parsem = hak->sem_heap[parent]; + if (SEM_HEAP_EARLIER_THAN(hak, sem, parsem)) { do { /* move down the parent to the current position */ - parsem->u.timed.index = HCL_SMOOI_TO_OOP(index); - hcl->sem_heap[index] = parsem; + parsem->u.timed.index = HAK_SMOOI_TO_OOP(index); + hak->sem_heap[index] = parsem; /* traverse up */ index = parent; if (index <= 0) break; parent = SEM_HEAP_PARENT(parent); - parsem = hcl->sem_heap[parent]; + parsem = hak->sem_heap[parent]; } - while (SEM_HEAP_EARLIER_THAN(hcl, sem, parsem)); + while (SEM_HEAP_EARLIER_THAN(hak, sem, parsem)); - sem->u.timed.index = HCL_SMOOI_TO_OOP(index); - hcl->sem_heap[index] = sem; + sem->u.timed.index = HAK_SMOOI_TO_OOP(index); + hak->sem_heap[index] = sem; } } } -static void sift_down_sem_heap (hcl_t* hcl, hcl_ooi_t index) +static void sift_down_sem_heap (hak_t* hak, hak_ooi_t index) { - hcl_ooi_t base = hcl->sem_heap_count / 2; + hak_ooi_t base = hak->sem_heap_count / 2; if (index < base) /* at least 1 child is under the 'index' position */ { - hcl_ooi_t left, right, child; - hcl_oop_semaphore_t sem, chisem; + hak_ooi_t left, right, child; + hak_oop_semaphore_t sem, chisem; - sem = hcl->sem_heap[index]; + sem = hak->sem_heap[index]; do { left = SEM_HEAP_LEFT(index); right = SEM_HEAP_RIGHT(index); - if (right < hcl->sem_heap_count && SEM_HEAP_EARLIER_THAN(hcl, hcl->sem_heap[right], hcl->sem_heap[left])) + if (right < hak->sem_heap_count && SEM_HEAP_EARLIER_THAN(hak, hak->sem_heap[right], hak->sem_heap[left])) { child = right; } @@ -1464,277 +1464,277 @@ static void sift_down_sem_heap (hcl_t* hcl, hcl_ooi_t index) child = left; } - chisem = hcl->sem_heap[child]; - if (SEM_HEAP_EARLIER_THAN(hcl, sem, chisem)) break; + chisem = hak->sem_heap[child]; + if (SEM_HEAP_EARLIER_THAN(hak, sem, chisem)) break; - chisem->u.timed.index = HCL_SMOOI_TO_OOP(index); - hcl->sem_heap[index] = chisem; + chisem->u.timed.index = HAK_SMOOI_TO_OOP(index); + hak->sem_heap[index] = chisem; index = child; } while (index < base); - sem->u.timed.index = HCL_SMOOI_TO_OOP(index); - hcl->sem_heap[index] = sem; + sem->u.timed.index = HAK_SMOOI_TO_OOP(index); + hak->sem_heap[index] = sem; } } -static int add_to_sem_heap (hcl_t* hcl, hcl_oop_semaphore_t sem) +static int add_to_sem_heap (hak_t* hak, hak_oop_semaphore_t sem) { - hcl_ooi_t index; + hak_ooi_t index; - HCL_ASSERT (hcl, sem->subtype == hcl->_nil); + HAK_ASSERT (hak, sem->subtype == hak->_nil); - if (hcl->sem_heap_count >= SEM_HEAP_MAX) + if (hak->sem_heap_count >= SEM_HEAP_MAX) { - hcl_seterrbfmt(hcl, HCL_ESEMFLOOD, "too many semaphores in the semaphore heap"); + hak_seterrbfmt(hak, HAK_ESEMFLOOD, "too many semaphores in the semaphore heap"); return -1; } - if (hcl->sem_heap_count >= hcl->sem_heap_capa) + if (hak->sem_heap_count >= hak->sem_heap_capa) { - hcl_oow_t new_capa; - hcl_oop_semaphore_t* tmp; + hak_oow_t new_capa; + hak_oop_semaphore_t* tmp; /* no overflow check when calculating the new capacity * owing to SEM_HEAP_MAX check above */ - new_capa = hcl->sem_heap_capa + SEM_HEAP_INC; - tmp = (hcl_oop_semaphore_t*)hcl_reallocmem(hcl, hcl->sem_heap, HCL_SIZEOF(hcl_oop_semaphore_t) * new_capa); - if (HCL_UNLIKELY(!tmp)) return -1; + new_capa = hak->sem_heap_capa + SEM_HEAP_INC; + tmp = (hak_oop_semaphore_t*)hak_reallocmem(hak, hak->sem_heap, HAK_SIZEOF(hak_oop_semaphore_t) * new_capa); + if (HAK_UNLIKELY(!tmp)) return -1; - hcl->sem_heap = tmp; - hcl->sem_heap_capa = new_capa; + hak->sem_heap = tmp; + hak->sem_heap_capa = new_capa; } - HCL_ASSERT (hcl, hcl->sem_heap_count <= HCL_SMOOI_MAX); + HAK_ASSERT (hak, hak->sem_heap_count <= HAK_SMOOI_MAX); - index = hcl->sem_heap_count; - hcl->sem_heap[index] = sem; - sem->u.timed.index = HCL_SMOOI_TO_OOP(index); - sem->subtype = HCL_SMOOI_TO_OOP(HCL_SEMAPHORE_SUBTYPE_TIMED); - hcl->sem_heap_count++; + index = hak->sem_heap_count; + hak->sem_heap[index] = sem; + sem->u.timed.index = HAK_SMOOI_TO_OOP(index); + sem->subtype = HAK_SMOOI_TO_OOP(HAK_SEMAPHORE_SUBTYPE_TIMED); + hak->sem_heap_count++; - sift_up_sem_heap (hcl, index); + sift_up_sem_heap (hak, index); return 0; } -static void delete_from_sem_heap (hcl_t* hcl, hcl_ooi_t index) +static void delete_from_sem_heap (hak_t* hak, hak_ooi_t index) { - hcl_oop_semaphore_t sem, lastsem; + hak_oop_semaphore_t sem, lastsem; - HCL_ASSERT (hcl, index >= 0 && index < hcl->sem_heap_count); + HAK_ASSERT (hak, index >= 0 && index < hak->sem_heap_count); - sem = hcl->sem_heap[index]; + sem = hak->sem_heap[index]; - sem->subtype = hcl->_nil; - sem->u.timed.index = hcl->_nil; - sem->u.timed.ftime_sec = hcl->_nil; - sem->u.timed.ftime_nsec = hcl->_nil; + sem->subtype = hak->_nil; + sem->u.timed.index = hak->_nil; + sem->u.timed.ftime_sec = hak->_nil; + sem->u.timed.ftime_nsec = hak->_nil; - hcl->sem_heap_count--; - if (/*hcl->sem_heap_count > 0 &&*/ index != hcl->sem_heap_count) + hak->sem_heap_count--; + if (/*hak->sem_heap_count > 0 &&*/ index != hak->sem_heap_count) { /* move the last item to the deletion position */ - lastsem = hcl->sem_heap[hcl->sem_heap_count]; - lastsem->u.timed.index = HCL_SMOOI_TO_OOP(index); - hcl->sem_heap[index] = lastsem; + lastsem = hak->sem_heap[hak->sem_heap_count]; + lastsem->u.timed.index = HAK_SMOOI_TO_OOP(index); + hak->sem_heap[index] = lastsem; - if (SEM_HEAP_EARLIER_THAN(hcl, lastsem, sem)) - sift_up_sem_heap (hcl, index); + if (SEM_HEAP_EARLIER_THAN(hak, lastsem, sem)) + sift_up_sem_heap (hak, index); else - sift_down_sem_heap (hcl, index); + sift_down_sem_heap (hak, index); } } #if 0 /* unused */ -static void update_sem_heap (hcl_t* hcl, hcl_ooi_t index, hcl_oop_semaphore_t newsem) +static void update_sem_heap (hak_t* hak, hak_ooi_t index, hak_oop_semaphore_t newsem) { - hcl_oop_semaphore_t sem; + hak_oop_semaphore_t sem; - sem = hcl->sem_heap[index]; - sem->timed.index = hcl->_nil; + sem = hak->sem_heap[index]; + sem->timed.index = hak->_nil; - newsem->timed.index = HCL_SMOOI_TO_OOP(index); - hcl->sem_heap[index] = newsem; + newsem->timed.index = HAK_SMOOI_TO_OOP(index); + hak->sem_heap[index] = newsem; - if (SEM_HEAP_EARLIER_THAN(hcl, newsem, sem)) - sift_up_sem_heap (hcl, index); + if (SEM_HEAP_EARLIER_THAN(hak, newsem, sem)) + sift_up_sem_heap (hak, index); else - sift_down_sem_heap (hcl, index); + sift_down_sem_heap (hak, index); } #endif -static int add_sem_to_sem_io_tuple (hcl_t* hcl, hcl_oop_semaphore_t sem, hcl_ooi_t io_handle, hcl_semaphore_io_type_t io_type) +static int add_sem_to_sem_io_tuple (hak_t* hak, hak_oop_semaphore_t sem, hak_ooi_t io_handle, hak_semaphore_io_type_t io_type) { - hcl_ooi_t index; - hcl_ooi_t new_mask; + hak_ooi_t index; + hak_ooi_t new_mask; int n, tuple_added = 0; - HCL_ASSERT (hcl, sem->subtype == (hcl_oop_t)hcl->_nil); - HCL_ASSERT (hcl, sem->u.io.index == (hcl_oop_t)hcl->_nil); - /*HCL_ASSERT (hcl, sem->io.handle == (hcl_oop_t)hcl->_nil); - HCL_ASSERT (hcl, sem->io.type == (hcl_oop_t)hcl->_nil);*/ + HAK_ASSERT (hak, sem->subtype == (hak_oop_t)hak->_nil); + HAK_ASSERT (hak, sem->u.io.index == (hak_oop_t)hak->_nil); + /*HAK_ASSERT (hak, sem->io.handle == (hak_oop_t)hak->_nil); + HAK_ASSERT (hak, sem->io.type == (hak_oop_t)hak->_nil);*/ if (io_handle < 0) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "handle %zd out of supported range", io_handle); + hak_seterrbfmt (hak, HAK_EINVAL, "handle %zd out of supported range", io_handle); return -1; } - if (io_handle >= hcl->sem_io_map_capa) + if (io_handle >= hak->sem_io_map_capa) { - hcl_oow_t new_capa, i; - hcl_ooi_t* tmp; + hak_oow_t new_capa, i; + hak_ooi_t* tmp; /* TODO: specify the maximum io_handle supported and check it here instead of just relying on memory allocation success/failure? */ - new_capa = HCL_ALIGN_POW2(io_handle + 1, SEM_IO_MAP_ALIGN); + new_capa = HAK_ALIGN_POW2(io_handle + 1, SEM_IO_MAP_ALIGN); - tmp = (hcl_ooi_t*)hcl_reallocmem(hcl, hcl->sem_io_map, HCL_SIZEOF(*tmp) * new_capa); - if (HCL_UNLIKELY(!tmp)) + tmp = (hak_ooi_t*)hak_reallocmem(hak, hak->sem_io_map, HAK_SIZEOF(*tmp) * new_capa); + if (HAK_UNLIKELY(!tmp)) { - const hcl_ooch_t* oldmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, hcl->errnum, "handle %zd out of supported range - %js", oldmsg); + const hak_ooch_t* oldmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, hak->errnum, "handle %zd out of supported range - %js", oldmsg); return -1; } - for (i = hcl->sem_io_map_capa; i < new_capa; i++) tmp[i] = -1; + for (i = hak->sem_io_map_capa; i < new_capa; i++) tmp[i] = -1; - hcl->sem_io_map = tmp; - hcl->sem_io_map_capa = new_capa; + hak->sem_io_map = tmp; + hak->sem_io_map_capa = new_capa; } - index = hcl->sem_io_map[io_handle]; + index = hak->sem_io_map[io_handle]; if (index <= -1) { /* this handle is not in any tuples. add it to a new tuple */ - if (hcl->sem_io_tuple_count >= SEM_IO_TUPLE_MAX) + if (hak->sem_io_tuple_count >= SEM_IO_TUPLE_MAX) { - hcl_seterrbfmt (hcl, HCL_ESEMFLOOD, "too many IO semaphore tuples"); + hak_seterrbfmt (hak, HAK_ESEMFLOOD, "too many IO semaphore tuples"); return -1; } - if (hcl->sem_io_tuple_count >= hcl->sem_io_tuple_capa) + if (hak->sem_io_tuple_count >= hak->sem_io_tuple_capa) { - hcl_oow_t new_capa; - hcl_sem_tuple_t* tmp; + hak_oow_t new_capa; + hak_sem_tuple_t* tmp; /* no overflow check when calculating the new capacity * owing to SEM_IO_TUPLE_MAX check above */ - new_capa = hcl->sem_io_tuple_capa + SEM_IO_TUPLE_INC; - tmp = (hcl_sem_tuple_t*)hcl_reallocmem(hcl, hcl->sem_io_tuple, HCL_SIZEOF(hcl_sem_tuple_t) * new_capa); - if (HCL_UNLIKELY(!tmp)) return -1; + new_capa = hak->sem_io_tuple_capa + SEM_IO_TUPLE_INC; + tmp = (hak_sem_tuple_t*)hak_reallocmem(hak, hak->sem_io_tuple, HAK_SIZEOF(hak_sem_tuple_t) * new_capa); + if (HAK_UNLIKELY(!tmp)) return -1; - hcl->sem_io_tuple = tmp; - hcl->sem_io_tuple_capa = new_capa; + hak->sem_io_tuple = tmp; + hak->sem_io_tuple_capa = new_capa; } - /* this condition must be true assuming SEM_IO_TUPLE_MAX <= HCL_SMOOI_MAX */ - HCL_ASSERT (hcl, hcl->sem_io_tuple_count <= HCL_SMOOI_MAX); - index = hcl->sem_io_tuple_count; + /* this condition must be true assuming SEM_IO_TUPLE_MAX <= HAK_SMOOI_MAX */ + HAK_ASSERT (hak, hak->sem_io_tuple_count <= HAK_SMOOI_MAX); + index = hak->sem_io_tuple_count; tuple_added = 1; /* safe to initialize before vm_muxadd() because - * hcl->sem_io_tuple_count has not been incremented. + * hak->sem_io_tuple_count has not been incremented. * still no impact even if it fails. */ - hcl->sem_io_tuple[index].sem[HCL_SEMAPHORE_IO_TYPE_INPUT] = HCL_NULL; - hcl->sem_io_tuple[index].sem[HCL_SEMAPHORE_IO_TYPE_OUTPUT] = HCL_NULL; - hcl->sem_io_tuple[index].handle = io_handle; - hcl->sem_io_tuple[index].mask = 0; + hak->sem_io_tuple[index].sem[HAK_SEMAPHORE_IO_TYPE_INPUT] = HAK_NULL; + hak->sem_io_tuple[index].sem[HAK_SEMAPHORE_IO_TYPE_OUTPUT] = HAK_NULL; + hak->sem_io_tuple[index].handle = io_handle; + hak->sem_io_tuple[index].mask = 0; - new_mask = ((hcl_ooi_t)1 << io_type); + new_mask = ((hak_ooi_t)1 << io_type); - hcl_pushvolat (hcl, (hcl_oop_t*)&sem); - n = hcl->vmprim.vm_muxadd(hcl, io_handle, new_mask); - hcl_popvolat (hcl); + hak_pushvolat (hak, (hak_oop_t*)&sem); + n = hak->vmprim.vm_muxadd(hak, io_handle, new_mask); + hak_popvolat (hak); } else { - if (hcl->sem_io_tuple[index].sem[io_type]) + if (hak->sem_io_tuple[index].sem[io_type]) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "handle %zd already linked with an IO semaphore for %hs", io_handle, io_type_str[io_type]); + hak_seterrbfmt (hak, HAK_EINVAL, "handle %zd already linked with an IO semaphore for %hs", io_handle, io_type_str[io_type]); return -1; } - new_mask = hcl->sem_io_tuple[index].mask; /* existing mask */ - new_mask |= ((hcl_ooi_t)1 << io_type); + new_mask = hak->sem_io_tuple[index].mask; /* existing mask */ + new_mask |= ((hak_ooi_t)1 << io_type); - hcl_pushvolat (hcl, (hcl_oop_t*)&sem); - n = hcl->vmprim.vm_muxmod(hcl, io_handle, new_mask); - hcl_popvolat (hcl); + hak_pushvolat (hak, (hak_oop_t*)&sem); + n = hak->vmprim.vm_muxmod(hak, io_handle, new_mask); + hak_popvolat (hak); } if (n <= -1) { - HCL_LOG3 (hcl, HCL_LOG_WARN, "Failed to add IO semaphore at index %zd for %hs on handle %zd\n", index, io_type_str[io_type], io_handle); + HAK_LOG3 (hak, HAK_LOG_WARN, "Failed to add IO semaphore at index %zd for %hs on handle %zd\n", index, io_type_str[io_type], io_handle); return -1; } - HCL_LOG3 (hcl, HCL_LOG_DEBUG, "Added IO semaphore at index %zd for %hs on handle %zd\n", index, io_type_str[io_type], io_handle); + HAK_LOG3 (hak, HAK_LOG_DEBUG, "Added IO semaphore at index %zd for %hs on handle %zd\n", index, io_type_str[io_type], io_handle); - sem->subtype = HCL_SMOOI_TO_OOP(HCL_SEMAPHORE_SUBTYPE_IO); - sem->u.io.index = HCL_SMOOI_TO_OOP(index); - sem->u.io.handle = HCL_SMOOI_TO_OOP(io_handle); - sem->u.io.type = HCL_SMOOI_TO_OOP((hcl_ooi_t)io_type); + sem->subtype = HAK_SMOOI_TO_OOP(HAK_SEMAPHORE_SUBTYPE_IO); + sem->u.io.index = HAK_SMOOI_TO_OOP(index); + sem->u.io.handle = HAK_SMOOI_TO_OOP(io_handle); + sem->u.io.type = HAK_SMOOI_TO_OOP((hak_ooi_t)io_type); - hcl->sem_io_tuple[index].handle = io_handle; - hcl->sem_io_tuple[index].mask = new_mask; - hcl->sem_io_tuple[index].sem[io_type] = sem; + hak->sem_io_tuple[index].handle = io_handle; + hak->sem_io_tuple[index].mask = new_mask; + hak->sem_io_tuple[index].sem[io_type] = sem; - hcl->sem_io_count++; + hak->sem_io_count++; if (tuple_added) { - hcl->sem_io_tuple_count++; - hcl->sem_io_map[io_handle] = index; + hak->sem_io_tuple_count++; + hak->sem_io_map[io_handle] = index; } /* update the number of IO semaphores in a group if necessary */ - if ((hcl_oop_t)sem->group != hcl->_nil) + if ((hak_oop_t)sem->group != hak->_nil) { - hcl_ooi_t count; - count = HCL_OOP_TO_SMOOI(sem->group->sem_io_count); + hak_ooi_t count; + count = HAK_OOP_TO_SMOOI(sem->group->sem_io_count); count++; - sem->group->sem_io_count = HCL_SMOOI_TO_OOP(count); + sem->group->sem_io_count = HAK_SMOOI_TO_OOP(count); } return 0; } -static int delete_sem_from_sem_io_tuple (hcl_t* hcl, hcl_oop_semaphore_t sem, int force) +static int delete_sem_from_sem_io_tuple (hak_t* hak, hak_oop_semaphore_t sem, int force) { - hcl_ooi_t index; - hcl_ooi_t new_mask, io_handle, io_type; + hak_ooi_t index; + hak_ooi_t new_mask, io_handle, io_type; int x; - HCL_ASSERT (hcl, sem->subtype == HCL_SMOOI_TO_OOP(HCL_SEMAPHORE_SUBTYPE_IO)); - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.io.type)); - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.io.index)); - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.io.handle)); + HAK_ASSERT (hak, sem->subtype == HAK_SMOOI_TO_OOP(HAK_SEMAPHORE_SUBTYPE_IO)); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.io.type)); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.io.index)); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.io.handle)); - index = HCL_OOP_TO_SMOOI(sem->u.io.index); - HCL_ASSERT (hcl, index >= 0 && index < hcl->sem_io_tuple_count); + index = HAK_OOP_TO_SMOOI(sem->u.io.index); + HAK_ASSERT (hak, index >= 0 && index < hak->sem_io_tuple_count); - io_handle = HCL_OOP_TO_SMOOI(sem->u.io.handle); - if (io_handle < 0 || io_handle >= hcl->sem_io_map_capa) + io_handle = HAK_OOP_TO_SMOOI(sem->u.io.handle); + if (io_handle < 0 || io_handle >= hak->sem_io_map_capa) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "handle %zd out of supported range", io_handle); + hak_seterrbfmt (hak, HAK_EINVAL, "handle %zd out of supported range", io_handle); return -1; } - HCL_ASSERT (hcl, hcl->sem_io_map[io_handle] == HCL_OOP_TO_SMOOI(sem->u.io.index)); + HAK_ASSERT (hak, hak->sem_io_map[io_handle] == HAK_OOP_TO_SMOOI(sem->u.io.index)); - io_type = HCL_OOP_TO_SMOOI(sem->u.io.type); + io_type = HAK_OOP_TO_SMOOI(sem->u.io.type); - new_mask = hcl->sem_io_tuple[index].mask; - new_mask &= ~((hcl_ooi_t)1 << io_type); /* this is the new mask after deletion */ + new_mask = hak->sem_io_tuple[index].mask; + new_mask &= ~((hak_ooi_t)1 << io_type); /* this is the new mask after deletion */ - hcl_pushvolat (hcl, (hcl_oop_t*)&sem); - x = new_mask? hcl->vmprim.vm_muxmod(hcl, io_handle, new_mask): - hcl->vmprim.vm_muxdel(hcl, io_handle); - hcl_popvolat (hcl); + hak_pushvolat (hak, (hak_oop_t*)&sem); + x = new_mask? hak->vmprim.vm_muxmod(hak, io_handle, new_mask): + hak->vmprim.vm_muxdel(hak, io_handle); + hak_popvolat (hak); if (x <= -1) { - HCL_LOG3 (hcl, HCL_LOG_WARN, "Failed to delete IO semaphore at index %zd handle %zd for %hs\n", index, io_handle, io_type_str[io_type]); + HAK_LOG3 (hak, HAK_LOG_WARN, "Failed to delete IO semaphore at index %zd handle %zd for %hs\n", index, io_handle, io_type_str[io_type]); if (!force) return -1; /* [NOTE] @@ -1743,108 +1743,108 @@ static int delete_sem_from_sem_io_tuple (hcl_t* hcl, hcl_oop_semaphore_t sem, in * assuming the callback works correctly, it's not likely that the * underlying operating system returns failure for no reason. * i should inspect the overall vm implementation */ - HCL_LOG1 (hcl, HCL_LOG_ERROR, "Forcibly unmapping the IO semaphored handle %zd as if it's deleted\n", io_handle); + HAK_LOG1 (hak, HAK_LOG_ERROR, "Forcibly unmapping the IO semaphored handle %zd as if it's deleted\n", io_handle); } else { - HCL_LOG3 (hcl, HCL_LOG_DEBUG, "Deleted IO semaphore at index %zd handle %zd for %hs\n", index, io_handle, io_type_str[io_type]); + HAK_LOG3 (hak, HAK_LOG_DEBUG, "Deleted IO semaphore at index %zd handle %zd for %hs\n", index, io_handle, io_type_str[io_type]); } - sem->subtype = hcl->_nil; - sem->u.io.index = hcl->_nil; - sem->u.io.handle = hcl->_nil; - sem->u.io.type = hcl->_nil; - hcl->sem_io_count--; + sem->subtype = hak->_nil; + sem->u.io.index = hak->_nil; + sem->u.io.handle = hak->_nil; + sem->u.io.type = hak->_nil; + hak->sem_io_count--; - if ((hcl_oop_t)sem->group != hcl->_nil) + if ((hak_oop_t)sem->group != hak->_nil) { - hcl_ooi_t count; - count = HCL_OOP_TO_SMOOI(sem->group->sem_io_count); - HCL_ASSERT (hcl, count > 0); + hak_ooi_t count; + count = HAK_OOP_TO_SMOOI(sem->group->sem_io_count); + HAK_ASSERT (hak, count > 0); count--; - sem->group->sem_io_count = HCL_SMOOI_TO_OOP(count); + sem->group->sem_io_count = HAK_SMOOI_TO_OOP(count); } if (new_mask) { - hcl->sem_io_tuple[index].mask = new_mask; - hcl->sem_io_tuple[index].sem[io_type] = HCL_NULL; + hak->sem_io_tuple[index].mask = new_mask; + hak->sem_io_tuple[index].sem[io_type] = HAK_NULL; } else { - hcl->sem_io_tuple_count--; + hak->sem_io_tuple_count--; - if (/*hcl->sem_io_tuple_count > 0 &&*/ index != hcl->sem_io_tuple_count) + if (/*hak->sem_io_tuple_count > 0 &&*/ index != hak->sem_io_tuple_count) { /* migrate the last item to the deleted slot to compact the gap */ - hcl->sem_io_tuple[index] = hcl->sem_io_tuple[hcl->sem_io_tuple_count]; + hak->sem_io_tuple[index] = hak->sem_io_tuple[hak->sem_io_tuple_count]; - if (hcl->sem_io_tuple[index].sem[HCL_SEMAPHORE_IO_TYPE_INPUT]) - hcl->sem_io_tuple[index].sem[HCL_SEMAPHORE_IO_TYPE_INPUT]->u.io.index = HCL_SMOOI_TO_OOP(index); - if (hcl->sem_io_tuple[index].sem[HCL_SEMAPHORE_IO_TYPE_OUTPUT]) - hcl->sem_io_tuple[index].sem[HCL_SEMAPHORE_IO_TYPE_OUTPUT]->u.io.index = HCL_SMOOI_TO_OOP(index); + if (hak->sem_io_tuple[index].sem[HAK_SEMAPHORE_IO_TYPE_INPUT]) + hak->sem_io_tuple[index].sem[HAK_SEMAPHORE_IO_TYPE_INPUT]->u.io.index = HAK_SMOOI_TO_OOP(index); + if (hak->sem_io_tuple[index].sem[HAK_SEMAPHORE_IO_TYPE_OUTPUT]) + hak->sem_io_tuple[index].sem[HAK_SEMAPHORE_IO_TYPE_OUTPUT]->u.io.index = HAK_SMOOI_TO_OOP(index); - hcl->sem_io_map[hcl->sem_io_tuple[index].handle] = index; + hak->sem_io_map[hak->sem_io_tuple[index].handle] = index; - HCL_LOG2 (hcl, HCL_LOG_DEBUG, "Migrated IO semaphore tuple from index %zd to %zd\n", hcl->sem_io_tuple_count, index); + HAK_LOG2 (hak, HAK_LOG_DEBUG, "Migrated IO semaphore tuple from index %zd to %zd\n", hak->sem_io_tuple_count, index); } - hcl->sem_io_map[io_handle] = -1; + hak->sem_io_map[io_handle] = -1; } return 0; } -static void _signal_io_semaphore (hcl_t* hcl, hcl_oop_semaphore_t sem) +static void _signal_io_semaphore (hak_t* hak, hak_oop_semaphore_t sem) { - hcl_oop_process_t proc; + hak_oop_process_t proc; - proc = signal_semaphore (hcl, sem); + proc = signal_semaphore (hak, sem); - if (hcl->processor->active == hcl->nil_process && (hcl_oop_t)proc != hcl->_nil) + if (hak->processor->active == hak->nil_process && (hak_oop_t)proc != hak->_nil) { /* this is the only runnable process. * switch the process to the running state. * it uses wake_process() instead of * switch_to_process() as there is no running * process at this moment */ - HCL_ASSERT (hcl, proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_RUNNABLE)); - HCL_ASSERT (hcl, proc == hcl->processor->runnable.first); + HAK_ASSERT (hak, proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_RUNNABLE)); + HAK_ASSERT (hak, proc == hak->processor->runnable.first); #if 0 - wake_process (hcl, proc); /* switch to running */ - hcl->proc_switched = 1; + wake_process (hak, proc); /* switch to running */ + hak->proc_switched = 1; #else - switch_to_process_from_nil (hcl, proc); + switch_to_process_from_nil (hak, proc); #endif } } -static void signal_io_semaphore (hcl_t* hcl, hcl_ooi_t io_handle, hcl_ooi_t mask) +static void signal_io_semaphore (hak_t* hak, hak_ooi_t io_handle, hak_ooi_t mask) { - if (io_handle >= 0 && io_handle < hcl->sem_io_map_capa && hcl->sem_io_map[io_handle] >= 0) + if (io_handle >= 0 && io_handle < hak->sem_io_map_capa && hak->sem_io_map[io_handle] >= 0) { - hcl_oop_semaphore_t insem, outsem; - hcl_ooi_t sem_io_index; + hak_oop_semaphore_t insem, outsem; + hak_ooi_t sem_io_index; - sem_io_index = hcl->sem_io_map[io_handle]; - insem = hcl->sem_io_tuple[sem_io_index].sem[HCL_SEMAPHORE_IO_TYPE_INPUT]; - outsem = hcl->sem_io_tuple[sem_io_index].sem[HCL_SEMAPHORE_IO_TYPE_OUTPUT]; + sem_io_index = hak->sem_io_map[io_handle]; + insem = hak->sem_io_tuple[sem_io_index].sem[HAK_SEMAPHORE_IO_TYPE_INPUT]; + outsem = hak->sem_io_tuple[sem_io_index].sem[HAK_SEMAPHORE_IO_TYPE_OUTPUT]; if (outsem) { - if ((mask & (HCL_SEMAPHORE_IO_MASK_OUTPUT | HCL_SEMAPHORE_IO_MASK_ERROR)) || - (!insem && (mask & HCL_SEMAPHORE_IO_MASK_HANGUP))) + if ((mask & (HAK_SEMAPHORE_IO_MASK_OUTPUT | HAK_SEMAPHORE_IO_MASK_ERROR)) || + (!insem && (mask & HAK_SEMAPHORE_IO_MASK_HANGUP))) { - _signal_io_semaphore (hcl, outsem); + _signal_io_semaphore (hak, outsem); } } if (insem) { - if (mask & (HCL_SEMAPHORE_IO_MASK_INPUT | HCL_SEMAPHORE_IO_MASK_HANGUP | HCL_SEMAPHORE_IO_MASK_ERROR)) + if (mask & (HAK_SEMAPHORE_IO_MASK_INPUT | HAK_SEMAPHORE_IO_MASK_HANGUP | HAK_SEMAPHORE_IO_MASK_ERROR)) { - _signal_io_semaphore (hcl, insem); + _signal_io_semaphore (hak, insem); } } } @@ -1852,47 +1852,47 @@ static void signal_io_semaphore (hcl_t* hcl, hcl_ooi_t io_handle, hcl_ooi_t mask { /* you may come across this warning message if the multiplexer returned * an IO event */ - HCL_LOG2 (hcl, HCL_LOG_WARN, "Warning - semaphore signaling requested on an unmapped handle %zd with mask %#zx\n", io_handle, mask); + HAK_LOG2 (hak, HAK_LOG_WARN, "Warning - semaphore signaling requested on an unmapped handle %zd with mask %#zx\n", io_handle, mask); } } -void hcl_releaseiohandle (hcl_t* hcl, hcl_ooi_t io_handle) +void hak_releaseiohandle (hak_t* hak, hak_ooi_t io_handle) { /* TODO: optimize io semapore unmapping. since i'm to close the handle, * i don't need to call delete_sem_from_sem_io_tuple() seperately for input * and output. */ - if (io_handle < hcl->sem_io_map_capa) + if (io_handle < hak->sem_io_map_capa) { - hcl_ooi_t index; - hcl_oop_semaphore_t sem; + hak_ooi_t index; + hak_oop_semaphore_t sem; - index = hcl->sem_io_map[io_handle]; + index = hak->sem_io_map[io_handle]; if (index >= 0) { - HCL_ASSERT(hcl, hcl->sem_io_tuple[index].handle == io_handle); - sem = hcl->sem_io_tuple[index].sem[HCL_SEMAPHORE_IO_TYPE_INPUT]; + HAK_ASSERT(hak, hak->sem_io_tuple[index].handle == io_handle); + sem = hak->sem_io_tuple[index].sem[HAK_SEMAPHORE_IO_TYPE_INPUT]; if (sem) { - HCL_ASSERT(hcl, sem->subtype == HCL_SMOOI_TO_OOP(HCL_SEMAPHORE_SUBTYPE_IO)); - delete_sem_from_sem_io_tuple (hcl, sem, 0); + HAK_ASSERT(hak, sem->subtype == HAK_SMOOI_TO_OOP(HAK_SEMAPHORE_SUBTYPE_IO)); + delete_sem_from_sem_io_tuple (hak, sem, 0); } } } - if (io_handle < hcl->sem_io_map_capa) + if (io_handle < hak->sem_io_map_capa) { - hcl_ooi_t index; - hcl_oop_semaphore_t sem; + hak_ooi_t index; + hak_oop_semaphore_t sem; - index = hcl->sem_io_map[io_handle]; + index = hak->sem_io_map[io_handle]; if (index >= 0) { - HCL_ASSERT(hcl, hcl->sem_io_tuple[index].handle == io_handle); - sem = hcl->sem_io_tuple[index].sem[HCL_SEMAPHORE_IO_TYPE_OUTPUT]; + HAK_ASSERT(hak, hak->sem_io_tuple[index].handle == io_handle); + sem = hak->sem_io_tuple[index].sem[HAK_SEMAPHORE_IO_TYPE_OUTPUT]; if (sem) { - HCL_ASSERT(hcl, sem->subtype == HCL_SMOOI_TO_OOP(HCL_SEMAPHORE_SUBTYPE_IO)); - delete_sem_from_sem_io_tuple (hcl, sem, 0); + HAK_ASSERT(hak, sem->subtype == HAK_SMOOI_TO_OOP(HAK_SEMAPHORE_SUBTYPE_IO)); + delete_sem_from_sem_io_tuple (hak, sem, 0); } } } @@ -1900,20 +1900,20 @@ void hcl_releaseiohandle (hcl_t* hcl, hcl_ooi_t io_handle) /* ------------------------------------------------------------------------- */ -static int prepare_new_context (hcl_t* hcl, hcl_oop_block_t op_blk, hcl_ooi_t nargs, int nargs_offset, hcl_ooi_t req_nrvars, int copy_args, int is_msgsend, hcl_ooi_t msg_ivaroff, hcl_oop_context_t* pnewctx) +static int prepare_new_context (hak_t* hak, hak_oop_block_t op_blk, hak_ooi_t nargs, int nargs_offset, hak_ooi_t req_nrvars, int copy_args, int is_msgsend, hak_ooi_t msg_ivaroff, hak_oop_context_t* pnewctx) { /* prepare a new block context for activation. * the passed block context becomes the base for a new block context. */ - hcl_oop_context_t blkctx; - hcl_ooi_t attr_mask; - hcl_ooi_t fblk_nrvars, fblk_nlvars; - hcl_ooi_t fixed_nargs, actual_nargs, excess_nargs; + hak_oop_context_t blkctx; + hak_ooi_t attr_mask; + hak_ooi_t fblk_nrvars, fblk_nlvars; + hak_ooi_t fixed_nargs, actual_nargs, excess_nargs; /* the receiver must be a block context */ - HCL_ASSERT (hcl, HCL_IS_COMPILED_BLOCK(hcl, op_blk)); + HAK_ASSERT (hak, HAK_IS_COMPILED_BLOCK(hak, op_blk)); - attr_mask = HCL_OOP_TO_SMOOI(op_blk->attr_mask); + attr_mask = HAK_OOP_TO_SMOOI(op_blk->attr_mask); fblk_nrvars = GET_BLK_MASK_NRVARS(attr_mask); fblk_nlvars = GET_BLK_MASK_NLVARS(attr_mask); @@ -1923,37 +1923,37 @@ static int prepare_new_context (hcl_t* hcl, hcl_oop_block_t op_blk, hcl_ooi_t na if (actual_nargs < fixed_nargs || (!GET_BLK_MASK_VA(attr_mask) && actual_nargs > fixed_nargs)) { - HCL_LOG3 (hcl, HCL_LOG_IC | HCL_LOG_ERROR, + HAK_LOG3 (hak, HAK_LOG_IC | HAK_LOG_ERROR, "Error - wrong number of arguments to a block %O - expecting %zd, got %zd\n", op_blk, fixed_nargs, actual_nargs); - hcl_seterrbfmt (hcl, HCL_ECALLARG, "wrong number of argument passed to function block - %zd expected, %zd passed", fixed_nargs, actual_nargs); + hak_seterrbfmt (hak, HAK_ECALLARG, "wrong number of argument passed to function block - %zd expected, %zd passed", fixed_nargs, actual_nargs); return -1; } if (req_nrvars > fblk_nrvars) { - HCL_LOG3 (hcl, HCL_LOG_IC | HCL_LOG_ERROR, + HAK_LOG3 (hak, HAK_LOG_IC | HAK_LOG_ERROR, "Error - wrong number of returns specified of a block %O - max expected %zd, requested %zd\n", op_blk, fblk_nrvars, req_nrvars); - hcl_seterrbfmt (hcl, HCL_ECALLRET, "wrong number of returns requested of function block - %zd expected at most, %zd requested", fblk_nrvars, req_nrvars); + hak_seterrbfmt (hak, HAK_ECALLRET, "wrong number of returns requested of function block - %zd expected at most, %zd requested", fblk_nrvars, req_nrvars); return -1; } /* create a new block context to clone op_blk */ - hcl_pushvolat (hcl, (hcl_oop_t*)&op_blk); - blkctx = make_context(hcl, fixed_nargs + fblk_nrvars + fblk_nlvars + excess_nargs); - hcl_popvolat (hcl); - if (HCL_UNLIKELY(!blkctx)) return -1; + hak_pushvolat (hak, (hak_oop_t*)&op_blk); + blkctx = make_context(hak, fixed_nargs + fblk_nrvars + fblk_nlvars + excess_nargs); + hak_popvolat (hak); + if (HAK_UNLIKELY(!blkctx)) return -1; #if 0 /* shallow-copy the named part including home, origin, etc. */ - for (i = 0; i < HCL_CONTEXT_NAMED_INSTVARS; i++) + for (i = 0; i < HAK_CONTEXT_NAMED_INSTVARS; i++) { - ((hcl_oop_oop_t)blkctx)->slot[i] = ((hcl_oop_oop_t)op_blk)->slot[i]; + ((hak_oop_oop_t)blkctx)->slot[i] = ((hak_oop_oop_t)op_blk)->slot[i]; } #else blkctx->ip = op_blk->ip; - blkctx->req_nrets = HCL_SMOOI_TO_OOP(req_nrvars); + blkctx->req_nrets = HAK_SMOOI_TO_OOP(req_nrvars); blkctx->attr_mask = op_blk->attr_mask; blkctx->base = op_blk->home->base; @@ -1962,52 +1962,52 @@ static int prepare_new_context (hcl_t* hcl, hcl_oop_block_t op_blk, hcl_ooi_t na /*blkctx->home = blkctx;*/ /* itself */ blkctx->home = op_blk->home; blkctx->mthhome = blkctx; - blkctx->receiver = HCL_STACK_GETRCV(hcl, nargs); - blkctx->ivaroff = HCL_SMOOI_TO_OOP(msg_ivaroff); + blkctx->receiver = HAK_STACK_GETRCV(hak, nargs); + blkctx->ivaroff = HAK_SMOOI_TO_OOP(msg_ivaroff); } else { blkctx->home = op_blk->home; - blkctx->mthhome = (hcl_oop_context_t)hcl->_nil; + blkctx->mthhome = (hak_oop_context_t)hak->_nil; blkctx->receiver = op_blk->home->receiver; #if 0 /* filled by make_context() already */ - blkctx->ivaroff = HCL_SMOOI_TO_OOP(0); /* not useful if it's not message send */ + blkctx->ivaroff = HAK_SMOOI_TO_OOP(0); /* not useful if it's not message send */ #endif } #endif - if (HCL_LIKELY(copy_args)) + if (HAK_LIKELY(copy_args)) { - hcl_ooi_t i, j; + hak_ooi_t i, j; /* copy the fixed arguments to the beginning of the variable part of the context block */ for (i = 0, j = nargs_offset; i < fixed_nargs; i++, j++) { - blkctx->slot[i] = HCL_STACK_GETARG(hcl, nargs, j); + blkctx->slot[i] = HAK_STACK_GETARG(hak, nargs, j); } /* variable arguments. place them behind after local variables. */ for (i = fixed_nargs + fblk_nrvars + fblk_nlvars ; j < nargs; i++, j++) { - blkctx->slot[i] = HCL_STACK_GETARG(hcl, nargs, j); + blkctx->slot[i] = HAK_STACK_GETARG(hak, nargs, j); } } - HCL_ASSERT (hcl, (hcl_oop_t)blkctx->home != hcl->_nil); /* if not intial context, the home must not be null */ - HCL_ASSERT (hcl, (hcl_oop_t)blkctx->sender == hcl->_nil); /* the sender is not set. the caller must set this if needed */ + HAK_ASSERT (hak, (hak_oop_t)blkctx->home != hak->_nil); /* if not intial context, the home must not be null */ + HAK_ASSERT (hak, (hak_oop_t)blkctx->sender == hak->_nil); /* the sender is not set. the caller must set this if needed */ *pnewctx = blkctx; return 0; } -static HCL_INLINE int __activate_block (hcl_t* hcl, hcl_oop_block_t op_blk, hcl_ooi_t nargs, hcl_ooi_t nrvars, int is_msgsend, hcl_ooi_t msg_ivaroff, hcl_oop_context_t* pnewctx) +static HAK_INLINE int __activate_block (hak_t* hak, hak_oop_block_t op_blk, hak_ooi_t nargs, hak_ooi_t nrvars, int is_msgsend, hak_ooi_t msg_ivaroff, hak_oop_context_t* pnewctx) { int x; - HCL_ASSERT (hcl, HCL_IS_COMPILED_BLOCK(hcl, op_blk)); + HAK_ASSERT (hak, HAK_IS_COMPILED_BLOCK(hak, op_blk)); x = prepare_new_context( - hcl, + hak, op_blk, nargs, /* nargs */ 0, /* nargs_offset */ @@ -2016,41 +2016,41 @@ static HCL_INLINE int __activate_block (hcl_t* hcl, hcl_oop_block_t op_blk, hcl_ is_msgsend, msg_ivaroff, pnewctx); - if (HCL_UNLIKELY(x <= -1)) return -1; + if (HAK_UNLIKELY(x <= -1)) return -1; - HCL_STACK_POPS (hcl, nargs + 2); /* pop arguments, called block/function/method, and receiver */ - (*pnewctx)->sender = hcl->active_context; + HAK_STACK_POPS (hak, nargs + 2); /* pop arguments, called block/function/method, and receiver */ + (*pnewctx)->sender = hak->active_context; return 0; } -static HCL_INLINE int activate_block (hcl_t* hcl, hcl_ooi_t nargs, hcl_ooi_t nrvars) +static HAK_INLINE int activate_block (hak_t* hak, hak_ooi_t nargs, hak_ooi_t nrvars) { - hcl_oop_block_t op_blk; - hcl_oop_context_t newctx; + hak_oop_block_t op_blk; + hak_oop_context_t newctx; int x; - op_blk = (hcl_oop_block_t)HCL_STACK_GETOP(hcl, nargs); - HCL_ASSERT (hcl, HCL_IS_COMPILED_BLOCK(hcl, op_blk)); + op_blk = (hak_oop_block_t)HAK_STACK_GETOP(hak, nargs); + HAK_ASSERT (hak, HAK_IS_COMPILED_BLOCK(hak, op_blk)); - x = __activate_block(hcl, op_blk, nargs, nrvars, 0, 0, &newctx); - if (HCL_UNLIKELY(x <= -1)) return -1; + x = __activate_block(hak, op_blk, nargs, nrvars, 0, 0, &newctx); + if (HAK_UNLIKELY(x <= -1)) return -1; - SWITCH_ACTIVE_CONTEXT (hcl, newctx); + SWITCH_ACTIVE_CONTEXT (hak, newctx); return 0; } /* ------------------------------------------------------------------------- */ -static int __activate_function (hcl_t* hcl, hcl_oop_function_t op_func, hcl_ooi_t nargs, hcl_oop_context_t* pnewctx) +static int __activate_function (hak_t* hak, hak_oop_function_t op_func, hak_ooi_t nargs, hak_oop_context_t* pnewctx) { /* prepare a new block context for activation */ - hcl_oop_context_t functx; - hcl_ooi_t i, j; - hcl_ooi_t attr_mask; - hcl_ooi_t nrvars, nlvars, fixed_nargs, actual_nargs, excess_nargs; - hcl_ooi_t nargs_offset = 0; + hak_oop_context_t functx; + hak_ooi_t i, j; + hak_ooi_t attr_mask; + hak_ooi_t nrvars, nlvars, fixed_nargs, actual_nargs, excess_nargs; + hak_ooi_t nargs_offset = 0; /* (defun sum (x) @@ -2059,9 +2059,9 @@ static int __activate_function (hcl_t* hcl, hcl_oop_function_t op_func, hcl_ooi_ (printf ">>>> %d\n" (sum 10)) */ - HCL_ASSERT (hcl, HCL_IS_FUNCTION(hcl, op_func)); + HAK_ASSERT (hak, HAK_IS_FUNCTION(hak, op_func)); - attr_mask = HCL_OOP_TO_SMOOI(op_func->attr_mask); + attr_mask = HAK_OOP_TO_SMOOI(op_func->attr_mask); nrvars = GET_BLK_MASK_NRVARS(attr_mask); nlvars = GET_BLK_MASK_NLVARS(attr_mask); fixed_nargs = GET_BLK_MASK_NARGS(attr_mask); @@ -2070,195 +2070,195 @@ static int __activate_function (hcl_t* hcl, hcl_oop_function_t op_func, hcl_ooi_ if (actual_nargs < fixed_nargs || (!GET_BLK_MASK_VA(attr_mask) && actual_nargs > fixed_nargs)) { - HCL_LOG3 (hcl, HCL_LOG_IC | HCL_LOG_ERROR, + HAK_LOG3 (hak, HAK_LOG_IC | HAK_LOG_ERROR, "Error - wrong number of arguments to a function %O - expecting %zd, got %zd\n", op_func, fixed_nargs, nargs); - hcl_seterrnum (hcl, HCL_ECALLARG); + hak_seterrnum (hak, HAK_ECALLARG); return -1; } /* create a new block context to clone op_func */ - hcl_pushvolat (hcl, (hcl_oop_t*)&op_func); - functx = make_context(hcl, fixed_nargs + nrvars + nlvars + excess_nargs); - hcl_popvolat (hcl); - if (HCL_UNLIKELY(!functx)) return -1; + hak_pushvolat (hak, (hak_oop_t*)&op_func); + functx = make_context(hak, fixed_nargs + nrvars + nlvars + excess_nargs); + hak_popvolat (hak); + if (HAK_UNLIKELY(!functx)) return -1; - functx->ip = HCL_SMOOI_TO_OOP(0); - functx->req_nrets = HCL_SMOOI_TO_OOP(1); + functx->ip = HAK_SMOOI_TO_OOP(0); + functx->req_nrets = HAK_SMOOI_TO_OOP(1); functx->attr_mask = op_func->attr_mask; functx->base = op_func; functx->home = op_func->home; - functx->receiver = HCL_STACK_GETRCV(hcl, nargs); + functx->receiver = HAK_STACK_GETRCV(hak, nargs); /* copy the fixed arguments to the beginning of the variable part of the context block */ for (i = 0, j = nargs_offset; i < fixed_nargs; i++, j++) { - functx->slot[i] = HCL_STACK_GETARG(hcl, nargs, j); + functx->slot[i] = HAK_STACK_GETARG(hak, nargs, j); } /* variable arguments. place them behind after local variables. */ for (i = fixed_nargs + nrvars + nlvars ; j < nargs; i++, j++) { - functx->slot[i] = HCL_STACK_GETARG(hcl, nargs, j); + functx->slot[i] = HAK_STACK_GETARG(hak, nargs, j); } - HCL_STACK_POPS (hcl, nargs + 2); /* pop arguments, called function/block/method, and receiver */ + HAK_STACK_POPS (hak, nargs + 2); /* pop arguments, called function/block/method, and receiver */ - HCL_ASSERT (hcl, (hcl_oop_t)functx->home != hcl->_nil); - functx->sender = hcl->active_context; + HAK_ASSERT (hak, (hak_oop_t)functx->home != hak->_nil); + functx->sender = hak->active_context; *pnewctx = functx; return 0; } -static HCL_INLINE int activate_function (hcl_t* hcl, hcl_ooi_t nargs) +static HAK_INLINE int activate_function (hak_t* hak, hak_ooi_t nargs) { int x; - hcl_oop_function_t op_func; - hcl_oop_context_t newctx; + hak_oop_function_t op_func; + hak_oop_context_t newctx; - op_func = (hcl_oop_function_t)HCL_STACK_GETOP(hcl, nargs); - HCL_ASSERT (hcl, HCL_IS_FUNCTION(hcl, op_func)); + op_func = (hak_oop_function_t)HAK_STACK_GETOP(hak, nargs); + HAK_ASSERT (hak, HAK_IS_FUNCTION(hak, op_func)); - x = __activate_function(hcl, op_func, nargs, &newctx); - if (HCL_UNLIKELY(x <= -1)) return -1; + x = __activate_function(hak, op_func, nargs, &newctx); + if (HAK_UNLIKELY(x <= -1)) return -1; - SWITCH_ACTIVE_CONTEXT (hcl, newctx); + SWITCH_ACTIVE_CONTEXT (hak, newctx); return 0; } /* ------------------------------------------------------------------------- */ -static HCL_INLINE int call_primitive (hcl_t* hcl, hcl_ooi_t nargs) +static HAK_INLINE int call_primitive (hak_t* hak, hak_ooi_t nargs) { - hcl_oop_prim_t rcv; + hak_oop_prim_t rcv; - rcv = (hcl_oop_prim_t)HCL_STACK_GETOP(hcl, nargs); - HCL_ASSERT (hcl, HCL_IS_PRIM(hcl, rcv)); - HCL_ASSERT (hcl, HCL_OBJ_GET_SIZE(rcv) == HCL_PRIM_NAMED_INSTVARS); + rcv = (hak_oop_prim_t)HAK_STACK_GETOP(hak, nargs); + HAK_ASSERT (hak, HAK_IS_PRIM(hak, rcv)); + HAK_ASSERT (hak, HAK_OBJ_GET_SIZE(rcv) == HAK_PRIM_NAMED_INSTVARS); if (nargs < rcv->min_nargs && nargs > rcv->max_nargs) { /* TODO: include a primitive name... */ - HCL_LOG3 (hcl, HCL_LOG_IC | HCL_LOG_ERROR, + HAK_LOG3 (hak, HAK_LOG_IC | HAK_LOG_ERROR, "Error - wrong number of arguments to a primitive - expecting %zd-%zd, got %zd\n", rcv->min_nargs, rcv->max_nargs, nargs); - hcl_seterrnum (hcl, HCL_ECALLARG); + hak_seterrnum (hak, HAK_ECALLARG); return -1; } - return ((hcl_pfimpl_t)rcv->impl)(hcl, (hcl_mod_t*)rcv->mod, nargs); + return ((hak_pfimpl_t)rcv->impl)(hak, (hak_mod_t*)rcv->mod, nargs); } /* ------------------------------------------------------------------------- */ -static hcl_oop_block_t find_imethod_in_class_noseterr (hcl_t* hcl, hcl_oop_class_t _class, hcl_oocs_t* name, hcl_ooi_t* ivaroff, hcl_oop_class_t* owner) +static hak_oop_block_t find_imethod_in_class_noseterr (hak_t* hak, hak_oop_class_t _class, hak_oocs_t* name, hak_ooi_t* ivaroff, hak_oop_class_t* owner) { - hcl_oop_t dic; + hak_oop_t dic; dic = _class->mdic; - HCL_ASSERT (hcl, HCL_IS_NIL(hcl, dic) || HCL_IS_DIC(hcl, dic)); + HAK_ASSERT (hak, HAK_IS_NIL(hak, dic) || HAK_IS_DIC(hak, dic)); - if (HCL_LIKELY(!HCL_IS_NIL(hcl, dic))) + if (HAK_LIKELY(!HAK_IS_NIL(hak, dic))) { - hcl_oop_cons_t ass; - ass = (hcl_oop_cons_t)hcl_lookupdicforsymbol_noseterr(hcl, (hcl_oop_dic_t)dic, name); - if (HCL_LIKELY(ass)) + hak_oop_cons_t ass; + ass = (hak_oop_cons_t)hak_lookupdicforsymbol_noseterr(hak, (hak_oop_dic_t)dic, name); + if (HAK_LIKELY(ass)) { - hcl_oop_t val; - val = HCL_CONS_CDR(ass); - HCL_ASSERT (hcl, HCL_IS_CONS(hcl, val)); - if (!HCL_IS_NIL(hcl, HCL_CONS_CDR(val))) + hak_oop_t val; + val = HAK_CONS_CDR(ass); + HAK_ASSERT (hak, HAK_IS_CONS(hak, val)); + if (!HAK_IS_NIL(hak, HAK_CONS_CDR(val))) { /* TODO: further check if it's a method block? */ *owner = _class; - *ivaroff = HCL_OOP_TO_SMOOI(_class->nivars_super); - return (hcl_oop_block_t)HCL_CONS_CDR(val); /* car - class method, cdr - instance method */ + *ivaroff = HAK_OOP_TO_SMOOI(_class->nivars_super); + return (hak_oop_block_t)HAK_CONS_CDR(val); /* car - class method, cdr - instance method */ } } } - return HCL_NULL; + return HAK_NULL; } -static hcl_oop_block_t find_imethod_noseterr (hcl_t* hcl, hcl_oop_class_t class_, hcl_oop_t op_name, int to_super, hcl_ooi_t* ivaroff, hcl_oop_class_t* owner) +static hak_oop_block_t find_imethod_noseterr (hak_t* hak, hak_oop_class_t class_, hak_oop_t op_name, int to_super, hak_ooi_t* ivaroff, hak_oop_class_t* owner) { - hcl_oocs_t name; + hak_oocs_t name; - HCL_ASSERT (hcl, HCL_IS_CLASS(hcl, class_)); - /*HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl, op_name));*/ - HCL_ASSERT (hcl, HCL_OBJ_IS_CHAR_POINTER(op_name)); + HAK_ASSERT (hak, HAK_IS_CLASS(hak, class_)); + /*HAK_ASSERT (hak, HAK_IS_SYMBOL(hak, op_name));*/ + HAK_ASSERT (hak, HAK_OBJ_IS_CHAR_POINTER(op_name)); - name.ptr = HCL_OBJ_GET_CHAR_SLOT(op_name); - name.len = HCL_OBJ_GET_SIZE(op_name); + name.ptr = HAK_OBJ_GET_CHAR_SLOT(op_name); + name.len = HAK_OBJ_GET_SIZE(op_name); if (to_super) { - class_ = (hcl_oop_class_t)class_->superclass; - if (!HCL_IS_CLASS(hcl, class_)) return HCL_NULL; + class_ = (hak_oop_class_t)class_->superclass; + if (!HAK_IS_CLASS(hak, class_)) return HAK_NULL; } do { - hcl_oop_block_t mth; - mth = find_imethod_in_class_noseterr(hcl, class_, &name, ivaroff, owner); + hak_oop_block_t mth; + mth = find_imethod_in_class_noseterr(hak, class_, &name, ivaroff, owner); if (mth) return mth; - class_ = (hcl_oop_class_t)class_->superclass; + class_ = (hak_oop_class_t)class_->superclass; } - while (HCL_IS_CLASS(hcl, class_)); + while (HAK_IS_CLASS(hak, class_)); - return HCL_NULL; + return HAK_NULL; } -static hcl_oop_block_t find_cmethod_noseterr (hcl_t* hcl, hcl_oop_class_t _class, hcl_oop_t op_name, int to_super, hcl_ooi_t* ivaroff, hcl_oop_class_t* owner) +static hak_oop_block_t find_cmethod_noseterr (hak_t* hak, hak_oop_class_t _class, hak_oop_t op_name, int to_super, hak_ooi_t* ivaroff, hak_oop_class_t* owner) { - hcl_oocs_t name; - hcl_oop_class_t xclass; + hak_oocs_t name; + hak_oop_class_t xclass; /* TODO: implement method cache */ - HCL_ASSERT (hcl, HCL_IS_CLASS(hcl, _class)); - /*HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl, op_name));*/ - HCL_ASSERT (hcl, HCL_OBJ_IS_CHAR_POINTER(op_name)); + HAK_ASSERT (hak, HAK_IS_CLASS(hak, _class)); + /*HAK_ASSERT (hak, HAK_IS_SYMBOL(hak, op_name));*/ + HAK_ASSERT (hak, HAK_OBJ_IS_CHAR_POINTER(op_name)); - name.ptr = HCL_OBJ_GET_CHAR_SLOT(op_name); - name.len = HCL_OBJ_GET_SIZE(op_name); + name.ptr = HAK_OBJ_GET_CHAR_SLOT(op_name); + name.len = HAK_OBJ_GET_SIZE(op_name); xclass = _class; if (to_super) { - xclass = (hcl_oop_class_t)xclass->superclass; - if (!HCL_IS_CLASS(hcl, xclass)) return HCL_NULL; + xclass = (hak_oop_class_t)xclass->superclass; + if (!HAK_IS_CLASS(hak, xclass)) return HAK_NULL; } do { - hcl_oop_t dic; + hak_oop_t dic; dic = xclass->mdic; - HCL_ASSERT (hcl, HCL_IS_NIL(hcl, dic) || HCL_IS_DIC(hcl, dic)); + HAK_ASSERT (hak, HAK_IS_NIL(hak, dic) || HAK_IS_DIC(hak, dic)); - if (HCL_LIKELY(!HCL_IS_NIL(hcl, dic))) + if (HAK_LIKELY(!HAK_IS_NIL(hak, dic))) { - hcl_oop_cons_t ass; - ass = (hcl_oop_cons_t)hcl_lookupdicforsymbol_noseterr(hcl, (hcl_oop_dic_t)dic, &name); - if (HCL_LIKELY(ass)) + hak_oop_cons_t ass; + ass = (hak_oop_cons_t)hak_lookupdicforsymbol_noseterr(hak, (hak_oop_dic_t)dic, &name); + if (HAK_LIKELY(ass)) { - hcl_oop_t val; - val = HCL_CONS_CDR(ass); - HCL_ASSERT (hcl, HCL_IS_CONS(hcl, val)); - if (!HCL_IS_NIL(hcl, HCL_CONS_CAR(val))) + hak_oop_t val; + val = HAK_CONS_CDR(ass); + HAK_ASSERT (hak, HAK_IS_CONS(hak, val)); + if (!HAK_IS_NIL(hak, HAK_CONS_CAR(val))) { /* TODO: further check if it's a method block? */ *owner = xclass; /* ivaroff isn't useful for a class method but is useful for class instatiation method * (INSTA bit on in the mask field) */ - *ivaroff = HCL_OOP_TO_SMOOI(xclass->nivars_super); - return (hcl_oop_block_t)HCL_CONS_CAR(val); /* car - class method, cdr - instance method */ + *ivaroff = HAK_OOP_TO_SMOOI(xclass->nivars_super); + return (hak_oop_block_t)HAK_CONS_CAR(val); /* car - class method, cdr - instance method */ } } } - xclass = (hcl_oop_class_t)xclass->superclass; + xclass = (hak_oop_class_t)xclass->superclass; } - while (HCL_IS_CLASS(hcl, xclass)); + while (HAK_IS_CLASS(hak, xclass)); /* If the following two lines are uncommented, the class method of Class must be explicitly defined * fun Class:name() {...} @@ -2267,141 +2267,141 @@ static hcl_oop_block_t find_cmethod_noseterr (hcl_t* hcl, hcl_oop_class_t _class * X:name * but Class itself can't call it as Class:name. This is possible only if 'fun Class::name()' is also * defined. - xclass = HCL_CLASSOF(hcl, _class); - if (xclass == _class) return HCL_NULL; + xclass = HAK_CLASSOF(hak, _class); + if (xclass == _class) return HAK_NULL; */ /* find the instance method of the Class class as a class is an instance of the Class class. */ /* TODO: may need to traverse up if Class is a subclass in some other Clss-related abstraction... */ - return find_imethod_in_class_noseterr(hcl, (hcl_oop_class_t)HCL_CLASSOF(hcl, _class), &name, ivaroff, owner); + return find_imethod_in_class_noseterr(hak, (hak_oop_class_t)HAK_CLASSOF(hak, _class), &name, ivaroff, owner); } -int hcl_class_responds_to (hcl_t* hcl, hcl_oop_t rcv, hcl_oop_t msg) +int hak_class_responds_to (hak_t* hak, hak_oop_t rcv, hak_oop_t msg) { - hcl_oop_block_t mth_blk; - hcl_oop_class_t owner; - hcl_ooi_t ivaroff; + hak_oop_block_t mth_blk; + hak_oop_class_t owner; + hak_ooi_t ivaroff; - HCL_ASSERT (hcl, HCL_IS_CLASS(hcl, rcv)); - mth_blk = find_cmethod_noseterr(hcl, (hcl_oop_class_t)rcv, msg, 0, &ivaroff, &owner); + HAK_ASSERT (hak, HAK_IS_CLASS(hak, rcv)); + mth_blk = find_cmethod_noseterr(hak, (hak_oop_class_t)rcv, msg, 0, &ivaroff, &owner); - return mth_blk != HCL_NULL; + return mth_blk != HAK_NULL; } -int hcl_inst_responds_to (hcl_t* hcl, hcl_oop_t rcv, hcl_oop_t msg) +int hak_inst_responds_to (hak_t* hak, hak_oop_t rcv, hak_oop_t msg) { - hcl_oop_block_t mth_blk; - hcl_oop_class_t _class, owner; - hcl_ooi_t ivaroff; + hak_oop_block_t mth_blk; + hak_oop_class_t _class, owner; + hak_ooi_t ivaroff; - _class = (hcl_oop_class_t)HCL_CLASSOF(hcl, rcv); - HCL_ASSERT (hcl, _class != HCL_NULL); - HCL_ASSERT (hcl, HCL_IS_CLASS(hcl, _class)); - mth_blk = find_imethod_noseterr(hcl, _class, msg, 0, &ivaroff, &owner); + _class = (hak_oop_class_t)HAK_CLASSOF(hak, rcv); + HAK_ASSERT (hak, _class != HAK_NULL); + HAK_ASSERT (hak, HAK_IS_CLASS(hak, _class)); + mth_blk = find_imethod_noseterr(hak, _class, msg, 0, &ivaroff, &owner); - return mth_blk != HCL_NULL; + return mth_blk != HAK_NULL; } -static HCL_INLINE int send_message (hcl_t* hcl, hcl_oop_t rcv, hcl_oop_t msg, int to_super, hcl_ooi_t nargs, hcl_ooi_t nrvars) +static HAK_INLINE int send_message (hak_t* hak, hak_oop_t rcv, hak_oop_t msg, int to_super, hak_ooi_t nargs, hak_ooi_t nrvars) { - hcl_oop_block_t mth_blk; - hcl_oop_context_t newctx; - hcl_oop_class_t _class, owner; - hcl_ooi_t ivaroff; + hak_oop_block_t mth_blk; + hak_oop_context_t newctx; + hak_oop_class_t _class, owner; + hak_ooi_t ivaroff; int x; - HCL_ASSERT (hcl, HCL_OBJ_IS_CHAR_POINTER(msg)); - /*HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl, msg));*/ + HAK_ASSERT (hak, HAK_OBJ_IS_CHAR_POINTER(msg)); + /*HAK_ASSERT (hak, HAK_IS_SYMBOL(hak, msg));*/ /* ============================= */ /* TODO: implement methods cache */ /* ============================= */ - if (HCL_IS_CLASS(hcl, rcv)) + if (HAK_IS_CLASS(hak, rcv)) { - _class = (hcl_oop_class_t)rcv; - mth_blk = find_cmethod_noseterr(hcl, _class, msg, to_super, &ivaroff, &owner); + _class = (hak_oop_class_t)rcv; + mth_blk = find_cmethod_noseterr(hak, _class, msg, to_super, &ivaroff, &owner); if (!mth_blk) goto msg_not_found; - if (GET_BLK_MASK_INSTA(HCL_OOP_TO_SMOOI(mth_blk->attr_mask))) + if (GET_BLK_MASK_INSTA(HAK_OOP_TO_SMOOI(mth_blk->attr_mask))) { - hcl_oop_t newrcv; + hak_oop_t newrcv; - hcl_pushvolat (hcl, (hcl_oop_t*)&mth_blk); - hcl_pushvolat (hcl, &msg); - hcl_pushvolat (hcl, &rcv); - newrcv = hcl_instantiate(hcl, (hcl_oop_class_t)_class, HCL_NULL, 0); - hcl_popvolats (hcl, 3); - if (HCL_UNLIKELY(!newrcv)) return -1; + hak_pushvolat (hak, (hak_oop_t*)&mth_blk); + hak_pushvolat (hak, &msg); + hak_pushvolat (hak, &rcv); + newrcv = hak_instantiate(hak, (hak_oop_class_t)_class, HAK_NULL, 0); + hak_popvolats (hak, 3); + if (HAK_UNLIKELY(!newrcv)) return -1; - HCL_STACK_SETRCV (hcl, nargs, newrcv); /* prepare_new_context() will take this as a receiver */ + HAK_STACK_SETRCV (hak, nargs, newrcv); /* prepare_new_context() will take this as a receiver */ } } else { - /*HCL_ASSERT (hcl, HCL_IS_INSTANCE(hcl, rcv));*/ - _class = (hcl_oop_class_t)HCL_CLASSOF(hcl, rcv); - HCL_ASSERT (hcl, _class != HCL_NULL); - HCL_ASSERT (hcl, HCL_IS_CLASS(hcl, _class)); - mth_blk = find_imethod_noseterr(hcl, _class, msg, to_super, &ivaroff, &owner); + /*HAK_ASSERT (hak, HAK_IS_INSTANCE(hak, rcv));*/ + _class = (hak_oop_class_t)HAK_CLASSOF(hak, rcv); + HAK_ASSERT (hak, _class != HAK_NULL); + HAK_ASSERT (hak, HAK_IS_CLASS(hak, _class)); + mth_blk = find_imethod_noseterr(hak, _class, msg, to_super, &ivaroff, &owner); if (!mth_blk) { msg_not_found: - hcl_seterrbfmt (hcl, HCL_ENOENT, "'%.*js' not found in %O", HCL_OBJ_GET_SIZE(msg), HCL_OBJ_GET_CHAR_SLOT(msg), _class); + hak_seterrbfmt (hak, HAK_ENOENT, "'%.*js' not found in %O", HAK_OBJ_GET_SIZE(msg), HAK_OBJ_GET_CHAR_SLOT(msg), _class); return -1; } } - x = __activate_block(hcl, mth_blk, nargs, nrvars, 1 /* is_msgsend */, ivaroff, &newctx); - if (HCL_UNLIKELY(x <= -1)) return -1; + x = __activate_block(hak, mth_blk, nargs, nrvars, 1 /* is_msgsend */, ivaroff, &newctx); + if (HAK_UNLIKELY(x <= -1)) return -1; /* update the method owner field of the new context created */ - newctx->owner = (hcl_oop_t)owner; + newctx->owner = (hak_oop_t)owner; - SWITCH_ACTIVE_CONTEXT (hcl, newctx); + SWITCH_ACTIVE_CONTEXT (hak, newctx); return 0; } /* ------------------------------------------------------------------------- */ -static HCL_INLINE int do_throw (hcl_t* hcl, hcl_oop_t val, hcl_ooi_t ip) +static HAK_INLINE int do_throw (hak_t* hak, hak_oop_t val, hak_ooi_t ip) { - hcl_oop_context_t catch_ctx; - hcl_ooi_t catch_ip, clsp, sp; + hak_oop_context_t catch_ctx; + hak_ooi_t catch_ip, clsp, sp; - if (HCL_EXSTACK_IS_EMPTY(hcl)) + if (HAK_EXSTACK_IS_EMPTY(hak)) { /* the exception stack is empty. * clear the class stack if it is not empty */ - while (!HCL_CLSTACK_IS_EMPTY(hcl)) HCL_CLSTACK_POP (hcl); + while (!HAK_CLSTACK_IS_EMPTY(hak)) HAK_CLSTACK_POP (hak); - if (hcl->active_function->dbgi != hcl->_nil) + if (hak->active_function->dbgi != hak->_nil) { - hcl_dbgi_t* dbgi; - hcl_loc_t loc; + hak_dbgi_t* dbgi; + hak_loc_t loc; - dbgi = (hcl_dbgi_t*)HCL_OBJ_GET_BYTE_SLOT(hcl->active_function->dbgi); - HCL_LOG3 (hcl, HCL_LOG_IC | HCL_LOG_WARN, "Warning - exception not handled %js:%zu - %O", (dbgi[ip].fname? dbgi[ip].fname: oocstr_dash), dbgi[ip].sline, val); - HCL_MEMSET (&loc, 0, HCL_SIZEOF(loc)); + dbgi = (hak_dbgi_t*)HAK_OBJ_GET_BYTE_SLOT(hak->active_function->dbgi); + HAK_LOG3 (hak, HAK_LOG_IC | HAK_LOG_WARN, "Warning - exception not handled %js:%zu - %O", (dbgi[ip].fname? dbgi[ip].fname: oocstr_dash), dbgi[ip].sline, val); + HAK_MEMSET (&loc, 0, HAK_SIZEOF(loc)); loc.file = dbgi[ip].fname; loc.line = dbgi[ip].sline; - hcl_seterrbfmtloc (hcl, HCL_EEXCEPT, &loc, "exception not handled - %O", val); + hak_seterrbfmtloc (hak, HAK_EEXCEPT, &loc, "exception not handled - %O", val); /* column number is not available */ } else { - HCL_LOG1 (hcl, HCL_LOG_IC | HCL_LOG_WARN, "Warning - exception not handled - %O", val); - hcl_seterrbfmt (hcl, HCL_EEXCEPT, "exception not handled - %O", val); + HAK_LOG1 (hak, HAK_LOG_IC | HAK_LOG_WARN, "Warning - exception not handled - %O", val); + hak_seterrbfmt (hak, HAK_EEXCEPT, "exception not handled - %O", val); } /* exception not handled. terminate the active process */ - /*terminate_process (hcl, hcl->processor->active); <- the vm cleanup code will do this */ + /*terminate_process (hak, hak->processor->active); <- the vm cleanup code will do this */ return -1; } /* pop the exception stack to get information to rewind context */ - HCL_EXSTACK_POP_TO (hcl, catch_ctx, catch_ip, clsp, sp); + HAK_EXSTACK_POP_TO (hak, catch_ctx, catch_ip, clsp, sp); /* discard unfinished class definitions for the exception thrown. * @@ -2413,48 +2413,48 @@ static HCL_INLINE int do_throw (hcl_t* hcl, hcl_oop_t val, hcl_ooi_t ip) * ) * 'throw' is triggered before the end of defintion of X is reached. */ - HCL_CLSTACK_CHOP (hcl, clsp); + HAK_CLSTACK_CHOP (hak, clsp); /* the below code is similar to do_return_from_block() */ - hcl->ip = -1; /* mark context dead. saved into hcl->active_context->ip in SWITCH_ACTIVE_CONTEXT */ - SWITCH_ACTIVE_CONTEXT (hcl, catch_ctx); - hcl->ip = catch_ip; /* override the instruction pointer */ + hak->ip = -1; /* mark context dead. saved into hak->active_context->ip in SWITCH_ACTIVE_CONTEXT */ + SWITCH_ACTIVE_CONTEXT (hak, catch_ctx); + hak->ip = catch_ip; /* override the instruction pointer */ - hcl->sp = sp; /* restore the stack pointer of the active process context */ + hak->sp = sp; /* restore the stack pointer of the active process context */ /* push the exception value to the stack */ - HCL_STACK_PUSH (hcl, val); + HAK_STACK_PUSH (hak, val); return 0; } /* ------------------------------------------------------------------------- */ -static void supplement_errmsg (hcl_t* hcl, hcl_ooi_t ip) +static void supplement_errmsg (hak_t* hak, hak_ooi_t ip) { - if (hcl->active_function->dbgi != hcl->_nil) + if (hak->active_function->dbgi != hak->_nil) { - hcl_dbgi_t* dbgi; - hcl_loc_t orgloc = hcl->errloc; - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_errnum_t orgnum = HCL_ERRNUM(hcl); + hak_dbgi_t* dbgi; + hak_loc_t orgloc = hak->errloc; + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_errnum_t orgnum = HAK_ERRNUM(hak); - HCL_ASSERT (hcl, HCL_IS_BYTEARRAY(hcl, hcl->active_function->dbgi)); - dbgi = (hcl_dbgi_t*)HCL_OBJ_GET_BYTE_SLOT(hcl->active_function->dbgi); + HAK_ASSERT (hak, HAK_IS_BYTEARRAY(hak, hak->active_function->dbgi)); + dbgi = (hak_dbgi_t*)HAK_OBJ_GET_BYTE_SLOT(hak->active_function->dbgi); - hcl_seterrbfmtloc (hcl, orgnum, &orgloc, "%js (%js:%zu)", orgmsg, + hak_seterrbfmtloc (hak, orgnum, &orgloc, "%js (%js:%zu)", orgmsg, (dbgi[ip].fname? dbgi[ip].fname: oocstr_dash), dbgi[ip].sline); /* no column info available */ } } -static int do_throw_with_internal_errmsg (hcl_t* hcl, hcl_ooi_t ip) +static int do_throw_with_internal_errmsg (hak_t* hak, hak_ooi_t ip) { - hcl_oop_t ex; + hak_oop_t ex; /* TODO: consider throwing an exception object instead of a string? */ - ex = hcl_makestring(hcl, hcl->errmsg.buf, hcl->errmsg.len); /* TODO: include error location in the message? */ - if (HCL_UNLIKELY(!ex)) return -1; - if (do_throw(hcl, ex, ip) <= -1) return -1; + ex = hak_makestring(hak, hak->errmsg.buf, hak->errmsg.len); /* TODO: include error location in the message? */ + if (HAK_UNLIKELY(!ex)) return -1; + if (do_throw(hak, ex, ip) <= -1) return -1; return 0; } @@ -2484,7 +2484,7 @@ static int is_regular_executable_file_by_me(const char *path) return S_ISREG(st.st_mode) && access(path, X_OK) == 0; /* use eaccess instead?? */ } -static char* find_exec (hcl_t* hcl, const char *name) +static char* find_exec (hak_t* hak, const char *name) { size_t lp, ln; char buf[PATH_MAX]; @@ -2534,36 +2534,36 @@ static char* find_exec (hcl_t* hcl, const char *name) done: - hcl_seterrbfmt (hcl, HCL_ENOENT, "callable %hs not found", name); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_ENOENT, "callable %hs not found", name); + return HAK_NULL; } -static HCL_INLINE int exec_syscmd (hcl_t* hcl, hcl_ooi_t nargs) +static HAK_INLINE int exec_syscmd (hak_t* hak, hak_ooi_t nargs) { - hcl_oop_word_t rcv; - hcl_bch_t* cmd = HCL_NULL; - hcl_bch_t* xcmd = HCL_NULL; + hak_oop_word_t rcv; + hak_bch_t* cmd = HAK_NULL; + hak_bch_t* xcmd = HAK_NULL; - rcv = (hcl_oop_word_t)HCL_STACK_GETOP(hcl, nargs); - /*HCL_ASSERT (hcl, HCL_IS_STRING(hcl, rcv) || HCL_IS_SYMBOL(hcl, rcv));*/ - HCL_ASSERT (hcl, HCL_OBJ_IS_CHAR_POINTER(rcv)); + rcv = (hak_oop_word_t)HAK_STACK_GETOP(hak, nargs); + /*HAK_ASSERT (hak, HAK_IS_STRING(hak, rcv) || HAK_IS_SYMBOL(hak, rcv));*/ + HAK_ASSERT (hak, HAK_OBJ_IS_CHAR_POINTER(rcv)); - if (HCL_OBJ_GET_SIZE(rcv) == 0 || hcl_count_oocstr(HCL_OBJ_GET_CHAR_SLOT(rcv)) != HCL_OBJ_GET_SIZE(rcv)) + if (HAK_OBJ_GET_SIZE(rcv) == 0 || hak_count_oocstr(HAK_OBJ_GET_CHAR_SLOT(rcv)) != HAK_OBJ_GET_SIZE(rcv)) { /* '\0' is contained in the middle */ - hcl_seterrbfmt (hcl, HCL_EINVAL, "invalid callable %O", rcv); + hak_seterrbfmt (hak, HAK_EINVAL, "invalid callable %O", rcv); goto oops; } - cmd = hcl_dupootobcstr(hcl, HCL_OBJ_GET_CHAR_SLOT(rcv), HCL_NULL); + cmd = hak_dupootobcstr(hak, HAK_OBJ_GET_CHAR_SLOT(rcv), HAK_NULL); if (!cmd) goto oops; - if (hcl_find_bchar_in_bcstr(cmd, '/')) + if (hak_find_bchar_in_bcstr(cmd, '/')) { if (!is_regular_executable_file_by_me(cmd)) { - hcl_seterrbfmt (hcl, HCL_ECALL, "cannot execute %O", rcv); + hak_seterrbfmt (hak, HAK_ECALL, "cannot execute %O", rcv); goto oops; } @@ -2571,7 +2571,7 @@ static HCL_INLINE int exec_syscmd (hcl_t* hcl, hcl_ooi_t nargs) } else { - xcmd = find_exec(hcl, cmd); + xcmd = find_exec(hak, cmd); if (!xcmd) goto oops; } @@ -2586,182 +2586,182 @@ static HCL_INLINE int exec_syscmd (hcl_t* hcl, hcl_ooi_t nargs) if (pid == 0) { - hcl_bch_t** argv; - hcl_ooi_t i; + hak_bch_t** argv; + hak_ooi_t i; /* TODO: close file descriptors??? */ - argv = (hcl_bch_t**)hcl_allocmem(hcl, (nargs + 2) * HCL_SIZEOF(*argv)); - if (HCL_LIKELY(argv)) + argv = (hak_bch_t**)hak_allocmem(hak, (nargs + 2) * HAK_SIZEOF(*argv)); + if (HAK_LIKELY(argv)) { argv[0] = cmd; -HCL_DEBUG1 (hcl, "NARG %d\n", (int)nargs); +HAK_DEBUG1 (hak, "NARG %d\n", (int)nargs); for (i = 0; i < nargs;) { - hcl_oop_t ta = HCL_STACK_GETARG(hcl, nargs, i); + hak_oop_t ta = HAK_STACK_GETARG(hak, nargs, i); /* TODO: check if an argument is a string or a symbol */ - if (HCL_OOP_IS_SMOOI(ta)) + if (HAK_OOP_IS_SMOOI(ta)) { /* TODO: rewrite this part */ - hcl_bch_t tmp[64]; - snprintf (tmp, sizeof(tmp), "%ld", (long int)HCL_OOP_TO_SMOOI(ta)); - argv[++i] = hcl_dupbchars(hcl, tmp, strlen(tmp)); + hak_bch_t tmp[64]; + snprintf (tmp, sizeof(tmp), "%ld", (long int)HAK_OOP_TO_SMOOI(ta)); + argv[++i] = hak_dupbchars(hak, tmp, strlen(tmp)); } else { - argv[++i] = hcl_dupootobchars(hcl, HCL_OBJ_GET_CHAR_SLOT(ta), HCL_OBJ_GET_SIZE(ta), HCL_NULL); + argv[++i] = hak_dupootobchars(hak, HAK_OBJ_GET_CHAR_SLOT(ta), HAK_OBJ_GET_SIZE(ta), HAK_NULL); } - /*HCL_DEBUG2 (hcl, "ARG %d -> %hs\n", (int)i - 1, argv[i]);*/ + /*HAK_DEBUG2 (hak, "ARG %d -> %hs\n", (int)i - 1, argv[i]);*/ } - argv[nargs + 1] = HCL_NULL; + argv[nargs + 1] = HAK_NULL; execvp (xcmd, argv); } - if (cmd) hcl_freemem (hcl, cmd); - if (xcmd && xcmd != cmd) hcl_freemem (hcl, xcmd); + if (cmd) hak_freemem (hak, cmd); + if (xcmd && xcmd != cmd) hak_freemem (hak, xcmd); _exit (255); } waitpid (pid, &status, 0); /* TOOD: enhance this waiting */ - HCL_STACK_SETRET (hcl, nargs, HCL_SMOOI_TO_OOP(WEXITSTATUS(status))); + HAK_STACK_SETRET (hak, nargs, HAK_SMOOI_TO_OOP(WEXITSTATUS(status))); } - hcl_freemem (hcl, cmd); - if (xcmd != cmd) hcl_freemem (hcl, xcmd); + hak_freemem (hak, cmd); + if (xcmd != cmd) hak_freemem (hak, xcmd); return 0; oops: - if (cmd) hcl_freemem (hcl, cmd); - if (xcmd && xcmd != cmd) hcl_freemem (hcl, xcmd); + if (cmd) hak_freemem (hak, cmd); + if (xcmd && xcmd != cmd) hak_freemem (hak, xcmd); return -1; } #endif /* ------------------------------------------------------------------------- */ -static hcl_oop_process_t start_initial_process (hcl_t* hcl, hcl_oop_context_t ctx) +static hak_oop_process_t start_initial_process (hak_t* hak, hak_oop_context_t ctx) { - hcl_oop_process_t proc; + hak_oop_process_t proc; /* there must be no active process when this function is called */ - HCL_ASSERT (hcl, hcl->processor->runnable.count == HCL_SMOOI_TO_OOP(0)); - HCL_ASSERT (hcl, hcl->processor->active == hcl->nil_process); + HAK_ASSERT (hak, hak->processor->runnable.count == HAK_SMOOI_TO_OOP(0)); + HAK_ASSERT (hak, hak->processor->active == hak->nil_process); - proc = make_process(hcl, ctx); - if (HCL_UNLIKELY(!proc)) return HCL_NULL; + proc = make_process(hak, ctx); + if (HAK_UNLIKELY(!proc)) return HAK_NULL; /* skip RUNNABLE and go to RUNNING */ - chain_into_processor(hcl, proc, HCL_PROCESS_STATE_RUNNING); - hcl->processor->active = proc; + chain_into_processor(hak, proc, HAK_PROCESS_STATE_RUNNING); + hak->processor->active = proc; /* do something that resume_process() would do with less overhead */ - HCL_ASSERT (hcl, (hcl_oop_t)proc->current_context != hcl->_nil); - HCL_ASSERT (hcl, proc->current_context == proc->initial_context); - SWITCH_ACTIVE_CONTEXT (hcl, proc->current_context); + HAK_ASSERT (hak, (hak_oop_t)proc->current_context != hak->_nil); + HAK_ASSERT (hak, proc->current_context == proc->initial_context); + SWITCH_ACTIVE_CONTEXT (hak, proc->current_context); return proc; } -static int start_initial_process_and_context (hcl_t* hcl, hcl_ooi_t initial_ip, hcl_ooi_t nlvars) +static int start_initial_process_and_context (hak_t* hak, hak_ooi_t initial_ip, hak_ooi_t nlvars) { - hcl_oop_context_t ctx; - hcl_oop_process_t proc; - hcl_ooi_t attr_mask; + hak_oop_context_t ctx; + hak_oop_process_t proc; + hak_ooi_t attr_mask; attr_mask = ENCODE_BLK_MASK(0, 0, 0, 0, nlvars); /* create the initial context over the initial function */ - ctx = make_context(hcl, nlvars); - if (HCL_UNLIKELY(!ctx)) return -1; + ctx = make_context(hak, nlvars); + if (HAK_UNLIKELY(!ctx)) return -1; - hcl->ip = initial_ip; - hcl->sp = -1; + hak->ip = initial_ip; + hak->sp = -1; - ctx->ip = HCL_SMOOI_TO_OOP(initial_ip); - ctx->req_nrets = HCL_SMOOI_TO_OOP(1); - ctx->attr_mask = HCL_SMOOI_TO_OOP(attr_mask); - ctx->home = hcl->initial_function->home; /* this should be nil */ - ctx->sender = (hcl_oop_context_t)hcl->_nil; /* the initial context has nil in the sender field */ - ctx->base = hcl->initial_function; - ctx->receiver = hcl->_nil; /* TODO: change this? keep this in sync with the dummy receiver used in the call instruction generated for xlist */ - HCL_ASSERT (hcl, (hcl_oop_t)ctx->home == hcl->_nil); + ctx->ip = HAK_SMOOI_TO_OOP(initial_ip); + ctx->req_nrets = HAK_SMOOI_TO_OOP(1); + ctx->attr_mask = HAK_SMOOI_TO_OOP(attr_mask); + ctx->home = hak->initial_function->home; /* this should be nil */ + ctx->sender = (hak_oop_context_t)hak->_nil; /* the initial context has nil in the sender field */ + ctx->base = hak->initial_function; + ctx->receiver = hak->_nil; /* TODO: change this? keep this in sync with the dummy receiver used in the call instruction generated for xlist */ + HAK_ASSERT (hak, (hak_oop_t)ctx->home == hak->_nil); /* [NOTE] * the sender field of the initial context is nil. * especially, the fact that the sender field is nil is used by * the main execution loop for breaking out of the loop */ - HCL_ASSERT (hcl, hcl->active_context == HCL_NULL); + HAK_ASSERT (hak, hak->active_context == HAK_NULL); - /* hcl_gc() uses hcl->processor when hcl->active_context - * is not NULL. at this poinst, hcl->processor should point to + /* hak_gc() uses hak->processor when hak->active_context + * is not NULL. at this poinst, hak->processor should point to * an instance of ProcessScheduler. */ - HCL_ASSERT (hcl, (hcl_oop_t)hcl->processor != hcl->_nil); - HCL_ASSERT (hcl, hcl->processor->runnable.count == HCL_SMOOI_TO_OOP(0)); + HAK_ASSERT (hak, (hak_oop_t)hak->processor != hak->_nil); + HAK_ASSERT (hak, hak->processor->runnable.count == HAK_SMOOI_TO_OOP(0)); /* start_initial_process() calls the SWITCH_ACTIVE_CONTEXT() macro. - * the macro assumes a non-null value in hcl->active_context. + * the macro assumes a non-null value in hak->active_context. * let's force set active_context to ctx directly. */ - hcl->active_context = ctx; + hak->active_context = ctx; - hcl_pushvolat (hcl, (hcl_oop_t*)&ctx); - proc = start_initial_process(hcl, ctx); - hcl_popvolat (hcl); - if (HCL_UNLIKELY(!proc)) return -1; + hak_pushvolat (hak, (hak_oop_t*)&ctx); + proc = start_initial_process(hak, ctx); + hak_popvolat (hak); + if (HAK_UNLIKELY(!proc)) return -1; /* the stack must contain nothing as it should emulate the expresssion - (the-initial-function). * for a normal function call, the function object and arguments are pushed by the caller. * __activate_function() creates a new context and pops the function object and arguments off the stack. * at this point, it should be as if the pop-off has been completed. * because this is the very beginning, nothing should exist in the stack */ - HCL_ASSERT (hcl, hcl->sp == -1); - HCL_ASSERT (hcl, hcl->sp == HCL_OOP_TO_SMOOI(proc->sp)); + HAK_ASSERT (hak, hak->sp == -1); + HAK_ASSERT (hak, hak->sp == HAK_OOP_TO_SMOOI(proc->sp)); - HCL_ASSERT (hcl, proc == hcl->processor->active); - hcl->initial_context = proc->initial_context; - HCL_ASSERT (hcl, hcl->initial_context == hcl->active_context); + HAK_ASSERT (hak, proc == hak->processor->active); + hak->initial_context = proc->initial_context; + HAK_ASSERT (hak, hak->initial_context == hak->active_context); return 0; } /* ------------------------------------------------------------------------- */ -static HCL_INLINE int switch_process_if_needed (hcl_t* hcl) +static HAK_INLINE int switch_process_if_needed (hak_t* hak) { - if (hcl->sem_heap_count > 0) + if (hak->sem_heap_count > 0) { /* handle timed semaphores */ - hcl_ntime_t ft, now; + hak_ntime_t ft, now; - vm_gettime (hcl, &now); + vm_gettime (hak, &now); do { - HCL_ASSERT (hcl, hcl->sem_heap[0]->subtype == HCL_SMOOI_TO_OOP(HCL_SEMAPHORE_SUBTYPE_TIMED)); - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(hcl->sem_heap[0]->u.timed.ftime_sec)); - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(hcl->sem_heap[0]->u.timed.ftime_nsec)); + HAK_ASSERT (hak, hak->sem_heap[0]->subtype == HAK_SMOOI_TO_OOP(HAK_SEMAPHORE_SUBTYPE_TIMED)); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(hak->sem_heap[0]->u.timed.ftime_sec)); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(hak->sem_heap[0]->u.timed.ftime_nsec)); - HCL_INIT_NTIME (&ft, - HCL_OOP_TO_SMOOI(hcl->sem_heap[0]->u.timed.ftime_sec), - HCL_OOP_TO_SMOOI(hcl->sem_heap[0]->u.timed.ftime_nsec) + HAK_INIT_NTIME (&ft, + HAK_OOP_TO_SMOOI(hak->sem_heap[0]->u.timed.ftime_sec), + HAK_OOP_TO_SMOOI(hak->sem_heap[0]->u.timed.ftime_nsec) ); - if (HCL_CMP_NTIME(&ft, (hcl_ntime_t*)&now) <= 0) + if (HAK_CMP_NTIME(&ft, (hak_ntime_t*)&now) <= 0) { - hcl_oop_process_t proc; + hak_oop_process_t proc; signal_timed: /* waited long enough. signal the semaphore */ - proc = signal_semaphore(hcl, hcl->sem_heap[0]); - /* [NOTE] no hcl_pushvolat() on proc. no GC must occur + proc = signal_semaphore(hak, hak->sem_heap[0]); + /* [NOTE] no hak_pushvolat() on proc. no GC must occur * in the following line until it's used for * wake_process() below. */ - delete_from_sem_heap (hcl, 0); /* hcl->sem_heap_count is decremented in delete_from_sem_heap() */ + delete_from_sem_heap (hak, 0); /* hak->sem_heap_count is decremented in delete_from_sem_heap() */ /* if no process is waiting on the semaphore, - * signal_semaphore() returns hcl->_nil. */ + * signal_semaphore() returns hak->_nil. */ - if (hcl->processor->active == hcl->nil_process && (hcl_oop_t)proc != hcl->_nil) + if (hak->processor->active == hak->nil_process && (hak_oop_t)proc != hak->_nil) { /* this is the only runnable process. * switch the process to the running state. @@ -2769,29 +2769,29 @@ static HCL_INLINE int switch_process_if_needed (hcl_t* hcl) * switch_to_process() as there is no running * process at this moment */ - #if defined(HCL_DEBUG_VM_PROCESSOR) && (HCL_DEBUG_VM_PROCESSOR >= 2) - HCL_LOG2 (hcl, HCL_LOG_IC | HCL_LOG_DEBUG, "Processor - switching to a process[%zd] while no process is active - total runnables %zd\n", HCL_OOP_TO_SMOOI(proc->id), HCL_OOP_TO_SMOOI(hcl->processor->runnable.count)); + #if defined(HAK_DEBUG_VM_PROCESSOR) && (HAK_DEBUG_VM_PROCESSOR >= 2) + HAK_LOG2 (hak, HAK_LOG_IC | HAK_LOG_DEBUG, "Processor - switching to a process[%zd] while no process is active - total runnables %zd\n", HAK_OOP_TO_SMOOI(proc->id), HAK_OOP_TO_SMOOI(hak->processor->runnable.count)); #endif - HCL_ASSERT (hcl, proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_RUNNABLE)); - HCL_ASSERT (hcl, proc == hcl->processor->runnable.last); /* resume_process() appends to the runnable list */ + HAK_ASSERT (hak, proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_RUNNABLE)); + HAK_ASSERT (hak, proc == hak->processor->runnable.last); /* resume_process() appends to the runnable list */ #if 0 - wake_process (hcl, proc); /* switch to running */ - hcl->proc_switched = 1; + wake_process (hak, proc); /* switch to running */ + hak->proc_switched = 1; #else - switch_to_process_from_nil (hcl, proc); + switch_to_process_from_nil (hak, proc); #endif } } - else if (hcl->processor->active == hcl->nil_process) + else if (hak->processor->active == hak->nil_process) { /* no running process. before firing time. */ - HCL_SUB_NTIME (&ft, &ft, (hcl_ntime_t*)&now); + HAK_SUB_NTIME (&ft, &ft, (hak_ntime_t*)&now); - if (hcl->sem_io_wait_count > 0) + if (hak->sem_io_wait_count > 0) { /* no running process but io semaphore being waited on */ - vm_muxwait (hcl, &ft); + vm_muxwait (hak, &ft); /* exit early if a process has been woken up. * the break in the else part further down will get hit @@ -2799,7 +2799,7 @@ static HCL_INLINE int switch_process_if_needed (hcl_t* hcl) * having the following line causes to skip firing the * timed semaphore that would expire between now and the * moment the next inspection occurs. */ - if (hcl->processor->active != hcl->nil_process) goto switch_to_next; + if (hak->processor->active != hak->nil_process) goto switch_to_next; } else { @@ -2807,17 +2807,17 @@ static HCL_INLINE int switch_process_if_needed (hcl_t* hcl) #if defined(ENABLE_GCFIN) /* no running process, no io semaphore */ - if ((hcl_oop_t)hcl->sem_gcfin != hcl->_nil && hcl->sem_gcfin_sigreq) goto signal_sem_gcfin; + if ((hak_oop_t)hak->sem_gcfin != hak->_nil && hak->sem_gcfin_sigreq) goto signal_sem_gcfin; #endif - halting = vm_sleep(hcl, &ft); + halting = vm_sleep(hak, &ft); if (halting) { - vm_gettime (hcl, &now); + vm_gettime (hak, &now); goto signal_timed; } } - vm_gettime (hcl, &now); + vm_gettime (hak, &now); } else { @@ -2825,36 +2825,36 @@ static HCL_INLINE int switch_process_if_needed (hcl_t* hcl) break; } } - while (hcl->sem_heap_count > 0 && !hcl->abort_req); + while (hak->sem_heap_count > 0 && !hak->abort_req); } - if (hcl->sem_io_wait_count > 0) + if (hak->sem_io_wait_count > 0) { - if (hcl->processor->active == hcl->nil_process) + if (hak->processor->active == hak->nil_process) { - hcl_ntime_t ft; + hak_ntime_t ft; - HCL_ASSERT (hcl, hcl->processor->runnable.count == HCL_SMOOI_TO_OOP(0)); + HAK_ASSERT (hak, hak->processor->runnable.count == HAK_SMOOI_TO_OOP(0)); /* no running process while there is an io semaphore being waited for */ #if defined(ENABLE_GCFIN) - if ((hcl_oop_t)hcl->sem_gcfin != hcl->_nil && hcl->sem_gcfin_sigreq) goto signal_sem_gcfin; + if ((hak_oop_t)hak->sem_gcfin != hak->_nil && hak->sem_gcfin_sigreq) goto signal_sem_gcfin; #endif - if (hcl->processor->suspended.count == HCL_SMOOI_TO_OOP(0)) + if (hak->processor->suspended.count == HAK_SMOOI_TO_OOP(0)) { /* no suspended process. the program is buggy or is probably being terminated forcibly. * the default signal handler may lead to this situation. */ - hcl->abort_req = 1; + hak->abort_req = 1; } else { do { - HCL_INIT_NTIME (&ft, 3, 0); /* TODO: use a configured time */ - vm_muxwait (hcl, &ft); + HAK_INIT_NTIME (&ft, 3, 0); /* TODO: use a configured time */ + vm_muxwait (hak, &ft); } - while (hcl->processor->active == hcl->nil_process && !hcl->abort_req); + while (hak->processor->active == hak->nil_process && !hak->abort_req); } } else @@ -2867,39 +2867,39 @@ static HCL_INLINE int switch_process_if_needed (hcl_t* hcl) * because this is called everytime process switching is requested. * the actual callback implementation should try to avoid invoking * actual system calls too frequently for less overhead. */ - vm_muxwait (hcl, HCL_NULL); + vm_muxwait (hak, HAK_NULL); } } #if defined(ENABLE_GCFIN) - if ((hcl_oop_t)hcl->sem_gcfin != hcl->_nil) + if ((hak_oop_t)hak->sem_gcfin != hak->_nil) { - hcl_oop_process_t proc; + hak_oop_process_t proc; - if (hcl->sem_gcfin_sigreq) + if (hak->sem_gcfin_sigreq) { signal_sem_gcfin: - HCL_LOG0 (hcl, HCL_LOG_IC | HCL_LOG_DEBUG, "Signaled GCFIN semaphore\n"); - proc = signal_semaphore(hcl, hcl->sem_gcfin); + HAK_LOG0 (hak, HAK_LOG_IC | HAK_LOG_DEBUG, "Signaled GCFIN semaphore\n"); + proc = signal_semaphore(hak, hak->sem_gcfin); - if (hcl->processor->active == hcl->nil_process && (hcl_oop_t)proc != hcl->_nil) + if (hak->processor->active == hak->nil_process && (hak_oop_t)proc != hak->_nil) { - HCL_ASSERT (hcl, proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_RUNNABLE)); - HCL_ASSERT (hcl, proc == hcl->processor->runnable.first); - switch_to_process_from_nil (hcl, proc); + HAK_ASSERT (hak, proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_RUNNABLE)); + HAK_ASSERT (hak, proc == hak->processor->runnable.first); + switch_to_process_from_nil (hak, proc); } - hcl->sem_gcfin_sigreq = 0; + hak->sem_gcfin_sigreq = 0; } else { /* the gcfin semaphore signalling is not requested and there are * no runnable processes nor no waiting semaphores. if there is * process waiting on the gcfin semaphore, i will just schedule - * it to run by calling signal_semaphore() on hcl->sem_gcfin. + * it to run by calling signal_semaphore() on hak->sem_gcfin. */ /* TODO: check if this is the best implementation practice */ - if (hcl->processor->active == hcl->nil_process) + if (hak->processor->active == hak->nil_process) { /* there is no active process. in most cases, the only process left * should be the gc finalizer process started in the System>>startup. @@ -2919,19 +2919,19 @@ static HCL_INLINE int switch_process_if_needed (hcl_t* hcl) * to schedule. */ - HCL_LOG4 (hcl, HCL_LOG_IC | HCL_LOG_DEBUG, + HAK_LOG4 (hak, HAK_LOG_IC | HAK_LOG_DEBUG, "Signaled GCFIN semaphore without gcfin signal request - total %zd runnable/running %zd suspended %zd - sem_io_wait_count %zu\n", - HCL_OOP_TO_SMOOI(hcl->processor->total_count), - HCL_OOP_TO_SMOOI(hcl->processor->runnable.count), - HCL_OOP_TO_SMOOI(hcl->processor->suspended.count), - hcl->sem_io_wait_count); - proc = signal_semaphore(hcl, hcl->sem_gcfin); - if ((hcl_oop_t)proc != hcl->_nil) + HAK_OOP_TO_SMOOI(hak->processor->total_count), + HAK_OOP_TO_SMOOI(hak->processor->runnable.count), + HAK_OOP_TO_SMOOI(hak->processor->suspended.count), + hak->sem_io_wait_count); + proc = signal_semaphore(hak, hak->sem_gcfin); + if ((hak_oop_t)proc != hak->_nil) { - HCL_ASSERT (hcl, proc->state == HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_RUNNABLE)); - HCL_ASSERT (hcl, proc == hcl->processor->runnable.first); - hcl->_system->cvar[2] = hcl->_true; /* set gcfin_should_exit in System to true. if the postion of the class variable changes, the index must get changed, too. */ - switch_to_process_from_nil (hcl, proc); /* sechedule the gc finalizer process */ + HAK_ASSERT (hak, proc->state == HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_RUNNABLE)); + HAK_ASSERT (hak, proc == hak->processor->runnable.first); + hak->_system->cvar[2] = hak->_true; /* set gcfin_should_exit in System to true. if the postion of the class variable changes, the index must get changed, too. */ + switch_to_process_from_nil (hak, proc); /* sechedule the gc finalizer process */ } } } @@ -2940,12 +2940,12 @@ static HCL_INLINE int switch_process_if_needed (hcl_t* hcl) #if 0 - while (hcl->sem_list_count > 0) + while (hak->sem_list_count > 0) { /* handle async signals */ - --hcl->sem_list_count; - signal_semaphore (hcl, hcl->sem_list[hcl->sem_list_count]); - if (hcl->processor->active == hcl->nil_process) + --hak->sem_list_count; + signal_semaphore (hak, hak->sem_list[hak->sem_list_count]); + if (hak->processor->active == hak->nil_process) {suspended process } } @@ -2956,38 +2956,38 @@ static HCL_INLINE int switch_process_if_needed (hcl_t* hcl) }*/ #endif - if (hcl->processor->active == hcl->nil_process) + if (hak->processor->active == hak->nil_process) { /* no more waiting semaphore and no more process */ - HCL_ASSERT (hcl, hcl->processor->runnable.count = HCL_SMOOI_TO_OOP(0)); - HCL_LOG0 (hcl, HCL_LOG_IC | HCL_LOG_DEBUG, "No more runnable process\n"); + HAK_ASSERT (hak, hak->processor->runnable.count = HAK_SMOOI_TO_OOP(0)); + HAK_LOG0 (hak, HAK_LOG_IC | HAK_LOG_DEBUG, "No more runnable process\n"); - if (HCL_OOP_TO_SMOOI(hcl->processor->suspended.count) > 0) + if (HAK_OOP_TO_SMOOI(hak->processor->suspended.count) > 0) { /* there exist suspended processes while no processes are runnable. * most likely, the running program contains process/semaphore related bugs */ - HCL_LOG1 (hcl, HCL_LOG_IC | HCL_LOG_WARN, + HAK_LOG1 (hak, HAK_LOG_IC | HAK_LOG_WARN, "Warning - %zd suspended process(es) found in process switcher - check your program\n", - HCL_OOP_TO_SMOOI(hcl->processor->suspended.count)); + HAK_OOP_TO_SMOOI(hak->processor->suspended.count)); } return 0; } switch_to_next: /* TODO: implement different process switching scheme - time-slice or clock based??? */ -#if defined(HCL_EXTERNAL_PROCESS_SWITCH) - if (hcl->switch_proc) +#if defined(HAK_EXTERNAL_PROCESS_SWITCH) + if (hak->switch_proc) { #endif - if (!hcl->proc_switched) + if (!hak->proc_switched) { - switch_to_next_runnable_process (hcl); - hcl->proc_switched = 0; + switch_to_next_runnable_process (hak); + hak->proc_switched = 0; } -#if defined(HCL_EXTERNAL_PROCESS_SWITCH) - hcl->switch_proc = 0; +#if defined(HAK_EXTERNAL_PROCESS_SWITCH) + hak->switch_proc = 0; } - else hcl->proc_switched = 0; + else hak->proc_switched = 0; #endif return 1; @@ -2995,18 +2995,18 @@ switch_to_next: /* ------------------------------------------------------------------------- */ -static HCL_INLINE int do_return_from_block (hcl_t* hcl) +static HAK_INLINE int do_return_from_block (hak_t* hak) { - /*if (hcl->active_context == hcl->processor->active->initial_context)*/ - if ((hcl_oop_t)hcl->active_context->home == hcl->_nil) + /*if (hak->active_context == hak->processor->active->initial_context)*/ + if ((hak_oop_t)hak->active_context->home == hak->_nil) { /* the active context to return from is an initial context of * the active process. let's terminate the process. * the initial context has been forged over the initial function * in start_initial_process_and_context() */ - HCL_ASSERT (hcl, (hcl_oop_t)hcl->active_context->sender == hcl->_nil); - hcl->active_context->ip = HCL_SMOOI_TO_OOP(-1); /* mark context dead */ - terminate_process (hcl, hcl->processor->active); + HAK_ASSERT (hak, (hak_oop_t)hak->active_context->sender == hak->_nil); + hak->active_context->ip = HAK_SMOOI_TO_OOP(-1); /* mark context dead */ + terminate_process (hak, hak->processor->active); return 1; /* indiate process termination */ } else @@ -3075,47 +3075,47 @@ static HCL_INLINE int do_return_from_block (hcl_t* hcl) * class stack and exception stack. */ - HCL_ASSERT (hcl, (hcl_oop_t)hcl->active_context->sender != hcl->_nil); - if (HCL_UNLIKELY(hcl->active_context->sender->ip == HCL_SMOOI_TO_OOP(-1))) + HAK_ASSERT (hak, (hak_oop_t)hak->active_context->sender != hak->_nil); + if (HAK_UNLIKELY(hak->active_context->sender->ip == HAK_SMOOI_TO_OOP(-1))) { - HCL_LOG0 (hcl, HCL_LOG_IC | HCL_LOG_ERROR, "Error - cannot return to dead context\n"); - hcl_seterrbfmt (hcl, HCL_EINTERN, "unable to return to dead context"); /* TODO: can i make this error catchable at the hcl level? */ + HAK_LOG0 (hak, HAK_LOG_IC | HAK_LOG_ERROR, "Error - cannot return to dead context\n"); + hak_seterrbfmt (hak, HAK_EINTERN, "unable to return to dead context"); /* TODO: can i make this error catchable at the hak level? */ return -1; } /* it is a normal block return as the active block context * is not the initial context of a process */ - hcl->ip = -1; /* mark context dead. saved into hcl->active_context->ip in SWITCH_ACTIVE_CONTEXT */ - SWITCH_ACTIVE_CONTEXT (hcl, (hcl_oop_context_t)hcl->active_context->sender); + hak->ip = -1; /* mark context dead. saved into hak->active_context->ip in SWITCH_ACTIVE_CONTEXT */ + SWITCH_ACTIVE_CONTEXT (hak, (hak_oop_context_t)hak->active_context->sender); return 0; /* normal return */ } } -static HCL_INLINE int do_return_from_home (hcl_t* hcl, hcl_oop_t return_value, hcl_ooi_t ip) +static HAK_INLINE int do_return_from_home (hak_t* hak, hak_oop_t return_value, hak_ooi_t ip) { #if 0 - /* if (hcl->active_context == hcl->processor->active->initial_context) // read the interactive mode note below... */ - if ((hcl_oop_t)hcl->active_context->home == hcl->_nil) + /* if (hak->active_context == hak->processor->active->initial_context) // read the interactive mode note below... */ + if ((hak_oop_t)hak->active_context->home == hak->_nil) { /* returning from the intial context. * (return-from-home 999) * the return-from-home is executed in the initial context */ - HCL_ASSERT (hcl, (hcl_oop_t)hcl->active_context->sender == hcl->_nil); - hcl->active_context->ip = HCL_SMOOI_TO_OOP(-1); /* mark the active context dead */ + HAK_ASSERT (hak, (hak_oop_t)hak->active_context->sender == hak->_nil); + hak->active_context->ip = HAK_SMOOI_TO_OOP(-1); /* mark the active context dead */ - if (hcl->sp >= 0) + if (hak->sp >= 0) { /* return-from-home has been called from where it shouldn't be. for instance, * (printf "xxx %d\n" (return-from-home 999)) * ----------------------------------------------- * (if (> 19 (return-from-home 20)) 30) */ - HCL_LOG1 (hcl, HCL_LOG_IC | HCL_LOG_WARN, "Warning - stack not empty on return-from-home - SP %zd\n", hcl->sp); /* TODO: include line number and file name */ + HAK_LOG1 (hak, HAK_LOG_IC | HAK_LOG_WARN, "Warning - stack not empty on return-from-home - SP %zd\n", hak->sp); /* TODO: include line number and file name */ } - terminate_process (hcl, hcl->processor->active); + terminate_process (hak, hak->processor->active); } - /*else if (hcl->active_context->home == hcl->processor->active->initial_context) // read the interactive mode note below...*/ - else if ((hcl_oop_t)hcl->active_context->home->home == hcl->_nil) + /*else if (hak->active_context->home == hak->processor->active->initial_context) // read the interactive mode note below...*/ + else if ((hak_oop_t)hak->active_context->home->home == hak->_nil) { /* non-local return out of the initial context * (defun y(x) (return-from-home (* x x))) @@ -3124,26 +3124,26 @@ static HCL_INLINE int do_return_from_home (hcl_t* hcl, hcl_oop_t return_value, h /* [NOTE] * in the interactive mode, a new initial context/function/process is created * for each expression (as implemented bin/main.c) - * hcl->active_context may be the intial context of the previous expression. + * hak->active_context may be the intial context of the previous expression. * (defun y(x) (return-from-home (* x x))) <-- initial context * (y 999) <- another initial context * when y is called from the second initial context, the home context to return - * from the the first initial context. comparing hcl->active_context->home against - * hcl->initial_context doesn't return true in this case. + * from the the first initial context. comparing hak->active_context->home against + * hak->initial_context doesn't return true in this case. */ - HCL_ASSERT (hcl, (hcl_oop_t)hcl->active_context->home->sender == hcl->_nil); - hcl->active_context->home->ip = HCL_SMOOI_TO_OOP(-1); /* mark that the home context has returned */ + HAK_ASSERT (hak, (hak_oop_t)hak->active_context->home->sender == hak->_nil); + hak->active_context->home->ip = HAK_SMOOI_TO_OOP(-1); /* mark that the home context has returned */ - if (hcl->sp >= 0) + if (hak->sp >= 0) { /* return-from-home has been called from where it shouldn't be * (defun y(x) (return-from-home (* x x))) * (printf "xxx %d\n" (y 999)) */ - HCL_LOG1 (hcl, HCL_LOG_IC | HCL_LOG_WARN, "Warning - stack not empty on non-local return-from-home - SP %zd\n", hcl->sp); /* TODO: include line number and file name */ + HAK_LOG1 (hak, HAK_LOG_IC | HAK_LOG_WARN, "Warning - stack not empty on non-local return-from-home - SP %zd\n", hak->sp); /* TODO: include line number and file name */ } - terminate_process (hcl, hcl->processor->active); + terminate_process (hak, hak->processor->active); } else { @@ -3156,31 +3156,31 @@ static HCL_INLINE int do_return_from_home (hcl_t* hcl, hcl_oop_t return_value, h (printf "%d\n" (f 90)) ; this should print 8100. (y 10); this ends up with the "unable to return from dead context" error. */ - HCL_ASSERT (hcl, hcl->active_context != hcl->processor->active->initial_context); - HCL_ASSERT (hcl, (hcl_oop_t)hcl->active_context->home->sender != hcl->_nil); + HAK_ASSERT (hak, hak->active_context != hak->processor->active->initial_context); + HAK_ASSERT (hak, (hak_oop_t)hak->active_context->home->sender != hak->_nil); - if (hcl->active_context->home->ip == HCL_SMOOI_TO_OOP(-1)) + if (hak->active_context->home->ip == HAK_SMOOI_TO_OOP(-1)) { - HCL_LOG0 (hcl, HCL_LOG_IC | HCL_LOG_ERROR, "Error - cannot return from dead context\n"); - hcl_seterrbfmt (hcl, HCL_EINTERN, "unable to return from dead context"); /* TODO: can i make this error catchable at the hcl level? */ + HAK_LOG0 (hak, HAK_LOG_IC | HAK_LOG_ERROR, "Error - cannot return from dead context\n"); + hak_seterrbfmt (hak, HAK_EINTERN, "unable to return from dead context"); /* TODO: can i make this error catchable at the hak level? */ return -1; } - hcl->active_context->home->ip = HCL_SMOOI_TO_OOP(-1); /* mark that the home context has returned */ - hcl->ip = -1; /* mark that the active context has returned. committed to hcl->active_context->ip in SWITCH_ACTIVE_CONTEXT() */ - SWITCH_ACTIVE_CONTEXT (hcl, hcl->active_context->home->sender); + hak->active_context->home->ip = HAK_SMOOI_TO_OOP(-1); /* mark that the home context has returned */ + hak->ip = -1; /* mark that the active context has returned. committed to hak->active_context->ip in SWITCH_ACTIVE_CONTEXT() */ + SWITCH_ACTIVE_CONTEXT (hak, hak->active_context->home->sender); /* push the return value to the stack of the final active context */ - HCL_STACK_PUSH (hcl, return_value); + HAK_STACK_PUSH (hak, return_value); #if 0 /* stack dump */ - HCL_DEBUG1 (hcl, "****** non local returning %O\n", return_value); + HAK_DEBUG1 (hak, "****** non local returning %O\n", return_value); { int i; - for (i = hcl->sp; i >= 0; i--) + for (i = hak->sp; i >= 0; i--) { - HCL_DEBUG2 (hcl, "STACK[%d] => %O\n", i, HCL_STACK_GET(hcl, i)); + HAK_DEBUG2 (hak, "STACK[%d] => %O\n", i, HAK_STACK_GET(hak, i)); } } #endif @@ -3193,67 +3193,67 @@ static HCL_INLINE int do_return_from_home (hcl_t* hcl, hcl_oop_t return_value, h * it is slower than immediat return from the home context but detetts * dead context better */ - if ((hcl_oop_t)hcl->active_context->home == hcl->_nil) + if ((hak_oop_t)hak->active_context->home == hak->_nil) { /* non-local return from the intial context. * (return-from-home 999) */ /* the current active context must be the initial context of the active process */ - HCL_ASSERT (hcl, hcl->active_context == hcl->processor->active->initial_context); - HCL_ASSERT (hcl, (hcl_oop_t)hcl->active_context->sender == hcl->_nil); + HAK_ASSERT (hak, hak->active_context == hak->processor->active->initial_context); + HAK_ASSERT (hak, (hak_oop_t)hak->active_context->sender == hak->_nil); - hcl->active_context->ip = HCL_SMOOI_TO_OOP(-1); /* mark the active context dead */ + hak->active_context->ip = HAK_SMOOI_TO_OOP(-1); /* mark the active context dead */ term_proc: - if (hcl->sp >= 0) + if (hak->sp >= 0) { /* return-from-home has been called from where it shouldn't be. for instance, * (printf "xxx %d\n" (return-from-home 999)) * ----------------------------------------------- * (if (> 19 (return-from-home 20)) 30) */ - HCL_LOG1 (hcl, HCL_LOG_IC | HCL_LOG_WARN, "Warning - stack not empty on return-from-home - SP %zd\n", hcl->sp); /* TODO: include line number and file name */ + HAK_LOG1 (hak, HAK_LOG_IC | HAK_LOG_WARN, "Warning - stack not empty on return-from-home - SP %zd\n", hak->sp); /* TODO: include line number and file name */ } /* as the process is terminated here, the nonempty stack or not invalidating the * intermediates contexts deson't really matter. */ - terminate_process (hcl, hcl->processor->active); + terminate_process (hak, hak->processor->active); } else { - hcl_oop_context_t sender, home, ctx; + hak_oop_context_t sender, home, ctx; - home = hcl->active_context->home; - sender = hcl->active_context->home->sender; + home = hak->active_context->home; + sender = hak->active_context->home->sender; /* check if the home context is in the current call chain */ - ctx = hcl->active_context; - while ((hcl_oop_t)ctx != hcl->_nil) + ctx = hak->active_context; + while ((hak_oop_t)ctx != hak->_nil) { ctx = ctx->sender; if (ctx == home) goto do_return; } - if (hcl->active_function->dbgi != hcl->_nil) + if (hak->active_function->dbgi != hak->_nil) { - hcl_dbgi_t* dbgi = (hcl_dbgi_t*)HCL_OBJ_GET_BYTE_SLOT(hcl->active_function->dbgi); - HCL_LOG2 (hcl, HCL_LOG_IC | HCL_LOG_ERROR, "Error - cannot return from dead context - throwing an exception (%js:%zu)\n", (dbgi[ip].fname? dbgi[ip].fname: oocstr_dash), dbgi[ip].sline); + hak_dbgi_t* dbgi = (hak_dbgi_t*)HAK_OBJ_GET_BYTE_SLOT(hak->active_function->dbgi); + HAK_LOG2 (hak, HAK_LOG_IC | HAK_LOG_ERROR, "Error - cannot return from dead context - throwing an exception (%js:%zu)\n", (dbgi[ip].fname? dbgi[ip].fname: oocstr_dash), dbgi[ip].sline); } else { - HCL_LOG0 (hcl, HCL_LOG_IC | HCL_LOG_ERROR, "Error - cannot return from dead context - throwing an exception\n"); + HAK_LOG0 (hak, HAK_LOG_IC | HAK_LOG_ERROR, "Error - cannot return from dead context - throwing an exception\n"); } - hcl_seterrbfmt (hcl, HCL_EINTERN, "unable to return from dead context"); /* TODO: can i make this error catchable at the hcl level? */ - return do_throw_with_internal_errmsg(hcl, ip); + hak_seterrbfmt (hak, HAK_EINTERN, "unable to return from dead context"); /* TODO: can i make this error catchable at the hak level? */ + return do_throw_with_internal_errmsg(hak, ip); do_return: - while (hcl->active_context != home) + while (hak->active_context != home) { - hcl->ip = -1; /* mark context dead. saved into hcl->active_context->ip in SWITCH_ACTIVE_CONTEXT */ - SWITCH_ACTIVE_CONTEXT (hcl, (hcl_oop_context_t)hcl->active_context->sender); + hak->ip = -1; /* mark context dead. saved into hak->active_context->ip in SWITCH_ACTIVE_CONTEXT */ + SWITCH_ACTIVE_CONTEXT (hak, (hak_oop_context_t)hak->active_context->sender); } - if (HCL_UNLIKELY((hcl_oop_t)sender == hcl->_nil)) + if (HAK_UNLIKELY((hak_oop_t)sender == hak->_nil)) { /* non-local return out of the initial context * (defun y(x) (return-from-home (* x x))) @@ -3263,23 +3263,23 @@ static HCL_INLINE int do_return_from_home (hcl_t* hcl, hcl_oop_t return_value, h * [NOTE] * in the interactive mode, a new initial context/function/process is created * for each expression (as implemented bin/main.c) - * hcl->active_context may be the intial context of the previous expression. + * hak->active_context may be the intial context of the previous expression. * (defun y(x) (return-from-home (* x x))) <-- initial context * (y 999) <- another initial context * when y is called from the second initial context, the home context to return - * from the the first initial context. comparing hcl->active_context->home against - * hcl->initial_context doesn't return true in this case. */ - HCL_ASSERT (hcl, (hcl_oop_t)home->home == hcl->_nil); - HCL_ASSERT (hcl, (hcl_oop_t)hcl->active_context->sender == hcl->_nil); + * from the the first initial context. comparing hak->active_context->home against + * hak->initial_context doesn't return true in this case. */ + HAK_ASSERT (hak, (hak_oop_t)home->home == hak->_nil); + HAK_ASSERT (hak, (hak_oop_t)hak->active_context->sender == hak->_nil); - home->ip = HCL_SMOOI_TO_OOP(-1); /* mark the home context dead */ + home->ip = HAK_SMOOI_TO_OOP(-1); /* mark the home context dead */ goto term_proc; } - HCL_ASSERT (hcl, hcl->active_context->sender == sender); - hcl->ip = -1; /* mark context dead. saved into hcl->active_context->ip in SWITCH_ACTIVE_CONTEXT */ - SWITCH_ACTIVE_CONTEXT (hcl, (hcl_oop_context_t)hcl->active_context->sender); - HCL_STACK_PUSH (hcl, return_value); + HAK_ASSERT (hak, hak->active_context->sender == sender); + hak->ip = -1; /* mark context dead. saved into hak->active_context->ip in SWITCH_ACTIVE_CONTEXT */ + SWITCH_ACTIVE_CONTEXT (hak, (hak_oop_context_t)hak->active_context->sender); + HAK_STACK_PUSH (hak, return_value); } #endif @@ -3292,106 +3292,106 @@ static void xma_dumper (void* ctx, const char* fmt, ...) { va_list ap; va_start (ap, fmt); - hcl_logbfmtv ((hcl_t*)ctx, HCL_LOG_IC | HCL_LOG_INFO, fmt, ap); + hak_logbfmtv ((hak_t*)ctx, HAK_LOG_IC | HAK_LOG_INFO, fmt, ap); va_end (ap); } -static hcl_oop_t fetch_numeric_rcv_slot (hcl_t* hcl, hcl_oop_t rcv, hcl_oow_t b1) +static hak_oop_t fetch_numeric_rcv_slot (hak_t* hak, hak_oop_t rcv, hak_oow_t b1) { - hcl_oow_t w; - hcl_obj_type_t rcv_type; + hak_oow_t w; + hak_obj_type_t rcv_type; - rcv_type = (hcl_obj_type_t)HCL_OBJ_GET_FLAGS_TYPE(rcv); - switch (HCL_LIKELY(rcv_type)) + rcv_type = (hak_obj_type_t)HAK_OBJ_GET_FLAGS_TYPE(rcv); + switch (HAK_LIKELY(rcv_type)) { - case HCL_OBJ_TYPE_CHAR: - w = ((hcl_oop_char_t)rcv)->slot[b1]; - return HCL_CHAR_TO_OOP(w); + case HAK_OBJ_TYPE_CHAR: + w = ((hak_oop_char_t)rcv)->slot[b1]; + return HAK_CHAR_TO_OOP(w); - case HCL_OBJ_TYPE_BYTE: - w = ((hcl_oop_byte_t)rcv)->slot[b1]; - return HCL_SMOOI_TO_OOP(w); + case HAK_OBJ_TYPE_BYTE: + w = ((hak_oop_byte_t)rcv)->slot[b1]; + return HAK_SMOOI_TO_OOP(w); - case HCL_OBJ_TYPE_HALFWORD: - w = ((hcl_oop_halfword_t)rcv)->slot[b1]; - return HCL_SMOOI_TO_OOP(w); + case HAK_OBJ_TYPE_HALFWORD: + w = ((hak_oop_halfword_t)rcv)->slot[b1]; + return HAK_SMOOI_TO_OOP(w); - case HCL_OBJ_TYPE_WORD: - w = ((hcl_oop_word_t)rcv)->slot[b1]; - return hcl_oowtoint(hcl, w); + case HAK_OBJ_TYPE_WORD: + w = ((hak_oop_word_t)rcv)->slot[b1]; + return hak_oowtoint(hak, w); default: - hcl_seterrbfmt (hcl, HCL_EINTERN, "internal error - invalid receiver type in fetching numeric slot value - %d", rcv_type); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINTERN, "internal error - invalid receiver type in fetching numeric slot value - %d", rcv_type); + return HAK_NULL; } } -static int store_into_numeric_rcv_slot (hcl_t* hcl, hcl_oop_t rcv, hcl_oow_t b1, hcl_oop_t v) +static int store_into_numeric_rcv_slot (hak_t* hak, hak_oop_t rcv, hak_oow_t b1, hak_oop_t v) { - hcl_oow_t w; - hcl_obj_type_t rcv_type; + hak_oow_t w; + hak_obj_type_t rcv_type; - if (HCL_OOP_IS_CHAR(v)) w = HCL_OOP_TO_CHAR(v); - else if (hcl_inttooow(hcl, v, &w) <= -1) return -1; + if (HAK_OOP_IS_CHAR(v)) w = HAK_OOP_TO_CHAR(v); + else if (hak_inttooow(hak, v, &w) <= -1) return -1; - rcv_type = (hcl_obj_type_t)HCL_OBJ_GET_FLAGS_TYPE(rcv); - switch (HCL_LIKELY(rcv_type)) + rcv_type = (hak_obj_type_t)HAK_OBJ_GET_FLAGS_TYPE(rcv); + switch (HAK_LIKELY(rcv_type)) { - case HCL_OBJ_TYPE_CHAR: - ((hcl_oop_char_t)rcv)->slot[b1] = w; + case HAK_OBJ_TYPE_CHAR: + ((hak_oop_char_t)rcv)->slot[b1] = w; break; - case HCL_OBJ_TYPE_BYTE: - ((hcl_oop_byte_t)rcv)->slot[b1] = w; + case HAK_OBJ_TYPE_BYTE: + ((hak_oop_byte_t)rcv)->slot[b1] = w; break; - case HCL_OBJ_TYPE_HALFWORD: - ((hcl_oop_halfword_t)rcv)->slot[b1] = w; + case HAK_OBJ_TYPE_HALFWORD: + ((hak_oop_halfword_t)rcv)->slot[b1] = w; break; - case HCL_OBJ_TYPE_WORD: - ((hcl_oop_word_t)rcv)->slot[b1] = w; + case HAK_OBJ_TYPE_WORD: + ((hak_oop_word_t)rcv)->slot[b1] = w; break; default: - hcl_seterrbfmt (hcl, HCL_EINTERN, "internal error - invalid receiver type in storing in numeric slot - %d", rcv_type); + hak_seterrbfmt (hak, HAK_EINTERN, "internal error - invalid receiver type in storing in numeric slot - %d", rcv_type); return -1; } return 0; } -static int execute (hcl_t* hcl) +static int execute (hak_t* hak) { - hcl_oob_t bcode; - hcl_oow_t b1, b2; - hcl_oop_t return_value; - hcl_ooi_t fetched_instruction_pointer; + hak_oob_t bcode; + hak_oow_t b1, b2; + hak_oop_t return_value; + hak_ooi_t fetched_instruction_pointer; -#if defined(HCL_PROFILE_VM) - hcl_uintmax_t inst_counter = 0; +#if defined(HAK_PROFILE_VM) + hak_uintmax_t inst_counter = 0; #endif - HCL_ASSERT (hcl, hcl->active_context != HCL_NULL); + HAK_ASSERT (hak, hak->active_context != HAK_NULL); - hcl->abort_req = 0; - if (vm_startup(hcl) <= -1) return -1; - hcl->proc_switched = 0; + hak->abort_req = 0; + if (vm_startup(hak) <= -1) return -1; + hak->proc_switched = 0; - hcl->gci.lazy_sweep = 1; /* TODO: make it configurable?? */ - HCL_INIT_NTIME (&hcl->gci.stat.alloc, 0, 0); - HCL_INIT_NTIME (&hcl->gci.stat.mark, 0, 0); - HCL_INIT_NTIME (&hcl->gci.stat.sweep, 0, 0); + hak->gci.lazy_sweep = 1; /* TODO: make it configurable?? */ + HAK_INIT_NTIME (&hak->gci.stat.alloc, 0, 0); + HAK_INIT_NTIME (&hak->gci.stat.mark, 0, 0); + HAK_INIT_NTIME (&hak->gci.stat.sweep, 0, 0); while (1) { /* stop requested or no more runnable process */ - if (hcl->abort_req < 0) goto oops; - if (hcl->abort_req > 0 || (!hcl->no_proc_switch && switch_process_if_needed(hcl) == 0)) break; + if (hak->abort_req < 0) goto oops; + if (hak->abort_req > 0 || (!hak->no_proc_switch && switch_process_if_needed(hak) == 0)) break; - if (HCL_UNLIKELY(hcl->ip < 0 || hcl->ip >= HCL_FUNCTION_GET_CODE_SIZE(hcl->active_function))) + if (HAK_UNLIKELY(hak->ip < 0 || hak->ip >= HAK_FUNCTION_GET_CODE_SIZE(hak->active_function))) { - if (hcl->ip < 0) + if (hak->ip < 0) { /* do_return_from_home() implements a simple check against a dead context. * but the check is far from perfect. there are many ways to return from an @@ -3411,87 +3411,87 @@ static int execute (hcl_t* hcl) (printf "------------------------\n") (q) ; (return-from-home 200) exits t and since t is called from x, it flows back to the dead x. */ - HCL_DEBUG1 (hcl, "Stopping execution as a dead context gets active - IP %zd\n", hcl->ip); + HAK_DEBUG1 (hak, "Stopping execution as a dead context gets active - IP %zd\n", hak->ip); } else { - HCL_DEBUG2 (hcl, "Stopping execution as IP reached the end of bytecode(%zu) - IP %zd\n", hcl->code.bc.len, hcl->ip); + HAK_DEBUG2 (hak, "Stopping execution as IP reached the end of bytecode(%zu) - IP %zd\n", hak->code.bc.len, hak->ip); } - return_value = hcl->_nil; + return_value = hak->_nil; goto handle_return; } - fetched_instruction_pointer = hcl->ip; - FETCH_BYTE_CODE_TO (hcl, bcode); - /*while (bcode == HCL_CODE_NOOP) FETCH_BYTE_CODE_TO (hcl, bcode);*/ + fetched_instruction_pointer = hak->ip; + FETCH_BYTE_CODE_TO (hak, bcode); + /*while (bcode == HAK_CODE_NOOP) FETCH_BYTE_CODE_TO (hak, bcode);*/ - if (hcl->vm_checkbc_cb_count) vm_checkbc (hcl, bcode); + if (hak->vm_checkbc_cb_count) vm_checkbc (hak, bcode); - if (HCL_UNLIKELY(hcl->abort_req)) + if (HAK_UNLIKELY(hak->abort_req)) { /* i place this abortion check after vm_checkbc() - * to honor hcl_abort() if called in the callback, */ - HCL_DEBUG0 (hcl, "Stopping execution for abortion request\n"); - return_value = hcl->_nil; + * to honor hak_abort() if called in the callback, */ + HAK_DEBUG0 (hak, "Stopping execution for abortion request\n"); + return_value = hak->_nil; goto handle_return; } - #if defined(HCL_PROFILE_VM) + #if defined(HAK_PROFILE_VM) inst_counter++; #endif switch (bcode) { /* -------------------------------------------------------- */ - case HCL_CODE_PLUS: + case HAK_CODE_PLUS: { /* TODO: support other binary arithmetic operators */ - hcl_oop_t x1, x2, x3; - LOG_INST_0 (hcl, "plus"); - x2 = HCL_STACK_GETTOP(hcl); HCL_STACK_POP (hcl); - x1 = HCL_STACK_GETTOP(hcl); HCL_STACK_POP(hcl); - x3 = hcl_addnums(hcl, x1, x2); - if (HCL_UNLIKELY(!x3)) + hak_oop_t x1, x2, x3; + LOG_INST_0 (hak, "plus"); + x2 = HAK_STACK_GETTOP(hak); HAK_STACK_POP (hak); + x1 = HAK_STACK_GETTOP(hak); HAK_STACK_POP(hak); + x3 = hak_addnums(hak, x1, x2); + if (HAK_UNLIKELY(!x3)) { - if (do_throw_with_internal_errmsg(hcl, fetched_instruction_pointer) >= 0) break; + if (do_throw_with_internal_errmsg(hak, fetched_instruction_pointer) >= 0) break; goto oops_with_errmsg_supplement; } - HCL_STACK_PUSH(hcl, x3); + HAK_STACK_PUSH(hak, x3); break; } /* ------------------------------------------------- */ - case HCL_CODE_PUSH_IVAR_X: - FETCH_PARAM_CODE_TO (hcl, b1); + case HAK_CODE_PUSH_IVAR_X: + FETCH_PARAM_CODE_TO (hak, b1); goto push_ivar; - case HCL_CODE_PUSH_IVAR_0: - case HCL_CODE_PUSH_IVAR_1: - case HCL_CODE_PUSH_IVAR_2: - case HCL_CODE_PUSH_IVAR_3: - case HCL_CODE_PUSH_IVAR_4: - case HCL_CODE_PUSH_IVAR_5: - case HCL_CODE_PUSH_IVAR_6: - case HCL_CODE_PUSH_IVAR_7: + case HAK_CODE_PUSH_IVAR_0: + case HAK_CODE_PUSH_IVAR_1: + case HAK_CODE_PUSH_IVAR_2: + case HAK_CODE_PUSH_IVAR_3: + case HAK_CODE_PUSH_IVAR_4: + case HAK_CODE_PUSH_IVAR_5: + case HAK_CODE_PUSH_IVAR_6: + case HAK_CODE_PUSH_IVAR_7: { - hcl_oop_t rcv; + hak_oop_t rcv; b1 = bcode & 0x7; /* low 3 bits */ push_ivar: - LOG_INST_2 (hcl, "push_ivar %zu ## [%zd]", b1, HCL_OOP_TO_SMOOI(hcl->active_context/*->mthhome*/->ivaroff)); - b1 += HCL_OOP_TO_SMOOI(hcl->active_context/*->mthhome*/->ivaroff); - rcv = hcl->active_context->receiver; - /*HCL_ASSERT (hcl, HCL_OBJ_GET_FLAGS_TYPE(rcv) == HCL_OBJ_TYPE_OOP);*/ - if (HCL_LIKELY(HCL_OBJ_GET_FLAGS_TYPE(rcv) == HCL_OBJ_TYPE_OOP)) + LOG_INST_2 (hak, "push_ivar %zu ## [%zd]", b1, HAK_OOP_TO_SMOOI(hak->active_context/*->mthhome*/->ivaroff)); + b1 += HAK_OOP_TO_SMOOI(hak->active_context/*->mthhome*/->ivaroff); + rcv = hak->active_context->receiver; + /*HAK_ASSERT (hak, HAK_OBJ_GET_FLAGS_TYPE(rcv) == HAK_OBJ_TYPE_OOP);*/ + if (HAK_LIKELY(HAK_OBJ_GET_FLAGS_TYPE(rcv) == HAK_OBJ_TYPE_OOP)) { - HCL_STACK_PUSH (hcl, ((hcl_oop_oop_t)rcv)->slot[b1]); + HAK_STACK_PUSH (hak, ((hak_oop_oop_t)rcv)->slot[b1]); } else { - hcl_oop_t v; - v = fetch_numeric_rcv_slot(hcl, rcv, b1); - if (HCL_UNLIKELY(!v)) + hak_oop_t v; + v = fetch_numeric_rcv_slot(hak, rcv, b1); + if (HAK_UNLIKELY(!v)) { - if (do_throw_with_internal_errmsg(hcl, fetched_instruction_pointer) >= 0) break; + if (do_throw_with_internal_errmsg(hak, fetched_instruction_pointer) >= 0) break; goto oops_with_errmsg_supplement; } } @@ -3500,36 +3500,36 @@ static int execute (hcl_t* hcl) /* ------------------------------------------------- */ - case HCL_CODE_STORE_INTO_IVAR_X: - FETCH_PARAM_CODE_TO (hcl, b1); + case HAK_CODE_STORE_INTO_IVAR_X: + FETCH_PARAM_CODE_TO (hak, b1); goto store_instvar; - case HCL_CODE_STORE_INTO_IVAR_0: - case HCL_CODE_STORE_INTO_IVAR_1: - case HCL_CODE_STORE_INTO_IVAR_2: - case HCL_CODE_STORE_INTO_IVAR_3: - case HCL_CODE_STORE_INTO_IVAR_4: - case HCL_CODE_STORE_INTO_IVAR_5: - case HCL_CODE_STORE_INTO_IVAR_6: - case HCL_CODE_STORE_INTO_IVAR_7: + case HAK_CODE_STORE_INTO_IVAR_0: + case HAK_CODE_STORE_INTO_IVAR_1: + case HAK_CODE_STORE_INTO_IVAR_2: + case HAK_CODE_STORE_INTO_IVAR_3: + case HAK_CODE_STORE_INTO_IVAR_4: + case HAK_CODE_STORE_INTO_IVAR_5: + case HAK_CODE_STORE_INTO_IVAR_6: + case HAK_CODE_STORE_INTO_IVAR_7: { - hcl_oop_t rcv, top; + hak_oop_t rcv, top; b1 = bcode & 0x7; /* low 3 bits */ store_instvar: - LOG_INST_2 (hcl, "store_into_ivar %zu ## [%zd]", b1, HCL_OOP_TO_SMOOI(hcl->active_context/*->mthhome*/->ivaroff)); - b1 += HCL_OOP_TO_SMOOI(hcl->active_context/*->mthhome*/->ivaroff); - rcv = hcl->active_context->receiver; - top = HCL_STACK_GETTOP(hcl); - /*HCL_ASSERT (hcl, HCL_OBJ_GET_FLAGS_TYPE(rcv) == HCL_OBJ_TYPE_OOP);*/ - if (HCL_LIKELY(HCL_OBJ_GET_FLAGS_TYPE(rcv) == HCL_OBJ_TYPE_OOP)) + LOG_INST_2 (hak, "store_into_ivar %zu ## [%zd]", b1, HAK_OOP_TO_SMOOI(hak->active_context/*->mthhome*/->ivaroff)); + b1 += HAK_OOP_TO_SMOOI(hak->active_context/*->mthhome*/->ivaroff); + rcv = hak->active_context->receiver; + top = HAK_STACK_GETTOP(hak); + /*HAK_ASSERT (hak, HAK_OBJ_GET_FLAGS_TYPE(rcv) == HAK_OBJ_TYPE_OOP);*/ + if (HAK_LIKELY(HAK_OBJ_GET_FLAGS_TYPE(rcv) == HAK_OBJ_TYPE_OOP)) { - ((hcl_oop_oop_t)rcv)->slot[b1] = top; + ((hak_oop_oop_t)rcv)->slot[b1] = top; } else { - if (HCL_UNLIKELY(store_into_numeric_rcv_slot(hcl, rcv, b1, top) <= -1)) + if (HAK_UNLIKELY(store_into_numeric_rcv_slot(hak, rcv, b1, top) <= -1)) { - if (do_throw_with_internal_errmsg(hcl, fetched_instruction_pointer) >= 0) break; + if (do_throw_with_internal_errmsg(hak, fetched_instruction_pointer) >= 0) break; goto oops_with_errmsg_supplement; } } @@ -3537,79 +3537,79 @@ static int execute (hcl_t* hcl) } /* ------------------------------------------------- */ - case HCL_CODE_POP_INTO_IVAR_X: - FETCH_PARAM_CODE_TO (hcl, b1); + case HAK_CODE_POP_INTO_IVAR_X: + FETCH_PARAM_CODE_TO (hak, b1); goto pop_into_ivar; - case HCL_CODE_POP_INTO_IVAR_0: - case HCL_CODE_POP_INTO_IVAR_1: - case HCL_CODE_POP_INTO_IVAR_2: - case HCL_CODE_POP_INTO_IVAR_3: - case HCL_CODE_POP_INTO_IVAR_4: - case HCL_CODE_POP_INTO_IVAR_5: - case HCL_CODE_POP_INTO_IVAR_6: - case HCL_CODE_POP_INTO_IVAR_7: + case HAK_CODE_POP_INTO_IVAR_0: + case HAK_CODE_POP_INTO_IVAR_1: + case HAK_CODE_POP_INTO_IVAR_2: + case HAK_CODE_POP_INTO_IVAR_3: + case HAK_CODE_POP_INTO_IVAR_4: + case HAK_CODE_POP_INTO_IVAR_5: + case HAK_CODE_POP_INTO_IVAR_6: + case HAK_CODE_POP_INTO_IVAR_7: { - hcl_oop_t rcv, top; + hak_oop_t rcv, top; b1 = bcode & 0x7; /* low 3 bits */ pop_into_ivar: - LOG_INST_2 (hcl, "pop_into_ivar %zu ## [%zd]", b1, HCL_OOP_TO_SMOOI(hcl->active_context->home->ivaroff)); - b1 += HCL_OOP_TO_SMOOI(hcl->active_context->home->ivaroff); - rcv = hcl->active_context->receiver; - top = HCL_STACK_GETTOP(hcl); - /*HCL_ASSERT (hcl, HCL_OBJ_GET_FLAGS_TYPE(rcv) == HCL_OBJ_TYPE_OOP);*/ - if (HCL_LIKELY(HCL_OBJ_GET_FLAGS_TYPE(rcv) == HCL_OBJ_TYPE_OOP)) + LOG_INST_2 (hak, "pop_into_ivar %zu ## [%zd]", b1, HAK_OOP_TO_SMOOI(hak->active_context->home->ivaroff)); + b1 += HAK_OOP_TO_SMOOI(hak->active_context->home->ivaroff); + rcv = hak->active_context->receiver; + top = HAK_STACK_GETTOP(hak); + /*HAK_ASSERT (hak, HAK_OBJ_GET_FLAGS_TYPE(rcv) == HAK_OBJ_TYPE_OOP);*/ + if (HAK_LIKELY(HAK_OBJ_GET_FLAGS_TYPE(rcv) == HAK_OBJ_TYPE_OOP)) { - ((hcl_oop_oop_t)rcv)->slot[b1] = top; + ((hak_oop_oop_t)rcv)->slot[b1] = top; } else { - if (HCL_UNLIKELY(store_into_numeric_rcv_slot(hcl, rcv, b1, top) <= -1)) + if (HAK_UNLIKELY(store_into_numeric_rcv_slot(hak, rcv, b1, top) <= -1)) { - if (do_throw_with_internal_errmsg(hcl, fetched_instruction_pointer) >= 0) break; + if (do_throw_with_internal_errmsg(hak, fetched_instruction_pointer) >= 0) break; goto oops_with_errmsg_supplement; } } - HCL_STACK_POP (hcl); + HAK_STACK_POP (hak); break; } /* ------------------------------------------------- */ #if 0 // the compiler never emits these instructions. reuse these instructions for other purposes - case HCL_CODE_PUSH_TEMPVAR_X: - case HCL_CODE_STORE_INTO_TEMPVAR_X: - case HCL_CODE_POP_INTO_TEMPVAR_X: - FETCH_PARAM_CODE_TO (hcl, b1); + case HAK_CODE_PUSH_TEMPVAR_X: + case HAK_CODE_STORE_INTO_TEMPVAR_X: + case HAK_CODE_POP_INTO_TEMPVAR_X: + FETCH_PARAM_CODE_TO (hak, b1); goto handle_tempvar; - case HCL_CODE_PUSH_TEMPVAR_0: - case HCL_CODE_PUSH_TEMPVAR_1: - case HCL_CODE_PUSH_TEMPVAR_2: - case HCL_CODE_PUSH_TEMPVAR_3: - case HCL_CODE_PUSH_TEMPVAR_4: - case HCL_CODE_PUSH_TEMPVAR_5: - case HCL_CODE_PUSH_TEMPVAR_6: - case HCL_CODE_PUSH_TEMPVAR_7: - case HCL_CODE_STORE_INTO_TEMPVAR_0: - case HCL_CODE_STORE_INTO_TEMPVAR_1: - case HCL_CODE_STORE_INTO_TEMPVAR_2: - case HCL_CODE_STORE_INTO_TEMPVAR_3: - case HCL_CODE_STORE_INTO_TEMPVAR_4: - case HCL_CODE_STORE_INTO_TEMPVAR_5: - case HCL_CODE_STORE_INTO_TEMPVAR_6: - case HCL_CODE_STORE_INTO_TEMPVAR_7: - case HCL_CODE_POP_INTO_TEMPVAR_0: - case HCL_CODE_POP_INTO_TEMPVAR_1: - case HCL_CODE_POP_INTO_TEMPVAR_2: - case HCL_CODE_POP_INTO_TEMPVAR_3: - case HCL_CODE_POP_INTO_TEMPVAR_4: - case HCL_CODE_POP_INTO_TEMPVAR_5: - case HCL_CODE_POP_INTO_TEMPVAR_6: - case HCL_CODE_POP_INTO_TEMPVAR_7: + case HAK_CODE_PUSH_TEMPVAR_0: + case HAK_CODE_PUSH_TEMPVAR_1: + case HAK_CODE_PUSH_TEMPVAR_2: + case HAK_CODE_PUSH_TEMPVAR_3: + case HAK_CODE_PUSH_TEMPVAR_4: + case HAK_CODE_PUSH_TEMPVAR_5: + case HAK_CODE_PUSH_TEMPVAR_6: + case HAK_CODE_PUSH_TEMPVAR_7: + case HAK_CODE_STORE_INTO_TEMPVAR_0: + case HAK_CODE_STORE_INTO_TEMPVAR_1: + case HAK_CODE_STORE_INTO_TEMPVAR_2: + case HAK_CODE_STORE_INTO_TEMPVAR_3: + case HAK_CODE_STORE_INTO_TEMPVAR_4: + case HAK_CODE_STORE_INTO_TEMPVAR_5: + case HAK_CODE_STORE_INTO_TEMPVAR_6: + case HAK_CODE_STORE_INTO_TEMPVAR_7: + case HAK_CODE_POP_INTO_TEMPVAR_0: + case HAK_CODE_POP_INTO_TEMPVAR_1: + case HAK_CODE_POP_INTO_TEMPVAR_2: + case HAK_CODE_POP_INTO_TEMPVAR_3: + case HAK_CODE_POP_INTO_TEMPVAR_4: + case HAK_CODE_POP_INTO_TEMPVAR_5: + case HAK_CODE_POP_INTO_TEMPVAR_6: + case HAK_CODE_POP_INTO_TEMPVAR_7: { - hcl_oop_context_t ctx; - hcl_ooi_t bx; + hak_oop_context_t ctx; + hak_ooi_t bx; b1 = bcode & 0x7; /* low 3 bits */ handle_tempvar: @@ -3619,30 +3619,30 @@ static int execute (hcl_t* hcl) * outside a block. i can assume that the temporary * variable index is pointing to one of temporaries * in the relevant method context */ - ctx = hcl->active_context->origin; + ctx = hak->active_context->origin; bx = b1; - HCL_ASSERT (hcl, HCL_IS_CONTEXT(hcl, ctx)); + HAK_ASSERT (hak, HAK_IS_CONTEXT(hak, ctx)); if ((bcode >> 4) & 1) { /* push - bit 4 on */ - LOG_INST_1 (hcl, "push_tempvar %zu", b1); - HCL_STACK_PUSH (hcl, ctx->slot[bx]); + LOG_INST_1 (hak, "push_tempvar %zu", b1); + HAK_STACK_PUSH (hak, ctx->slot[bx]); } else { /* store or pop - bit 5 off */ - ctx->slot[bx] = HCL_STACK_GETTOP(hcl); + ctx->slot[bx] = HAK_STACK_GETTOP(hak); if ((bcode >> 3) & 1) { /* pop - bit 3 on */ - LOG_INST_1 (hcl, "pop_into_tempvar %zu", b1); - HCL_STACK_POP (hcl); + LOG_INST_1 (hak, "pop_into_tempvar %zu", b1); + HAK_STACK_POP (hak); } else { - LOG_INST_1 (hcl, "store_into_tempvar %zu", b1); + LOG_INST_1 (hak, "store_into_tempvar %zu", b1); } } @@ -3651,75 +3651,75 @@ static int execute (hcl_t* hcl) #endif /* ------------------------------------------------- */ - case HCL_CODE_PUSH_LITERAL_X2: - FETCH_PARAM_CODE_TO (hcl, b1); - FETCH_PARAM_CODE_TO (hcl, b2); - b1 = (b1 << (8 * HCL_CODE_LONG_PARAM_SIZE)) | b2; + case HAK_CODE_PUSH_LITERAL_X2: + FETCH_PARAM_CODE_TO (hak, b1); + FETCH_PARAM_CODE_TO (hak, b2); + b1 = (b1 << (8 * HAK_CODE_LONG_PARAM_SIZE)) | b2; goto push_literal; - case HCL_CODE_PUSH_LITERAL_X: - FETCH_PARAM_CODE_TO (hcl, b1); + case HAK_CODE_PUSH_LITERAL_X: + FETCH_PARAM_CODE_TO (hak, b1); goto push_literal; - case HCL_CODE_PUSH_LITERAL_0: - case HCL_CODE_PUSH_LITERAL_1: - case HCL_CODE_PUSH_LITERAL_2: - case HCL_CODE_PUSH_LITERAL_3: - case HCL_CODE_PUSH_LITERAL_4: - case HCL_CODE_PUSH_LITERAL_5: - case HCL_CODE_PUSH_LITERAL_6: - case HCL_CODE_PUSH_LITERAL_7: + case HAK_CODE_PUSH_LITERAL_0: + case HAK_CODE_PUSH_LITERAL_1: + case HAK_CODE_PUSH_LITERAL_2: + case HAK_CODE_PUSH_LITERAL_3: + case HAK_CODE_PUSH_LITERAL_4: + case HAK_CODE_PUSH_LITERAL_5: + case HAK_CODE_PUSH_LITERAL_6: + case HAK_CODE_PUSH_LITERAL_7: b1 = bcode & 0x7; /* low 3 bits */ push_literal: - LOG_INST_1 (hcl, "push_literal @%zu", b1); - /*HCL_STACK_PUSH (hcl, hcl->code.lit.arr->slot[b1]);*/ - HCL_STACK_PUSH (hcl, hcl->active_function->literal_frame[b1]); + LOG_INST_1 (hak, "push_literal @%zu", b1); + /*HAK_STACK_PUSH (hak, hak->code.lit.arr->slot[b1]);*/ + HAK_STACK_PUSH (hak, hak->active_function->literal_frame[b1]); break; /* ------------------------------------------------- */ - case HCL_CODE_PUSH_OBJECT_X: - case HCL_CODE_STORE_INTO_OBJECT_X: - case HCL_CODE_POP_INTO_OBJECT_X: - FETCH_PARAM_CODE_TO (hcl, b1); + case HAK_CODE_PUSH_OBJECT_X: + case HAK_CODE_STORE_INTO_OBJECT_X: + case HAK_CODE_POP_INTO_OBJECT_X: + FETCH_PARAM_CODE_TO (hak, b1); goto handle_object; - case HCL_CODE_PUSH_OBJECT_0: - case HCL_CODE_PUSH_OBJECT_1: - case HCL_CODE_PUSH_OBJECT_2: - case HCL_CODE_PUSH_OBJECT_3: - case HCL_CODE_STORE_INTO_OBJECT_0: - case HCL_CODE_STORE_INTO_OBJECT_1: - case HCL_CODE_STORE_INTO_OBJECT_2: - case HCL_CODE_STORE_INTO_OBJECT_3: - case HCL_CODE_POP_INTO_OBJECT_0: - case HCL_CODE_POP_INTO_OBJECT_1: - case HCL_CODE_POP_INTO_OBJECT_2: - case HCL_CODE_POP_INTO_OBJECT_3: + case HAK_CODE_PUSH_OBJECT_0: + case HAK_CODE_PUSH_OBJECT_1: + case HAK_CODE_PUSH_OBJECT_2: + case HAK_CODE_PUSH_OBJECT_3: + case HAK_CODE_STORE_INTO_OBJECT_0: + case HAK_CODE_STORE_INTO_OBJECT_1: + case HAK_CODE_STORE_INTO_OBJECT_2: + case HAK_CODE_STORE_INTO_OBJECT_3: + case HAK_CODE_POP_INTO_OBJECT_0: + case HAK_CODE_POP_INTO_OBJECT_1: + case HAK_CODE_POP_INTO_OBJECT_2: + case HAK_CODE_POP_INTO_OBJECT_3: { - hcl_oop_cons_t ass; + hak_oop_cons_t ass; b1 = bcode & 0x3; /* low 2 bits */ handle_object: - /*ass = hcl->code.lit.arr->slot[b1];*/ - ass = (hcl_oop_cons_t)hcl->active_function->literal_frame[b1]; - HCL_ASSERT (hcl, HCL_IS_CONS(hcl, ass)); + /*ass = hak->code.lit.arr->slot[b1];*/ + ass = (hak_oop_cons_t)hak->active_function->literal_frame[b1]; + HAK_ASSERT (hak, HAK_IS_CONS(hak, ass)); /* this association is an entry in the system dictionary. * it doesn't need to look up the dictionary for each access * as the pointer to the association is in the literal frame */ if ((bcode >> 3) & 1) { - hcl_oop_t v; + hak_oop_t v; /* store or pop */ - v = HCL_STACK_GETTOP(hcl); - if (HCL_IS_CLASS(hcl, ass->cdr) && ((hcl_oop_class_t)ass->cdr)->name == ass->car && v != ass->cdr) + v = HAK_STACK_GETTOP(hak); + if (HAK_IS_CLASS(hak, ass->cdr) && ((hak_oop_class_t)ass->cdr)->name == ass->car && v != ass->cdr) { /* the existing value is a class. * the class name is the same as the key value of the pair. * disallow re-definition if the new value is not itself. */ - hcl_seterrbfmt (hcl, HCL_EPERM, "prohibited redefintion of %.*js", HCL_OBJ_GET_SIZE(ass->car), HCL_OBJ_GET_CHAR_SLOT(ass->car)); - if (do_throw_with_internal_errmsg(hcl, fetched_instruction_pointer) >= 0) break; + hak_seterrbfmt (hak, HAK_EPERM, "prohibited redefintion of %.*js", HAK_OBJ_GET_SIZE(ass->car), HAK_OBJ_GET_CHAR_SLOT(ass->car)); + if (do_throw_with_internal_errmsg(hak, fetched_instruction_pointer) >= 0) break; goto oops_with_errmsg_supplement; } @@ -3727,139 +3727,139 @@ static int execute (hcl_t* hcl) if ((bcode >> 2) & 1) { /* pop */ - LOG_INST_1 (hcl, "pop_into_object @%zu", b1); - HCL_STACK_POP (hcl); + LOG_INST_1 (hak, "pop_into_object @%zu", b1); + HAK_STACK_POP (hak); } else { - LOG_INST_1 (hcl, "store_into_object @%zu", b1); + LOG_INST_1 (hak, "store_into_object @%zu", b1); } } else { /* push */ - LOG_INST_1 (hcl, "push_object @%zu", b1); - if (HCL_IS_UNDEF(hcl, ass->cdr)) + LOG_INST_1 (hak, "push_object @%zu", b1); + if (HAK_IS_UNDEF(hak, ass->cdr)) { - hcl_seterrbfmt (hcl, HCL_EUNDEFVAR, "%.*js accessed without initialization", HCL_OBJ_GET_SIZE(ass->car), HCL_OBJ_GET_CHAR_SLOT(ass->car)); - if (do_throw_with_internal_errmsg(hcl, fetched_instruction_pointer) >= 0) break; + hak_seterrbfmt (hak, HAK_EUNDEFVAR, "%.*js accessed without initialization", HAK_OBJ_GET_SIZE(ass->car), HAK_OBJ_GET_CHAR_SLOT(ass->car)); + if (do_throw_with_internal_errmsg(hak, fetched_instruction_pointer) >= 0) break; goto oops_with_errmsg_supplement; } - HCL_STACK_PUSH (hcl, ass->cdr); + HAK_STACK_PUSH (hak, ass->cdr); } break; } /* -------------------------------------------------------- */ - case HCL_CODE_JUMP_FORWARD_X: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump_forward %zu", b1); - hcl->ip += b1; + case HAK_CODE_JUMP_FORWARD_X: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump_forward %zu", b1); + hak->ip += b1; break; - case HCL_CODE_JUMP_FORWARD_0: - case HCL_CODE_JUMP_FORWARD_1: - case HCL_CODE_JUMP_FORWARD_2: - case HCL_CODE_JUMP_FORWARD_3: - LOG_INST_1 (hcl, "jump_forward %zu", (hcl_oow_t)(bcode & 0x3)); - hcl->ip += (bcode & 0x3); /* low 2 bits */ + case HAK_CODE_JUMP_FORWARD_0: + case HAK_CODE_JUMP_FORWARD_1: + case HAK_CODE_JUMP_FORWARD_2: + case HAK_CODE_JUMP_FORWARD_3: + LOG_INST_1 (hak, "jump_forward %zu", (hak_oow_t)(bcode & 0x3)); + hak->ip += (bcode & 0x3); /* low 2 bits */ break; - case HCL_CODE_JUMP_BACKWARD_X: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump_backward %zu", b1); - hcl->ip -= b1; + case HAK_CODE_JUMP_BACKWARD_X: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump_backward %zu", b1); + hak->ip -= b1; break; - case HCL_CODE_JUMP_BACKWARD_0: - case HCL_CODE_JUMP_BACKWARD_1: - case HCL_CODE_JUMP_BACKWARD_2: - case HCL_CODE_JUMP_BACKWARD_3: - LOG_INST_1 (hcl, "jump_backward %zu", (hcl_oow_t)(bcode & 0x3)); - hcl->ip -= (bcode & 0x3); /* low 2 bits */ + case HAK_CODE_JUMP_BACKWARD_0: + case HAK_CODE_JUMP_BACKWARD_1: + case HAK_CODE_JUMP_BACKWARD_2: + case HAK_CODE_JUMP_BACKWARD_3: + LOG_INST_1 (hak, "jump_backward %zu", (hak_oow_t)(bcode & 0x3)); + hak->ip -= (bcode & 0x3); /* low 2 bits */ break; - case HCL_CODE_JUMP_FORWARD_IF_TRUE: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump_forward_if_true %zu", b1); - /*if (HCL_STACK_GETTOP(hcl) == hcl->_true) hcl->ip += b1; TODO: _true or not _false?*/ - if (HCL_STACK_GETTOP(hcl) != hcl->_false) hcl->ip += b1; + case HAK_CODE_JUMP_FORWARD_IF_TRUE: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump_forward_if_true %zu", b1); + /*if (HAK_STACK_GETTOP(hak) == hak->_true) hak->ip += b1; TODO: _true or not _false?*/ + if (HAK_STACK_GETTOP(hak) != hak->_false) hak->ip += b1; break; - case HCL_CODE_JUMP2_FORWARD_IF_TRUE: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump2_forward_if_true %zu", b1); - /*if (HCL_STACK_GETTOP(hcl) == hcl->_true) hcl->ip += MAX_CODE_JUMP + b1;*/ - if (HCL_STACK_GETTOP(hcl) != hcl->_false) hcl->ip += MAX_CODE_JUMP + b1; + case HAK_CODE_JUMP2_FORWARD_IF_TRUE: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump2_forward_if_true %zu", b1); + /*if (HAK_STACK_GETTOP(hak) == hak->_true) hak->ip += MAX_CODE_JUMP + b1;*/ + if (HAK_STACK_GETTOP(hak) != hak->_false) hak->ip += MAX_CODE_JUMP + b1; break; - case HCL_CODE_JUMP_FORWARD_IF_FALSE: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump_forward_if_false %zu", b1); - if (HCL_STACK_GETTOP(hcl) == hcl->_false) hcl->ip += b1; + case HAK_CODE_JUMP_FORWARD_IF_FALSE: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump_forward_if_false %zu", b1); + if (HAK_STACK_GETTOP(hak) == hak->_false) hak->ip += b1; break; - case HCL_CODE_JUMP2_FORWARD_IF_FALSE: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump2_forward_if_false %zu", b1); - if (HCL_STACK_GETTOP(hcl) == hcl->_false) hcl->ip += MAX_CODE_JUMP + b1; + case HAK_CODE_JUMP2_FORWARD_IF_FALSE: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump2_forward_if_false %zu", b1); + if (HAK_STACK_GETTOP(hak) == hak->_false) hak->ip += MAX_CODE_JUMP + b1; break; - case HCL_CODE_JUMP2_FORWARD: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump2_forward %zu", b1); - hcl->ip += MAX_CODE_JUMP + b1; + case HAK_CODE_JUMP2_FORWARD: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump2_forward %zu", b1); + hak->ip += MAX_CODE_JUMP + b1; break; - case HCL_CODE_JUMP_BACKWARD_IF_TRUE: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump_backward_if_true %zu", b1); - if (HCL_STACK_GETTOP(hcl) != hcl->_false) hcl->ip -= b1; + case HAK_CODE_JUMP_BACKWARD_IF_TRUE: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump_backward_if_true %zu", b1); + if (HAK_STACK_GETTOP(hak) != hak->_false) hak->ip -= b1; break; - case HCL_CODE_JUMP2_BACKWARD_IF_TRUE: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump2_backward_if_true %zu", b1); - if (HCL_STACK_GETTOP(hcl) != hcl->_false) hcl->ip -= MAX_CODE_JUMP + b1; + case HAK_CODE_JUMP2_BACKWARD_IF_TRUE: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump2_backward_if_true %zu", b1); + if (HAK_STACK_GETTOP(hak) != hak->_false) hak->ip -= MAX_CODE_JUMP + b1; break; - case HCL_CODE_JUMP_BACKWARD_IF_FALSE: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump_backward_if_false %zu", b1); - if (HCL_STACK_GETTOP(hcl) == hcl->_false) hcl->ip -= b1; + case HAK_CODE_JUMP_BACKWARD_IF_FALSE: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump_backward_if_false %zu", b1); + if (HAK_STACK_GETTOP(hak) == hak->_false) hak->ip -= b1; break; - case HCL_CODE_JUMP2_BACKWARD_IF_FALSE: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump2_backward_if_false %zu", b1); - if (HCL_STACK_GETTOP(hcl) == hcl->_false) hcl->ip -= MAX_CODE_JUMP + b1; + case HAK_CODE_JUMP2_BACKWARD_IF_FALSE: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump2_backward_if_false %zu", b1); + if (HAK_STACK_GETTOP(hak) == hak->_false) hak->ip -= MAX_CODE_JUMP + b1; break; - case HCL_CODE_JUMP2_BACKWARD: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "jump2_backward %zu", b1); - hcl->ip -= MAX_CODE_JUMP + b1; + case HAK_CODE_JUMP2_BACKWARD: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "jump2_backward %zu", b1); + hak->ip -= MAX_CODE_JUMP + b1; break; /* -------------------------------------------------------- */ - case HCL_CODE_PUSH_RETURN_R: + case HAK_CODE_PUSH_RETURN_R: { - hcl_oop_context_t ctx; - hcl_oow_t i; - hcl_ooi_t attr_mask, fixed_nargs, req_nrets; + hak_oop_context_t ctx; + hak_oow_t i; + hak_ooi_t attr_mask, fixed_nargs, req_nrets; - LOG_INST_0 (hcl, "push_return_r"); + LOG_INST_0 (hak, "push_return_r"); - HCL_ASSERT(hcl, HCL_IS_CONTEXT(hcl, hcl->active_context)); + HAK_ASSERT(hak, HAK_IS_CONTEXT(hak, hak->active_context)); - ctx = hcl->active_context; + ctx = hak->active_context; - attr_mask = HCL_OOP_TO_SMOOI(ctx->attr_mask); + attr_mask = HAK_OOP_TO_SMOOI(ctx->attr_mask); fixed_nargs = GET_BLK_MASK_NARGS(attr_mask); - req_nrets = HCL_OOP_TO_SMOOI(ctx->req_nrets); + req_nrets = HAK_OOP_TO_SMOOI(ctx->req_nrets); if (req_nrets <= 0) { @@ -3871,33 +3871,33 @@ static int execute (hcl_t* hcl) /* return variables are placed after the fixed arguments */ for (i = 0; i < req_nrets; i++) { - HCL_STACK_PUSH (hcl, ctx->slot[fixed_nargs + i]); + HAK_STACK_PUSH (hak, ctx->slot[fixed_nargs + i]); } - /* similar to HCL_CODE_RETURN_FROM_BLOCK */ - hcl->last_retv = ctx->slot[fixed_nargs]; /* remember the first pushed one as the last return value. currently no good way to hcl_execute() recognize multiple return values. */ - do_return_from_block (hcl); + /* similar to HAK_CODE_RETURN_FROM_BLOCK */ + hak->last_retv = ctx->slot[fixed_nargs]; /* remember the first pushed one as the last return value. currently no good way to hak_execute() recognize multiple return values. */ + do_return_from_block (hak); break; } - case HCL_CODE_CALL_R: + case HAK_CODE_CALL_R: { - hcl_oop_t rcv; + hak_oop_t rcv; - FETCH_PARAM_CODE_TO (hcl, b1); /* nargs */ - FETCH_PARAM_CODE_TO (hcl, b2); /* nrvars */ - LOG_INST_2 (hcl, "call %zu %zu", b1, b2); + FETCH_PARAM_CODE_TO (hak, b1); /* nargs */ + FETCH_PARAM_CODE_TO (hak, b2); /* nrvars */ + LOG_INST_2 (hak, "call %zu %zu", b1, b2); - rcv = HCL_STACK_GETOP(hcl, b1); - if (HCL_IS_COMPILED_BLOCK(hcl, rcv)) + rcv = HAK_STACK_GETOP(hak, b1); + if (HAK_IS_COMPILED_BLOCK(hak, rcv)) { - if (activate_block(hcl, b1, b2) <= -1) goto call2_failed; + if (activate_block(hak, b1, b2) <= -1) goto call2_failed; break; } else { - hcl_seterrbfmt (hcl, HCL_ECALL, "cannot call %O", rcv); + hak_seterrbfmt (hak, HAK_ECALL, "cannot call %O", rcv); call2_failed: goto oops_with_errmsg_supplement; } @@ -3905,43 +3905,43 @@ static int execute (hcl_t* hcl) break; } - case HCL_CODE_CALL_X: - FETCH_PARAM_CODE_TO (hcl, b1); + case HAK_CODE_CALL_X: + FETCH_PARAM_CODE_TO (hak, b1); goto handle_call; - case HCL_CODE_CALL_0: - case HCL_CODE_CALL_1: - case HCL_CODE_CALL_2: - case HCL_CODE_CALL_3: + case HAK_CODE_CALL_0: + case HAK_CODE_CALL_1: + case HAK_CODE_CALL_2: + case HAK_CODE_CALL_3: { - hcl_oop_t op; + hak_oop_t op; b1 = bcode & 0x3; /* low 2 bits */ handle_call: - LOG_INST_1 (hcl, "call %zu", b1); + LOG_INST_1 (hak, "call %zu", b1); /* TODO: check if the rcv is the dummy receiver - rcv = HCL_STACK_GETRCV(hcl, b1); + rcv = HAK_STACK_GETRCV(hak, b1); * */ - op = HCL_STACK_GETOP(hcl, b1); - if (HCL_OOP_IS_POINTER(op)) + op = HAK_STACK_GETOP(hak, b1); + if (HAK_OOP_IS_POINTER(op)) { - hcl_oop_class_t c; - c = (hcl_oop_class_t)HCL_OBJ_GET_CLASS(op); - switch (HCL_OOP_TO_SMOOI(c->ibrand)) + hak_oop_class_t c; + c = (hak_oop_class_t)HAK_OBJ_GET_CLASS(op); + switch (HAK_OOP_TO_SMOOI(c->ibrand)) { - case HCL_BRAND_FUNCTION: - if (activate_function(hcl, b1) <= -1) goto call_failed; + case HAK_BRAND_FUNCTION: + if (activate_function(hak, b1) <= -1) goto call_failed; break; - case HCL_BRAND_BLOCK: - if (activate_block(hcl, b1, 0) <= -1) goto call_failed; + case HAK_BRAND_BLOCK: + if (activate_block(hak, b1, 0) <= -1) goto call_failed; break; - case HCL_BRAND_PRIM: - if (call_primitive(hcl, b1) <= -1) + case HAK_BRAND_PRIM: + if (call_primitive(hak, b1) <= -1) { /* TODO: do i have tell a catchable exception from a fatal error? */ - if (do_throw_with_internal_errmsg(hcl, fetched_instruction_pointer) >= 0) break; + if (do_throw_with_internal_errmsg(hak, fetched_instruction_pointer) >= 0) break; goto call_failed; } break; @@ -3954,8 +3954,8 @@ static int execute (hcl_t* hcl) { cannot_call: /* run time error */ - hcl_seterrbfmt (hcl, HCL_ECALL, "cannot call %O", op); - if (do_throw_with_internal_errmsg(hcl, fetched_instruction_pointer) >= 0) break; + hak_seterrbfmt (hak, HAK_ECALL, "cannot call %O", op); + if (do_throw_with_internal_errmsg(hak, fetched_instruction_pointer) >= 0) break; call_failed: goto oops_with_errmsg_supplement; } @@ -3963,70 +3963,70 @@ static int execute (hcl_t* hcl) } /* -------------------------------------------------------- */ - case HCL_CODE_TRY_ENTER: + case HAK_CODE_TRY_ENTER: { - hcl_ooi_t catch_ip, clsp; + hak_ooi_t catch_ip, clsp; - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "try_enter %zu", b1); + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "try_enter %zu", b1); - catch_ip = hcl->ip + b1; + catch_ip = hak->ip + b1; /* TODO: ip overflow check? */ - clsp = HCL_CLSTACK_GET_SP(hcl); + clsp = HAK_CLSTACK_GET_SP(hak); - HCL_EXSTACK_PUSH (hcl, hcl->active_context, catch_ip, clsp, hcl->sp); + HAK_EXSTACK_PUSH (hak, hak->active_context, catch_ip, clsp, hak->sp); break; } - case HCL_CODE_TRY_ENTER2: + case HAK_CODE_TRY_ENTER2: { - hcl_ooi_t catch_ip, clsp; + hak_ooi_t catch_ip, clsp; - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "try_enter2 %zu", b1); + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "try_enter2 %zu", b1); - catch_ip = hcl->ip + MAX_CODE_JUMP + b1; + catch_ip = hak->ip + MAX_CODE_JUMP + b1; /* TODO: ip overflow check? */ - clsp = HCL_CLSTACK_GET_SP(hcl); + clsp = HAK_CLSTACK_GET_SP(hak); - HCL_EXSTACK_PUSH (hcl, hcl->active_context, catch_ip, clsp, hcl->sp); + HAK_EXSTACK_PUSH (hak, hak->active_context, catch_ip, clsp, hak->sp); break; } - case HCL_CODE_TRY_EXIT: - LOG_INST_0 (hcl, "try_exit"); + case HAK_CODE_TRY_EXIT: + LOG_INST_0 (hak, "try_exit"); /* TODO: stack underflow check? */ - HCL_EXSTACK_POP (hcl); + HAK_EXSTACK_POP (hak); break; - case HCL_CODE_THROW: - LOG_INST_0 (hcl, "throw"); - return_value = HCL_STACK_GETTOP(hcl); - HCL_STACK_POP (hcl); - if (do_throw(hcl, return_value, fetched_instruction_pointer) <= -1) goto oops; + case HAK_CODE_THROW: + LOG_INST_0 (hak, "throw"); + return_value = HAK_STACK_GETTOP(hak); + HAK_STACK_POP (hak); + if (do_throw(hak, return_value, fetched_instruction_pointer) <= -1) goto oops; break; /* -------------------------------------------------------- */ - case HCL_CODE_CLASS_LOAD: + case HAK_CODE_CLASS_LOAD: { - hcl_oop_t t; + hak_oop_t t; /* push the class off the stack top on the class stack */ - LOG_INST_0 (hcl, "class_load"); + LOG_INST_0 (hak, "class_load"); - HCL_STACK_POP_TO (hcl, t); - if (!HCL_IS_CLASS(hcl, t)) + HAK_STACK_POP_TO (hak, t); + if (!HAK_IS_CLASS(hak, t)) { - /*hcl_seterrbfmt(hcl, HCL_EUNDEFVAR, "%.*js is not class", HCL_OBJ_GET_SIZE(t->car), HCL_OBJ_GET_CHAR_SLOT(t->car));*/ - hcl_seterrbfmt(hcl, HCL_EUNDEFVAR, "not class"); /* TODO: change error code */ - if (do_throw_with_internal_errmsg(hcl, fetched_instruction_pointer) >= 0) break; + /*hak_seterrbfmt(hak, HAK_EUNDEFVAR, "%.*js is not class", HAK_OBJ_GET_SIZE(t->car), HAK_OBJ_GET_CHAR_SLOT(t->car));*/ + hak_seterrbfmt(hak, HAK_EUNDEFVAR, "not class"); /* TODO: change error code */ + if (do_throw_with_internal_errmsg(hak, fetched_instruction_pointer) >= 0) break; goto oops_with_errmsg_supplement; } - HCL_CLSTACK_PUSH (hcl, t); + HAK_CLSTACK_PUSH (hak, t); break; } - case HCL_CODE_CLASS_ENTER: + case HAK_CODE_CLASS_ENTER: { /* push an association with class_name as a key or push nil push superclass (only if nsuperclassses > 0) @@ -4034,353 +4034,353 @@ static int execute (hcl_t* hcl) push cvars_string class_enter nsuperclasses nivars ncvars spec/selfspec, indexed_tye */ - hcl_oop_t superclass, ivars_str, cvars_str, class_name, v; - hcl_ooi_t expected_spec, expected_selfspec; - hcl_oop_class_t class_obj; - hcl_oow_t b3, b4, b5; + hak_oop_t superclass, ivars_str, cvars_str, class_name, v; + hak_ooi_t expected_spec, expected_selfspec; + hak_oop_class_t class_obj; + hak_oow_t b3, b4, b5; - FETCH_PARAM_CODE_TO (hcl, b1); /* nsuperclasses */ - FETCH_PARAM_CODE_TO (hcl, b2); /* nivars */ - FETCH_PARAM_CODE_TO (hcl, b3); /* ncvars */ - FETCH_BYTE_CODE_TO (hcl, b4); /* spec/selfspec */ - FETCH_BYTE_CODE_TO (hcl, b5); /* indexed_type */ + FETCH_PARAM_CODE_TO (hak, b1); /* nsuperclasses */ + FETCH_PARAM_CODE_TO (hak, b2); /* nivars */ + FETCH_PARAM_CODE_TO (hak, b3); /* ncvars */ + FETCH_BYTE_CODE_TO (hak, b4); /* spec/selfspec */ + FETCH_BYTE_CODE_TO (hak, b5); /* indexed_type */ - LOG_INST_5 (hcl, "class_enter %zu %zu %zu %#zx %zu", b1, b2, b3, b4, b5); + LOG_INST_5 (hak, "class_enter %zu %zu %zu %#zx %zu", b1, b2, b3, b4, b5); if (b3 > 0) { - HCL_STACK_POP_TO (hcl, cvars_str); - HCL_ASSERT (hcl, HCL_IS_STRING(hcl, cvars_str)); + HAK_STACK_POP_TO (hak, cvars_str); + HAK_ASSERT (hak, HAK_IS_STRING(hak, cvars_str)); } - else cvars_str = hcl->_nil; + else cvars_str = hak->_nil; if (b2 > 0) { - HCL_STACK_POP_TO (hcl, ivars_str); - HCL_ASSERT (hcl, HCL_IS_STRING(hcl, ivars_str)); + HAK_STACK_POP_TO (hak, ivars_str); + HAK_ASSERT (hak, HAK_IS_STRING(hak, ivars_str)); } - else ivars_str = hcl->_nil; + else ivars_str = hak->_nil; if (b1 > 0) { - HCL_STACK_POP_TO (hcl, superclass); /* TODO: support more than 1 superclass later when the compiler supports more */ - if (!HCL_IS_CLASS(hcl, superclass)) + HAK_STACK_POP_TO (hak, superclass); /* TODO: support more than 1 superclass later when the compiler supports more */ + if (!HAK_IS_CLASS(hak, superclass)) { - hcl_seterrbfmt (hcl, HCL_ECALL, "invalid superclass %O", superclass); - if (do_throw_with_internal_errmsg(hcl, fetched_instruction_pointer) >= 0) break; + hak_seterrbfmt (hak, HAK_ECALL, "invalid superclass %O", superclass); + if (do_throw_with_internal_errmsg(hak, fetched_instruction_pointer) >= 0) break; goto oops_with_errmsg_supplement; } } - else superclass = hcl->_nil; + else superclass = hak->_nil; - expected_spec = HCL_CLASS_SPEC_MAKE(b2, ((b4 >> 4) & 0x0F), (b5 & 0xFF)); - expected_selfspec = HCL_CLASS_SELFSPEC_MAKE(b3, 0, (b4 & 0x0F)); + expected_spec = HAK_CLASS_SPEC_MAKE(b2, ((b4 >> 4) & 0x0F), (b5 & 0xFF)); + expected_selfspec = HAK_CLASS_SELFSPEC_MAKE(b3, 0, (b4 & 0x0F)); - HCL_STACK_POP_TO(hcl, v); - if (HCL_IS_CONS(hcl, v)) + HAK_STACK_POP_TO(hak, v); + if (HAK_IS_CONS(hak, v)) { /* named class. the compiler generates code to push a pair * holding a name and a class object for a name class. */ - class_name = HCL_CONS_CAR(v); - HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl, class_name)); + class_name = HAK_CONS_CAR(v); + HAK_ASSERT (hak, HAK_IS_SYMBOL(hak, class_name)); - class_obj = (hcl_oop_class_t)HCL_CONS_CDR(v); - if (HCL_IS_CLASS(hcl, class_obj)) + class_obj = (hak_oop_class_t)HAK_CONS_CDR(v); + if (HAK_IS_CLASS(hak, class_obj)) { /* the existing value must be a class. disallow re-definition */ /* 0(non-kernel object), 1(incomplete kernel object), 2(complete kernel object) */ - if (HCL_OBJ_GET_FLAGS_KERNEL(class_obj) == 1) + if (HAK_OBJ_GET_FLAGS_KERNEL(class_obj) == 1) { /* check if the new definition is compatible with kernel definition */ - hcl_ooi_t spec, selfspec, nivars_super, nivars_super_real; + hak_ooi_t spec, selfspec, nivars_super, nivars_super_real; - spec = HCL_OOP_TO_SMOOI(class_obj->spec); - selfspec = HCL_OOP_TO_SMOOI(class_obj->selfspec); - nivars_super = HCL_OOP_TO_SMOOI(class_obj->nivars_super); - nivars_super_real = HCL_IS_NIL(hcl, superclass)? 0: HCL_OOP_TO_SMOOI(((hcl_oop_class_t)superclass)->nivars_super); + spec = HAK_OOP_TO_SMOOI(class_obj->spec); + selfspec = HAK_OOP_TO_SMOOI(class_obj->selfspec); + nivars_super = HAK_OOP_TO_SMOOI(class_obj->nivars_super); + nivars_super_real = HAK_IS_NIL(hak, superclass)? 0: HAK_OOP_TO_SMOOI(((hak_oop_class_t)superclass)->nivars_super); #if 0 -hcl_logbfmt (hcl, HCL_LOG_STDERR, ">>>%O c->sc=%O sc=%O b2=%d b3=%d nivars=%d ncvars=%d<<<\n", class_obj, class_obj->superclass, superclass, b2, b3, (int)HCL_CLASS_SPEC_NAMED_INSTVARS(spec), (int)HCL_CLASS_SELFSPEC_CLASSVARS(spec)); +hak_logbfmt (hak, HAK_LOG_STDERR, ">>>%O c->sc=%O sc=%O b2=%d b3=%d nivars=%d ncvars=%d<<<\n", class_obj, class_obj->superclass, superclass, b2, b3, (int)HAK_CLASS_SPEC_NAMED_INSTVARS(spec), (int)HAK_CLASS_SELFSPEC_CLASSVARS(spec)); #endif if (class_obj->superclass != superclass || expected_spec != spec || expected_selfspec != selfspec || nivars_super != nivars_super_real) { - hcl_seterrbfmt (hcl, HCL_EPERM, "incompatible redefintion of %.*js", HCL_OBJ_GET_SIZE(class_name), HCL_OBJ_GET_CHAR_SLOT(class_name)); - if (do_throw_with_internal_errmsg(hcl, fetched_instruction_pointer) >= 0) break; + hak_seterrbfmt (hak, HAK_EPERM, "incompatible redefintion of %.*js", HAK_OBJ_GET_SIZE(class_name), HAK_OBJ_GET_CHAR_SLOT(class_name)); + if (do_throw_with_internal_errmsg(hak, fetched_instruction_pointer) >= 0) break; goto oops_with_errmsg_supplement; } } else { - hcl_seterrbfmt (hcl, HCL_EPERM, "prohibited redefintion of %.*js", HCL_OBJ_GET_SIZE(class_name), HCL_OBJ_GET_CHAR_SLOT(class_name)); - if (do_throw_with_internal_errmsg(hcl, fetched_instruction_pointer) >= 0) break; + hak_seterrbfmt (hak, HAK_EPERM, "prohibited redefintion of %.*js", HAK_OBJ_GET_SIZE(class_name), HAK_OBJ_GET_CHAR_SLOT(class_name)); + if (do_throw_with_internal_errmsg(hak, fetched_instruction_pointer) >= 0) break; goto oops_with_errmsg_supplement; } } else { - HCL_ASSERT (hcl, HCL_IS_NIL(hcl, (hcl_oop_t)class_obj)); + HAK_ASSERT (hak, HAK_IS_NIL(hak, (hak_oop_t)class_obj)); goto make_class; } } else { /* anonymous class */ - HCL_ASSERT (hcl, HCL_IS_NIL(hcl, v)); - class_name = hcl->_nil; + HAK_ASSERT (hak, HAK_IS_NIL(hak, v)); + class_name = hak->_nil; make_class: - class_obj = (hcl_oop_class_t)hcl_makeclass(hcl, class_name, superclass, expected_spec, expected_selfspec, ivars_str, cvars_str); - if (HCL_UNLIKELY(!class_obj)) goto oops_with_errmsg_supplement; + class_obj = (hak_oop_class_t)hak_makeclass(hak, class_name, superclass, expected_spec, expected_selfspec, ivars_str, cvars_str); + if (HAK_UNLIKELY(!class_obj)) goto oops_with_errmsg_supplement; } /* push the class created to the class stack. * but don't push to the normal operation stack */ - HCL_CLSTACK_PUSH (hcl, (hcl_oop_t)class_obj); + HAK_CLSTACK_PUSH (hak, (hak_oop_t)class_obj); break; } - case HCL_CODE_CLASS_EXIT: + case HAK_CODE_CLASS_EXIT: { - LOG_INST_0 (hcl, "class_exit"); - if (HCL_CLSTACK_IS_EMPTY(hcl)) + LOG_INST_0 (hak, "class_exit"); + if (HAK_CLSTACK_IS_EMPTY(hak)) { - hcl_seterrbfmt (hcl, HCL_ESTKUNDFLW, "class stack underflow"); + hak_seterrbfmt (hak, HAK_ESTKUNDFLW, "class stack underflow"); goto oops_with_errmsg_supplement; } - HCL_CLSTACK_POP (hcl); + HAK_CLSTACK_POP (hak); break; } - case HCL_CODE_CLASS_PEXIT: /* pop + exit */ + case HAK_CODE_CLASS_PEXIT: /* pop + exit */ { - hcl_oop_t c; + hak_oop_t c; - LOG_INST_0 (hcl, "class_pexit"); + LOG_INST_0 (hak, "class_pexit"); - if (HCL_CLSTACK_IS_EMPTY(hcl)) + if (HAK_CLSTACK_IS_EMPTY(hak)) { - hcl_seterrbfmt (hcl, HCL_ESTKUNDFLW, "class stack underflow"); + hak_seterrbfmt (hak, HAK_ESTKUNDFLW, "class stack underflow"); goto oops_with_errmsg_supplement; } - HCL_CLSTACK_POP_TO (hcl, c); - HCL_STACK_PUSH (hcl, c); + HAK_CLSTACK_POP_TO (hak, c); + HAK_STACK_PUSH (hak, c); break; } - case HCL_CODE_CLASS_CMSTORE: - case HCL_CODE_CLASS_IMSTORE: - case HCL_CODE_CLASS_CIMSTORE: + case HAK_CODE_CLASS_CMSTORE: + case HAK_CODE_CLASS_IMSTORE: + case HAK_CODE_CLASS_CIMSTORE: { - hcl_oop_t _class; - hcl_oop_t mdic, blk, name; + hak_oop_t _class; + hak_oop_t mdic, blk, name; int mtype; - static const hcl_bch_t* pfx[] = { "c", "i", "ci" }; + static const hak_bch_t* pfx[] = { "c", "i", "ci" }; - mtype = (bcode - HCL_CODE_CLASS_CMSTORE) + 1; - HCL_ASSERT (hcl, mtype >= 1 && mtype <= 3); - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_2 (hcl, "class_%hsmstore @%zu", pfx[mtype - 1], b1); + mtype = (bcode - HAK_CODE_CLASS_CMSTORE) + 1; + HAK_ASSERT (hak, mtype >= 1 && mtype <= 3); + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_2 (hak, "class_%hsmstore @%zu", pfx[mtype - 1], b1); /* store the stack top in the member dictionary of the currect class with the key indicated by 'b1' */ - HCL_ASSERT (hcl, !HCL_CLSTACK_IS_EMPTY(hcl)); + HAK_ASSERT (hak, !HAK_CLSTACK_IS_EMPTY(hak)); - HCL_CLSTACK_FETCH_TOP_TO (hcl, _class); - HCL_ASSERT (hcl, HCL_IS_CLASS(hcl, _class)); + HAK_CLSTACK_FETCH_TOP_TO (hak, _class); + HAK_ASSERT (hak, HAK_IS_CLASS(hak, _class)); - mdic = ((hcl_oop_class_t)_class)->mdic; /* instance-side dictionary */ - HCL_ASSERT (hcl, HCL_IS_NIL(hcl, mdic) || HCL_IS_DIC(hcl, mdic)); - if (HCL_IS_NIL(hcl, mdic)) + mdic = ((hak_oop_class_t)_class)->mdic; /* instance-side dictionary */ + HAK_ASSERT (hak, HAK_IS_NIL(hak, mdic) || HAK_IS_DIC(hak, mdic)); + if (HAK_IS_NIL(hak, mdic)) { - hcl_pushvolat (hcl, (hcl_oop_t*)&_class); - mdic = hcl_makedic(hcl, 16); /* TODO: configurable initial size? */ - hcl_popvolat (hcl); - if (HCL_UNLIKELY(!mdic)) goto oops_with_errmsg_supplement; - ((hcl_oop_class_t)_class)->mdic = mdic; + hak_pushvolat (hak, (hak_oop_t*)&_class); + mdic = hak_makedic(hak, 16); /* TODO: configurable initial size? */ + hak_popvolat (hak); + if (HAK_UNLIKELY(!mdic)) goto oops_with_errmsg_supplement; + ((hak_oop_class_t)_class)->mdic = mdic; } - blk = HCL_STACK_GETTOP(hcl); - name = hcl->active_function->literal_frame[b1]; /* method name */ + blk = HAK_STACK_GETTOP(hak); + name = hak->active_function->literal_frame[b1]; /* method name */ /* put the code at method dictionary pass 1 for class method, 2 for instance method, 3 for class instantiation method */ - if (!hcl_putatdic_method(hcl, (hcl_oop_dic_t)mdic, name, blk, mtype)) goto oops_with_errmsg_supplement; + if (!hak_putatdic_method(hak, (hak_oop_dic_t)mdic, name, blk, mtype)) goto oops_with_errmsg_supplement; break; } /* -------------------------------------------------------- */ - case HCL_CODE_PUSH_CTXTEMPVAR_X: - case HCL_CODE_STORE_INTO_CTXTEMPVAR_X: - case HCL_CODE_POP_INTO_CTXTEMPVAR_X: - FETCH_PARAM_CODE_TO (hcl, b1); - FETCH_PARAM_CODE_TO (hcl, b2); + case HAK_CODE_PUSH_CTXTEMPVAR_X: + case HAK_CODE_STORE_INTO_CTXTEMPVAR_X: + case HAK_CODE_POP_INTO_CTXTEMPVAR_X: + FETCH_PARAM_CODE_TO (hak, b1); + FETCH_PARAM_CODE_TO (hak, b2); goto handle_ctxtempvar; - case HCL_CODE_PUSH_CTXTEMPVAR_0: - case HCL_CODE_PUSH_CTXTEMPVAR_1: - case HCL_CODE_PUSH_CTXTEMPVAR_2: - case HCL_CODE_PUSH_CTXTEMPVAR_3: - case HCL_CODE_STORE_INTO_CTXTEMPVAR_0: - case HCL_CODE_STORE_INTO_CTXTEMPVAR_1: - case HCL_CODE_STORE_INTO_CTXTEMPVAR_2: - case HCL_CODE_STORE_INTO_CTXTEMPVAR_3: - case HCL_CODE_POP_INTO_CTXTEMPVAR_0: - case HCL_CODE_POP_INTO_CTXTEMPVAR_1: - case HCL_CODE_POP_INTO_CTXTEMPVAR_2: - case HCL_CODE_POP_INTO_CTXTEMPVAR_3: + case HAK_CODE_PUSH_CTXTEMPVAR_0: + case HAK_CODE_PUSH_CTXTEMPVAR_1: + case HAK_CODE_PUSH_CTXTEMPVAR_2: + case HAK_CODE_PUSH_CTXTEMPVAR_3: + case HAK_CODE_STORE_INTO_CTXTEMPVAR_0: + case HAK_CODE_STORE_INTO_CTXTEMPVAR_1: + case HAK_CODE_STORE_INTO_CTXTEMPVAR_2: + case HAK_CODE_STORE_INTO_CTXTEMPVAR_3: + case HAK_CODE_POP_INTO_CTXTEMPVAR_0: + case HAK_CODE_POP_INTO_CTXTEMPVAR_1: + case HAK_CODE_POP_INTO_CTXTEMPVAR_2: + case HAK_CODE_POP_INTO_CTXTEMPVAR_3: { - hcl_ooi_t i; - hcl_oop_context_t ctx; + hak_ooi_t i; + hak_oop_context_t ctx; b1 = bcode & 0x3; /* low 2 bits */ - FETCH_BYTE_CODE_TO (hcl, b2); + FETCH_BYTE_CODE_TO (hak, b2); handle_ctxtempvar: - ctx = hcl->active_context; - HCL_ASSERT (hcl, (hcl_oop_t)ctx != hcl->_nil); + ctx = hak->active_context; + HAK_ASSERT (hak, (hak_oop_t)ctx != hak->_nil); for (i = 0; i < b1; i++) { - ctx = (hcl_oop_context_t)ctx->home; + ctx = (hak_oop_context_t)ctx->home; /* the initial context has nil in the home field. * the loop must not reach beyond the initial context */ - HCL_ASSERT (hcl, (hcl_oop_t)ctx != hcl->_nil); + HAK_ASSERT (hak, (hak_oop_t)ctx != hak->_nil); } if ((bcode >> 3) & 1) { /* store or pop */ - ctx->slot[b2] = HCL_STACK_GETTOP(hcl); + ctx->slot[b2] = HAK_STACK_GETTOP(hak); if ((bcode >> 2) & 1) { /* pop */ - HCL_STACK_POP (hcl); - LOG_INST_2 (hcl, "pop_into_ctxtempvar %zu %zu", b1, b2); + HAK_STACK_POP (hak); + LOG_INST_2 (hak, "pop_into_ctxtempvar %zu %zu", b1, b2); } else { - LOG_INST_2 (hcl, "store_into_ctxtempvar %zu %zu", b1, b2); + LOG_INST_2 (hak, "store_into_ctxtempvar %zu %zu", b1, b2); } } else { /* push */ - HCL_STACK_PUSH (hcl, ctx->slot[b2]); - LOG_INST_2 (hcl, "push_ctxtempvar %zu %zu", b1, b2); + HAK_STACK_PUSH (hak, ctx->slot[b2]); + LOG_INST_2 (hak, "push_ctxtempvar %zu %zu", b1, b2); } break; } /* -------------------------------------------------------- */ - case HCL_CODE_PUSH_OBJVAR_X: - case HCL_CODE_STORE_INTO_OBJVAR_X: - case HCL_CODE_POP_INTO_OBJVAR_X: - FETCH_PARAM_CODE_TO (hcl, b1); - FETCH_PARAM_CODE_TO (hcl, b2); + case HAK_CODE_PUSH_OBJVAR_X: + case HAK_CODE_STORE_INTO_OBJVAR_X: + case HAK_CODE_POP_INTO_OBJVAR_X: + FETCH_PARAM_CODE_TO (hak, b1); + FETCH_PARAM_CODE_TO (hak, b2); goto handle_objvar; - case HCL_CODE_PUSH_OBJVAR_0: - case HCL_CODE_PUSH_OBJVAR_1: - case HCL_CODE_PUSH_OBJVAR_2: - case HCL_CODE_PUSH_OBJVAR_3: - case HCL_CODE_STORE_INTO_OBJVAR_0: - case HCL_CODE_STORE_INTO_OBJVAR_1: - case HCL_CODE_STORE_INTO_OBJVAR_2: - case HCL_CODE_STORE_INTO_OBJVAR_3: - case HCL_CODE_POP_INTO_OBJVAR_0: - case HCL_CODE_POP_INTO_OBJVAR_1: - case HCL_CODE_POP_INTO_OBJVAR_2: - case HCL_CODE_POP_INTO_OBJVAR_3: + case HAK_CODE_PUSH_OBJVAR_0: + case HAK_CODE_PUSH_OBJVAR_1: + case HAK_CODE_PUSH_OBJVAR_2: + case HAK_CODE_PUSH_OBJVAR_3: + case HAK_CODE_STORE_INTO_OBJVAR_0: + case HAK_CODE_STORE_INTO_OBJVAR_1: + case HAK_CODE_STORE_INTO_OBJVAR_2: + case HAK_CODE_STORE_INTO_OBJVAR_3: + case HAK_CODE_POP_INTO_OBJVAR_0: + case HAK_CODE_POP_INTO_OBJVAR_1: + case HAK_CODE_POP_INTO_OBJVAR_2: + case HAK_CODE_POP_INTO_OBJVAR_3: { - hcl_oop_oop_t t; + hak_oop_oop_t t; /* b1 -> variable index in the object indicated by b2. * b2 -> object index stored in the literal frame. */ b1 = bcode & 0x3; /* low 2 bits */ - FETCH_BYTE_CODE_TO (hcl, b2); + FETCH_BYTE_CODE_TO (hak, b2); handle_objvar: - /*t = hcl->code.lit.arr->slot[b2];*/ - t = (hcl_oop_oop_t)hcl->active_function->literal_frame[b2]; - HCL_ASSERT (hcl, HCL_OBJ_GET_FLAGS_TYPE(t) == HCL_OBJ_TYPE_OOP); - HCL_ASSERT (hcl, b1 < HCL_OBJ_GET_SIZE(t)); + /*t = hak->code.lit.arr->slot[b2];*/ + t = (hak_oop_oop_t)hak->active_function->literal_frame[b2]; + HAK_ASSERT (hak, HAK_OBJ_GET_FLAGS_TYPE(t) == HAK_OBJ_TYPE_OOP); + HAK_ASSERT (hak, b1 < HAK_OBJ_GET_SIZE(t)); if ((bcode >> 3) & 1) { /* store or pop */ - t->slot[b1] = HCL_STACK_GETTOP(hcl); + t->slot[b1] = HAK_STACK_GETTOP(hak); if ((bcode >> 2) & 1) { /* pop */ - LOG_INST_2 (hcl, "pop_into_objvar %zu %zu", b1, b2); - HCL_STACK_POP (hcl); + LOG_INST_2 (hak, "pop_into_objvar %zu %zu", b1, b2); + HAK_STACK_POP (hak); } else { - LOG_INST_2 (hcl, "store_into_objvar %zu %zu", b1, b2); + LOG_INST_2 (hak, "store_into_objvar %zu %zu", b1, b2); } } else { /* push */ - LOG_INST_2 (hcl, "push_objvar %zu %zu", b1, b2); - HCL_STACK_PUSH (hcl, t->slot[b1]); + LOG_INST_2 (hak, "push_objvar %zu %zu", b1, b2); + HAK_STACK_PUSH (hak, t->slot[b1]); } break; } /* -------------------------------------------------------- */ - case HCL_CODE_SEND_R: /* send message with return variables */ - case HCL_CODE_SEND_TO_SUPER_R: + case HAK_CODE_SEND_R: /* send message with return variables */ + case HAK_CODE_SEND_TO_SUPER_R: - FETCH_PARAM_CODE_TO (hcl, b1); /* nargs */ - FETCH_PARAM_CODE_TO (hcl, b2); /* nrvars */ + FETCH_PARAM_CODE_TO (hak, b1); /* nargs */ + FETCH_PARAM_CODE_TO (hak, b2); /* nrvars */ - LOG_INST_3 (hcl, "send%hs %zu %zu", (((bcode >> 2) & 1)? "_to_super": ""), b1, b2); + LOG_INST_3 (hak, "send%hs %zu %zu", (((bcode >> 2) & 1)? "_to_super": ""), b1, b2); goto handle_send_2; - case HCL_CODE_SEND_X: - case HCL_CODE_SEND_TO_SUPER_X: - FETCH_PARAM_CODE_TO (hcl, b1); + case HAK_CODE_SEND_X: + case HAK_CODE_SEND_TO_SUPER_X: + FETCH_PARAM_CODE_TO (hak, b1); goto handle_send; - case HCL_CODE_SEND_0: - case HCL_CODE_SEND_1: - case HCL_CODE_SEND_2: - case HCL_CODE_SEND_3: - case HCL_CODE_SEND_TO_SUPER_0: - case HCL_CODE_SEND_TO_SUPER_1: - case HCL_CODE_SEND_TO_SUPER_2: - case HCL_CODE_SEND_TO_SUPER_3: + case HAK_CODE_SEND_0: + case HAK_CODE_SEND_1: + case HAK_CODE_SEND_2: + case HAK_CODE_SEND_3: + case HAK_CODE_SEND_TO_SUPER_0: + case HAK_CODE_SEND_TO_SUPER_1: + case HAK_CODE_SEND_TO_SUPER_2: + case HAK_CODE_SEND_TO_SUPER_3: { - hcl_oop_t rcv, op; + hak_oop_t rcv, op; b1 = bcode & 0x3; /* low 2 bits */ handle_send: b2 = 0; - LOG_INST_2 (hcl, "send%hs %zu", (((bcode >> 2) & 1)? "_to_super": ""), b1); + LOG_INST_2 (hak, "send%hs %zu", (((bcode >> 2) & 1)? "_to_super": ""), b1); handle_send_2: - rcv = HCL_STACK_GETRCV(hcl, b1); - op = HCL_STACK_GETOP(hcl, b1); - if (!HCL_OBJ_IS_CHAR_POINTER(op)) /*if (!HCL_IS_SYMBOL(hcl, op))*/ + rcv = HAK_STACK_GETRCV(hak, b1); + op = HAK_STACK_GETOP(hak, b1); + if (!HAK_OBJ_IS_CHAR_POINTER(op)) /*if (!HAK_IS_SYMBOL(hak, op))*/ { - hcl_seterrbfmt (hcl, HCL_ECALL, "unable to send %O to %O - invalid message", op, rcv); /* TODO: change to HCL_ESEND?? */ + hak_seterrbfmt (hak, HAK_ECALL, "unable to send %O to %O - invalid message", op, rcv); /* TODO: change to HAK_ESEND?? */ cannot_send: - if (do_throw_with_internal_errmsg(hcl, fetched_instruction_pointer) >= 0) break; + if (do_throw_with_internal_errmsg(hak, fetched_instruction_pointer) >= 0) break; goto oops_with_errmsg_supplement; } else { - if (send_message(hcl, rcv, op, ((bcode >> 2) & 1) /* to_super */, b1 /* nargs */, b2 /* nrvars */) <= -1) + if (send_message(hak, rcv, op, ((bcode >> 2) & 1) /* to_super */, b1 /* nargs */, b2 /* nrvars */) <= -1) { - const hcl_ooch_t* msg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ECALL, "unable to send %O to %O - %js", op, rcv, msg); /* TODO: change to HCL_ESEND?? */ + const hak_ooch_t* msg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ECALL, "unable to send %O to %O - %js", op, rcv, msg); /* TODO: change to HAK_ESEND?? */ goto cannot_send; } } @@ -4391,49 +4391,49 @@ hcl_logbfmt (hcl, HCL_LOG_STDERR, ">>>%O c->sc=%O sc=%O b2=%d b3=%d nivars=%d nc /* access the class variables in the initialization context. * the class object is at the class stack top */ - case HCL_CODE_PUSH_CVAR_I_X: + case HAK_CODE_PUSH_CVAR_I_X: { - hcl_oop_t t; - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "push_cvar_i %zu", b1); - HCL_CLSTACK_FETCH_TOP_TO(hcl, t); - HCL_ASSERT (hcl, HCL_IS_CLASS(hcl, t)); - HCL_STACK_PUSH (hcl, ((hcl_oop_class_t)t)->cvar[b1]); + hak_oop_t t; + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "push_cvar_i %zu", b1); + HAK_CLSTACK_FETCH_TOP_TO(hak, t); + HAK_ASSERT (hak, HAK_IS_CLASS(hak, t)); + HAK_STACK_PUSH (hak, ((hak_oop_class_t)t)->cvar[b1]); break; } - case HCL_CODE_STORE_INTO_CVAR_I_X: + case HAK_CODE_STORE_INTO_CVAR_I_X: { - hcl_oop_t t; - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "store_into_cvar_i %zu", b1); - if (HCL_CLSTACK_IS_EMPTY(hcl)) + hak_oop_t t; + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "store_into_cvar_i %zu", b1); + if (HAK_CLSTACK_IS_EMPTY(hak)) { - hcl_seterrbfmt (hcl, HCL_ESTKUNDFLW, "empty class stack"); + hak_seterrbfmt (hak, HAK_ESTKUNDFLW, "empty class stack"); /* TODO: do throw??? instead */ goto oops_with_errmsg_supplement; } - HCL_CLSTACK_FETCH_TOP_TO(hcl, t); - HCL_ASSERT (hcl, HCL_IS_CLASS(hcl, t)); - ((hcl_oop_class_t)t)->cvar[b1] = HCL_STACK_GETTOP(hcl); + HAK_CLSTACK_FETCH_TOP_TO(hak, t); + HAK_ASSERT (hak, HAK_IS_CLASS(hak, t)); + ((hak_oop_class_t)t)->cvar[b1] = HAK_STACK_GETTOP(hak); break; } - case HCL_CODE_POP_INTO_CVAR_I_X: + case HAK_CODE_POP_INTO_CVAR_I_X: { - hcl_oop_t t; - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "pop_into_cvar_i %zu", b1); - if (HCL_CLSTACK_IS_EMPTY(hcl)) + hak_oop_t t; + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "pop_into_cvar_i %zu", b1); + if (HAK_CLSTACK_IS_EMPTY(hak)) { - hcl_seterrbfmt (hcl, HCL_ESTKUNDFLW, "empty class stack"); + hak_seterrbfmt (hak, HAK_ESTKUNDFLW, "empty class stack"); /* TODO: do throw??? instead */ goto oops_with_errmsg_supplement; } - HCL_CLSTACK_FETCH_TOP_TO(hcl, t); - HCL_ASSERT (hcl, HCL_IS_CLASS(hcl, t)); - ((hcl_oop_class_t)t)->cvar[b1] = HCL_STACK_GETTOP(hcl); - HCL_STACK_POP (hcl); + HAK_CLSTACK_FETCH_TOP_TO(hak, t); + HAK_ASSERT (hak, HAK_IS_CLASS(hak, t)); + ((hak_oop_class_t)t)->cvar[b1] = HAK_STACK_GETTOP(hak); + HAK_STACK_POP (hak); break; } @@ -4442,394 +4442,394 @@ hcl_logbfmt (hcl, HCL_LOG_STDERR, ">>>%O c->sc=%O sc=%O b2=%d b3=%d nivars=%d nc /* access class variables referenced in a method context. * the class variables slots in the owning class of the method that triggerred the current active context */ - case HCL_CODE_PUSH_CVAR_M_X: + case HAK_CODE_PUSH_CVAR_M_X: { - hcl_oop_t t; - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "push_cvar_m %zu", b1); - HCL_ASSERT (hcl, (hcl_oop_t)hcl->active_context/*->mthhome*/ != hcl->_nil); - t = hcl->active_context/*->mthhome*/->owner; - if (HCL_UNLIKELY(!HCL_IS_CLASS(hcl, t))) + hak_oop_t t; + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "push_cvar_m %zu", b1); + HAK_ASSERT (hak, (hak_oop_t)hak->active_context/*->mthhome*/ != hak->_nil); + t = hak->active_context/*->mthhome*/->owner; + if (HAK_UNLIKELY(!HAK_IS_CLASS(hak, t))) { /* this is an internal error or the bytecodes are compromised */ - hcl_seterrbfmt (hcl, HCL_EINTERN, "non-class owner in class variable access"); + hak_seterrbfmt (hak, HAK_EINTERN, "non-class owner in class variable access"); goto oops_with_errmsg_supplement; } - HCL_STACK_PUSH (hcl, ((hcl_oop_class_t)t)->cvar[b1]); + HAK_STACK_PUSH (hak, ((hak_oop_class_t)t)->cvar[b1]); break; } - case HCL_CODE_STORE_INTO_CVAR_M_X: + case HAK_CODE_STORE_INTO_CVAR_M_X: { - hcl_oop_t t; - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "store_into_cvar_m %zu", b1); - HCL_ASSERT (hcl, (hcl_oop_t)hcl->active_context/*->mthhome*/ != hcl->_nil); - t = hcl->active_context/*->mthhome*/->owner; - if (HCL_UNLIKELY(!HCL_IS_CLASS(hcl, t))) + hak_oop_t t; + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "store_into_cvar_m %zu", b1); + HAK_ASSERT (hak, (hak_oop_t)hak->active_context/*->mthhome*/ != hak->_nil); + t = hak->active_context/*->mthhome*/->owner; + if (HAK_UNLIKELY(!HAK_IS_CLASS(hak, t))) { /* this is an internal error or the bytecodes are compromised */ - hcl_seterrbfmt (hcl, HCL_EINTERN, "non-class owner in class variable access"); + hak_seterrbfmt (hak, HAK_EINTERN, "non-class owner in class variable access"); goto oops_with_errmsg_supplement; } - ((hcl_oop_class_t)t)->cvar[b1] = HCL_STACK_GETTOP(hcl); + ((hak_oop_class_t)t)->cvar[b1] = HAK_STACK_GETTOP(hak); break; } - case HCL_CODE_POP_INTO_CVAR_M_X: + case HAK_CODE_POP_INTO_CVAR_M_X: { - hcl_oop_t t; - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "pop_into_cvar_m %zu", b1); - HCL_ASSERT (hcl, (hcl_oop_t)hcl->active_context/*->mthhome*/ != hcl->_nil); - t = hcl->active_context/*->mthhome*/->owner; - if (HCL_UNLIKELY(!HCL_IS_CLASS(hcl, t))) + hak_oop_t t; + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "pop_into_cvar_m %zu", b1); + HAK_ASSERT (hak, (hak_oop_t)hak->active_context/*->mthhome*/ != hak->_nil); + t = hak->active_context/*->mthhome*/->owner; + if (HAK_UNLIKELY(!HAK_IS_CLASS(hak, t))) { /* this is an internal error or the bytecodes are compromised */ - hcl_seterrbfmt (hcl, HCL_EINTERN, "non-class owner in class variable access"); + hak_seterrbfmt (hak, HAK_EINTERN, "non-class owner in class variable access"); goto oops_with_errmsg_supplement; } - ((hcl_oop_class_t)t)->cvar[b1] = HCL_STACK_GETTOP(hcl); - HCL_STACK_POP (hcl); + ((hak_oop_class_t)t)->cvar[b1] = HAK_STACK_GETTOP(hak); + HAK_STACK_POP (hak); break; } /* -------------------------------------------------------- */ - case HCL_CODE_PUSH_RECEIVER: /* push self or super */ - LOG_INST_0 (hcl, "push_receiver"); - HCL_STACK_PUSH (hcl, hcl->active_context->receiver); + case HAK_CODE_PUSH_RECEIVER: /* push self or super */ + LOG_INST_0 (hak, "push_receiver"); + HAK_STACK_PUSH (hak, hak->active_context->receiver); break; - case HCL_CODE_PUSH_NIL: - LOG_INST_0 (hcl, "push_nil"); - HCL_STACK_PUSH (hcl, hcl->_nil); + case HAK_CODE_PUSH_NIL: + LOG_INST_0 (hak, "push_nil"); + HAK_STACK_PUSH (hak, hak->_nil); break; - case HCL_CODE_PUSH_TRUE: - LOG_INST_0 (hcl, "push_true"); - HCL_STACK_PUSH (hcl, hcl->_true); + case HAK_CODE_PUSH_TRUE: + LOG_INST_0 (hak, "push_true"); + HAK_STACK_PUSH (hak, hak->_true); break; - case HCL_CODE_PUSH_FALSE: - LOG_INST_0 (hcl, "push_false"); - HCL_STACK_PUSH (hcl, hcl->_false); + case HAK_CODE_PUSH_FALSE: + LOG_INST_0 (hak, "push_false"); + HAK_STACK_PUSH (hak, hak->_false); break; - case HCL_CODE_PUSH_CONTEXT: - LOG_INST_0 (hcl, "push_context"); - HCL_STACK_PUSH (hcl, (hcl_oop_t)hcl->active_context); + case HAK_CODE_PUSH_CONTEXT: + LOG_INST_0 (hak, "push_context"); + HAK_STACK_PUSH (hak, (hak_oop_t)hak->active_context); break; - case HCL_CODE_PUSH_PROCESS: - LOG_INST_0 (hcl, "push_process"); - HCL_STACK_PUSH (hcl, (hcl_oop_t)hcl->processor->active); + case HAK_CODE_PUSH_PROCESS: + LOG_INST_0 (hak, "push_process"); + HAK_STACK_PUSH (hak, (hak_oop_t)hak->processor->active); break; - case HCL_CODE_PUSH_NEGONE: - LOG_INST_0 (hcl, "push_negone"); - HCL_STACK_PUSH (hcl, HCL_SMOOI_TO_OOP(-1)); + case HAK_CODE_PUSH_NEGONE: + LOG_INST_0 (hak, "push_negone"); + HAK_STACK_PUSH (hak, HAK_SMOOI_TO_OOP(-1)); break; - case HCL_CODE_PUSH_ZERO: - LOG_INST_0 (hcl, "push_zero"); - HCL_STACK_PUSH (hcl, HCL_SMOOI_TO_OOP(0)); + case HAK_CODE_PUSH_ZERO: + LOG_INST_0 (hak, "push_zero"); + HAK_STACK_PUSH (hak, HAK_SMOOI_TO_OOP(0)); break; - case HCL_CODE_PUSH_ONE: - LOG_INST_0 (hcl, "push_one"); - HCL_STACK_PUSH (hcl, HCL_SMOOI_TO_OOP(1)); + case HAK_CODE_PUSH_ONE: + LOG_INST_0 (hak, "push_one"); + HAK_STACK_PUSH (hak, HAK_SMOOI_TO_OOP(1)); break; - case HCL_CODE_PUSH_TWO: - LOG_INST_0 (hcl, "push_two"); - HCL_STACK_PUSH (hcl, HCL_SMOOI_TO_OOP(2)); + case HAK_CODE_PUSH_TWO: + LOG_INST_0 (hak, "push_two"); + HAK_STACK_PUSH (hak, HAK_SMOOI_TO_OOP(2)); break; - case HCL_CODE_PUSH_INTLIT: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "push_intlit %zu", b1); - HCL_STACK_PUSH (hcl, HCL_SMOOI_TO_OOP(b1)); + case HAK_CODE_PUSH_INTLIT: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "push_intlit %zu", b1); + HAK_STACK_PUSH (hak, HAK_SMOOI_TO_OOP(b1)); break; - case HCL_CODE_PUSH_NEGINTLIT: + case HAK_CODE_PUSH_NEGINTLIT: { - hcl_ooi_t num; - FETCH_PARAM_CODE_TO (hcl, b1); + hak_ooi_t num; + FETCH_PARAM_CODE_TO (hak, b1); num = b1; - LOG_INST_1 (hcl, "push_negintlit %zu", b1); - HCL_STACK_PUSH (hcl, HCL_SMOOI_TO_OOP(-num)); + LOG_INST_1 (hak, "push_negintlit %zu", b1); + HAK_STACK_PUSH (hak, HAK_SMOOI_TO_OOP(-num)); break; } - case HCL_CODE_PUSH_CHARLIT: - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "push_charlit %zu", b1); - HCL_STACK_PUSH (hcl, HCL_CHAR_TO_OOP(b1)); + case HAK_CODE_PUSH_CHARLIT: + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "push_charlit %zu", b1); + HAK_STACK_PUSH (hak, HAK_CHAR_TO_OOP(b1)); break; /* -------------------------------------------------------- */ - case HCL_CODE_MAKE_ARRAY: + case HAK_CODE_MAKE_ARRAY: { - hcl_oop_t t; + hak_oop_t t; - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "make_array %zu", b1); + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "make_array %zu", b1); /* create an empty array */ - t = hcl_makearray(hcl, b1); - if (HCL_UNLIKELY(!t)) goto oops_with_errmsg_supplement; + t = hak_makearray(hak, b1); + if (HAK_UNLIKELY(!t)) goto oops_with_errmsg_supplement; - HCL_STACK_PUSH (hcl, t); /* push the array created */ + HAK_STACK_PUSH (hak, t); /* push the array created */ break; } - case HCL_CODE_POP_INTO_ARRAY: + case HAK_CODE_POP_INTO_ARRAY: { - hcl_oop_t t1, t2; - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "pop_into_array %zu", b1); - t1 = HCL_STACK_GETTOP(hcl); /* value to store */ - HCL_STACK_POP (hcl); - t2 = HCL_STACK_GETTOP(hcl); /* array */ - if (HCL_UNLIKELY(b1 >= HCL_OBJ_GET_SIZE(t2))) + hak_oop_t t1, t2; + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "pop_into_array %zu", b1); + t1 = HAK_STACK_GETTOP(hak); /* value to store */ + HAK_STACK_POP (hak); + t2 = HAK_STACK_GETTOP(hak); /* array */ + if (HAK_UNLIKELY(b1 >= HAK_OBJ_GET_SIZE(t2))) { - hcl_seterrbfmt (hcl, HCL_ECALL, "array index %zu out of upper bound %zd ", b1, (hcl_oow_t)HCL_OBJ_GET_SIZE(t2)); - if (do_throw_with_internal_errmsg(hcl, fetched_instruction_pointer) >= 0) break; + hak_seterrbfmt (hak, HAK_ECALL, "array index %zu out of upper bound %zd ", b1, (hak_oow_t)HAK_OBJ_GET_SIZE(t2)); + if (do_throw_with_internal_errmsg(hak, fetched_instruction_pointer) >= 0) break; goto oops_with_errmsg_supplement; } - ((hcl_oop_oop_t)t2)->slot[b1] = t1; + ((hak_oop_oop_t)t2)->slot[b1] = t1; break; } - case HCL_CODE_MAKE_BYTEARRAY: + case HAK_CODE_MAKE_BYTEARRAY: { - hcl_oop_t t; + hak_oop_t t; - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "make_bytearray %zu", b1); + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "make_bytearray %zu", b1); /* create an empty array */ - t = hcl_makebytearray(hcl, HCL_NULL, b1); - if (HCL_UNLIKELY(!t)) goto oops_with_errmsg_supplement; + t = hak_makebytearray(hak, HAK_NULL, b1); + if (HAK_UNLIKELY(!t)) goto oops_with_errmsg_supplement; - HCL_STACK_PUSH (hcl, t); /* push the byte array created */ + HAK_STACK_PUSH (hak, t); /* push the byte array created */ break; } - case HCL_CODE_POP_INTO_BYTEARRAY: + case HAK_CODE_POP_INTO_BYTEARRAY: { - hcl_oop_t t1, t2; - hcl_ooi_t bv; + hak_oop_t t1, t2; + hak_ooi_t bv; - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "pop_into_bytearray %zu", b1); + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "pop_into_bytearray %zu", b1); - t1 = HCL_STACK_GETTOP(hcl); /* value to store */ - if (!HCL_OOP_IS_SMOOI(t1) || (bv = HCL_OOP_TO_SMOOI(t1)) < 0 || bv > 255) + t1 = HAK_STACK_GETTOP(hak); /* value to store */ + if (!HAK_OOP_IS_SMOOI(t1) || (bv = HAK_OOP_TO_SMOOI(t1)) < 0 || bv > 255) { - hcl_seterrbfmt (hcl, HCL_ERANGE, "not a byte or out of byte range - %O", t1); - if (do_throw_with_internal_errmsg(hcl, fetched_instruction_pointer) >= 0) break; + hak_seterrbfmt (hak, HAK_ERANGE, "not a byte or out of byte range - %O", t1); + if (do_throw_with_internal_errmsg(hak, fetched_instruction_pointer) >= 0) break; goto oops_with_errmsg_supplement; } - HCL_STACK_POP (hcl); - t2 = HCL_STACK_GETTOP(hcl); /* byte array */ + HAK_STACK_POP (hak); + t2 = HAK_STACK_GETTOP(hak); /* byte array */ - if (HCL_UNLIKELY(b1 >= HCL_OBJ_GET_SIZE(t2))) + if (HAK_UNLIKELY(b1 >= HAK_OBJ_GET_SIZE(t2))) { - hcl_seterrbfmt (hcl, HCL_ECALL, "bytearray index %zu out of upper bound %zd ", b1, (hcl_oow_t)HCL_OBJ_GET_SIZE(t2)); - if (do_throw_with_internal_errmsg(hcl, fetched_instruction_pointer) >= 0) break; + hak_seterrbfmt (hak, HAK_ECALL, "bytearray index %zu out of upper bound %zd ", b1, (hak_oow_t)HAK_OBJ_GET_SIZE(t2)); + if (do_throw_with_internal_errmsg(hak, fetched_instruction_pointer) >= 0) break; goto oops_with_errmsg_supplement; } - ((hcl_oop_byte_t)t2)->slot[b1] = bv; + ((hak_oop_byte_t)t2)->slot[b1] = bv; break; } - case HCL_CODE_MAKE_CHARARRAY: + case HAK_CODE_MAKE_CHARARRAY: { - hcl_oop_t t; + hak_oop_t t; - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "make_chararray %zu", b1); + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "make_chararray %zu", b1); /* create an empty array */ - t = hcl_makechararray(hcl, HCL_NULL, b1); - if (HCL_UNLIKELY(!t)) goto oops_with_errmsg_supplement; + t = hak_makechararray(hak, HAK_NULL, b1); + if (HAK_UNLIKELY(!t)) goto oops_with_errmsg_supplement; - HCL_STACK_PUSH (hcl, t); /* push the char array created */ + HAK_STACK_PUSH (hak, t); /* push the char array created */ break; } - case HCL_CODE_POP_INTO_CHARARRAY: + case HAK_CODE_POP_INTO_CHARARRAY: { - hcl_oop_t t1, t2; - hcl_ooi_t bv; + hak_oop_t t1, t2; + hak_ooi_t bv; - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "pop_into_chararray %zu", b1); + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "pop_into_chararray %zu", b1); - t1 = HCL_STACK_GETTOP(hcl); /* value to store */ - if (!HCL_OOP_IS_CHAR(t1) || (bv = HCL_OOP_TO_CHAR(t1)) < 0 || bv > 255) + t1 = HAK_STACK_GETTOP(hak); /* value to store */ + if (!HAK_OOP_IS_CHAR(t1) || (bv = HAK_OOP_TO_CHAR(t1)) < 0 || bv > 255) { - hcl_seterrbfmt (hcl, HCL_ERANGE, "not a character or out of character range - %O", t1); - if (do_throw_with_internal_errmsg(hcl, fetched_instruction_pointer) >= 0) break; + hak_seterrbfmt (hak, HAK_ERANGE, "not a character or out of character range - %O", t1); + if (do_throw_with_internal_errmsg(hak, fetched_instruction_pointer) >= 0) break; goto oops_with_errmsg_supplement; } - HCL_STACK_POP (hcl); - t2 = HCL_STACK_GETTOP(hcl); /* char array */ + HAK_STACK_POP (hak); + t2 = HAK_STACK_GETTOP(hak); /* char array */ - if (HCL_UNLIKELY(b1 >= HCL_OBJ_GET_SIZE(t2))) + if (HAK_UNLIKELY(b1 >= HAK_OBJ_GET_SIZE(t2))) { - hcl_seterrbfmt (hcl, HCL_ECALL, "character array index %zu out of upper bound %zd ", b1, (hcl_oow_t)HCL_OBJ_GET_SIZE(t2)); - if (do_throw_with_internal_errmsg(hcl, fetched_instruction_pointer) >= 0) break; + hak_seterrbfmt (hak, HAK_ECALL, "character array index %zu out of upper bound %zd ", b1, (hak_oow_t)HAK_OBJ_GET_SIZE(t2)); + if (do_throw_with_internal_errmsg(hak, fetched_instruction_pointer) >= 0) break; goto oops_with_errmsg_supplement; } - ((hcl_oop_char_t)t2)->slot[b1] = bv; + ((hak_oop_char_t)t2)->slot[b1] = bv; break; } - case HCL_CODE_MAKE_DIC: + case HAK_CODE_MAKE_DIC: { - hcl_oop_t t; + hak_oop_t t; - FETCH_PARAM_CODE_TO (hcl, b1); - LOG_INST_1 (hcl, "make_dic %zu", b1); - t = (hcl_oop_t)hcl_makedic(hcl, b1 + 10); - if (HCL_UNLIKELY(!t)) goto oops_with_errmsg_supplement; - HCL_STACK_PUSH (hcl, t); + FETCH_PARAM_CODE_TO (hak, b1); + LOG_INST_1 (hak, "make_dic %zu", b1); + t = (hak_oop_t)hak_makedic(hak, b1 + 10); + if (HAK_UNLIKELY(!t)) goto oops_with_errmsg_supplement; + HAK_STACK_PUSH (hak, t); break; } - case HCL_CODE_POP_INTO_DIC: + case HAK_CODE_POP_INTO_DIC: { - hcl_oop_t t1, t2, t3; + hak_oop_t t1, t2, t3; - LOG_INST_0 (hcl, "pop_into_dic"); - t1 = HCL_STACK_GETTOP(hcl); /* value */ - HCL_STACK_POP (hcl); - t2 = HCL_STACK_GETTOP(hcl); /* key */ - HCL_STACK_POP (hcl); - t3 = HCL_STACK_GETTOP(hcl); /* dictionary */ - if (!hcl_putatdic(hcl, (hcl_oop_dic_t)t3, t2, t1)) goto oops; + LOG_INST_0 (hak, "pop_into_dic"); + t1 = HAK_STACK_GETTOP(hak); /* value */ + HAK_STACK_POP (hak); + t2 = HAK_STACK_GETTOP(hak); /* key */ + HAK_STACK_POP (hak); + t3 = HAK_STACK_GETTOP(hak); /* dictionary */ + if (!hak_putatdic(hak, (hak_oop_dic_t)t3, t2, t1)) goto oops; break; } - case HCL_CODE_MAKE_CONS: + case HAK_CODE_MAKE_CONS: { - hcl_oop_t t; + hak_oop_t t; - LOG_INST_0 (hcl, "make_cons"); + LOG_INST_0 (hak, "make_cons"); - t = hcl_makecons(hcl, hcl->_nil, hcl->_nil); - if (HCL_UNLIKELY(!t)) goto oops_with_errmsg_supplement; + t = hak_makecons(hak, hak->_nil, hak->_nil); + if (HAK_UNLIKELY(!t)) goto oops_with_errmsg_supplement; - HCL_STACK_PUSH (hcl, t); /* push the head cons cell */ - HCL_STACK_PUSH (hcl, hcl->_nil); /* sentinnel */ + HAK_STACK_PUSH (hak, t); /* push the head cons cell */ + HAK_STACK_PUSH (hak, hak->_nil); /* sentinnel */ break; } - case HCL_CODE_POP_INTO_CONS: + case HAK_CODE_POP_INTO_CONS: { - hcl_oop_t t1, t2, t3; - LOG_INST_0 (hcl, "pop_into_cons"); + hak_oop_t t1, t2, t3; + LOG_INST_0 (hak, "pop_into_cons"); - t1 = HCL_STACK_GETTOP(hcl); /* value to store */ - HCL_STACK_POP (hcl); + t1 = HAK_STACK_GETTOP(hak); /* value to store */ + HAK_STACK_POP (hak); - t3 = HCL_STACK_GETTOP(hcl); /* sentinnel */ - HCL_STACK_POP (hcl); + t3 = HAK_STACK_GETTOP(hak); /* sentinnel */ + HAK_STACK_POP (hak); - t2 = HCL_STACK_GETTOP(hcl); /* head cons */ - if (HCL_UNLIKELY(!HCL_IS_CONS(hcl, t2))) + t2 = HAK_STACK_GETTOP(hak); /* head cons */ + if (HAK_UNLIKELY(!HAK_IS_CONS(hak, t2))) { - hcl_seterrbfmt (hcl, HCL_EINTERN, "internal error - invalid vm state detected in pop_into_cons"); + hak_seterrbfmt (hak, HAK_EINTERN, "internal error - invalid vm state detected in pop_into_cons"); goto oops; } - if (t3 == hcl->_nil) + if (t3 == hak->_nil) { - ((hcl_oop_oop_t)t2)->slot[0] = t1; - HCL_STACK_PUSH (hcl, t2); /* push self again */ + ((hak_oop_oop_t)t2)->slot[0] = t1; + HAK_STACK_PUSH (hak, t2); /* push self again */ } else { - hcl_oop_t t; + hak_oop_t t; - hcl_pushvolat (hcl, &t3); - t = hcl_makecons(hcl, t1, hcl->_nil); - hcl_popvolat (hcl); - if (HCL_UNLIKELY(!t)) goto oops; + hak_pushvolat (hak, &t3); + t = hak_makecons(hak, t1, hak->_nil); + hak_popvolat (hak); + if (HAK_UNLIKELY(!t)) goto oops; - ((hcl_oop_oop_t)t3)->slot[1] = t; - HCL_STACK_PUSH (hcl, t); + ((hak_oop_oop_t)t3)->slot[1] = t; + HAK_STACK_PUSH (hak, t); } break; } - case HCL_CODE_POP_INTO_CONS_END: + case HAK_CODE_POP_INTO_CONS_END: { - hcl_oop_t t1, t2, t3; - LOG_INST_0 (hcl, "pop_into_cons_end"); + hak_oop_t t1, t2, t3; + LOG_INST_0 (hak, "pop_into_cons_end"); - t1 = HCL_STACK_GETTOP(hcl); /* value to store */ - HCL_STACK_POP (hcl); + t1 = HAK_STACK_GETTOP(hak); /* value to store */ + HAK_STACK_POP (hak); - t3 = HCL_STACK_GETTOP(hcl); /* sentinnel */ - HCL_STACK_POP (hcl); + t3 = HAK_STACK_GETTOP(hak); /* sentinnel */ + HAK_STACK_POP (hak); - t2 = HCL_STACK_GETTOP(hcl); /* head cons */ - if (HCL_UNLIKELY(!HCL_IS_CONS(hcl, t2))) + t2 = HAK_STACK_GETTOP(hak); /* head cons */ + if (HAK_UNLIKELY(!HAK_IS_CONS(hak, t2))) { - hcl_seterrbfmt (hcl, HCL_EINTERN, "internal error - invalid vm state detected in pop_into_cons"); + hak_seterrbfmt (hak, HAK_EINTERN, "internal error - invalid vm state detected in pop_into_cons"); goto oops; } - if (t3 == hcl->_nil) + if (t3 == hak->_nil) { - ((hcl_oop_oop_t)t2)->slot[0] = t1; + ((hak_oop_oop_t)t2)->slot[0] = t1; } else { - hcl_oop_t t; + hak_oop_t t; - hcl_pushvolat (hcl, &t3); - t = hcl_makecons(hcl, t1, hcl->_nil); - hcl_popvolat (hcl); - if (HCL_UNLIKELY(!t)) goto oops; + hak_pushvolat (hak, &t3); + t = hak_makecons(hak, t1, hak->_nil); + hak_popvolat (hak); + if (HAK_UNLIKELY(!t)) goto oops; - ((hcl_oop_oop_t)t3)->slot[1] = t; + ((hak_oop_oop_t)t3)->slot[1] = t; } break; } - case HCL_CODE_POP_INTO_CONS_CDR: + case HAK_CODE_POP_INTO_CONS_CDR: { - hcl_oop_t t1, t2, t3; - LOG_INST_0 (hcl, "pop_into_cons_end"); + hak_oop_t t1, t2, t3; + LOG_INST_0 (hak, "pop_into_cons_end"); - t1 = HCL_STACK_GETTOP(hcl); /* value to store */ - HCL_STACK_POP (hcl); + t1 = HAK_STACK_GETTOP(hak); /* value to store */ + HAK_STACK_POP (hak); - t3 = HCL_STACK_GETTOP(hcl); /* sentinnel */ - HCL_STACK_POP (hcl); + t3 = HAK_STACK_GETTOP(hak); /* sentinnel */ + HAK_STACK_POP (hak); - t2 = HCL_STACK_GETTOP(hcl); /* head cons */ - if (HCL_UNLIKELY(!HCL_IS_CONS(hcl, t2))) + t2 = HAK_STACK_GETTOP(hak); /* head cons */ + if (HAK_UNLIKELY(!HAK_IS_CONS(hak, t2))) { - hcl_seterrbfmt (hcl, HCL_EINTERN, "internal error - invalid vm state detected in pop_into_cons"); + hak_seterrbfmt (hak, HAK_EINTERN, "internal error - invalid vm state detected in pop_into_cons"); goto oops; } - if (t3 == hcl->_nil) + if (t3 == hak->_nil) { - ((hcl_oop_oop_t)t2)->slot[1] = t1; + ((hak_oop_oop_t)t2)->slot[1] = t1; } else { - ((hcl_oop_oop_t)t3)->slot[1] = t1; + ((hak_oop_oop_t)t3)->slot[1] = t1; } /* no push back of the sentinnel */ @@ -4837,71 +4837,71 @@ hcl_logbfmt (hcl, HCL_LOG_STDERR, ">>>%O c->sc=%O sc=%O b2=%d b3=%d nivars=%d nc } /* -------------------------------------------------------- */ - case HCL_CODE_DUP_STACKTOP: + case HAK_CODE_DUP_STACKTOP: { - hcl_oop_t t; - LOG_INST_0 (hcl, "dup_stacktop"); - HCL_ASSERT (hcl, !HCL_STACK_IS_EMPTY(hcl)); - t = HCL_STACK_GETTOP(hcl); - HCL_STACK_PUSH (hcl, t); + hak_oop_t t; + LOG_INST_0 (hak, "dup_stacktop"); + HAK_ASSERT (hak, !HAK_STACK_IS_EMPTY(hak)); + t = HAK_STACK_GETTOP(hak); + HAK_STACK_PUSH (hak, t); break; } - case HCL_CODE_POP_STACKTOP: - LOG_INST_0 (hcl, "pop_stacktop"); - HCL_ASSERT (hcl, !HCL_STACK_IS_EMPTY(hcl)); + case HAK_CODE_POP_STACKTOP: + LOG_INST_0 (hak, "pop_stacktop"); + HAK_ASSERT (hak, !HAK_STACK_IS_EMPTY(hak)); /* at the top level, the value is just popped off the stack * after evaluation of an expression. so it's likely the * return value of the last expression unless explicit * returning is performed */ - hcl->last_retv = HCL_STACK_GETTOP(hcl); - HCL_STACK_POP (hcl); + hak->last_retv = HAK_STACK_GETTOP(hak); + HAK_STACK_POP (hak); break; - case HCL_CODE_RETURN_STACKTOP: + case HAK_CODE_RETURN_STACKTOP: /* [NOTE] this implements the non-local return. the non-local return is not compatible with stack based try-catch implementation. * [TODO] can make it compatiable? */ - LOG_INST_0 (hcl, "return_stacktop"); - return_value = HCL_STACK_GETTOP(hcl); - HCL_STACK_POP (hcl); + LOG_INST_0 (hak, "return_stacktop"); + return_value = HAK_STACK_GETTOP(hak); + HAK_STACK_POP (hak); goto handle_return; - case HCL_CODE_RETURN_RECEIVER: - LOG_INST_0 (hcl, "return_receiver"); - return_value = hcl->active_context->receiver; + case HAK_CODE_RETURN_RECEIVER: + LOG_INST_0 (hak, "return_receiver"); + return_value = hak->active_context->receiver; handle_return: - hcl->last_retv = return_value; - if (do_return_from_home(hcl, return_value, fetched_instruction_pointer) <= -1) goto oops_with_errmsg_supplement; + hak->last_retv = return_value; + if (do_return_from_home(hak, return_value, fetched_instruction_pointer) <= -1) goto oops_with_errmsg_supplement; break; - case HCL_CODE_RETURN_FROM_BLOCK: - LOG_INST_0 (hcl, "return_from_block"); + case HAK_CODE_RETURN_FROM_BLOCK: + LOG_INST_0 (hak, "return_from_block"); - HCL_ASSERT(hcl, HCL_IS_CONTEXT(hcl, hcl->active_context)); - hcl->last_retv = HCL_STACK_GETTOP(hcl); /* get the stack top */ - do_return_from_block (hcl); + HAK_ASSERT(hak, HAK_IS_CONTEXT(hak, hak->active_context)); + hak->last_retv = HAK_STACK_GETTOP(hak); /* get the stack top */ + do_return_from_block (hak); break; - case HCL_CODE_MAKE_FUNCTION: + case HAK_CODE_MAKE_FUNCTION: { - hcl_oop_function_t funcobj; - hcl_oow_t b3, b4; - hcl_oow_t joff; + hak_oop_function_t funcobj; + hak_oow_t b3, b4; + hak_oow_t joff; /* b1 - block temporaries mask * b2 - block temporaries mask * b3 - literal frame base * b4 - literal frame size */ - FETCH_PARAM_CODE_TO (hcl, b1); - FETCH_PARAM_CODE_TO (hcl, b2); - FETCH_PARAM_CODE_TO (hcl, b3); - FETCH_PARAM_CODE_TO (hcl, b4); + FETCH_PARAM_CODE_TO (hak, b1); + FETCH_PARAM_CODE_TO (hak, b2); + FETCH_PARAM_CODE_TO (hak, b3); + FETCH_PARAM_CODE_TO (hak, b4); - b1 = (b1 << (8 * HCL_CODE_LONG_PARAM_SIZE)) | b2; - LOG_INST_7 (hcl, "make_function %zu %zu %zu %zu %zu %zu %zu", + b1 = (b1 << (8 * HAK_CODE_LONG_PARAM_SIZE)) | b2; + LOG_INST_7 (hak, "make_function %zu %zu %zu %zu %zu %zu %zu", GET_BLK_MASK_INSTA(b1), GET_BLK_MASK_VA(b1), GET_BLK_MASK_NARGS(b1), @@ -4909,221 +4909,221 @@ hcl_logbfmt (hcl, HCL_LOG_STDERR, ">>>%O c->sc=%O sc=%O b2=%d b3=%d nivars=%d nc GET_BLK_MASK_NLVARS(b1), b3, b4); - HCL_ASSERT (hcl, b1 >= 0); + HAK_ASSERT (hak, b1 >= 0); /* the MAKE_FUNCTION instruction is followed by the long JUMP_FORWARD_X instruction. * i can decode the instruction and get the size of instructions * of the block context */ - HCL_ASSERT (hcl, hcl->active_code[hcl->ip] == HCL_CODE_JUMP_FORWARD_X); - joff = hcl->active_code[hcl->ip + 1]; - #if (HCL_CODE_LONG_PARAM_SIZE == 2) - joff = (joff << 8) | hcl->active_code[hcl->ip + 2]; + HAK_ASSERT (hak, hak->active_code[hak->ip] == HAK_CODE_JUMP_FORWARD_X); + joff = hak->active_code[hak->ip + 1]; + #if (HAK_CODE_LONG_PARAM_SIZE == 2) + joff = (joff << 8) | hak->active_code[hak->ip + 2]; #endif /* copy the byte codes from the active context to the new context */ - #if (HCL_CODE_LONG_PARAM_SIZE == 2) - funcobj = make_function(hcl, b4, &hcl->active_code[hcl->ip + 3], joff, HCL_NULL); + #if (HAK_CODE_LONG_PARAM_SIZE == 2) + funcobj = make_function(hak, b4, &hak->active_code[hak->ip + 3], joff, HAK_NULL); #else - funcobj = make_function(hcl, b4, &hcl->active_code[hcl->ip + 2], joff, HCL_NULL); + funcobj = make_function(hak, b4, &hak->active_code[hak->ip + 2], joff, HAK_NULL); #endif - if (HCL_UNLIKELY(!funcobj)) goto oops; + if (HAK_UNLIKELY(!funcobj)) goto oops; - fill_function_data (hcl, funcobj, b1, hcl->active_context, &hcl->active_function->literal_frame[b3], b4); + fill_function_data (hak, funcobj, b1, hak->active_context, &hak->active_function->literal_frame[b3], b4); /* push the new function to the stack of the active context */ - HCL_STACK_PUSH (hcl, (hcl_oop_t)funcobj); + HAK_STACK_PUSH (hak, (hak_oop_t)funcobj); break; } - case HCL_CODE_MAKE_BLOCK: + case HAK_CODE_MAKE_BLOCK: { - hcl_oop_block_t blkobj; + hak_oop_block_t blkobj; /* b1 - block temporaries mask * b2 - block temporaries mask */ - FETCH_PARAM_CODE_TO (hcl, b1); - FETCH_PARAM_CODE_TO (hcl, b2); - b1 = (b1 << (8 * HCL_CODE_LONG_PARAM_SIZE)) | b2; - LOG_INST_5 (hcl, "make_block %zu %zu %zu %zu %zu", + FETCH_PARAM_CODE_TO (hak, b1); + FETCH_PARAM_CODE_TO (hak, b2); + b1 = (b1 << (8 * HAK_CODE_LONG_PARAM_SIZE)) | b2; + LOG_INST_5 (hak, "make_block %zu %zu %zu %zu %zu", GET_BLK_MASK_INSTA(b1), GET_BLK_MASK_VA(b1), GET_BLK_MASK_NARGS(b1), GET_BLK_MASK_NRVARS(b1), GET_BLK_MASK_NLVARS(b1)); - HCL_ASSERT (hcl, b1 >= 0); + HAK_ASSERT (hak, b1 >= 0); - blkobj = make_compiled_block(hcl); - if (HCL_UNLIKELY(!blkobj)) goto oops; + blkobj = make_compiled_block(hak); + if (HAK_UNLIKELY(!blkobj)) goto oops; /* the long forward jump instruction has the format of * 11000100 KKKKKKKK or 11000100 KKKKKKKK KKKKKKKK - * depending on HCL_CODE_LONG_PARAM_SIZE. change 'ip' to point to + * depending on HAK_CODE_LONG_PARAM_SIZE. change 'ip' to point to * the instruction after the jump. */ - fill_block_data (hcl, blkobj, b1, hcl->ip + HCL_CODE_LONG_PARAM_SIZE + 1, hcl->active_context); + fill_block_data (hak, blkobj, b1, hak->ip + HAK_CODE_LONG_PARAM_SIZE + 1, hak->active_context); /* push the new block context to the stack of the active context */ - HCL_STACK_PUSH (hcl, (hcl_oop_t)blkobj); + HAK_STACK_PUSH (hak, (hak_oop_t)blkobj); break; } - case HCL_CODE_NOOP: + case HAK_CODE_NOOP: /* do nothing */ - LOG_INST_0 (hcl, "noop"); + LOG_INST_0 (hak, "noop"); break; default: - HCL_LOG1 (hcl, HCL_LOG_IC | HCL_LOG_FATAL, "Fatal error - unknown byte code 0x%zx\n", bcode); - hcl_seterrnum (hcl, HCL_EINTERN); + HAK_LOG1 (hak, HAK_LOG_IC | HAK_LOG_FATAL, "Fatal error - unknown byte code 0x%zx\n", bcode); + hak_seterrnum (hak, HAK_EINTERN); goto oops; } } done: - hcl->gci.lazy_sweep = 1; + hak->gci.lazy_sweep = 1; - vm_cleanup (hcl); -#if defined(HCL_PROFILE_VM) - HCL_LOG1 (hcl, HCL_LOG_IC | HCL_LOG_INFO, "EXEC OK - TOTAL INST COUTNER = %zu\n", inst_counter); + vm_cleanup (hak); +#if defined(HAK_PROFILE_VM) + HAK_LOG1 (hak, HAK_LOG_IC | HAK_LOG_INFO, "EXEC OK - TOTAL INST COUTNER = %zu\n", inst_counter); #endif return 0; oops_with_errmsg_supplement: - supplement_errmsg (hcl, fetched_instruction_pointer); + supplement_errmsg (hak, fetched_instruction_pointer); oops: - hcl->gci.lazy_sweep = 1; + hak->gci.lazy_sweep = 1; - vm_cleanup (hcl); -#if defined(HCL_PROFILE_VM) - HCL_LOG1 (hcl, HCL_LOG_IC | HCL_LOG_INFO, "EXEC ERROR - TOTAL INST COUTNER = %zu\n", inst_counter); + vm_cleanup (hak); +#if defined(HAK_PROFILE_VM) + HAK_LOG1 (hak, HAK_LOG_IC | HAK_LOG_INFO, "EXEC ERROR - TOTAL INST COUTNER = %zu\n", inst_counter); #endif return -1; } -hcl_oop_t hcl_execute (hcl_t* hcl) +hak_oop_t hak_execute (hak_t* hak) { - hcl_oop_function_t funcobj; + hak_oop_function_t funcobj; int n; - hcl_bitmask_t log_default_type_mask; + hak_bitmask_t log_default_type_mask; - HCL_ASSERT (hcl, hcl->code.bc.len < HCL_SMOOI_MAX); /* asserted by the compiler */ + HAK_ASSERT (hak, hak->code.bc.len < HAK_SMOOI_MAX); /* asserted by the compiler */ - log_default_type_mask = hcl->log.default_type_mask; - hcl->log.default_type_mask |= HCL_LOG_VM; + log_default_type_mask = hak->log.default_type_mask; + hak->log.default_type_mask |= HAK_LOG_VM; - HCL_ASSERT (hcl, hcl->initial_context == HCL_NULL); - HCL_ASSERT (hcl, hcl->active_context == HCL_NULL); + HAK_ASSERT (hak, hak->initial_context == HAK_NULL); + HAK_ASSERT (hak, hak->active_context == HAK_NULL); /* the code generated doesn't cater for its use as an initial funtion. * mutate the generated code so that the intiail function can break * out of the execution loop in execute() smoothly */ - if (hcl->code.bc.len > 0) + if (hak->code.bc.len > 0) { - HCL_ASSERT (hcl, hcl->code.bc.ptr[hcl->code.bc.len - 1] == HCL_CODE_POP_STACKTOP); + HAK_ASSERT (hak, hak->code.bc.ptr[hak->code.bc.len - 1] == HAK_CODE_POP_STACKTOP); #if 1 /* append RETURN_FROM_BLOCK - * if (hcl_emitbyteinstruction(hcl, HCL_CODE_RETURN_FROM_BLOCK) <= -1) return -1;*/ + * if (hak_emitbyteinstruction(hak, HAK_CODE_RETURN_FROM_BLOCK) <= -1) return -1;*/ /* substitute RETURN_FROM_BLOCK for POP_STACKTOP) */ - hcl->code.bc.ptr[hcl->code.bc.len - 1] = HCL_CODE_RETURN_FROM_BLOCK; + hak->code.bc.ptr[hak->code.bc.len - 1] = HAK_CODE_RETURN_FROM_BLOCK; #else /* substitute RETURN_STACKTOP for POP_STACKTOP) */ - hcl->code.bc.ptr[hcl->code.bc.len - 1] = HCL_CODE_RETURN_STACKTOP; + hak->code.bc.ptr[hak->code.bc.len - 1] = HAK_CODE_RETURN_STACKTOP; #endif } /* create a virtual function object that holds the byte code generated plus the literal frame */ - funcobj = make_function(hcl, hcl->code.lit.len, hcl->code.bc.ptr, hcl->code.bc.len, hcl->code.dbgi); - if (HCL_UNLIKELY(!funcobj)) return HCL_NULL; + funcobj = make_function(hak, hak->code.lit.len, hak->code.bc.ptr, hak->code.bc.len, hak->code.dbgi); + if (HAK_UNLIKELY(!funcobj)) return HAK_NULL; /* pass nil for the home context of the initial function */ - fill_function_data (hcl, funcobj, ENCODE_BLK_MASK(0,0,0,0,hcl->code.ngtmprs), (hcl_oop_context_t)hcl->_nil, hcl->code.lit.arr->slot, hcl->code.lit.len); + fill_function_data (hak, funcobj, ENCODE_BLK_MASK(0,0,0,0,hak->code.ngtmprs), (hak_oop_context_t)hak->_nil, hak->code.lit.arr->slot, hak->code.lit.len); - hcl->initial_function = funcobj; /* the initial function is ready */ + hak->initial_function = funcobj; /* the initial function is ready */ #if 0 - /* unless the system is buggy, hcl->proc_map_used should be 0. + /* unless the system is buggy, hak->proc_map_used should be 0. * the standard library terminates all processes before halting. * * [EXPERIMENTAL] * if you like the process allocation to start from 0, uncomment * the following 'if' block */ - if (hcl->proc_map_capa > 0 && hcl->proc_map_used == 0) + if (hak->proc_map_capa > 0 && hak->proc_map_used == 0) { /* rechain the process map. it must be compatible with prepare_to_alloc_pid(). * by placing the low indiced slot at the beginning of the free list, * the special processes (main_proc, gcfin_proc, ossig_proc) are allocated * with low process IDs. */ - hcl_ooi_t i, j; + hak_ooi_t i, j; - hcl->proc_map_free_first = 0; - for (i = 0, j = 1; j < hcl->proc_map_capa; i++, j++) + hak->proc_map_free_first = 0; + for (i = 0, j = 1; j < hak->proc_map_capa; i++, j++) { - hcl->proc_map[i] = HCL_SMOOI_TO_OOP(j); + hak->proc_map[i] = HAK_SMOOI_TO_OOP(j); } - hcl->proc_map[i] = HCL_SMOOI_TO_OOP(-1); - hcl->proc_map_free_last = i; + hak->proc_map[i] = HAK_SMOOI_TO_OOP(-1); + hak->proc_map_free_last = i; } #endif - n = start_initial_process_and_context(hcl, 0, hcl->code.ngtmprs); /* set up the initial context over the initial function */ + n = start_initial_process_and_context(hak, 0, hak->code.ngtmprs); /* set up the initial context over the initial function */ if (n >= 0) { - hcl->last_retv = hcl->_nil; - n = execute(hcl); - HCL_INFO1 (hcl, "RETURNED VALUE - %O\n", hcl->last_retv); + hak->last_retv = hak->_nil; + n = execute(hak); + HAK_INFO1 (hak, "RETURNED VALUE - %O\n", hak->last_retv); } - hcl->initial_context = HCL_NULL; - hcl->active_context = HCL_NULL; + hak->initial_context = HAK_NULL; + hak->active_context = HAK_NULL; - HCL_ASSERT (hcl, hcl->processor->active == hcl->nil_process); - HCL_ASSERT (hcl, HCL_OOP_TO_SMOOI(hcl->processor->total_count) == 0); - HCL_ASSERT (hcl, HCL_OOP_TO_SMOOI(hcl->processor->runnable.count) == 0); - HCL_ASSERT (hcl, HCL_OOP_TO_SMOOI(hcl->processor->suspended.count) == 0); + HAK_ASSERT (hak, hak->processor->active == hak->nil_process); + HAK_ASSERT (hak, HAK_OOP_TO_SMOOI(hak->processor->total_count) == 0); + HAK_ASSERT (hak, HAK_OOP_TO_SMOOI(hak->processor->runnable.count) == 0); + HAK_ASSERT (hak, HAK_OOP_TO_SMOOI(hak->processor->suspended.count) == 0); - LOAD_ACTIVE_SP (hcl); /* sync hcl->nil_process->sp with hcl->sp */ - HCL_ASSERT (hcl, hcl->sp == -1); + LOAD_ACTIVE_SP (hak); /* sync hak->nil_process->sp with hak->sp */ + HAK_ASSERT (hak, hak->sp == -1); -#if defined(HCL_PROFILE_VM) - HCL_LOG2 (hcl, HCL_LOG_IC | HCL_LOG_INFO, "GC - gci.bsz: %zu, gci.stack.max: %zu\n", hcl->gci.bsz, hcl->gci.stack.max); - if (hcl->heap->xma) hcl_xma_dump (hcl->heap->xma, xma_dumper, hcl); - HCL_LOG2 (hcl, HCL_LOG_IC | HCL_LOG_INFO, "GC - gci.stat.alloc: %ld.%09u\n", (unsigned long int)hcl->gci.stat.alloc.sec, (unsigned int)hcl->gci.stat.alloc.nsec); - HCL_LOG2 (hcl, HCL_LOG_IC | HCL_LOG_INFO, "GC - gci.stat.mark: %ld.%09u\n", (unsigned long int)hcl->gci.stat.mark.sec, (unsigned int)hcl->gci.stat.mark.nsec); - HCL_LOG2 (hcl, HCL_LOG_IC | HCL_LOG_INFO, "GC - gci.stat.sweep: %ld.%09u\n", (unsigned long int)hcl->gci.stat.sweep.sec, (unsigned int)hcl->gci.stat.sweep.nsec); +#if defined(HAK_PROFILE_VM) + HAK_LOG2 (hak, HAK_LOG_IC | HAK_LOG_INFO, "GC - gci.bsz: %zu, gci.stack.max: %zu\n", hak->gci.bsz, hak->gci.stack.max); + if (hak->heap->xma) hak_xma_dump (hak->heap->xma, xma_dumper, hak); + HAK_LOG2 (hak, HAK_LOG_IC | HAK_LOG_INFO, "GC - gci.stat.alloc: %ld.%09u\n", (unsigned long int)hak->gci.stat.alloc.sec, (unsigned int)hak->gci.stat.alloc.nsec); + HAK_LOG2 (hak, HAK_LOG_IC | HAK_LOG_INFO, "GC - gci.stat.mark: %ld.%09u\n", (unsigned long int)hak->gci.stat.mark.sec, (unsigned int)hak->gci.stat.mark.nsec); + HAK_LOG2 (hak, HAK_LOG_IC | HAK_LOG_INFO, "GC - gci.stat.sweep: %ld.%09u\n", (unsigned long int)hak->gci.stat.sweep.sec, (unsigned int)hak->gci.stat.sweep.nsec); #endif - hcl->log.default_type_mask = log_default_type_mask; - return (n <= -1)? HCL_NULL: hcl->last_retv; + hak->log.default_type_mask = log_default_type_mask; + return (n <= -1)? HAK_NULL: hak->last_retv; } -void hcl_abort (hcl_t* hcl) +void hak_abort (hak_t* hak) { - hcl->abort_req = 1; + hak->abort_req = 1; } /* ------------------------------------------------------------------ */ -hcl_pfrc_t hcl_pf_process_current (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +hak_pfrc_t hak_pf_process_current (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - HCL_STACK_SETRET (hcl, nargs, (hcl_oop_t)hcl->processor->active); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, (hak_oop_t)hak->processor->active); + return HAK_PF_SUCCESS; } -hcl_pfrc_t hcl_pf_process_fork (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +hak_pfrc_t hak_pf_process_fork (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_block_t blk; - hcl_oop_context_t newctx; - hcl_oop_process_t newprc; + hak_oop_block_t blk; + hak_oop_context_t newctx; + hak_oop_process_t newprc; int x; - blk = (hcl_oop_block_t)HCL_STACK_GETARG(hcl, nargs, 0); - if (!HCL_IS_COMPILED_BLOCK(hcl, blk)) + blk = (hak_oop_block_t)HAK_STACK_GETARG(hak, nargs, 0); + if (!HAK_IS_COMPILED_BLOCK(hak, blk)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not compiled block - %O", blk); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not compiled block - %O", blk); + return HAK_PF_FAILURE; } /* (defun x(a b) ...) @@ -5133,7 +5133,7 @@ hcl_pfrc_t hcl_pf_process_fork (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) * pass nargs_offset of 1 to prepare_new_context() to achieve it. */ x = prepare_new_context( - hcl, + hak, blk, nargs, /* nargs */ 1, /* nargs_offset */ @@ -5142,127 +5142,127 @@ hcl_pfrc_t hcl_pf_process_fork (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) 0, /* is_msgsend */ 0, /* msg_ivaroff */ &newctx); - if (HCL_UNLIKELY(x <= -1)) return HCL_PF_FAILURE; + if (HAK_UNLIKELY(x <= -1)) return HAK_PF_FAILURE; - HCL_ASSERT (hcl, (hcl_oop_t)newctx->sender == hcl->_nil); - newctx->home = (hcl_oop_context_t)hcl->_nil; /* the new context is the initial context in the new process. so reset it to nil */ + HAK_ASSERT (hak, (hak_oop_t)newctx->sender == hak->_nil); + newctx->home = (hak_oop_context_t)hak->_nil; /* the new context is the initial context in the new process. so reset it to nil */ - hcl_pushvolat (hcl, (hcl_oop_t*)&newctx); - newprc = make_process(hcl, newctx); - hcl_popvolat (hcl); - if (HCL_UNLIKELY(!newprc)) return HCL_PF_FAILURE; + hak_pushvolat (hak, (hak_oop_t*)&newctx); + newprc = make_process(hak, newctx); + hak_popvolat (hak); + if (HAK_UNLIKELY(!newprc)) return HAK_PF_FAILURE; - chain_into_processor (hcl, newprc, HCL_PROCESS_STATE_RUNNABLE); + chain_into_processor (hak, newprc, HAK_PROCESS_STATE_RUNNABLE); - HCL_STACK_SETRET (hcl, nargs, (hcl_oop_t)newprc); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, (hak_oop_t)newprc); + return HAK_PF_SUCCESS; } -hcl_pfrc_t hcl_pf_process_resume (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +hak_pfrc_t hak_pf_process_resume (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_process_t prc; + hak_oop_process_t prc; - prc = (hcl_oop_process_t)HCL_STACK_GETARG(hcl, nargs, 0); - if (!HCL_IS_PROCESS(hcl, prc)) + prc = (hak_oop_process_t)HAK_STACK_GETARG(hak, nargs, 0); + if (!HAK_IS_PROCESS(hak, prc)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not process - %O", prc); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not process - %O", prc); + return HAK_PF_FAILURE; } - resume_process (hcl, prc); - return HCL_PF_SUCCESS; + resume_process (hak, prc); + return HAK_PF_SUCCESS; } -hcl_pfrc_t hcl_pf_process_suspend (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +hak_pfrc_t hak_pf_process_suspend (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_process_t prc; + hak_oop_process_t prc; if (nargs >= 1) { - prc = (hcl_oop_process_t)HCL_STACK_GETARG(hcl, nargs, 0); - if (!HCL_IS_PROCESS(hcl, prc)) + prc = (hak_oop_process_t)HAK_STACK_GETARG(hak, nargs, 0); + if (!HAK_IS_PROCESS(hak, prc)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not process - %O", prc); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not process - %O", prc); + return HAK_PF_FAILURE; } } else { - prc = hcl->processor->active; + prc = hak->processor->active; } - suspend_process (hcl, prc); - return HCL_PF_SUCCESS; + suspend_process (hak, prc); + return HAK_PF_SUCCESS; } -hcl_pfrc_t hcl_pf_process_terminate (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +hak_pfrc_t hak_pf_process_terminate (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_process_t prc; + hak_oop_process_t prc; if (nargs >= 1) { - prc = (hcl_oop_process_t)HCL_STACK_GETARG(hcl, nargs, 0); - if (!HCL_IS_PROCESS(hcl, prc)) + prc = (hak_oop_process_t)HAK_STACK_GETARG(hak, nargs, 0); + if (!HAK_IS_PROCESS(hak, prc)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not process - %O", prc); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not process - %O", prc); + return HAK_PF_FAILURE; } } else { - prc = hcl->processor->active; + prc = hak->processor->active; } - terminate_process (hcl, prc); - return HCL_PF_SUCCESS; + terminate_process (hak, prc); + return HAK_PF_SUCCESS; } -hcl_pfrc_t hcl_pf_process_terminate_all (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +hak_pfrc_t hak_pf_process_terminate_all (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - terminate_all_processes (hcl); - return HCL_PF_SUCCESS; + terminate_all_processes (hak); + return HAK_PF_SUCCESS; } -hcl_pfrc_t hcl_pf_process_yield (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +hak_pfrc_t hak_pf_process_yield (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - yield_process (hcl, hcl->processor->active); - return HCL_PF_SUCCESS; + yield_process (hak, hak->processor->active); + return HAK_PF_SUCCESS; } /* ------------------------------------------------------------------ */ -hcl_pfrc_t hcl_pf_semaphore_new (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +hak_pfrc_t hak_pf_semaphore_new (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_semaphore_t sem; + hak_oop_semaphore_t sem; - /*sem = (hcl_oop_semaphore_t)hcl_allocoopobj(hcl, HCL_BRAND_SEMAPHORE, HCL_SEMAPHORE_NAMED_INSTVARS);*/ - sem = (hcl_oop_semaphore_t)hcl_instantiate(hcl, hcl->c_semaphore, HCL_NULL, 0); - if (HCL_UNLIKELY(!sem)) + /*sem = (hak_oop_semaphore_t)hak_allocoopobj(hak, HAK_BRAND_SEMAPHORE, HAK_SEMAPHORE_NAMED_INSTVARS);*/ + sem = (hak_oop_semaphore_t)hak_instantiate(hak, hak->c_semaphore, HAK_NULL, 0); + if (HAK_UNLIKELY(!sem)) { - const hcl_ooch_t* oldmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, hcl->errnum, - "unable to instantiate %O - %js", hcl->c_semaphore->name, oldmsg); - return HCL_PF_FAILURE; + const hak_ooch_t* oldmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, hak->errnum, + "unable to instantiate %O - %js", hak->c_semaphore->name, oldmsg); + return HAK_PF_FAILURE; } - sem->count = HCL_SMOOI_TO_OOP(0); + sem->count = HAK_SMOOI_TO_OOP(0); /* TODO: sem->signal_action? */ /* other fields are all set to nil */ - HCL_STACK_SETRET (hcl, nargs, (hcl_oop_t)sem); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, (hak_oop_t)sem); + return HAK_PF_SUCCESS; } -hcl_pfrc_t hcl_pf_semaphore_signal (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +hak_pfrc_t hak_pf_semaphore_signal (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_semaphore_t sem; - hcl_oop_t sec, nsec; - hcl_ntime_t now, ft; + hak_oop_semaphore_t sem; + hak_oop_t sec, nsec; + hak_ntime_t now, ft; - sem = (hcl_oop_semaphore_t)HCL_STACK_GETARG(hcl, nargs, 0); - if (!HCL_IS_SEMAPHORE(hcl, sem)) + sem = (hak_oop_semaphore_t)HAK_STACK_GETARG(hak, nargs, 0); + if (!HAK_IS_SEMAPHORE(hak, sem)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not semaphore - %O", sem); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not semaphore - %O", sem); + return HAK_PF_FAILURE; } if (nargs <= 1) @@ -5271,327 +5271,327 @@ hcl_pfrc_t hcl_pf_semaphore_signal (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) * implementation as of this writing makes runnable the process waiting * on the signal to be processed. it is safer to set the return value * before calling signal_sempahore() */ - HCL_STACK_SETRET (hcl, nargs, (hcl_oop_t)sem); - signal_semaphore (hcl, sem); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, (hak_oop_t)sem); + signal_semaphore (hak, sem); + return HAK_PF_SUCCESS; } - sec = HCL_STACK_GETARG(hcl, nargs, 1); - nsec = (nargs >= 3? HCL_STACK_GETARG(hcl, nargs, 2): HCL_SMOOI_TO_OOP(0)); + sec = HAK_STACK_GETARG(hak, nargs, 1); + nsec = (nargs >= 3? HAK_STACK_GETARG(hak, nargs, 2): HAK_SMOOI_TO_OOP(0)); - if (!HCL_OOP_IS_SMOOI(sec)) + if (!HAK_OOP_IS_SMOOI(sec)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "invalid second - %O", sec); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "invalid second - %O", sec); + return HAK_PF_FAILURE; } - if (!HCL_OOP_IS_SMOOI(sec)) + if (!HAK_OOP_IS_SMOOI(sec)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "invalid nanosecond - %O", nsec); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "invalid nanosecond - %O", nsec); + return HAK_PF_FAILURE; } #if 0 - if (sem->subtype == HCL_SMOOI_TO_OOP(HCL_SEMAPHORE_SUBTYPE_TIMED)) + if (sem->subtype == HAK_SMOOI_TO_OOP(HAK_SEMAPHORE_SUBTYPE_TIMED)) { - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.timed.index) && HCL_OOP_TO_SMOOI(sem->u.timed.index) >= 0); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.timed.index) && HAK_OOP_TO_SMOOI(sem->u.timed.index) >= 0); /* if the semaphore is already been added. remove it first */ - delete_from_sem_heap (hcl, HCL_OOP_TO_SMOOI(sem->u.timed.index)); - HCL_ASSERT (hcl, sem->subtype == hcl->_nil && sem->u.timed.index == hcl->_nil); + delete_from_sem_heap (hak, HAK_OOP_TO_SMOOI(sem->u.timed.index)); + HAK_ASSERT (hak, sem->subtype == hak->_nil && sem->u.timed.index == hak->_nil); /* Is this more desired??? - HCL_STACK_SETRET (hcl, nargs, hcl->_false); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, hak->_false); + return HAK_PF_SUCCESS; */ } #else - if (sem->subtype != hcl->_nil) + if (sem->subtype != hak->_nil) { - if (sem->subtype == HCL_SMOOI_TO_OOP(HCL_SEMAPHORE_SUBTYPE_IO)) + if (sem->subtype == HAK_SMOOI_TO_OOP(HAK_SEMAPHORE_SUBTYPE_IO)) { - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.io.index) && HCL_OOP_TO_SMOOI(sem->u.io.index) >= 0); - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.io.handle) && HCL_OOP_TO_SMOOI(sem->u.io.handle) >= 0); - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.io.type)); - hcl_seterrbfmt (hcl, HCL_EINVAL, "semaphore already linked with a handle %zd", HCL_OOP_TO_SMOOI(sem->u.io.handle)); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.io.index) && HAK_OOP_TO_SMOOI(sem->u.io.index) >= 0); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.io.handle) && HAK_OOP_TO_SMOOI(sem->u.io.handle) >= 0); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.io.type)); + hak_seterrbfmt (hak, HAK_EINVAL, "semaphore already linked with a handle %zd", HAK_OOP_TO_SMOOI(sem->u.io.handle)); } else { - HCL_ASSERT (hcl, sem->subtype == HCL_SMOOI_TO_OOP(HCL_SEMAPHORE_SUBTYPE_TIMED)); - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.timed.index) && HCL_OOP_TO_SMOOI(sem->u.timed.index) >= 0); - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.timed.ftime_sec)); - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.timed.ftime_nsec)); - hcl_seterrbfmt (hcl, HCL_EINVAL, "semaphore already activated for timer"); + HAK_ASSERT (hak, sem->subtype == HAK_SMOOI_TO_OOP(HAK_SEMAPHORE_SUBTYPE_TIMED)); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.timed.index) && HAK_OOP_TO_SMOOI(sem->u.timed.index) >= 0); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.timed.ftime_sec)); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.timed.ftime_nsec)); + hak_seterrbfmt (hak, HAK_EINVAL, "semaphore already activated for timer"); } - return HCL_PF_FAILURE; + return HAK_PF_FAILURE; } #endif /* this code assumes that the monotonic clock returns a small value * that can fit into a SmallInteger, even after some additions. */ - vm_gettime (hcl, &now); - HCL_ADD_NTIME_SNS (&ft, &now, HCL_OOP_TO_SMOOI(sec), HCL_OOP_TO_SMOOI(nsec)); - if (ft.sec < 0 || ft.sec > HCL_SMOOI_MAX) + vm_gettime (hak, &now); + HAK_ADD_NTIME_SNS (&ft, &now, HAK_OOP_TO_SMOOI(sec), HAK_OOP_TO_SMOOI(nsec)); + if (ft.sec < 0 || ft.sec > HAK_SMOOI_MAX) { /* soft error - cannot represent the expiry time in a small integer. */ - HCL_LOG2 (hcl, HCL_LOG_PRIMITIVE | HCL_LOG_ERROR, + HAK_LOG2 (hak, HAK_LOG_PRIMITIVE | HAK_LOG_ERROR, "Error - time (%ld) out of range(0 - %zd) when adding a timed semaphore\n", - (unsigned long int)ft.sec, (hcl_ooi_t)HCL_SMOOI_MAX); + (unsigned long int)ft.sec, (hak_ooi_t)HAK_SMOOI_MAX); - hcl_seterrnum (hcl, HCL_ERANGE); - return HCL_PF_FAILURE; + hak_seterrnum (hak, HAK_ERANGE); + return HAK_PF_FAILURE; } - sem->u.timed.ftime_sec = HCL_SMOOI_TO_OOP(ft.sec); - sem->u.timed.ftime_nsec = HCL_SMOOI_TO_OOP(ft.nsec); + sem->u.timed.ftime_sec = HAK_SMOOI_TO_OOP(ft.sec); + sem->u.timed.ftime_nsec = HAK_SMOOI_TO_OOP(ft.nsec); - if (add_to_sem_heap(hcl, sem) <= -1) return HCL_PF_FAILURE; - HCL_ASSERT (hcl, sem->subtype == HCL_SMOOI_TO_OOP(HCL_SEMAPHORE_SUBTYPE_TIMED)); + if (add_to_sem_heap(hak, sem) <= -1) return HAK_PF_FAILURE; + HAK_ASSERT (hak, sem->subtype == HAK_SMOOI_TO_OOP(HAK_SEMAPHORE_SUBTYPE_TIMED)); - HCL_STACK_SETRET (hcl, nargs, (hcl_oop_t)sem); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, (hak_oop_t)sem); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t __semaphore_signal_on_io (hcl_t* hcl, hcl_ooi_t nargs, hcl_semaphore_io_type_t io_type) +static hak_pfrc_t __semaphore_signal_on_io (hak_t* hak, hak_ooi_t nargs, hak_semaphore_io_type_t io_type) { - hcl_oop_semaphore_t sem; - hcl_oop_t fd; + hak_oop_semaphore_t sem; + hak_oop_t fd; - sem = (hcl_oop_semaphore_t)HCL_STACK_GETARG(hcl, nargs, 0); - if (!HCL_IS_SEMAPHORE(hcl, sem)) + sem = (hak_oop_semaphore_t)HAK_STACK_GETARG(hak, nargs, 0); + if (!HAK_IS_SEMAPHORE(hak, sem)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not semaphore - %O", sem); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not semaphore - %O", sem); + return HAK_PF_FAILURE; } - fd = HCL_STACK_GETARG(hcl, nargs, 1); + fd = HAK_STACK_GETARG(hak, nargs, 1); - if (!HCL_OOP_IS_SMOOI(fd)) + if (!HAK_OOP_IS_SMOOI(fd)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "handle not a small integer - %O", fd); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "handle not a small integer - %O", fd); + return HAK_PF_FAILURE; } - if (sem->subtype != hcl->_nil) + if (sem->subtype != hak->_nil) { - if (sem->subtype == HCL_SMOOI_TO_OOP(HCL_SEMAPHORE_SUBTYPE_IO)) + if (sem->subtype == HAK_SMOOI_TO_OOP(HAK_SEMAPHORE_SUBTYPE_IO)) { - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.io.index) && HCL_OOP_TO_SMOOI(sem->u.io.index) >= 0); - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.io.handle) && HCL_OOP_TO_SMOOI(sem->u.io.handle) >= 0); - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.io.type)); - hcl_seterrbfmt (hcl, HCL_EINVAL, "semaphore already linked with a handle %zd", HCL_OOP_TO_SMOOI(sem->u.io.handle)); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.io.index) && HAK_OOP_TO_SMOOI(sem->u.io.index) >= 0); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.io.handle) && HAK_OOP_TO_SMOOI(sem->u.io.handle) >= 0); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.io.type)); + hak_seterrbfmt (hak, HAK_EINVAL, "semaphore already linked with a handle %zd", HAK_OOP_TO_SMOOI(sem->u.io.handle)); } else { - HCL_ASSERT (hcl, sem->subtype == HCL_SMOOI_TO_OOP(HCL_SEMAPHORE_SUBTYPE_TIMED)); - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.timed.index) && HCL_OOP_TO_SMOOI(sem->u.timed.index) >= 0); - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.timed.ftime_sec)); - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.timed.ftime_nsec)); - hcl_seterrbfmt (hcl, HCL_EINVAL, "semaphore already activated for timer"); + HAK_ASSERT (hak, sem->subtype == HAK_SMOOI_TO_OOP(HAK_SEMAPHORE_SUBTYPE_TIMED)); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.timed.index) && HAK_OOP_TO_SMOOI(sem->u.timed.index) >= 0); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.timed.ftime_sec)); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.timed.ftime_nsec)); + hak_seterrbfmt (hak, HAK_EINVAL, "semaphore already activated for timer"); } - return HCL_PF_FAILURE; + return HAK_PF_FAILURE; } - if (add_sem_to_sem_io_tuple(hcl, sem, HCL_OOP_TO_SMOOI(fd), io_type) <= -1) + if (add_sem_to_sem_io_tuple(hak, sem, HAK_OOP_TO_SMOOI(fd), io_type) <= -1) { - const hcl_ooch_t* oldmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, hcl->errnum, "unable to add the handle %zd to the multiplexer for %hs - %js", HCL_OOP_TO_SMOOI(fd), io_type_str[io_type], oldmsg); - return HCL_PF_FAILURE; + const hak_ooch_t* oldmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, hak->errnum, "unable to add the handle %zd to the multiplexer for %hs - %js", HAK_OOP_TO_SMOOI(fd), io_type_str[io_type], oldmsg); + return HAK_PF_FAILURE; } - HCL_STACK_SETRET (hcl, nargs, (hcl_oop_t)sem); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, (hak_oop_t)sem); + return HAK_PF_SUCCESS; } -hcl_pfrc_t hcl_pf_semaphore_signal_on_input (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +hak_pfrc_t hak_pf_semaphore_signal_on_input (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - return __semaphore_signal_on_io(hcl, nargs, HCL_SEMAPHORE_IO_TYPE_INPUT); + return __semaphore_signal_on_io(hak, nargs, HAK_SEMAPHORE_IO_TYPE_INPUT); } -hcl_pfrc_t hcl_pf_semaphore_signal_on_output (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +hak_pfrc_t hak_pf_semaphore_signal_on_output (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - return __semaphore_signal_on_io(hcl, nargs, HCL_SEMAPHORE_IO_TYPE_OUTPUT); + return __semaphore_signal_on_io(hak, nargs, HAK_SEMAPHORE_IO_TYPE_OUTPUT); } #if 0 -hcl_pfrc_t hcl_pf_semaphore_signal_on_gcfin (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +hak_pfrc_t hak_pf_semaphore_signal_on_gcfin (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_semaphore_t sem; + hak_oop_semaphore_t sem; - sem = (hcl_oop_semaphore_t)HCL_STACK_GETRCV(hcl, nargs); - HCL_PF_CHECK_RCV (hcl, hcl_iskindof(hcl, (hcl_oop_t)sem, hcl->_semaphore)); + sem = (hak_oop_semaphore_t)HAK_STACK_GETRCV(hak, nargs); + HAK_PF_CHECK_RCV (hak, hak_iskindof(hak, (hak_oop_t)sem, hak->_semaphore)); /* TODO: should i prevent overwriting? */ - hcl->sem_gcfin = sem; + hak->sem_gcfin = sem; - HCL_STACK_SETRETTORCV (hcl, nargs); /* ^self */ - return HCL_PF_SUCCESS; + HAK_STACK_SETRETTORCV (hak, nargs); /* ^self */ + return HAK_PF_SUCCESS; } #endif -hcl_pfrc_t hcl_pf_semaphore_wait (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +hak_pfrc_t hak_pf_semaphore_wait (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_semaphore_t sem; + hak_oop_semaphore_t sem; - sem = (hcl_oop_semaphore_t)HCL_STACK_GETARG(hcl, nargs, 0); - if (!HCL_IS_SEMAPHORE(hcl, sem)) + sem = (hak_oop_semaphore_t)HAK_STACK_GETARG(hak, nargs, 0); + if (!HAK_IS_SEMAPHORE(hak, sem)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not semaphore - %O", sem); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not semaphore - %O", sem); + return HAK_PF_FAILURE; } - if (!can_await_semaphore(hcl, sem)) + if (!can_await_semaphore(hak, sem)) { - hcl_seterrbfmt (hcl, HCL_EPERM, "not allowed to wait on a semaphore that belongs to a semaphore group"); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EPERM, "not allowed to wait on a semaphore that belongs to a semaphore group"); + return HAK_PF_FAILURE; } /* i must set the return value before calling await_semaphore(). * await_semaphore() may switch the active process and the stack * manipulation macros target at the active process. i'm not supposed * to change the return value of a new active process. */ - HCL_STACK_SETRET (hcl, nargs, (hcl_oop_t)sem); + HAK_STACK_SETRET (hak, nargs, (hak_oop_t)sem); - await_semaphore (hcl, sem); - return HCL_PF_SUCCESS; + await_semaphore (hak, sem); + return HAK_PF_SUCCESS; } -hcl_pfrc_t hcl_pf_semaphore_unsignal (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +hak_pfrc_t hak_pf_semaphore_unsignal (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { /* remove a semaphore from processor's signal scheduling. * it takes no effect on a plain semaphore. */ - hcl_oop_semaphore_t sem; + hak_oop_semaphore_t sem; - sem = (hcl_oop_semaphore_t)HCL_STACK_GETARG(hcl, nargs, 0); - if (!HCL_IS_SEMAPHORE(hcl, sem)) + sem = (hak_oop_semaphore_t)HAK_STACK_GETARG(hak, nargs, 0); + if (!HAK_IS_SEMAPHORE(hak, sem)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not semaphore - %O", sem); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not semaphore - %O", sem); + return HAK_PF_FAILURE; } /* TODO: add this back if gcfin support is added - if (sem == hcl->sem_gcfin) + if (sem == hak->sem_gcfin) { - hcl->sem_gcfin = (hcl_oop_semaphore_t)hcl->_nil; + hak->sem_gcfin = (hak_oop_semaphore_t)hak->_nil; } */ - if (sem->subtype == HCL_SMOOI_TO_OOP(HCL_SEMAPHORE_SUBTYPE_TIMED)) + if (sem->subtype == HAK_SMOOI_TO_OOP(HAK_SEMAPHORE_SUBTYPE_TIMED)) { /* the semaphore is in the timed semaphore heap */ - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.timed.index) && HCL_OOP_TO_SMOOI(sem->u.timed.index) >= 0); - delete_from_sem_heap (hcl, HCL_OOP_TO_SMOOI(sem->u.timed.index)); - HCL_ASSERT (hcl, sem->u.timed.index == hcl->_nil); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.timed.index) && HAK_OOP_TO_SMOOI(sem->u.timed.index) >= 0); + delete_from_sem_heap (hak, HAK_OOP_TO_SMOOI(sem->u.timed.index)); + HAK_ASSERT (hak, sem->u.timed.index == hak->_nil); } - else if (sem->subtype == HCL_SMOOI_TO_OOP(HCL_SEMAPHORE_SUBTYPE_IO)) + else if (sem->subtype == HAK_SMOOI_TO_OOP(HAK_SEMAPHORE_SUBTYPE_IO)) { - hcl_oop_process_t wp; /* waiting process */ + hak_oop_process_t wp; /* waiting process */ /* the semaphore is associated with IO */ - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.io.index) && HCL_OOP_TO_SMOOI(sem->u.io.index) >= 0); - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.io.type)); - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.io.handle) && HCL_OOP_TO_SMOOI(sem->u.io.handle) >= 0); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.io.index) && HAK_OOP_TO_SMOOI(sem->u.io.index) >= 0); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.io.type)); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.io.handle) && HAK_OOP_TO_SMOOI(sem->u.io.handle) >= 0); - if (delete_sem_from_sem_io_tuple(hcl, sem, 0) <= -1) + if (delete_sem_from_sem_io_tuple(hak, sem, 0) <= -1) { - const hcl_ooch_t* oldmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, hcl->errnum, "cannot delete the handle %zd from the multiplexer - %js", HCL_OOP_TO_SMOOI(sem->u.io.handle), oldmsg); - return HCL_PF_FAILURE; + const hak_ooch_t* oldmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, hak->errnum, "cannot delete the handle %zd from the multiplexer - %js", HAK_OOP_TO_SMOOI(sem->u.io.handle), oldmsg); + return HAK_PF_FAILURE; } - HCL_ASSERT (hcl, (hcl_oop_t)sem->u.io.index == hcl->_nil); - HCL_ASSERT (hcl, (hcl_oop_t)sem->u.io.handle == hcl->_nil); + HAK_ASSERT (hak, (hak_oop_t)sem->u.io.index == hak->_nil); + HAK_ASSERT (hak, (hak_oop_t)sem->u.io.handle == hak->_nil); /* the semaphore gets changed to a plain semaphore after * delete_sem_from_sem_io_tuple(). if there is a process * waiting on this IO semaphore, the process now is treated * as if it's waiting on a plain semaphore. let's adjust * the number of processes waiting on IO semaphores */ - for (wp = sem->waiting.first; (hcl_oop_t)wp != hcl->_nil; wp = wp->sem_wait.next) + for (wp = sem->waiting.first; (hak_oop_t)wp != hak->_nil; wp = wp->sem_wait.next) { - HCL_ASSERT (hcl, hcl->sem_io_wait_count > 0); - hcl->sem_io_wait_count--; + HAK_ASSERT (hak, hak->sem_io_wait_count > 0); + hak->sem_io_wait_count--; } } - HCL_ASSERT (hcl, sem->subtype == hcl->_nil); + HAK_ASSERT (hak, sem->subtype == hak->_nil); - HCL_STACK_SETRET (hcl, nargs, (hcl_oop_t)sem); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, (hak_oop_t)sem); + return HAK_PF_SUCCESS; } /* ------------------------------------------------------------------ */ -hcl_pfrc_t hcl_pf_semaphore_group_new (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +hak_pfrc_t hak_pf_semaphore_group_new (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_semaphore_group_t sg; + hak_oop_semaphore_group_t sg; - /*sg = (hcl_oop_semaphore_group_t)hcl_allocoopobj(hcl, HCL_BRAND_SEMAPHORE_GROUP, HCL_SEMAPHORE_GROUP_NAMED_INSTVARS);*/ - sg = (hcl_oop_semaphore_group_t)hcl_instantiate(hcl, hcl->c_semaphore_group, HCL_NULL, 0); - if (HCL_UNLIKELY(!sg)) + /*sg = (hak_oop_semaphore_group_t)hak_allocoopobj(hak, HAK_BRAND_SEMAPHORE_GROUP, HAK_SEMAPHORE_GROUP_NAMED_INSTVARS);*/ + sg = (hak_oop_semaphore_group_t)hak_instantiate(hak, hak->c_semaphore_group, HAK_NULL, 0); + if (HAK_UNLIKELY(!sg)) { - const hcl_ooch_t* oldmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, hcl->errnum, - "unable to instantiate %O - %js", hcl->c_semaphore_group->name, oldmsg); - return HCL_PF_FAILURE; + const hak_ooch_t* oldmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, hak->errnum, + "unable to instantiate %O - %js", hak->c_semaphore_group->name, oldmsg); + return HAK_PF_FAILURE; } - sg->sem_io_count = HCL_SMOOI_TO_OOP(0); - sg->sem_count = HCL_SMOOI_TO_OOP(0); + sg->sem_io_count = HAK_SMOOI_TO_OOP(0); + sg->sem_count = HAK_SMOOI_TO_OOP(0); /* TODO: sem->signal_action? */ /* other fields are all set to nil */ - HCL_STACK_SETRET (hcl, nargs, (hcl_oop_t)sg); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, (hak_oop_t)sg); + return HAK_PF_SUCCESS; } -hcl_pfrc_t hcl_pf_semaphore_group_add_semaphore (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +hak_pfrc_t hak_pf_semaphore_group_add_semaphore (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_semaphore_group_t sg; - hcl_oop_semaphore_t sem; + hak_oop_semaphore_group_t sg; + hak_oop_semaphore_t sem; - sg = (hcl_oop_semaphore_group_t)HCL_STACK_GETARG(hcl, nargs, 0); - if (!HCL_IS_SEMAPHORE_GROUP(hcl, sg)) + sg = (hak_oop_semaphore_group_t)HAK_STACK_GETARG(hak, nargs, 0); + if (!HAK_IS_SEMAPHORE_GROUP(hak, sg)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not semaphore group - %O", sg); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not semaphore group - %O", sg); + return HAK_PF_FAILURE; } - sem = (hcl_oop_semaphore_t)HCL_STACK_GETARG(hcl, nargs, 1); - if (!HCL_IS_SEMAPHORE(hcl, sem)) + sem = (hak_oop_semaphore_t)HAK_STACK_GETARG(hak, nargs, 1); + if (!HAK_IS_SEMAPHORE(hak, sem)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not semaphore - %O", sem); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not semaphore - %O", sem); + return HAK_PF_FAILURE; } - if ((hcl_oop_t)sem->group == hcl->_nil) + if ((hak_oop_t)sem->group == hak->_nil) { /* the semaphore doesn't belong to a group */ - hcl_ooi_t count; + hak_ooi_t count; int sems_idx; - sems_idx = HCL_OOP_TO_SMOOI(sem->count) > 0? HCL_SEMAPHORE_GROUP_SEMS_SIG: HCL_SEMAPHORE_GROUP_SEMS_UNSIG; - HCL_APPEND_TO_OOP_LIST (hcl, &sg->sems[sems_idx], hcl_oop_semaphore_t, sem, grm); + sems_idx = HAK_OOP_TO_SMOOI(sem->count) > 0? HAK_SEMAPHORE_GROUP_SEMS_SIG: HAK_SEMAPHORE_GROUP_SEMS_UNSIG; + HAK_APPEND_TO_OOP_LIST (hak, &sg->sems[sems_idx], hak_oop_semaphore_t, sem, grm); sem->group = sg; - count = HCL_OOP_TO_SMOOI(sg->sem_count); - HCL_ASSERT (hcl, count >= 0); + count = HAK_OOP_TO_SMOOI(sg->sem_count); + HAK_ASSERT (hak, count >= 0); count++; - sg->sem_count = HCL_SMOOI_TO_OOP(count); + sg->sem_count = HAK_SMOOI_TO_OOP(count); - if (sem->subtype == HCL_SMOOI_TO_OOP(HCL_SEMAPHORE_SUBTYPE_IO)) + if (sem->subtype == HAK_SMOOI_TO_OOP(HAK_SEMAPHORE_SUBTYPE_IO)) { /* the semaphore being added is associated with I/O operation. */ - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.io.index) && - HCL_OOP_TO_SMOOI(sem->u.io.index) >= 0 && - HCL_OOP_TO_SMOOI(sem->u.io.index) < hcl->sem_io_tuple_count); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.io.index) && + HAK_OOP_TO_SMOOI(sem->u.io.index) >= 0 && + HAK_OOP_TO_SMOOI(sem->u.io.index) < hak->sem_io_tuple_count); - count = HCL_OOP_TO_SMOOI(sg->sem_io_count); - HCL_ASSERT (hcl, count >= 0); + count = HAK_OOP_TO_SMOOI(sg->sem_io_count); + HAK_ASSERT (hak, count >= 0); count++; - sg->sem_io_count = HCL_SMOOI_TO_OOP(count); + sg->sem_io_count = HAK_SMOOI_TO_OOP(count); if (count == 1) { @@ -5606,52 +5606,52 @@ hcl_pfrc_t hcl_pf_semaphore_group_add_semaphore (hcl_t* hcl, hcl_mod_t* mod, hcl * sg addSemaphore: (Semaphore new). */ - hcl_oop_process_t wp; + hak_oop_process_t wp; /* TODO: add sem_wait_count to process. no traversal... */ - for (wp = sg->waiting.first; (hcl_oop_t)wp != hcl->_nil; wp = wp->sem_wait.next) + for (wp = sg->waiting.first; (hak_oop_t)wp != hak->_nil; wp = wp->sem_wait.next) { - hcl->sem_io_wait_count++; - HCL_DEBUG1 (hcl, "hcl_pf_semaphore_group_add_semaphore - raised sem_io_wait_count to %zu\n", hcl->sem_io_wait_count); + hak->sem_io_wait_count++; + HAK_DEBUG1 (hak, "hak_pf_semaphore_group_add_semaphore - raised sem_io_wait_count to %zu\n", hak->sem_io_wait_count); } } } - HCL_STACK_SETRET (hcl, nargs, (hcl_oop_t)sg); + HAK_STACK_SETRET (hak, nargs, (hak_oop_t)sg); } else if (sem->group == sg) { /* do nothing. don't change the group of the semaphore */ - HCL_STACK_SETRET (hcl, nargs, (hcl_oop_t)sg); + HAK_STACK_SETRET (hak, nargs, (hak_oop_t)sg); } else { /* the semaphore belongs to a group already */ /* TODO: is it better to move this semaphore to the new group? */ - hcl_seterrbfmt (hcl, HCL_EPERM, "not allowed to relocate a semaphore to a different group"); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EPERM, "not allowed to relocate a semaphore to a different group"); + return HAK_PF_FAILURE; } - return HCL_PF_SUCCESS; + return HAK_PF_SUCCESS; } -hcl_pfrc_t hcl_pf_semaphore_group_remove_semaphore (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +hak_pfrc_t hak_pf_semaphore_group_remove_semaphore (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_semaphore_group_t sg; - hcl_oop_semaphore_t sem; - hcl_ooi_t count; + hak_oop_semaphore_group_t sg; + hak_oop_semaphore_t sem; + hak_ooi_t count; - sg = (hcl_oop_semaphore_group_t)HCL_STACK_GETARG(hcl, nargs, 0); - if (!HCL_IS_SEMAPHORE_GROUP(hcl, sg)) + sg = (hak_oop_semaphore_group_t)HAK_STACK_GETARG(hak, nargs, 0); + if (!HAK_IS_SEMAPHORE_GROUP(hak, sg)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not semaphore group - %O", sg); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not semaphore group - %O", sg); + return HAK_PF_FAILURE; } - sem = (hcl_oop_semaphore_t)HCL_STACK_GETARG(hcl, nargs, 1); - if (!HCL_IS_SEMAPHORE(hcl, sem)) + sem = (hak_oop_semaphore_t)HAK_STACK_GETARG(hak, nargs, 1); + if (!HAK_IS_SEMAPHORE(hak, sem)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not semaphore - %O", sem); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not semaphore - %O", sem); + return HAK_PF_FAILURE; } if (sem->group == sg) @@ -5659,7 +5659,7 @@ hcl_pfrc_t hcl_pf_semaphore_group_remove_semaphore (hcl_t* hcl, hcl_mod_t* mod, int sems_idx; #if 0 - if ((hcl_oop_t)sg->waiting.first != hcl->_nil) + if ((hak_oop_t)sg->waiting.first != hak->_nil) { /* there is a process waiting on this semaphore group. * i don't allow a semaphore to be removed from the group. @@ -5673,88 +5673,88 @@ hcl_pfrc_t hcl_pf_semaphore_group_remove_semaphore (hcl_t* hcl, hcl_mod_t* mod, * sg removeSemaphore: s. * */ - hcl_seterrbfmt (hcl, HCL_EPERM, "not allowed to remove a semaphore from a group being waited on"); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EPERM, "not allowed to remove a semaphore from a group being waited on"); + return HAK_PF_FAILURE; } #endif - sems_idx = HCL_OOP_TO_SMOOI(sem->count) > 0? HCL_SEMAPHORE_GROUP_SEMS_SIG: HCL_SEMAPHORE_GROUP_SEMS_UNSIG; - HCL_DELETE_FROM_OOP_LIST (hcl, &sg->sems[sems_idx], sem, grm); - sem->grm.prev = (hcl_oop_semaphore_t)hcl->_nil; - sem->grm.next = (hcl_oop_semaphore_t)hcl->_nil; - sem->group = (hcl_oop_semaphore_group_t)hcl->_nil; + sems_idx = HAK_OOP_TO_SMOOI(sem->count) > 0? HAK_SEMAPHORE_GROUP_SEMS_SIG: HAK_SEMAPHORE_GROUP_SEMS_UNSIG; + HAK_DELETE_FROM_OOP_LIST (hak, &sg->sems[sems_idx], sem, grm); + sem->grm.prev = (hak_oop_semaphore_t)hak->_nil; + sem->grm.next = (hak_oop_semaphore_t)hak->_nil; + sem->group = (hak_oop_semaphore_group_t)hak->_nil; - count = HCL_OOP_TO_SMOOI(sg->sem_count); - HCL_ASSERT (hcl, count > 0); + count = HAK_OOP_TO_SMOOI(sg->sem_count); + HAK_ASSERT (hak, count > 0); count--; - sg->sem_count = HCL_SMOOI_TO_OOP(count); + sg->sem_count = HAK_SMOOI_TO_OOP(count); - if (sem->subtype == HCL_SMOOI_TO_OOP(HCL_SEMAPHORE_SUBTYPE_IO)) + if (sem->subtype == HAK_SMOOI_TO_OOP(HAK_SEMAPHORE_SUBTYPE_IO)) { - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(sem->u.io.index) && - HCL_OOP_TO_SMOOI(sem->u.io.index) >= 0 && - HCL_OOP_TO_SMOOI(sem->u.io.index) < hcl->sem_io_tuple_count); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(sem->u.io.index) && + HAK_OOP_TO_SMOOI(sem->u.io.index) >= 0 && + HAK_OOP_TO_SMOOI(sem->u.io.index) < hak->sem_io_tuple_count); - count = HCL_OOP_TO_SMOOI(sg->sem_io_count); - HCL_ASSERT (hcl, count > 0); + count = HAK_OOP_TO_SMOOI(sg->sem_io_count); + HAK_ASSERT (hak, count > 0); count--; - sg->sem_io_count = HCL_SMOOI_TO_OOP(count); + sg->sem_io_count = HAK_SMOOI_TO_OOP(count); if (count == 0) { - hcl_oop_process_t wp; + hak_oop_process_t wp; /* TODO: add sem_wait_count to process. no traversal... */ - for (wp = sg->waiting.first; (hcl_oop_t)wp != hcl->_nil; wp = wp->sem_wait.next) + for (wp = sg->waiting.first; (hak_oop_t)wp != hak->_nil; wp = wp->sem_wait.next) { - HCL_ASSERT (hcl, hcl->sem_io_wait_count > 0); - hcl->sem_io_wait_count--; - HCL_DEBUG1 (hcl, "hcl_pf_semaphore_group_remove_semaphore - lowered sem_io_wait_count to %zu\n", hcl->sem_io_wait_count); + HAK_ASSERT (hak, hak->sem_io_wait_count > 0); + hak->sem_io_wait_count--; + HAK_DEBUG1 (hak, "hak_pf_semaphore_group_remove_semaphore - lowered sem_io_wait_count to %zu\n", hak->sem_io_wait_count); } } } - HCL_STACK_SETRET (hcl, nargs, (hcl_oop_t)sg); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, (hak_oop_t)sg); + return HAK_PF_SUCCESS; } /* it doesn't belong to a group or belongs to a different group */ - hcl_seterrbfmt (hcl, HCL_EPERM, "not allowed to remove a semaphore from a non-owning group"); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EPERM, "not allowed to remove a semaphore from a non-owning group"); + return HAK_PF_FAILURE; } -hcl_pfrc_t hcl_pf_semaphore_group_wait (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +hak_pfrc_t hak_pf_semaphore_group_wait (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_semaphore_group_t sg; - hcl_oop_t sem; + hak_oop_semaphore_group_t sg; + hak_oop_t sem; - sg = (hcl_oop_semaphore_group_t)HCL_STACK_GETARG(hcl, nargs, 0); - if (!HCL_IS_SEMAPHORE_GROUP(hcl, sg)) + sg = (hak_oop_semaphore_group_t)HAK_STACK_GETARG(hak, nargs, 0); + if (!HAK_IS_SEMAPHORE_GROUP(hak, sg)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not semaphore group - %O", sg); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not semaphore group - %O", sg); + return HAK_PF_FAILURE; } /* i must set the return value before calling await_semaphore_group(). - * HCL_STACK_SETRETTORCV() manipulates the stack of the currently active - * process(hcl->processor->active). hcl->processor->active may become - * hcl->nil_process if the current active process must get suspended. + * HAK_STACK_SETRETTORCV() manipulates the stack of the currently active + * process(hak->processor->active). hak->processor->active may become + * hak->nil_process if the current active process must get suspended. * it is safer to set the return value of the calling method here. * but the arguments and the receiver information will be lost from * the stack from this moment on. */ - HCL_STACK_SETRET (hcl, nargs, (hcl_oop_t)sg); + HAK_STACK_SETRET (hak, nargs, (hak_oop_t)sg); - sem = await_semaphore_group(hcl, sg); - if (sem != hcl->_nil) + sem = await_semaphore_group(hak, sg); + if (sem != hak->_nil) { /* there was a signaled semaphore. the active process won't get * suspended. change the return value of the current process * forcibly to the signaled semaphore */ - HCL_STACK_SETTOP (hcl, sem); + HAK_STACK_SETTOP (hak, sem); } /* the return value will get changed to an actual semaphore signaled * when the semaphore is signaled. see signal_semaphore() */ - return HCL_PF_SUCCESS; + return HAK_PF_SUCCESS; } diff --git a/lib/fmt-imp.h b/lib/fmt-imp.h index 5b528d9..4c3559a 100644 --- a/lib/fmt-imp.h +++ b/lib/fmt-imp.h @@ -24,25 +24,25 @@ static int fmt_uintmax ( char_t* buf, int size, - hcl_uintmax_t value, int base_and_flags, int prec, + hak_uintmax_t value, int base_and_flags, int prec, char_t fillchar, char_t signchar, const char_t* prefix) { - char_t tmp[(HCL_SIZEOF(hcl_uintmax_t) * 8)]; + char_t tmp[(HAK_SIZEOF(hak_uintmax_t) * 8)]; int reslen, base, fillsize, reqlen, pflen, preczero; char_t* p, * bp, * be; - const hcl_bch_t* xbasestr; + const hak_bch_t* xbasestr; base = base_and_flags & 0x3F; if (base < 2 || base > 36) return -1; - xbasestr = (base_and_flags & HCL_FMT_INTMAX_UPPERCASE)? + xbasestr = (base_and_flags & HAK_FMT_INTMAX_UPPERCASE)? "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ": "0123456789abcdefghijklmnopqrstuvwxyz"; - if ((base_and_flags & HCL_FMT_INTMAX_NOZERO) && value == 0) + if ((base_and_flags & HAK_FMT_INTMAX_NOZERO) && value == 0) { p = tmp; - if (base_and_flags & HCL_FMT_INTMAX_ZEROLEAD) + if (base_and_flags & HAK_FMT_INTMAX_ZEROLEAD) { /* NOZERO emits no digit, ZEROLEAD emits 1 digit. * so it emits '0' */ @@ -58,7 +58,7 @@ static int fmt_uintmax ( } else { - hcl_uintmax_t v = value; + hak_uintmax_t v = value; /* store the resulting numeric string into 'tmp' first */ p = tmp; @@ -87,7 +87,7 @@ static int fmt_uintmax ( else { preczero = 0; - if ((base_and_flags & HCL_FMT_INTMAX_ZEROLEAD) && value != 0) + if ((base_and_flags & HAK_FMT_INTMAX_ZEROLEAD) && value != 0) { /* if value is zero, 0 is emitted from it. * so ZEROLEAD don't need to add another 0. */ @@ -110,23 +110,23 @@ static int fmt_uintmax ( else pflen = 0; /* get the required buffer size for lossless formatting */ - reqlen = (base_and_flags & HCL_FMT_INTMAX_NONULL)? reslen: (reslen + 1); + reqlen = (base_and_flags & HAK_FMT_INTMAX_NONULL)? reslen: (reslen + 1); if (size <= 0 || - ((base_and_flags & HCL_FMT_INTMAX_NOTRUNC) && size < reqlen)) + ((base_and_flags & HAK_FMT_INTMAX_NOTRUNC) && size < reqlen)) { return -reqlen; } /* get the size to fill with fill characters */ - fillsize = (base_and_flags & HCL_FMT_INTMAX_NONULL)? size: (size - 1); + fillsize = (base_and_flags & HAK_FMT_INTMAX_NONULL)? size: (size - 1); bp = buf; be = buf + fillsize; /* fill space */ if (fillchar != '\0') { - if (base_and_flags & HCL_FMT_INTMAX_FILLRIGHT) + if (base_and_flags & HAK_FMT_INTMAX_FILLRIGHT) { /* emit sign */ if (signchar && bp < be) *bp++ = signchar; @@ -151,7 +151,7 @@ static int fmt_uintmax ( fillsize--; } } - else if (base_and_flags & HCL_FMT_INTMAX_FILLCENTER) + else if (base_and_flags & HAK_FMT_INTMAX_FILLCENTER) { /* emit sign */ if (signchar && bp < be) *bp++ = signchar; @@ -221,6 +221,6 @@ static int fmt_uintmax ( while (p > tmp && bp < be) *bp++ = *--p; } - if (!(base_and_flags & HCL_FMT_INTMAX_NONULL)) *bp = '\0'; + if (!(base_and_flags & HAK_FMT_INTMAX_NONULL)) *bp = '\0'; return bp - buf; } diff --git a/lib/fmt.c b/lib/fmt.c index 3c9207a..709f69c 100644 --- a/lib/fmt.c +++ b/lib/fmt.c @@ -63,10 +63,10 @@ */ -#include "hcl-prv.h" +#include "hak-prv.h" -#if defined(HCL_ENABLE_FLTFMT) +#if defined(HAK_ENABLE_FLTFMT) #include /* for snrintf(). used for floating-point number formatting */ #if defined(_MSC_VER) || (defined(__BORLANDC__) && (__BORLANDC__ > 0x520)) || (defined(__WATCOMC__) && (__WATCOMC__ < 1200)) @@ -88,8 +88,8 @@ extern int quadmath_snprintf (const char *str, size_t size, const char *format, #endif /* Max number conversion buffer length: - * hcl_intmax_t in base 2, plus NUL byte. */ -#define MAXNBUF (HCL_SIZEOF(hcl_intmax_t) * HCL_BITS_PER_BYTE + 1) + * hak_intmax_t in base 2, plus NUL byte. */ +#define MAXNBUF (HAK_SIZEOF(hak_intmax_t) * HAK_BITS_PER_BYTE + 1) enum fmt_spec_t { @@ -110,8 +110,8 @@ enum fmt_spec_t static struct { - hcl_uint8_t flag; /* for single occurrence */ - hcl_uint8_t dflag; /* for double occurrence */ + hak_uint8_t flag; /* for single occurrence */ + hak_uint8_t dflag; /* for double occurrence */ } lm_tab[26] = { { 0, 0 }, /* a */ @@ -158,58 +158,58 @@ enum FLAGC_LENMOD = (1 << 10) /* length modifier */ }; -static const hcl_bch_t hex2ascii_lower[] = +static const hak_bch_t hex2ascii_lower[] = { '0','1','2','3','4','5','6','7','8','9', 'a','b','c','d','e','f','g','h','i','j','k','l','m', 'n','o','p','q','r','s','t','u','v','w','x','y','z' }; -static const hcl_bch_t hex2ascii_upper[] = +static const hak_bch_t hex2ascii_upper[] = { '0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F','G','H','I','J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','H','Z' }; -static hcl_uch_t uch_nullstr[] = { '(','n','u','l','l', ')','\0' }; -static hcl_bch_t bch_nullstr[] = { '(','n','u','l','l', ')','\0' }; +static hak_uch_t uch_nullstr[] = { '(','n','u','l','l', ')','\0' }; +static hak_bch_t bch_nullstr[] = { '(','n','u','l','l', ')','\0' }; /* ------------------------------------------------------------------------- */ /*define static int fmt_uintmax_to_bcstr(...)*/ #undef char_t #undef fmt_uintmax -#define char_t hcl_bch_t +#define char_t hak_bch_t #define fmt_uintmax fmt_uintmax_to_bcstr #include "fmt-imp.h" /*define static int fmt_uintmax_to_ucstr(...)*/ #undef char_t #undef fmt_uintmax -#define char_t hcl_uch_t +#define char_t hak_uch_t #define fmt_uintmax fmt_uintmax_to_ucstr #include "fmt-imp.h" -int hcl_fmt_intmax_to_bcstr ( - hcl_bch_t* buf, int size, - hcl_intmax_t value, int base_and_flags, int prec, - hcl_bch_t fillchar, const hcl_bch_t* prefix) +int hak_fmt_intmax_to_bcstr ( + hak_bch_t* buf, int size, + hak_intmax_t value, int base_and_flags, int prec, + hak_bch_t fillchar, const hak_bch_t* prefix) { - hcl_bch_t signchar; - hcl_uintmax_t absvalue; + hak_bch_t signchar; + hak_uintmax_t absvalue; if (value < 0) { signchar = '-'; absvalue = -value; } - else if (base_and_flags & HCL_FMT_INTMAX_TO_BCSTR_PLUSSIGN) + else if (base_and_flags & HAK_FMT_INTMAX_TO_BCSTR_PLUSSIGN) { signchar = '+'; absvalue = value; } - else if (base_and_flags & HCL_FMT_INTMAX_TO_BCSTR_EMPTYSIGN) + else if (base_and_flags & HAK_FMT_INTMAX_TO_BCSTR_EMPTYSIGN) { signchar = ' '; absvalue = value; @@ -223,19 +223,19 @@ int hcl_fmt_intmax_to_bcstr ( return fmt_uintmax_to_bcstr(buf, size, absvalue, base_and_flags, prec, fillchar, signchar, prefix); } -int hcl_fmt_uintmax_to_bcstr ( - hcl_bch_t* buf, int size, - hcl_uintmax_t value, int base_and_flags, int prec, - hcl_bch_t fillchar, const hcl_bch_t* prefix) +int hak_fmt_uintmax_to_bcstr ( + hak_bch_t* buf, int size, + hak_uintmax_t value, int base_and_flags, int prec, + hak_bch_t fillchar, const hak_bch_t* prefix) { - hcl_bch_t signchar; + hak_bch_t signchar; /* determine if a sign character is needed */ - if (base_and_flags & HCL_FMT_INTMAX_TO_BCSTR_PLUSSIGN) + if (base_and_flags & HAK_FMT_INTMAX_TO_BCSTR_PLUSSIGN) { signchar = '+'; } - else if (base_and_flags & HCL_FMT_INTMAX_TO_BCSTR_EMPTYSIGN) + else if (base_and_flags & HAK_FMT_INTMAX_TO_BCSTR_EMPTYSIGN) { signchar = ' '; } @@ -249,25 +249,25 @@ int hcl_fmt_uintmax_to_bcstr ( /* ==================== wide-char ===================================== */ -int hcl_fmt_intmax_to_ucstr ( - hcl_uch_t* buf, int size, - hcl_intmax_t value, int base_and_flags, int prec, - hcl_uch_t fillchar, const hcl_uch_t* prefix) +int hak_fmt_intmax_to_ucstr ( + hak_uch_t* buf, int size, + hak_intmax_t value, int base_and_flags, int prec, + hak_uch_t fillchar, const hak_uch_t* prefix) { - hcl_uch_t signchar; - hcl_uintmax_t absvalue; + hak_uch_t signchar; + hak_uintmax_t absvalue; if (value < 0) { signchar = '-'; absvalue = -value; } - else if (base_and_flags & HCL_FMT_INTMAX_TO_UCSTR_PLUSSIGN) + else if (base_and_flags & HAK_FMT_INTMAX_TO_UCSTR_PLUSSIGN) { signchar = '+'; absvalue = value; } - else if (base_and_flags & HCL_FMT_INTMAX_TO_UCSTR_EMPTYSIGN) + else if (base_and_flags & HAK_FMT_INTMAX_TO_UCSTR_EMPTYSIGN) { signchar = ' '; absvalue = value; @@ -281,19 +281,19 @@ int hcl_fmt_intmax_to_ucstr ( return fmt_uintmax_to_ucstr(buf, size, absvalue, base_and_flags, prec, fillchar, signchar, prefix); } -int hcl_fmt_uintmax_to_ucstr ( - hcl_uch_t* buf, int size, - hcl_uintmax_t value, int base_and_flags, int prec, - hcl_uch_t fillchar, const hcl_uch_t* prefix) +int hak_fmt_uintmax_to_ucstr ( + hak_uch_t* buf, int size, + hak_uintmax_t value, int base_and_flags, int prec, + hak_uch_t fillchar, const hak_uch_t* prefix) { - hcl_uch_t signchar; + hak_uch_t signchar; /* determine if a sign character is needed */ - if (base_and_flags & HCL_FMT_INTMAX_TO_UCSTR_PLUSSIGN) + if (base_and_flags & HAK_FMT_INTMAX_TO_UCSTR_PLUSSIGN) { signchar = '+'; } - else if (base_and_flags & HCL_FMT_INTMAX_TO_UCSTR_EMPTYSIGN) + else if (base_and_flags & HAK_FMT_INTMAX_TO_UCSTR_EMPTYSIGN) { signchar = ' '; } @@ -313,9 +313,9 @@ int hcl_fmt_uintmax_to_ucstr ( * The buffer pointed to by `nbuf' must have length >= MAXNBUF. */ -static hcl_bch_t* sprintn_lower (hcl_bch_t* nbuf, hcl_uintmax_t num, int base, hcl_ooi_t* lenp) +static hak_bch_t* sprintn_lower (hak_bch_t* nbuf, hak_uintmax_t num, int base, hak_ooi_t* lenp) { - hcl_bch_t* p; + hak_bch_t* p; p = nbuf; *p = '\0'; @@ -325,9 +325,9 @@ static hcl_bch_t* sprintn_lower (hcl_bch_t* nbuf, hcl_uintmax_t num, int base, h return p; /* returns the end */ } -static hcl_bch_t* sprintn_upper (hcl_bch_t* nbuf, hcl_uintmax_t num, int base, hcl_ooi_t* lenp) +static hak_bch_t* sprintn_upper (hak_bch_t* nbuf, hak_uintmax_t num, int base, hak_ooi_t* lenp) { - hcl_bch_t* p; + hak_bch_t* p; p = nbuf; *p = '\0'; @@ -338,124 +338,124 @@ static hcl_bch_t* sprintn_upper (hcl_bch_t* nbuf, hcl_uintmax_t num, int base, h } /* ------------------------------------------------------------------------- */ -#define PUT_BCH(hcl,fmtout,c,n) do { \ - hcl_oow_t _yy; \ - hcl_bch_t _cc = c; \ +#define PUT_BCH(hak,fmtout,c,n) do { \ + hak_oow_t _yy; \ + hak_bch_t _cc = c; \ for (_yy = 0; _yy < n; _yy++) \ { \ int _xx; \ - if ((_xx = fmtout->putbchars(hcl, fmtout, &_cc, 1)) <= -1) goto oops; \ + if ((_xx = fmtout->putbchars(hak, fmtout, &_cc, 1)) <= -1) goto oops; \ if (_xx == 0) goto done; \ fmtout->count++; \ } \ } while (0) -#define PUT_BCS(hcl,fmtout,ptr,len) do { \ +#define PUT_BCS(hak,fmtout,ptr,len) do { \ if (len > 0) { \ int _xx; \ - if ((_xx = fmtout->putbchars(hcl, fmtout, ptr, len)) <= -1) goto oops; \ + if ((_xx = fmtout->putbchars(hak, fmtout, ptr, len)) <= -1) goto oops; \ if (_xx == 0) goto done; \ fmtout->count += len; \ } \ } while (0) -#define PUT_UCH(hcl,fmtout,c,n) do { \ - hcl_oow_t _yy; \ - hcl_uch_t _cc = c; \ +#define PUT_UCH(hak,fmtout,c,n) do { \ + hak_oow_t _yy; \ + hak_uch_t _cc = c; \ for (_yy = 0; _yy < n; _yy++) \ { \ int _xx; \ - if ((_xx = fmtout->putuchars(hcl, fmtout, &_cc, 1)) <= -1) goto oops; \ + if ((_xx = fmtout->putuchars(hak, fmtout, &_cc, 1)) <= -1) goto oops; \ if (_xx == 0) goto done; \ fmtout->count++; \ } \ } while (0) -#define PUT_UCS(hcl,fmtout,ptr,len) do { \ +#define PUT_UCS(hak,fmtout,ptr,len) do { \ if (len > 0) { \ int _xx; \ - if ((_xx = fmtout->putuchars(hcl, fmtout, ptr, len)) <= -1) goto oops; \ + if ((_xx = fmtout->putuchars(hak, fmtout, ptr, len)) <= -1) goto oops; \ if (_xx == 0) goto done; \ fmtout->count += len; \ } \ } while (0) -#if defined(HCL_OOCH_IS_BCH) -# define PUT_OOCH(hcl,fmtout,c,n) PUT_BCH(hcl,fmtout,c,n) -# define PUT_OOCS(hcl,fmtout,ptr,len) PUT_BCS(hcl,fmtout,ptr,len) +#if defined(HAK_OOCH_IS_BCH) +# define PUT_OOCH(hak,fmtout,c,n) PUT_BCH(hak,fmtout,c,n) +# define PUT_OOCS(hak,fmtout,ptr,len) PUT_BCS(hak,fmtout,ptr,len) #else -# define PUT_OOCH(hcl,fmtout,c,n) PUT_UCH(hcl,fmtout,c,n) -# define PUT_OOCS(hcl,fmtout,ptr,len) PUT_UCS(hcl,fmtout,ptr,len) +# define PUT_OOCH(hak,fmtout,c,n) PUT_UCH(hak,fmtout,c,n) +# define PUT_OOCS(hak,fmtout,ptr,len) PUT_UCS(hak,fmtout,ptr,len) #endif #define BYTE_PRINTABLE(x) ((x >= 'a' && x <= 'z') || (x >= 'A' && x <= 'Z') || (x >= '0' && x <= '9') || (x == ' ')) -#define PUT_BYTE_IN_HEX(hcl,fmtout,byte,extra_flags) do { \ - hcl_bch_t __xbuf[3]; \ - hcl_byte_to_bcstr ((byte), __xbuf, HCL_COUNTOF(__xbuf), (16 | (extra_flags)), '0'); \ - PUT_BCH(hcl, fmtout, __xbuf[0], 1); \ - PUT_BCH(hcl, fmtout, __xbuf[1], 1); \ +#define PUT_BYTE_IN_HEX(hak,fmtout,byte,extra_flags) do { \ + hak_bch_t __xbuf[3]; \ + hak_byte_to_bcstr ((byte), __xbuf, HAK_COUNTOF(__xbuf), (16 | (extra_flags)), '0'); \ + PUT_BCH(hak, fmtout, __xbuf[0], 1); \ + PUT_BCH(hak, fmtout, __xbuf[1], 1); \ } while (0) /* ------------------------------------------------------------------------- */ -static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) +static int fmt_outv (hak_t* hak, hak_fmtout_t* fmtout, va_list ap) { - const hcl_uint8_t* fmtptr, * percent; + const hak_uint8_t* fmtptr, * percent; int fmtchsz; - hcl_uch_t uch; - hcl_bch_t bch; - hcl_ooch_t padc; + hak_uch_t uch; + hak_bch_t bch; + hak_ooch_t padc; int n, base, neg, sign; - hcl_ooi_t tmp, width, precision; + hak_ooi_t tmp, width, precision; int lm_flag, lm_dflag, flagc, numlen; - hcl_uintmax_t num = 0; - hcl_bch_t nbuf[MAXNBUF]; - const hcl_bch_t* nbufp; + hak_uintmax_t num = 0; + hak_bch_t nbuf[MAXNBUF]; + const hak_bch_t* nbufp; int stop = 0; -#if defined(HCL_ENABLE_FLTFMT) +#if defined(HAK_ENABLE_FLTFMT) struct { struct { - hcl_bch_t sbuf[32]; - hcl_bch_t* ptr; - hcl_oow_t capa; + hak_bch_t sbuf[32]; + hak_bch_t* ptr; + hak_oow_t capa; } fmt; struct { - hcl_bch_t sbuf[64]; - hcl_bch_t* ptr; - hcl_oow_t capa; + hak_bch_t sbuf[64]; + hak_bch_t* ptr; + hak_oow_t capa; } out; } fb; /* some buffers for handling float-point number formatting */ #endif - hcl_bch_t* (*sprintn) (hcl_bch_t* nbuf, hcl_uintmax_t num, int base, hcl_ooi_t* lenp); + hak_bch_t* (*sprintn) (hak_bch_t* nbuf, hak_uintmax_t num, int base, hak_ooi_t* lenp); - fmtptr = (const hcl_uint8_t*)fmtout->fmt_str; + fmtptr = (const hak_uint8_t*)fmtout->fmt_str; switch (fmtout->fmt_type) { - case HCL_FMTOUT_FMT_TYPE_BCH: - fmtchsz = HCL_SIZEOF_BCH_T; + case HAK_FMTOUT_FMT_TYPE_BCH: + fmtchsz = HAK_SIZEOF_BCH_T; break; - case HCL_FMTOUT_FMT_TYPE_UCH: - fmtchsz = HCL_SIZEOF_UCH_T; + case HAK_FMTOUT_FMT_TYPE_UCH: + fmtchsz = HAK_SIZEOF_UCH_T; break; } /* this is an internal function. it doesn't reset count to 0 */ /* fmtout->count = 0; */ -#if defined(HCL_ENABLE_FLTFMT) +#if defined(HAK_ENABLE_FLTFMT) fb.fmt.ptr = fb.fmt.sbuf; - fb.fmt.capa = HCL_COUNTOF(fb.fmt.sbuf) - 1; + fb.fmt.capa = HAK_COUNTOF(fb.fmt.sbuf) - 1; fb.out.ptr = fb.out.sbuf; - fb.out.capa = HCL_COUNTOF(fb.out.sbuf) - 1; + fb.out.capa = HAK_COUNTOF(fb.out.sbuf) - 1; #endif while (1) @@ -466,46 +466,46 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) #else switch (fmtout->fmt_type) { - case HCL_FMTOUT_FMT_TYPE_BCH: + case HAK_FMTOUT_FMT_TYPE_BCH: goto before_percent_bch; - case HCL_FMTOUT_FMT_TYPE_UCH: + case HAK_FMTOUT_FMT_TYPE_UCH: goto before_percent_uch; } #endif before_percent_bch: { - const hcl_bch_t* start, * end; - start = end = (const hcl_bch_t*)fmtptr; + const hak_bch_t* start, * end; + start = end = (const hak_bch_t*)fmtptr; while ((bch = *end++) != '%' || stop) { if (bch == '\0') { - PUT_BCS (hcl, fmtout, start, end - start - 1); + PUT_BCS (hak, fmtout, start, end - start - 1); goto done; } } - PUT_BCS (hcl, fmtout, start, end - start - 1); - fmtptr = (const hcl_uint8_t*)end; - percent = (const hcl_uint8_t*)(end - 1); + PUT_BCS (hak, fmtout, start, end - start - 1); + fmtptr = (const hak_uint8_t*)end; + percent = (const hak_uint8_t*)(end - 1); } goto handle_percent; before_percent_uch: { - const hcl_uch_t* start, * end; - start = end = (const hcl_uch_t*)fmtptr; + const hak_uch_t* start, * end; + start = end = (const hak_uch_t*)fmtptr; while ((uch = *end++) != '%' || stop) { if (uch == '\0') { - PUT_UCS (hcl, fmtout, start, end - start - 1); + PUT_UCS (hak, fmtout, start, end - start - 1); goto done; } } - PUT_UCS (hcl, fmtout, start, end - start - 1); - fmtptr = (const hcl_uint8_t*)end; - percent = (const hcl_uint8_t*)(end - 1); + PUT_UCS (hak, fmtout, start, end - start - 1); + fmtptr = (const hak_uint8_t*)end; + percent = (const hak_uint8_t*)(end - 1); } goto handle_percent; @@ -518,11 +518,11 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) reswitch: switch (fmtout->fmt_type) { - case HCL_FMTOUT_FMT_TYPE_BCH: - uch = *(const hcl_bch_t*)fmtptr; + case HAK_FMTOUT_FMT_TYPE_BCH: + uch = *(const hak_bch_t*)fmtptr; break; - case HCL_FMTOUT_FMT_TYPE_UCH: - uch = *(const hcl_uch_t*)fmtptr; + case HAK_FMTOUT_FMT_TYPE_UCH: + uch = *(const hak_uch_t*)fmtptr; break; } fmtptr += fmtchsz; @@ -578,7 +578,7 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) if (flagc & (FLAGC_STAR2 | FLAGC_PRECISION)) goto invalid_format; flagc |= FLAGC_STAR2; - precision = va_arg(ap, hcl_ooi_t); /* this deviates from the standard printf that accepts 'int' */ + precision = va_arg(ap, hak_ooi_t); /* this deviates from the standard printf that accepts 'int' */ if (precision < 0) { /* if precision is less than 0, @@ -592,7 +592,7 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) if (flagc & (FLAGC_STAR1 | FLAGC_WIDTH)) goto invalid_format; flagc |= FLAGC_STAR1; - width = va_arg(ap, hcl_ooi_t); /* it deviates from the standard printf that accepts 'int' */ + width = va_arg(ap, hak_ooi_t); /* it deviates from the standard printf that accepts 'int' */ if (width < 0) { /* @@ -625,11 +625,11 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) n = n * 10 + uch - '0'; switch (fmtout->fmt_type) { - case HCL_FMTOUT_FMT_TYPE_BCH: - uch = *(const hcl_bch_t*)fmtptr; + case HAK_FMTOUT_FMT_TYPE_BCH: + uch = *(const hak_bch_t*)fmtptr; break; - case HCL_FMTOUT_FMT_TYPE_UCH: - uch = *(const hcl_uch_t*)fmtptr; + case HAK_FMTOUT_FMT_TYPE_UCH: + uch = *(const hak_uch_t*)fmtptr; break; } if (uch < '0' || uch > '9') break; @@ -653,8 +653,8 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) case 'h': /* short int */ case 'l': /* long int */ case 'q': /* long long int */ - case 'j': /* hcl_intmax_t/hcl_uintmax_t */ - case 'z': /* hcl_ooi_t/hcl_oow_t */ + case 'j': /* hak_intmax_t/hak_uintmax_t */ + case 'z': /* hak_ooi_t/hak_oow_t */ case 't': /* ptrdiff_t */ if (lm_flag & (LF_LD | LF_QD)) goto invalid_format; @@ -709,10 +709,10 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) case 'n': /* number of characters printed so far */ if (lm_flag & LF_J) /* j */ - *(va_arg(ap, hcl_intmax_t*)) = fmtout->count; + *(va_arg(ap, hak_intmax_t*)) = fmtout->count; else if (lm_flag & LF_Z) /* z */ - *(va_arg(ap, hcl_ooi_t*)) = fmtout->count; - #if (HCL_SIZEOF_LONG_LONG > 0) + *(va_arg(ap, hak_ooi_t*)) = fmtout->count; + #if (HAK_SIZEOF_LONG_LONG > 0) else if (lm_flag & LF_Q) /* ll */ *(va_arg(ap, long long int*)) = fmtout->count; #endif @@ -759,7 +759,7 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) if (width == 0) flagc |= FLAGC_SHARP; else flagc &= ~FLAGC_SHARP; - num = (hcl_uintptr_t)va_arg(ap, void*); + num = (hak_uintptr_t)va_arg(ap, void*); goto number; case 'c': @@ -767,18 +767,18 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) /* zeropad must not take effect for 'c' */ if (flagc & FLAGC_ZEROPAD) padc = ' '; if (lm_flag & LF_L) goto uppercase_c; - #if defined(HCL_OOCH_IS_UCH) + #if defined(HAK_OOCH_IS_UCH) if (lm_flag & LF_J) goto uppercase_c; #endif lowercase_c: - bch = HCL_SIZEOF(hcl_bch_t) < HCL_SIZEOF(int)? va_arg(ap, int): va_arg(ap, hcl_bch_t); + bch = HAK_SIZEOF(hak_bch_t) < HAK_SIZEOF(int)? va_arg(ap, int): va_arg(ap, hak_bch_t); print_lowercase_c: /* precision 0 doesn't kill the letter */ width--; - if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_BCH (hcl, fmtout, padc, width); - PUT_BCH (hcl, fmtout, bch, 1); - if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_BCH (hcl, fmtout, padc, width); + if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_BCH (hak, fmtout, padc, width); + PUT_BCH (hak, fmtout, bch, 1); + if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_BCH (hak, fmtout, padc, width); break; } @@ -787,32 +787,32 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) /* zeropad must not take effect for 'C' */ if (flagc & FLAGC_ZEROPAD) padc = ' '; if (lm_flag & LF_H) goto lowercase_c; - #if defined(HCL_OOCH_IS_BCH) + #if defined(HAK_OOCH_IS_BCH) if (lm_flag & LF_J) goto lowercase_c; #endif uppercase_c: - uch = HCL_SIZEOF(hcl_uch_t) < HCL_SIZEOF(int)? va_arg(ap, int): va_arg(ap, hcl_uch_t); + uch = HAK_SIZEOF(hak_uch_t) < HAK_SIZEOF(int)? va_arg(ap, int): va_arg(ap, hak_uch_t); /* precision 0 doesn't kill the letter */ width--; - if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_UCH (hcl, fmtout, padc, width); - PUT_UCH (hcl, fmtout, uch, 1); - if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_UCH (hcl, fmtout, padc, width); + if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_UCH (hak, fmtout, padc, width); + PUT_UCH (hak, fmtout, uch, 1); + if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_UCH (hak, fmtout, padc, width); break; } case 's': { - const hcl_bch_t* bsp; + const hak_bch_t* bsp; /* zeropad must not take effect for 'S' */ if (flagc & FLAGC_ZEROPAD) padc = ' '; if (lm_flag & LF_L) goto uppercase_s; - #if defined(HCL_OOCH_IS_UCH) + #if defined(HAK_OOCH_IS_UCH) if (lm_flag & LF_J) goto uppercase_s; #endif lowercase_s: - bsp = va_arg(ap, hcl_bch_t*); + bsp = va_arg(ap, hak_bch_t*); if (!bsp) bsp = bch_nullstr; n = 0; @@ -827,24 +827,24 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) width -= n; - if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_BCH (hcl, fmtout, padc, width); - PUT_BCS (hcl, fmtout, bsp, n); - if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_BCH (hcl, fmtout, padc, width); + if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_BCH (hak, fmtout, padc, width); + PUT_BCS (hak, fmtout, bsp, n); + if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_BCH (hak, fmtout, padc, width); break; } case 'S': { - const hcl_uch_t* usp; + const hak_uch_t* usp; /* zeropad must not take effect for 's' */ if (flagc & FLAGC_ZEROPAD) padc = ' '; if (lm_flag & LF_H) goto lowercase_s; - #if defined(HCL_OOCH_IS_BCH) + #if defined(HAK_OOCH_IS_BCH) if (lm_flag & LF_J) goto lowercase_s; #endif uppercase_s: - usp = va_arg(ap, hcl_uch_t*); + usp = va_arg(ap, hak_uch_t*); if (!usp) usp = uch_nullstr; n = 0; @@ -859,9 +859,9 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) width -= n; - if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_UCH (hcl, fmtout, padc, width); - PUT_UCS (hcl, fmtout, usp, n); - if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_UCH (hcl, fmtout, padc, width); + if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_UCH (hak, fmtout, padc, width); + PUT_UCS (hak, fmtout, usp, n); + if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_UCH (hak, fmtout, padc, width); break; } @@ -870,13 +870,13 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) case 'K': { /* byte or multibyte character string in escape sequence */ - const hcl_uint8_t* bsp; - hcl_oow_t k_hex_width; + const hak_uint8_t* bsp; + hak_oow_t k_hex_width; /* zeropad must not take effect for 'k' and 'K' * - * 'h' & 'l' is not used to differentiate hcl_bch_t and hcl_uch_t - * because 'k' means hcl_byte_t. + * 'h' & 'l' is not used to differentiate hak_bch_t and hak_uch_t + * because 'k' means hak_byte_t. * 'l', results in uppercase hexadecimal letters. * 'h' drops the leading \x in the output * -------------------------------------------------------- @@ -892,7 +892,7 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) */ if (flagc & FLAGC_ZEROPAD) padc = ' '; - bsp = va_arg(ap, hcl_uint8_t*); + bsp = va_arg(ap, hak_uint8_t*); k_hex_width = (lm_flag & (LF_H | LF_L))? 4: 2; if (lm_flag& LF_H) @@ -921,25 +921,25 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) width -= (n * k_hex_width); } - if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hcl, fmtout, padc, width); + if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hak, fmtout, padc, width); while (n--) { if ((lm_flag & LF_H) && BYTE_PRINTABLE(*bsp)) { - PUT_BCH (hcl, fmtout, *bsp, 1); + PUT_BCH (hak, fmtout, *bsp, 1); } else { - hcl_bch_t xbuf[3]; - hcl_byte_to_bcstr (*bsp, xbuf, HCL_COUNTOF(xbuf), (16 | (uch == 'k'? HCL_BYTE_TO_BCSTR_LOWERCASE: 0)), '0'); - if (lm_flag & (LF_H | LF_L)) PUT_BCS (hcl, fmtout, "\\x", 2); - PUT_BCS (hcl, fmtout, xbuf, 2); + hak_bch_t xbuf[3]; + hak_byte_to_bcstr (*bsp, xbuf, HAK_COUNTOF(xbuf), (16 | (uch == 'k'? HAK_BYTE_TO_BCSTR_LOWERCASE: 0)), '0'); + if (lm_flag & (LF_H | LF_L)) PUT_BCS (hak, fmtout, "\\x", 2); + PUT_BCS (hak, fmtout, xbuf, 2); } bsp++; } - if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hcl, fmtout, padc, width); + if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hak, fmtout, padc, width); break; } @@ -952,11 +952,11 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) * w -> \uXXXX, \UXXXXXXXX * lw -> all in \UXXXXXXXX */ - const hcl_uch_t* usp; - hcl_oow_t uwid; + const hak_uch_t* usp; + hak_oow_t uwid; if (flagc & FLAGC_ZEROPAD) padc = ' '; - usp = va_arg(ap, hcl_uch_t*); + usp = va_arg(ap, hak_uch_t*); if (flagc & FLAGC_DOT) { @@ -980,58 +980,58 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) } } - if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hcl, fmtout, padc, width); + if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hak, fmtout, padc, width); while (n--) { if ((lm_flag & LF_H) && BYTE_PRINTABLE(*usp)) { - PUT_OOCH (hcl, fmtout, *usp, 1); + PUT_OOCH (hak, fmtout, *usp, 1); } else if (!(lm_flag & LF_L) && *usp <= 0xFFFF) { - hcl_uint16_t u16 = *usp; - int extra_flags = ((uch) == 'w'? HCL_BYTE_TO_BCSTR_LOWERCASE: 0); - PUT_BCS (hcl, fmtout, "\\u", 2); - PUT_BYTE_IN_HEX (hcl, fmtout, (u16 >> 8) & 0xFF, extra_flags); - PUT_BYTE_IN_HEX (hcl, fmtout, u16 & 0xFF, extra_flags); + hak_uint16_t u16 = *usp; + int extra_flags = ((uch) == 'w'? HAK_BYTE_TO_BCSTR_LOWERCASE: 0); + PUT_BCS (hak, fmtout, "\\u", 2); + PUT_BYTE_IN_HEX (hak, fmtout, (u16 >> 8) & 0xFF, extra_flags); + PUT_BYTE_IN_HEX (hak, fmtout, u16 & 0xFF, extra_flags); } else { - hcl_uint32_t u32 = *usp; - int extra_flags = ((uch) == 'w'? HCL_BYTE_TO_BCSTR_LOWERCASE: 0); - PUT_BCS (hcl, fmtout, "\\u", 2); - PUT_BYTE_IN_HEX (hcl, fmtout, (u32 >> 24) & 0xFF, extra_flags); - PUT_BYTE_IN_HEX (hcl, fmtout, (u32 >> 16) & 0xFF, extra_flags); - PUT_BYTE_IN_HEX (hcl, fmtout, (u32 >> 8) & 0xFF, extra_flags); - PUT_BYTE_IN_HEX (hcl, fmtout, u32 & 0xFF, extra_flags); + hak_uint32_t u32 = *usp; + int extra_flags = ((uch) == 'w'? HAK_BYTE_TO_BCSTR_LOWERCASE: 0); + PUT_BCS (hak, fmtout, "\\u", 2); + PUT_BYTE_IN_HEX (hak, fmtout, (u32 >> 24) & 0xFF, extra_flags); + PUT_BYTE_IN_HEX (hak, fmtout, (u32 >> 16) & 0xFF, extra_flags); + PUT_BYTE_IN_HEX (hak, fmtout, (u32 >> 8) & 0xFF, extra_flags); + PUT_BYTE_IN_HEX (hak, fmtout, u32 & 0xFF, extra_flags); } usp++; } - if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hcl, fmtout, padc, width); + if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hak, fmtout, padc, width); break; } case 'O': /* object - ignore precision, width, adjustment */ { - if (HCL_UNLIKELY(!fmtout->putobj)) goto invalid_format; - if (fmtout->putobj(hcl, fmtout, va_arg(ap, hcl_oop_t)) <= -1) goto oops; + if (HAK_UNLIKELY(!fmtout->putobj)) goto invalid_format; + if (fmtout->putobj(hak, fmtout, va_arg(ap, hak_oop_t)) <= -1) goto oops; break; } case 'J': { - hcl_bitmask_t tmp; - if (HCL_UNLIKELY(!fmtout->putobj)) goto invalid_format; + hak_bitmask_t tmp; + if (HAK_UNLIKELY(!fmtout->putobj)) goto invalid_format; tmp = fmtout->mask; - fmtout->mask |= HCL_LOG_PREFER_JSON; - if (fmtout->putobj(hcl, fmtout, va_arg(ap, hcl_oop_t)) <= -1) goto oops; + fmtout->mask |= HAK_LOG_PREFER_JSON; + if (fmtout->putobj(hak, fmtout, va_arg(ap, hak_oop_t)) <= -1) goto oops; fmtout->mask = tmp; break; } -#if defined(HCL_ENABLE_FLTFMT) +#if defined(HAK_ENABLE_FLTFMT) case 'e': case 'E': case 'f': @@ -1045,48 +1045,48 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) { /* let me rely on snprintf until i implement float-point to string conversion */ int q; - hcl_oow_t fmtlen; + hak_oow_t fmtlen; union { - #if (HCL_SIZEOF___FLOAT128 > 0) && defined(HAVE_QUADMATH_SNPRINTF) + #if (HAK_SIZEOF___FLOAT128 > 0) && defined(HAVE_QUADMATH_SNPRINTF) __float128 qd; #endif long double ld; double d; } v; int dtype = 0; - hcl_oow_t newcapa; - hcl_bch_t* bsp; + hak_oow_t newcapa; + hak_bch_t* bsp; if (lm_flag & LF_J) { - #if (HCL_SIZEOF___FLOAT128 > 0) && defined(HAVE_QUADMATH_SNPRINTF) && (HCL_SIZEOF_FLTMAX_T == HCL_SIZEOF___FLOAT128) - v.qd = va_arg(ap, hcl_fltmax_t); + #if (HAK_SIZEOF___FLOAT128 > 0) && defined(HAVE_QUADMATH_SNPRINTF) && (HAK_SIZEOF_FLTMAX_T == HAK_SIZEOF___FLOAT128) + v.qd = va_arg(ap, hak_fltmax_t); dtype = LF_QD; - #elif HCL_SIZEOF_FLTMAX_T == HCL_SIZEOF_DOUBLE - v.d = va_arg(ap, hcl_fltmax_t); - #elif HCL_SIZEOF_FLTMAX_T == HCL_SIZEOF_LONG_DOUBLE - v.ld = va_arg(ap, hcl_fltmax_t); + #elif HAK_SIZEOF_FLTMAX_T == HAK_SIZEOF_DOUBLE + v.d = va_arg(ap, hak_fltmax_t); + #elif HAK_SIZEOF_FLTMAX_T == HAK_SIZEOF_LONG_DOUBLE + v.ld = va_arg(ap, hak_fltmax_t); dtype = LF_LD; #else - #error Unsupported hcl_flt_t + #error Unsupported hak_flt_t #endif } else if (lm_flag & LF_Z) { - /* hcl_flt_t is limited to double or long double */ + /* hak_flt_t is limited to double or long double */ /* precedence goes to double if sizeof(double) == sizeof(long double) * for example, %Lf didn't work on some old platforms. * so i prefer the format specifier with no modifier. */ - #if HCL_SIZEOF_FLT_T == HCL_SIZEOF_DOUBLE - v.d = va_arg(ap, hcl_flt_t); - #elif HCL_SIZEOF_FLT_T == HCL_SIZEOF_LONG_DOUBLE - v.ld = va_arg(ap, hcl_flt_t); + #if HAK_SIZEOF_FLT_T == HAK_SIZEOF_DOUBLE + v.d = va_arg(ap, hak_flt_t); + #elif HAK_SIZEOF_FLT_T == HAK_SIZEOF_LONG_DOUBLE + v.ld = va_arg(ap, hak_flt_t); dtype = LF_LD; #else - #error Unsupported hcl_flt_t + #error Unsupported hak_flt_t #endif } else if (lm_flag & (LF_LD | LF_L)) @@ -1094,7 +1094,7 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) v.ld = va_arg(ap, long double); dtype = LF_LD; } - #if (HCL_SIZEOF___FLOAT128 > 0) && defined(HAVE_QUADMATH_SNPRINTF) + #if (HAK_SIZEOF___FLOAT128 > 0) && defined(HAVE_QUADMATH_SNPRINTF) else if (lm_flag & (LF_QD | LF_Q)) { v.qd = va_arg(ap, __float128); @@ -1115,14 +1115,14 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) { if (fb.fmt.ptr == fb.fmt.sbuf) { - fb.fmt.ptr = (hcl_bch_t*)HCL_MMGR_ALLOC(fmtout->mmgr, HCL_SIZEOF(*fb.fmt.ptr) * (fmtlen + 1)); + fb.fmt.ptr = (hak_bch_t*)HAK_MMGR_ALLOC(fmtout->mmgr, HAK_SIZEOF(*fb.fmt.ptr) * (fmtlen + 1)); if (!fb.fmt.ptr) goto oops; } else { - hcl_bch_t* tmpptr; + hak_bch_t* tmpptr; - tmpptr = (hcl_bch_t*)HCL_MMGR_REALLOC(fmtout->mmgr, fb.fmt.ptr, HCL_SIZEOF(*fb.fmt.ptr) * (fmtlen + 1)); + tmpptr = (hak_bch_t*)HAK_MMGR_REALLOC(fmtout->mmgr, fb.fmt.ptr, HAK_SIZEOF(*fb.fmt.ptr) * (fmtlen + 1)); if (!tmpptr) goto oops; fb.fmt.ptr = tmpptr; } @@ -1142,22 +1142,22 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) if (flagc & FLAGC_STAR1) fb.fmt.ptr[fmtlen++] = '*'; else if (flagc & FLAGC_WIDTH) { - fmtlen += hcl_fmt_uintmax_to_bcstr( + fmtlen += hak_fmt_uintmax_to_bcstr( &fb.fmt.ptr[fmtlen], fb.fmt.capa - fmtlen, - width, 10, -1, '\0', HCL_NULL); + width, 10, -1, '\0', HAK_NULL); } if (flagc & FLAGC_DOT) fb.fmt.ptr[fmtlen++] = '.'; if (flagc & FLAGC_STAR2) fb.fmt.ptr[fmtlen++] = '*'; else if (flagc & FLAGC_PRECISION) { - fmtlen += hcl_fmt_uintmax_to_bcstr( + fmtlen += hak_fmt_uintmax_to_bcstr( &fb.fmt.ptr[fmtlen], fb.fmt.capa - fmtlen, - precision, 10, -1, '\0', HCL_NULL); + precision, 10, -1, '\0', HAK_NULL); } if (dtype == LF_LD) fb.fmt.ptr[fmtlen++] = 'L'; - #if (HCL_SIZEOF___FLOAT128 > 0) + #if (HAK_SIZEOF___FLOAT128 > 0) else if (dtype == LF_QD) fb.fmt.ptr[fmtlen++] = 'Q'; #endif @@ -1173,9 +1173,9 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) newcapa = precision + width + 32; if (fb.out.capa < newcapa) { - /*HCL_ASSERT (hcl, fb.out.ptr == fb.out.sbuf);*/ + /*HAK_ASSERT (hak, fb.out.ptr == fb.out.sbuf);*/ - fb.out.ptr = (hcl_bch_t*)HCL_MMGR_ALLOC(fmtout->mmgr, HCL_SIZEOF(hcl_bch_t) * (newcapa + 1)); + fb.out.ptr = (hak_bch_t*)HAK_MMGR_ALLOC(fmtout->mmgr, HAK_SIZEOF(hak_bch_t) * (newcapa + 1)); if (!fb.out.ptr) goto oops; fb.out.capa = newcapa; } @@ -1186,23 +1186,23 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) if (dtype == LF_LD) { #if defined(HAVE_SNPRINTF) - q = snprintf((hcl_bch_t*)fb.out.ptr, fb.out.capa + 1, fb.fmt.ptr, v.ld); + q = snprintf((hak_bch_t*)fb.out.ptr, fb.out.capa + 1, fb.fmt.ptr, v.ld); #else - q = sprintf((hcl_bch_t*)fb.out.ptr, fb.fmt.ptr, v.ld); + q = sprintf((hak_bch_t*)fb.out.ptr, fb.fmt.ptr, v.ld); #endif } - #if (HCL_SIZEOF___FLOAT128 > 0) && defined(HAVE_QUADMATH_SNPRINTF) + #if (HAK_SIZEOF___FLOAT128 > 0) && defined(HAVE_QUADMATH_SNPRINTF) else if (dtype == LF_QD) { - q = quadmath_snprintf((hcl_bch_t*)fb.out.ptr, fb.out.capa + 1, fb.fmt.ptr, v.qd); + q = quadmath_snprintf((hak_bch_t*)fb.out.ptr, fb.out.capa + 1, fb.fmt.ptr, v.qd); } #endif else { #if defined(HAVE_SNPRINTF) - q = snprintf((hcl_bch_t*)fb.out.ptr, fb.out.capa + 1, fb.fmt.ptr, v.d); + q = snprintf((hak_bch_t*)fb.out.ptr, fb.out.capa + 1, fb.fmt.ptr, v.d); #else - q = sprintf((hcl_bch_t*)fb.out.ptr, fb.fmt.ptr, v.d); + q = sprintf((hak_bch_t*)fb.out.ptr, fb.fmt.ptr, v.d); #endif } if (q <= -1) goto oops; @@ -1213,13 +1213,13 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) if (fb.out.ptr == fb.out.sbuf) { - fb.out.ptr = (hcl_bch_t*)HCL_MMGR_ALLOC(fmtout->mmgr, HCL_SIZEOF(hcl_bch_t) * (newcapa + 1)); + fb.out.ptr = (hak_bch_t*)HAK_MMGR_ALLOC(fmtout->mmgr, HAK_SIZEOF(hak_bch_t) * (newcapa + 1)); if (!fb.out.ptr) goto oops; } else { - hcl_bch_t* tmpptr; - tmpptr = (hcl_bch_t*)HCL_MMGR_REALLOC(fmtout->mmgr, fb.out.ptr, HCL_SIZEOF(hcl_bch_t) * (newcapa + 1)); + hak_bch_t* tmpptr; + tmpptr = (hak_bch_t*)HAK_MMGR_REALLOC(fmtout->mmgr, fb.out.ptr, HAK_SIZEOF(hak_bch_t) * (newcapa + 1)); if (!tmpptr) goto oops; fb.out.ptr = tmpptr; } @@ -1228,7 +1228,7 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) bsp = fb.out.ptr; n = 0; while (bsp[n] != '\0') n++; - PUT_BCS (hcl, fmtout, bsp, n); + PUT_BCS (hak, fmtout, bsp, n); break; } #endif @@ -1238,33 +1238,33 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) if (lm_flag & LF_J) { #if 1 && !defined(__clang__) && defined(__GNUC__) && \ - (HCL_SIZEOF_UINTMAX_T > HCL_SIZEOF_OOW_T) && \ - (HCL_SIZEOF_UINTMAX_T != HCL_SIZEOF_LONG_LONG) && \ - (HCL_SIZEOF_UINTMAX_T != HCL_SIZEOF_LONG) - /* GCC-compiled binaries crashed when getting hcl_uintmax_t with va_arg. + (HAK_SIZEOF_UINTMAX_T > HAK_SIZEOF_OOW_T) && \ + (HAK_SIZEOF_UINTMAX_T != HAK_SIZEOF_LONG_LONG) && \ + (HAK_SIZEOF_UINTMAX_T != HAK_SIZEOF_LONG) + /* GCC-compiled binaries crashed when getting hak_uintmax_t with va_arg. * This is just a work-around for it */ int i; - for (i = 0, num = 0; i < HCL_SIZEOF(hcl_uintmax_t) / HCL_SIZEOF(hcl_oow_t); i++) + for (i = 0, num = 0; i < HAK_SIZEOF(hak_uintmax_t) / HAK_SIZEOF(hak_oow_t); i++) { - #if defined(HCL_ENDIAN_BIG) - num = num << (8 * HCL_SIZEOF(hcl_oow_t)) | (va_arg (ap, hcl_oow_t)); + #if defined(HAK_ENDIAN_BIG) + num = num << (8 * HAK_SIZEOF(hak_oow_t)) | (va_arg (ap, hak_oow_t)); #else - register int shift = i * HCL_SIZEOF(hcl_oow_t); - hcl_oow_t x = va_arg (ap, hcl_oow_t); - num |= (hcl_uintmax_t)x << (shift * HCL_BITS_PER_BYTE); + register int shift = i * HAK_SIZEOF(hak_oow_t); + hak_oow_t x = va_arg (ap, hak_oow_t); + num |= (hak_uintmax_t)x << (shift * HAK_BITS_PER_BYTE); #endif } #else - num = va_arg (ap, hcl_uintmax_t); + num = va_arg (ap, hak_uintmax_t); #endif } #if 0 else if (lm_flag & LF_T) - num = va_arg(ap, hcl_ptrdiff_t); + num = va_arg(ap, hak_ptrdiff_t); #endif else if (lm_flag & LF_Z) - num = va_arg(ap, hcl_oow_t); - #if (HCL_SIZEOF_LONG_LONG > 0) + num = va_arg(ap, hak_oow_t); + #if (HAK_SIZEOF_LONG_LONG > 0) else if (lm_flag & LF_Q) num = va_arg(ap, unsigned long long int); #endif @@ -1282,34 +1282,34 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) if (lm_flag & LF_J) { #if 1 && !defined(__clang__) && defined(__GNUC__) && \ - (HCL_SIZEOF_INTMAX_T > HCL_SIZEOF_OOI_T) && \ - (HCL_SIZEOF_UINTMAX_T != HCL_SIZEOF_LONG_LONG) && \ - (HCL_SIZEOF_UINTMAX_T != HCL_SIZEOF_LONG) - /* GCC-compiled binraries crashed when getting hcl_uintmax_t with va_arg. + (HAK_SIZEOF_INTMAX_T > HAK_SIZEOF_OOI_T) && \ + (HAK_SIZEOF_UINTMAX_T != HAK_SIZEOF_LONG_LONG) && \ + (HAK_SIZEOF_UINTMAX_T != HAK_SIZEOF_LONG) + /* GCC-compiled binraries crashed when getting hak_uintmax_t with va_arg. * This is just a work-around for it */ int i; - for (i = 0, num = 0; i < HCL_SIZEOF(hcl_intmax_t) / HCL_SIZEOF(hcl_oow_t); i++) + for (i = 0, num = 0; i < HAK_SIZEOF(hak_intmax_t) / HAK_SIZEOF(hak_oow_t); i++) { - #if defined(HCL_ENDIAN_BIG) - num = num << (8 * HCL_SIZEOF(hcl_oow_t)) | (va_arg (ap, hcl_oow_t)); + #if defined(HAK_ENDIAN_BIG) + num = num << (8 * HAK_SIZEOF(hak_oow_t)) | (va_arg (ap, hak_oow_t)); #else - register int shift = i * HCL_SIZEOF(hcl_oow_t); - hcl_oow_t x = va_arg (ap, hcl_oow_t); - num |= (hcl_uintmax_t)x << (shift * HCL_BITS_PER_BYTE); + register int shift = i * HAK_SIZEOF(hak_oow_t); + hak_oow_t x = va_arg (ap, hak_oow_t); + num |= (hak_uintmax_t)x << (shift * HAK_BITS_PER_BYTE); #endif } #else - num = va_arg (ap, hcl_intmax_t); + num = va_arg (ap, hak_intmax_t); #endif } #if 0 else if (lm_flag & LF_T) - num = va_arg(ap, hcl_ptrdiff_t); + num = va_arg(ap, hak_ptrdiff_t); #endif else if (lm_flag & LF_Z) - num = va_arg (ap, hcl_ooi_t); - #if (HCL_SIZEOF_LONG_LONG > 0) + num = va_arg (ap, hak_ooi_t); + #if (HAK_SIZEOF_LONG_LONG > 0) else if (lm_flag & LF_Q) num = va_arg (ap, long long int); #endif @@ -1323,10 +1323,10 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) num = va_arg (ap, int); number: - if (sign && (hcl_intmax_t)num < 0) + if (sign && (hak_intmax_t)num < 0) { neg = 1; - num = -(hcl_intmax_t)num; + num = -(hak_intmax_t)num; } nbufp = sprintn(nbuf, num, base, &tmp); @@ -1339,7 +1339,7 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) else if (flagc & FLAGC_SIGN) tmp++; else if (flagc & FLAGC_SPACE) tmp++; - numlen = (int)((const hcl_bch_t*)nbufp - (const hcl_bch_t*)nbuf); + numlen = (int)((const hak_bch_t*)nbufp - (const hak_bch_t*)nbuf); if ((flagc & FLAGC_DOT) && precision > numlen) { /* extra zeros for precision specified */ @@ -1348,60 +1348,60 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) if (!(flagc & FLAGC_LEFTADJ) && !(flagc & FLAGC_ZEROPAD) && width > 0 && (width -= tmp) > 0) { - PUT_OOCH (hcl, fmtout, padc, width); + PUT_OOCH (hak, fmtout, padc, width); width = 0; } - if (neg) PUT_OOCH (hcl, fmtout, '-', 1); - else if (flagc & FLAGC_SIGN) PUT_OOCH (hcl, fmtout, '+', 1); - else if (flagc & FLAGC_SPACE) PUT_OOCH (hcl, fmtout, ' ', 1); + if (neg) PUT_OOCH (hak, fmtout, '-', 1); + else if (flagc & FLAGC_SIGN) PUT_OOCH (hak, fmtout, '+', 1); + else if (flagc & FLAGC_SPACE) PUT_OOCH (hak, fmtout, ' ', 1); if ((flagc & FLAGC_SHARP) && num != 0) { if (base == 2) { - PUT_OOCH (hcl, fmtout, '0', 1); - PUT_OOCH (hcl, fmtout, 'b', 1); + PUT_OOCH (hak, fmtout, '0', 1); + PUT_OOCH (hak, fmtout, 'b', 1); } if (base == 8) { - PUT_OOCH (hcl, fmtout, '0', 1); - PUT_OOCH (hcl, fmtout, 'o', 1); + PUT_OOCH (hak, fmtout, '0', 1); + PUT_OOCH (hak, fmtout, 'o', 1); } else if (base == 16) { - PUT_OOCH (hcl, fmtout, '0', 1); - PUT_OOCH (hcl, fmtout, 'x', 1); + PUT_OOCH (hak, fmtout, '0', 1); + PUT_OOCH (hak, fmtout, 'x', 1); } } if ((flagc & FLAGC_DOT) && precision > numlen) { /* extra zeros for precision specified */ - PUT_OOCH (hcl, fmtout, '0', precision - numlen); + PUT_OOCH (hak, fmtout, '0', precision - numlen); } if (!(flagc & FLAGC_LEFTADJ) && width > 0 && (width -= tmp) > 0) { - PUT_OOCH (hcl, fmtout, padc, width); + PUT_OOCH (hak, fmtout, padc, width); } - while (*nbufp) PUT_OOCH (hcl, fmtout, *nbufp--, 1); /* output actual digits */ + while (*nbufp) PUT_OOCH (hak, fmtout, *nbufp--, 1); /* output actual digits */ if ((flagc & FLAGC_LEFTADJ) && width > 0 && (width -= tmp) > 0) { - PUT_OOCH (hcl, fmtout, padc, width); + PUT_OOCH (hak, fmtout, padc, width); } break; invalid_format: switch (fmtout->fmt_type) { - case HCL_FMTOUT_FMT_TYPE_BCH: - PUT_BCS (hcl, fmtout, (const hcl_bch_t*)percent, (fmtptr - percent) / fmtchsz); + case HAK_FMTOUT_FMT_TYPE_BCH: + PUT_BCS (hak, fmtout, (const hak_bch_t*)percent, (fmtptr - percent) / fmtchsz); break; - case HCL_FMTOUT_FMT_TYPE_UCH: - PUT_UCS (hcl, fmtout, (const hcl_uch_t*)percent, (fmtptr - percent) / fmtchsz); + case HAK_FMTOUT_FMT_TYPE_UCH: + PUT_UCS (hak, fmtout, (const hak_uch_t*)percent, (fmtptr - percent) / fmtchsz); break; } break; @@ -1409,11 +1409,11 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) default: switch (fmtout->fmt_type) { - case HCL_FMTOUT_FMT_TYPE_BCH: - PUT_BCS (hcl, fmtout, (const hcl_bch_t*)percent, (fmtptr - percent) / fmtchsz); + case HAK_FMTOUT_FMT_TYPE_BCH: + PUT_BCS (hak, fmtout, (const hak_bch_t*)percent, (fmtptr - percent) / fmtchsz); break; - case HCL_FMTOUT_FMT_TYPE_UCH: - PUT_UCS (hcl, fmtout, (const hcl_uch_t*)percent, (fmtptr - percent) / fmtchsz); + case HAK_FMTOUT_FMT_TYPE_UCH: + PUT_UCS (hak, fmtout, (const hak_uch_t*)percent, (fmtptr - percent) / fmtchsz); break; } /* @@ -1428,73 +1428,73 @@ static int fmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, va_list ap) } done: -#if defined(HCL_ENABLE_FLTFMT) - if (fb.fmt.ptr != fb.fmt.sbuf) HCL_MMGR_FREE (fmtout->mmgr, fb.fmt.ptr); - if (fb.out.ptr != fb.out.sbuf) HCL_MMGR_FREE (fmtout->mmgr, fb.out.ptr); +#if defined(HAK_ENABLE_FLTFMT) + if (fb.fmt.ptr != fb.fmt.sbuf) HAK_MMGR_FREE (fmtout->mmgr, fb.fmt.ptr); + if (fb.out.ptr != fb.out.sbuf) HAK_MMGR_FREE (fmtout->mmgr, fb.out.ptr); #endif return 0; oops: -#if defined(HCL_ENABLE_FLTFMT) - if (fb.fmt.ptr != fb.fmt.sbuf) HCL_MMGR_FREE (fmtout->mmgr, fb.fmt.ptr); - if (fb.out.ptr != fb.out.sbuf) HCL_MMGR_FREE (fmtout->mmgr, fb.out.ptr); +#if defined(HAK_ENABLE_FLTFMT) + if (fb.fmt.ptr != fb.fmt.sbuf) HAK_MMGR_FREE (fmtout->mmgr, fb.fmt.ptr); + if (fb.out.ptr != fb.out.sbuf) HAK_MMGR_FREE (fmtout->mmgr, fb.out.ptr); #endif return -1; } -int hcl_bfmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_bch_t* fmt, va_list ap) +int hak_bfmt_outv (hak_t* hak, hak_fmtout_t* fmtout, const hak_bch_t* fmt, va_list ap) { int n; const void* fmt_str; - hcl_fmtout_fmt_type_t fmt_type; + hak_fmtout_fmt_type_t fmt_type; fmt_str = fmtout->fmt_str; fmt_type = fmtout->fmt_type; - fmtout->fmt_type = HCL_FMTOUT_FMT_TYPE_BCH; + fmtout->fmt_type = HAK_FMTOUT_FMT_TYPE_BCH; fmtout->fmt_str = fmt; - n = fmt_outv(hcl, fmtout, ap); + n = fmt_outv(hak, fmtout, ap); fmtout->fmt_str = fmt_str; fmtout->fmt_type = fmt_type; return n; } -int hcl_ufmt_outv (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_uch_t* fmt, va_list ap) +int hak_ufmt_outv (hak_t* hak, hak_fmtout_t* fmtout, const hak_uch_t* fmt, va_list ap) { int n; const void* fmt_str; - hcl_fmtout_fmt_type_t fmt_type; + hak_fmtout_fmt_type_t fmt_type; fmt_str = fmtout->fmt_str; fmt_type = fmtout->fmt_type; - fmtout->fmt_type = HCL_FMTOUT_FMT_TYPE_UCH; + fmtout->fmt_type = HAK_FMTOUT_FMT_TYPE_UCH; fmtout->fmt_str = fmt; - n = fmt_outv(hcl, fmtout, ap); + n = fmt_outv(hak, fmtout, ap); fmtout->fmt_str = fmt_str; fmtout->fmt_type = fmt_type; return n; } -int hcl_bfmt_out (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_bch_t* fmt, ...) +int hak_bfmt_out (hak_t* hak, hak_fmtout_t* fmtout, const hak_bch_t* fmt, ...) { va_list ap; int n; const void* fmt_str; - hcl_fmtout_fmt_type_t fmt_type; + hak_fmtout_fmt_type_t fmt_type; fmt_str = fmtout->fmt_str; fmt_type = fmtout->fmt_type; - fmtout->fmt_type = HCL_FMTOUT_FMT_TYPE_BCH; + fmtout->fmt_type = HAK_FMTOUT_FMT_TYPE_BCH; fmtout->fmt_str = fmt; va_start (ap, fmt); - n = fmt_outv(hcl, fmtout, ap); + n = fmt_outv(hak, fmtout, ap); va_end (ap); fmtout->fmt_str = fmt_str; @@ -1502,21 +1502,21 @@ int hcl_bfmt_out (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_bch_t* fmt, ...) return n; } -int hcl_ufmt_out (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_uch_t* fmt, ...) +int hak_ufmt_out (hak_t* hak, hak_fmtout_t* fmtout, const hak_uch_t* fmt, ...) { va_list ap; int n; const void* fmt_str; - hcl_fmtout_fmt_type_t fmt_type; + hak_fmtout_fmt_type_t fmt_type; fmt_str = fmtout->fmt_str; fmt_type = fmtout->fmt_type; - fmtout->fmt_type = HCL_FMTOUT_FMT_TYPE_UCH; + fmtout->fmt_type = HAK_FMTOUT_FMT_TYPE_UCH; fmtout->fmt_str = fmt; va_start (ap, fmt); - n = fmt_outv(hcl, fmtout, ap); + n = fmt_outv(hak, fmtout, ap); va_end (ap); fmtout->fmt_str = fmt_str; @@ -1528,34 +1528,34 @@ int hcl_ufmt_out (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_uch_t* fmt, ...) * FORMATTED LOG OUTPUT * -------------------------------------------------------------------------- */ -static int log_oocs (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_ooch_t* ptr, hcl_oow_t len) +static int log_oocs (hak_t* hak, hak_fmtout_t* fmtout, const hak_ooch_t* ptr, hak_oow_t len) { - hcl_oow_t rem; + hak_oow_t rem; if (len <= 0) return 1; - if (hcl->log.len > 0 && hcl->log.last_mask != fmtout->mask) + if (hak->log.len > 0 && hak->log.last_mask != fmtout->mask) { /* the mask has changed. commit the buffered text */ /* TODO: HANDLE LINE ENDING CONVENTION BETTER... */ - if (hcl->log.ptr[hcl->log.len - 1] != '\n') + if (hak->log.ptr[hak->log.len - 1] != '\n') { /* no line ending - append a line terminator */ - hcl->log.ptr[hcl->log.len++] = '\n'; + hak->log.ptr[hak->log.len++] = '\n'; } - HCL_VMPRIM_LOG_WRITE (hcl, hcl->log.last_mask, hcl->log.ptr, hcl->log.len); - hcl->log.len = 0; + HAK_VMPRIM_LOG_WRITE (hak, hak->log.last_mask, hak->log.ptr, hak->log.len); + hak->log.len = 0; } redo: rem = 0; - if (len > hcl->log.capa - hcl->log.len) + if (len > hak->log.capa - hak->log.len) { - hcl_oow_t newcapa, max; - hcl_ooch_t* tmp; + hak_oow_t newcapa, max; + hak_ooch_t* tmp; - max = HCL_TYPE_MAX(hcl_oow_t) - hcl->log.len; + max = HAK_TYPE_MAX(hak_oow_t) - hak->log.len; if (len > max) { /* data too big. */ @@ -1563,51 +1563,51 @@ redo: len = max; } - newcapa = HCL_ALIGN_POW2(hcl->log.len + len, 512); /* TODO: adjust this capacity */ - if (newcapa > hcl->option.log_maxcapa) + newcapa = HAK_ALIGN_POW2(hak->log.len + len, 512); /* TODO: adjust this capacity */ + if (newcapa > hak->option.log_maxcapa) { /* [NOTE] - * it doesn't adjust newcapa to hcl->option.log_maxcapa. + * it doesn't adjust newcapa to hak->option.log_maxcapa. * nor does it cut the input to fit it into the adjusted capacity. - * if maxcapa set is not aligned to HCL_LOG_CAPA_ALIGN, + * if maxcapa set is not aligned to HAK_LOG_CAPA_ALIGN, * the largest buffer capacity may be suboptimal */ goto make_do; } /* +1 to handle line ending injection more easily */ - tmp = (hcl_ooch_t*)hcl_reallocmem(hcl, hcl->log.ptr, (newcapa + 1) * HCL_SIZEOF(*tmp)); - if (HCL_UNLIKELY(!tmp)) + tmp = (hak_ooch_t*)hak_reallocmem(hak, hak->log.ptr, (newcapa + 1) * HAK_SIZEOF(*tmp)); + if (HAK_UNLIKELY(!tmp)) { make_do: - if (hcl->log.len > 0) + if (hak->log.len > 0) { /* can't expand the buffer. just flush the existing contents */ /* TODO: HANDLE LINE ENDING CONVENTION BETTER... */ - if (hcl->log.ptr[hcl->log.len - 1] != '\n') + if (hak->log.ptr[hak->log.len - 1] != '\n') { /* no line ending - append a line terminator */ - hcl->log.ptr[hcl->log.len++] = '\n'; + hak->log.ptr[hak->log.len++] = '\n'; } - HCL_VMPRIM_LOG_WRITE (hcl, hcl->log.last_mask, hcl->log.ptr, hcl->log.len); - hcl->log.len = 0; + HAK_VMPRIM_LOG_WRITE (hak, hak->log.last_mask, hak->log.ptr, hak->log.len); + hak->log.len = 0; } - if (len > hcl->log.capa) + if (len > hak->log.capa) { - rem += len - hcl->log.capa; - len = hcl->log.capa; + rem += len - hak->log.capa; + len = hak->log.capa; } } else { - hcl->log.ptr = tmp; - hcl->log.capa = newcapa; + hak->log.ptr = tmp; + hak->log.capa = newcapa; } } - HCL_MEMCPY (&hcl->log.ptr[hcl->log.len], ptr, len * HCL_SIZEOF(*ptr)); - hcl->log.len += len; - hcl->log.last_mask = fmtout->mask; + HAK_MEMCPY (&hak->log.ptr[hak->log.len], ptr, len * HAK_SIZEOF(*ptr)); + hak->log.len += len; + hak->log.last_mask = fmtout->mask; if (rem > 0) { @@ -1619,21 +1619,21 @@ redo: return 1; /* success */ } -#if defined(HCL_OOCH_IS_BCH) +#if defined(HAK_OOCH_IS_BCH) #define log_bcs log_oocs -static int log_ucs (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_uch_t* ptr, hcl_oow_t len) +static int log_ucs (hak_t* hak, hak_fmtout_t* fmtout, const hak_uch_t* ptr, hak_oow_t len) { - hcl_bch_t bcs[128]; - hcl_oow_t bcslen, rem; + hak_bch_t bcs[128]; + hak_oow_t bcslen, rem; rem = len; while (rem > 0) { len = rem; - bcslen = HCL_COUNTOF(bcs); - hcl_conv_uchars_to_bchars_with_cmgr (ptr, &len, bcs, &bcslen, HCL_CMGR(hcl)); - log_bcs (hcl, fmtout, bcs, bcslen); + bcslen = HAK_COUNTOF(bcs); + hak_conv_uchars_to_bchars_with_cmgr (ptr, &len, bcs, &bcslen, HAK_CMGR(hak)); + log_bcs (hak, fmtout, bcs, bcslen); rem -= len; ptr += len; } @@ -1645,18 +1645,18 @@ static int log_ucs (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_uch_t* ptr, hcl_ #define log_ucs log_oocs -static int log_bcs (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_bch_t* ptr, hcl_oow_t len) +static int log_bcs (hak_t* hak, hak_fmtout_t* fmtout, const hak_bch_t* ptr, hak_oow_t len) { - hcl_uch_t ucs[64]; - hcl_oow_t ucslen, rem; + hak_uch_t ucs[64]; + hak_oow_t ucslen, rem; rem = len; while (rem > 0) { len = rem; - ucslen = HCL_COUNTOF(ucs); - hcl_conv_bchars_to_uchars_with_cmgr (ptr, &len, ucs, &ucslen, HCL_CMGR(hcl), 1); - log_ucs (hcl, fmtout, ucs, ucslen); + ucslen = HAK_COUNTOF(ucs); + hak_conv_bchars_to_uchars_with_cmgr (ptr, &len, ucs, &ucslen, HAK_CMGR(hak), 1); + log_ucs (hak, fmtout, ucs, ucslen); rem -= len; ptr += len; } @@ -1665,135 +1665,135 @@ static int log_bcs (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_bch_t* ptr, hcl_ #endif -hcl_ooi_t hcl_logbfmtv (hcl_t* hcl, hcl_bitmask_t mask, const hcl_bch_t* fmt, va_list ap) +hak_ooi_t hak_logbfmtv (hak_t* hak, hak_bitmask_t mask, const hak_bch_t* fmt, va_list ap) { int x; - hcl_fmtout_t fo; + hak_fmtout_t fo; - if (hcl->log.default_type_mask & HCL_LOG_ALL_TYPES) + if (hak->log.default_type_mask & HAK_LOG_ALL_TYPES) { /* if a type is given, it's not untyped any more. * mask off the UNTYPED bit */ - mask &= ~HCL_LOG_UNTYPED; + mask &= ~HAK_LOG_UNTYPED; /* if the default_type_mask has the UNTYPED bit on, * it'll get turned back on */ - mask |= (hcl->log.default_type_mask & HCL_LOG_ALL_TYPES); + mask |= (hak->log.default_type_mask & HAK_LOG_ALL_TYPES); } - else if (!(mask & HCL_LOG_ALL_TYPES)) + else if (!(mask & HAK_LOG_ALL_TYPES)) { /* no type is set in the given mask and no default type is set. * make it UNTYPED. */ - mask |= HCL_LOG_UNTYPED; + mask |= HAK_LOG_UNTYPED; } if (!fmt) { /* perform flushing only if fmt is NULL */ - if (hcl->log.len > 0) + if (hak->log.len > 0) { - HCL_VMPRIM_LOG_WRITE (hcl, hcl->log.last_mask, hcl->log.ptr, hcl->log.len); - hcl->log.len = 0; + HAK_VMPRIM_LOG_WRITE (hak, hak->log.last_mask, hak->log.ptr, hak->log.len); + hak->log.len = 0; } - HCL_VMPRIM_LOG_WRITE (hcl, hcl->log.last_mask, HCL_NULL, 0); /* forced flushing */ + HAK_VMPRIM_LOG_WRITE (hak, hak->log.last_mask, HAK_NULL, 0); /* forced flushing */ return 0; } - HCL_MEMSET (&fo, 0, HCL_SIZEOF(fo)); - fo.fmt_type = HCL_FMTOUT_FMT_TYPE_BCH; + HAK_MEMSET (&fo, 0, HAK_SIZEOF(fo)); + fo.fmt_type = HAK_FMTOUT_FMT_TYPE_BCH; fo.fmt_str = fmt; fo.mask = mask; - fo.mmgr = HCL_MMGR(hcl); + fo.mmgr = HAK_MMGR(hak); fo.putbchars = log_bcs; fo.putuchars = log_ucs; - fo.putobj = hcl_fmt_object; + fo.putobj = hak_fmt_object; - x = fmt_outv(hcl, &fo, ap); + x = fmt_outv(hak, &fo, ap); - if (hcl->log.len > 0 && hcl->log.ptr[hcl->log.len - 1] == '\n') + if (hak->log.len > 0 && hak->log.ptr[hak->log.len - 1] == '\n') { - HCL_VMPRIM_LOG_WRITE (hcl, hcl->log.last_mask, hcl->log.ptr, hcl->log.len); - hcl->log.len = 0; + HAK_VMPRIM_LOG_WRITE (hak, hak->log.last_mask, hak->log.ptr, hak->log.len); + hak->log.len = 0; } return (x <= -1)? -1: fo.count; } -hcl_ooi_t hcl_logbfmt (hcl_t* hcl, hcl_bitmask_t mask, const hcl_bch_t* fmt, ...) +hak_ooi_t hak_logbfmt (hak_t* hak, hak_bitmask_t mask, const hak_bch_t* fmt, ...) { - hcl_ooi_t x; + hak_ooi_t x; va_list ap; va_start (ap, fmt); - x = hcl_logbfmtv(hcl, mask, fmt, ap); + x = hak_logbfmtv(hak, mask, fmt, ap); va_end (ap); return x; } -hcl_ooi_t hcl_logufmtv (hcl_t* hcl, hcl_bitmask_t mask, const hcl_uch_t* fmt, va_list ap) +hak_ooi_t hak_logufmtv (hak_t* hak, hak_bitmask_t mask, const hak_uch_t* fmt, va_list ap) { int x; - hcl_fmtout_t fo; + hak_fmtout_t fo; - if (hcl->log.default_type_mask & HCL_LOG_ALL_TYPES) + if (hak->log.default_type_mask & HAK_LOG_ALL_TYPES) { /* if a type is given, it's not untyped any more. * mask off the UNTYPED bit */ - mask &= ~HCL_LOG_UNTYPED; + mask &= ~HAK_LOG_UNTYPED; /* if the default_type_mask has the UNTYPED bit on, * it'll get turned back on */ - mask |= (hcl->log.default_type_mask & HCL_LOG_ALL_TYPES); + mask |= (hak->log.default_type_mask & HAK_LOG_ALL_TYPES); } - else if (!(mask & HCL_LOG_ALL_TYPES)) + else if (!(mask & HAK_LOG_ALL_TYPES)) { /* no type is set in the given mask and no default type is set. * make it UNTYPED. */ - mask |= HCL_LOG_UNTYPED; + mask |= HAK_LOG_UNTYPED; } if (!fmt) { /* perform flushing only if fmt is NULL */ - if (hcl->log.len > 0) + if (hak->log.len > 0) { - HCL_VMPRIM_LOG_WRITE (hcl, hcl->log.last_mask, hcl->log.ptr, hcl->log.len); - hcl->log.len = 0; + HAK_VMPRIM_LOG_WRITE (hak, hak->log.last_mask, hak->log.ptr, hak->log.len); + hak->log.len = 0; } - HCL_VMPRIM_LOG_WRITE (hcl, hcl->log.last_mask, HCL_NULL, 0); /* forced flushing */ + HAK_VMPRIM_LOG_WRITE (hak, hak->log.last_mask, HAK_NULL, 0); /* forced flushing */ return 0; } - HCL_MEMSET (&fo, 0, HCL_SIZEOF(fo)); - fo.fmt_type = HCL_FMTOUT_FMT_TYPE_UCH; + HAK_MEMSET (&fo, 0, HAK_SIZEOF(fo)); + fo.fmt_type = HAK_FMTOUT_FMT_TYPE_UCH; fo.fmt_str = fmt; fo.mask = mask; - fo.mmgr = HCL_MMGR(hcl); + fo.mmgr = HAK_MMGR(hak); fo.putbchars = log_bcs; fo.putuchars = log_ucs; - fo.putobj = hcl_fmt_object; + fo.putobj = hak_fmt_object; - x = fmt_outv(hcl, &fo, ap); + x = fmt_outv(hak, &fo, ap); - if (hcl->log.len > 0 && hcl->log.ptr[hcl->log.len - 1] == '\n') + if (hak->log.len > 0 && hak->log.ptr[hak->log.len - 1] == '\n') { - HCL_VMPRIM_LOG_WRITE (hcl, hcl->log.last_mask, hcl->log.ptr, hcl->log.len); - hcl->log.len = 0; + HAK_VMPRIM_LOG_WRITE (hak, hak->log.last_mask, hak->log.ptr, hak->log.len); + hak->log.len = 0; } return (x <= -1)? -1: fo.count; } -hcl_ooi_t hcl_logufmt (hcl_t* hcl, hcl_bitmask_t mask, const hcl_uch_t* fmt, ...) +hak_ooi_t hak_logufmt (hak_t* hak, hak_bitmask_t mask, const hak_uch_t* fmt, ...) { - hcl_ooi_t x; + hak_ooi_t x; va_list ap; va_start (ap, fmt); - x = hcl_logufmtv(hcl, mask, fmt, ap); + x = hak_logufmtv(hak, mask, fmt, ap); va_end (ap); return x; @@ -1803,82 +1803,82 @@ hcl_ooi_t hcl_logufmt (hcl_t* hcl, hcl_bitmask_t mask, const hcl_uch_t* fmt, ... * PRINT SUPPORT * -------------------------------------------------------------------------- */ -static int print_bcs (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_bch_t* ptr, hcl_oow_t len) +static int print_bcs (hak_t* hak, hak_fmtout_t* fmtout, const hak_bch_t* ptr, hak_oow_t len) { - hcl_bch_t* optr; + hak_bch_t* optr; - if (HCL_UNLIKELY(!hcl->io.udo_wrtr)) + if (HAK_UNLIKELY(!hak->io.udo_wrtr)) { - hcl_seterrbmsg (hcl, HCL_EINVAL, "no user-defined output handler"); + hak_seterrbmsg (hak, HAK_EINVAL, "no user-defined output handler"); return -1; } - optr = (hcl_bch_t*)ptr; + optr = (hak_bch_t*)ptr; while (len > 0) { - hcl->io.udo_arg.ptr = optr; - hcl->io.udo_arg.len = len; + hak->io.udo_arg.ptr = optr; + hak->io.udo_arg.len = len; - if (hcl->io.udo_wrtr(hcl, HCL_IO_WRITE_BYTES, &hcl->io.udo_arg) <= -1) return -1; - if (hcl->io.udo_arg.xlen <= 0) return 0; /* end of stream. but not failure */ + if (hak->io.udo_wrtr(hak, HAK_IO_WRITE_BYTES, &hak->io.udo_arg) <= -1) return -1; + if (hak->io.udo_arg.xlen <= 0) return 0; /* end of stream. but not failure */ - HCL_ASSERT (hcl, hcl->io.udo_arg.xlen <= len); - optr += hcl->io.udo_arg.xlen; - len -= hcl->io.udo_arg.xlen; + HAK_ASSERT (hak, hak->io.udo_arg.xlen <= len); + optr += hak->io.udo_arg.xlen; + len -= hak->io.udo_arg.xlen; } return 1; /* success */ } -static int print_ucs (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_uch_t* ptr, hcl_oow_t len) +static int print_ucs (hak_t* hak, hak_fmtout_t* fmtout, const hak_uch_t* ptr, hak_oow_t len) { -#if defined(HCL_OOCH_IS_UCH) - hcl_uch_t* optr; +#if defined(HAK_OOCH_IS_UCH) + hak_uch_t* optr; #else - hcl_oow_t bcslen, ucslen; - hcl_ooch_t bcsbuf[64], * bcsptr; + hak_oow_t bcslen, ucslen; + hak_ooch_t bcsbuf[64], * bcsptr; #endif - if (HCL_UNLIKELY(!hcl->io.udo_wrtr)) + if (HAK_UNLIKELY(!hak->io.udo_wrtr)) { - hcl_seterrbmsg (hcl, HCL_EINVAL, "no user-defined output handler"); + hak_seterrbmsg (hak, HAK_EINVAL, "no user-defined output handler"); return -1; } -#if defined(HCL_OOCH_IS_UCH) - optr = (hcl_uch_t*)ptr; +#if defined(HAK_OOCH_IS_UCH) + optr = (hak_uch_t*)ptr; while (len > 0) { - hcl->io.udo_arg.ptr = optr; - hcl->io.udo_arg.len = len; + hak->io.udo_arg.ptr = optr; + hak->io.udo_arg.len = len; - if (hcl->io.udo_wrtr(hcl, HCL_IO_WRITE, &hcl->io.udo_arg) <= -1) return -1; - if (hcl->io.udo_arg.xlen <= 0) return 0; /* end of stream. but not failure */ + if (hak->io.udo_wrtr(hak, HAK_IO_WRITE, &hak->io.udo_arg) <= -1) return -1; + if (hak->io.udo_arg.xlen <= 0) return 0; /* end of stream. but not failure */ - HCL_ASSERT (hcl, hcl->io.udo_arg.xlen <= len); - optr += hcl->io.udo_arg.xlen; - len -= hcl->io.udo_arg.xlen; + HAK_ASSERT (hak, hak->io.udo_arg.xlen <= len); + optr += hak->io.udo_arg.xlen; + len -= hak->io.udo_arg.xlen; } #else while (len > 0) { ucslen = len; - bcslen = HCL_COUNTOF(bcsbuf); - hcl_conv_uchars_to_bchars_with_cmgr(ptr, &ucslen, bcsbuf, &bcslen, HCL_CMGR(hcl)); + bcslen = HAK_COUNTOF(bcsbuf); + hak_conv_uchars_to_bchars_with_cmgr(ptr, &ucslen, bcsbuf, &bcslen, HAK_CMGR(hak)); bcsptr = bcsbuf; while (bcslen > 0) { - hcl->io.udo_arg.ptr = bcsptr; - hcl->io.udo_arg.len = bcslen; + hak->io.udo_arg.ptr = bcsptr; + hak->io.udo_arg.len = bcslen; - if (hcl->io.udo_wrtr(hcl, HCL_IO_WRITE, &hcl->io.udo_arg) <= -1) return -1; - if (hcl->io.udo_arg.xlen <= 0) return 0; /* end of stream. but not failure */ + if (hak->io.udo_wrtr(hak, HAK_IO_WRITE, &hak->io.udo_arg) <= -1) return -1; + if (hak->io.udo_arg.xlen <= 0) return 0; /* end of stream. but not failure */ - HCL_ASSERT (hcl, hcl->io.udo_arg.xlen <= len); - bcsptr += hcl->io.udo_arg.xlen; - bcslen -= hcl->io.udo_arg.xlen; + HAK_ASSERT (hak, hak->io.udo_arg.xlen <= len); + bcsptr += hak->io.udo_arg.xlen; + bcslen -= hak->io.udo_arg.xlen; } ptr += ucslen; @@ -1890,64 +1890,64 @@ static int print_ucs (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_uch_t* ptr, hc } -hcl_ooi_t hcl_prbfmtv (hcl_t* hcl, const hcl_bch_t* fmt, va_list ap) +hak_ooi_t hak_prbfmtv (hak_t* hak, const hak_bch_t* fmt, va_list ap) { int x; - hcl_fmtout_t fo; + hak_fmtout_t fo; - HCL_MEMSET (&fo, 0, HCL_SIZEOF(fo)); - fo.fmt_type = HCL_FMTOUT_FMT_TYPE_BCH; + HAK_MEMSET (&fo, 0, HAK_SIZEOF(fo)); + fo.fmt_type = HAK_FMTOUT_FMT_TYPE_BCH; fo.fmt_str = fmt; fo.mask = 0; - fo.mmgr = HCL_MMGR(hcl); + fo.mmgr = HAK_MMGR(hak); fo.putbchars = print_bcs; fo.putuchars = print_ucs; - fo.putobj = hcl_fmt_object; + fo.putobj = hak_fmt_object; - x = fmt_outv(hcl, &fo, ap); + x = fmt_outv(hak, &fo, ap); return (x <= -1)? -1: fo.count; } -hcl_ooi_t hcl_prbfmt (hcl_t* hcl, const hcl_bch_t* fmt, ...) +hak_ooi_t hak_prbfmt (hak_t* hak, const hak_bch_t* fmt, ...) { - hcl_ooi_t x; + hak_ooi_t x; va_list ap; va_start (ap, fmt); - x = hcl_prbfmtv(hcl, fmt, ap); + x = hak_prbfmtv(hak, fmt, ap); va_end (ap); return x; } -hcl_ooi_t hcl_prufmtv (hcl_t* hcl, const hcl_uch_t* fmt, va_list ap) +hak_ooi_t hak_prufmtv (hak_t* hak, const hak_uch_t* fmt, va_list ap) { int x; - hcl_fmtout_t fo; + hak_fmtout_t fo; - HCL_MEMSET (&fo, 0, HCL_SIZEOF(fo)); - fo.fmt_type = HCL_FMTOUT_FMT_TYPE_UCH; + HAK_MEMSET (&fo, 0, HAK_SIZEOF(fo)); + fo.fmt_type = HAK_FMTOUT_FMT_TYPE_UCH; fo.fmt_str = fmt; fo.mask = 0; - fo.mmgr = HCL_MMGR(hcl); + fo.mmgr = HAK_MMGR(hak); fo.putbchars = print_bcs; fo.putuchars = print_ucs; - fo.putobj = hcl_fmt_object; + fo.putobj = hak_fmt_object; - x = fmt_outv(hcl, &fo, ap); + x = fmt_outv(hak, &fo, ap); return (x <= -1)? -1: fo.count; } -hcl_ooi_t hcl_prufmt (hcl_t* hcl, const hcl_uch_t* fmt, ...) +hak_ooi_t hak_prufmt (hak_t* hak, const hak_uch_t* fmt, ...) { - hcl_ooi_t x; + hak_ooi_t x; va_list ap; va_start (ap, fmt); - x = hcl_prufmtv(hcl, fmt, ap); + x = hak_prufmtv(hak, fmt, ap); va_end (ap); return x; @@ -1957,144 +1957,144 @@ hcl_ooi_t hcl_prufmt (hcl_t* hcl, const hcl_uch_t* fmt, ...) * SUPPORT FOR FORMATTED OUTPUT TO BE USED BY BUILTIN PRIMITIVE FUNCTIONS * -------------------------------------------------------------------------- */ -static int sprint_bcs (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_bch_t* ptr, hcl_oow_t len) +static int sprint_bcs (hak_t* hak, hak_fmtout_t* fmtout, const hak_bch_t* ptr, hak_oow_t len) { - hcl_oow_t unused, oolen, blen; + hak_oow_t unused, oolen, blen; - unused = hcl->sprintf.xbuf.capa - hcl->sprintf.xbuf.len; + unused = hak->sprintf.xbuf.capa - hak->sprintf.xbuf.len; -#if defined(HCL_OOCH_IS_UCH) +#if defined(HAK_OOCH_IS_UCH) blen = len; - hcl_conv_bchars_to_uchars_with_cmgr (ptr, &blen, HCL_NULL, &oolen, HCL_CMGR(hcl), 1); + hak_conv_bchars_to_uchars_with_cmgr (ptr, &blen, HAK_NULL, &oolen, HAK_CMGR(hak), 1); #else oolen = len; #endif if (oolen > unused) { - hcl_ooch_t* tmp; - hcl_oow_t newcapa; + hak_ooch_t* tmp; + hak_oow_t newcapa; - newcapa = hcl->sprintf.xbuf.len + oolen + 1; - newcapa = HCL_ALIGN_POW2(newcapa, 256); + newcapa = hak->sprintf.xbuf.len + oolen + 1; + newcapa = HAK_ALIGN_POW2(newcapa, 256); - tmp = (hcl_ooch_t*)hcl_reallocmem(hcl, hcl->sprintf.xbuf.ptr, newcapa * HCL_SIZEOF(*tmp)); + tmp = (hak_ooch_t*)hak_reallocmem(hak, hak->sprintf.xbuf.ptr, newcapa * HAK_SIZEOF(*tmp)); if (!tmp) return -1; - hcl->sprintf.xbuf.ptr = tmp; - hcl->sprintf.xbuf.capa = newcapa; + hak->sprintf.xbuf.ptr = tmp; + hak->sprintf.xbuf.capa = newcapa; } -#if defined(HCL_OOCH_IS_UCH) - hcl_conv_bchars_to_uchars_with_cmgr (ptr, &len, &hcl->sprintf.xbuf.ptr[hcl->sprintf.xbuf.len], &oolen, HCL_CMGR(hcl), 1); +#if defined(HAK_OOCH_IS_UCH) + hak_conv_bchars_to_uchars_with_cmgr (ptr, &len, &hak->sprintf.xbuf.ptr[hak->sprintf.xbuf.len], &oolen, HAK_CMGR(hak), 1); #else - HCL_MEMCPY (&hcl->sprintf.xbuf.ptr[hcl->sprintf.xbuf.len], ptr, len * HCL_SIZEOF(*ptr)); + HAK_MEMCPY (&hak->sprintf.xbuf.ptr[hak->sprintf.xbuf.len], ptr, len * HAK_SIZEOF(*ptr)); #endif - hcl->sprintf.xbuf.len += oolen; + hak->sprintf.xbuf.len += oolen; return 1; /* success */ } -static int sprint_ucs (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_uch_t* ptr, hcl_oow_t len) +static int sprint_ucs (hak_t* hak, hak_fmtout_t* fmtout, const hak_uch_t* ptr, hak_oow_t len) { - hcl_oow_t unused, oolen, ulen; + hak_oow_t unused, oolen, ulen; - unused = hcl->sprintf.xbuf.capa - hcl->sprintf.xbuf.len; + unused = hak->sprintf.xbuf.capa - hak->sprintf.xbuf.len; -#if defined(HCL_OOCH_IS_UCH) +#if defined(HAK_OOCH_IS_UCH) oolen = len; #else ulen = len; - hcl_conv_uchars_to_bchars_with_cmgr (ptr, &ulen, HCL_NULL, &oolen, HCL_CMGR(hcl)); + hak_conv_uchars_to_bchars_with_cmgr (ptr, &ulen, HAK_NULL, &oolen, HAK_CMGR(hak)); #endif if (oolen > unused) { - hcl_ooch_t* tmp; - hcl_oow_t newcapa; + hak_ooch_t* tmp; + hak_oow_t newcapa; - newcapa = hcl->sprintf.xbuf.len + oolen + 1; - newcapa = HCL_ALIGN_POW2(newcapa, 256); + newcapa = hak->sprintf.xbuf.len + oolen + 1; + newcapa = HAK_ALIGN_POW2(newcapa, 256); - tmp = (hcl_ooch_t*)hcl_reallocmem(hcl, hcl->sprintf.xbuf.ptr, newcapa * HCL_SIZEOF(*tmp)); + tmp = (hak_ooch_t*)hak_reallocmem(hak, hak->sprintf.xbuf.ptr, newcapa * HAK_SIZEOF(*tmp)); if (!tmp) return -1; - hcl->sprintf.xbuf.ptr = tmp; - hcl->sprintf.xbuf.capa = newcapa; + hak->sprintf.xbuf.ptr = tmp; + hak->sprintf.xbuf.capa = newcapa; } -#if defined(HCL_OOCH_IS_UCH) - HCL_MEMCPY (&hcl->sprintf.xbuf.ptr[hcl->sprintf.xbuf.len], ptr, len * HCL_SIZEOF(*ptr)); +#if defined(HAK_OOCH_IS_UCH) + HAK_MEMCPY (&hak->sprintf.xbuf.ptr[hak->sprintf.xbuf.len], ptr, len * HAK_SIZEOF(*ptr)); #else - hcl_conv_uchars_to_bchars_with_cmgr (ptr, &len, &hcl->sprintf.xbuf.ptr[hcl->sprintf.xbuf.len], &oolen, HCL_CMGR(hcl)); + hak_conv_uchars_to_bchars_with_cmgr (ptr, &len, &hak->sprintf.xbuf.ptr[hak->sprintf.xbuf.len], &oolen, HAK_CMGR(hak)); #endif - hcl->sprintf.xbuf.len += oolen; + hak->sprintf.xbuf.len += oolen; return 1; /* success */ } -#define GET_NEXT_ARG_TO(hcl,nargs,arg_state,arg) do { \ +#define GET_NEXT_ARG_TO(hak,nargs,arg_state,arg) do { \ if ((arg_state)->idx >= nargs) { (arg_state)->stop = 1; goto invalid_format; } \ - arg = HCL_STACK_GETARG(hcl, nargs, (arg_state)->idx); \ + arg = HAK_STACK_GETARG(hak, nargs, (arg_state)->idx); \ (arg_state)->idx++; \ } while(0) -#define GET_NEXT_CHAR_TO(hcl,fmt,fmtend,ch) do { \ - if (fmt >= fmtend) ch = HCL_OOCI_EOF; \ +#define GET_NEXT_CHAR_TO(hak,fmt,fmtend,ch) do { \ + if (fmt >= fmtend) ch = HAK_OOCI_EOF; \ else { ch = *(fmt); (fmt)++; }\ } while(0) -static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_ooi_t nargs, int rcv_is_fmtstr) +static HAK_INLINE int format_stack_args (hak_t* hak, hak_fmtout_t* fmtout, hak_ooi_t nargs, int rcv_is_fmtstr) { - const hcl_ooch_t* fmtptr, * fmtend; - const hcl_ooch_t* checkpoint, * percent; + const hak_ooch_t* fmtptr, * fmtend; + const hak_ooch_t* checkpoint, * percent; int n, radix, neg, sign, radix_flags; - hcl_ooi_t extra, width, precision; - hcl_ooch_t padc, ooch; - hcl_ooci_t ch; + hak_ooi_t extra, width, precision; + hak_ooch_t padc, ooch; + hak_ooci_t ch; int flagc, lm_flag; struct { - hcl_ooi_t idx; + hak_ooi_t idx; int stop; } arg_state; - hcl_oop_t arg; + hak_oop_t arg; - HCL_ASSERT (hcl, fmtout->putobj != HCL_NULL); + HAK_ASSERT (hak, fmtout->putobj != HAK_NULL); fmtout->count = 0; if (rcv_is_fmtstr) { - arg = HCL_STACK_GETRCV(hcl, nargs); + arg = HAK_STACK_GETRCV(hak, nargs); arg_state.idx = 0; } else { - arg = HCL_STACK_GETARG(hcl, nargs, 0); + arg = HAK_STACK_GETARG(hak, nargs, 0); arg_state.idx = 1; } - if (!HCL_OOP_IS_POINTER(arg) || HCL_OBJ_GET_FLAGS_TYPE(arg) != HCL_OBJ_TYPE_CHAR) + if (!HAK_OOP_IS_POINTER(arg) || HAK_OBJ_GET_FLAGS_TYPE(arg) != HAK_OBJ_TYPE_CHAR) { - hcl_ooi_t i; + hak_ooi_t i; /* if the first argument is not a valid formatting string, * print all arguments as objects */ - if (fmtout->putobj(hcl, fmtout, arg) <= -1) goto oops; + if (fmtout->putobj(hak, fmtout, arg) <= -1) goto oops; for (i = arg_state.idx; i < nargs; i++) { - arg = HCL_STACK_GETARG(hcl, nargs, i); - if (fmtout->putobj(hcl, fmtout, arg) <= -1) goto oops; + arg = HAK_STACK_GETARG(hak, nargs, i); + if (fmtout->putobj(hak, fmtout, arg) <= -1) goto oops; } return 0; } arg_state.stop = 0; - fmtptr = HCL_OBJ_GET_CHAR_SLOT(arg); - fmtend = fmtptr + HCL_OBJ_GET_SIZE(arg); + fmtptr = HAK_OBJ_GET_CHAR_SLOT(arg); + fmtend = fmtptr + HAK_OBJ_GET_SIZE(arg); while (1) { @@ -2102,18 +2102,18 @@ static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o while (1) { - GET_NEXT_CHAR_TO (hcl, fmtptr, fmtend, ch); + GET_NEXT_CHAR_TO (hak, fmtptr, fmtend, ch); if (ch == '%' && !arg_state.stop) break; - if (ch == HCL_OOCI_EOF) + if (ch == HAK_OOCI_EOF) { /* fmt is not advanced when it is length-bounded. * so not fmt - checkpoint - 1 */ - PUT_OOCS (hcl, fmtout, checkpoint, fmtptr - checkpoint); + PUT_OOCS (hak, fmtout, checkpoint, fmtptr - checkpoint); goto done; } } - PUT_OOCS (hcl, fmtout, checkpoint, fmtptr - checkpoint - 1); + PUT_OOCS (hak, fmtout, checkpoint, fmtptr - checkpoint - 1); percent = fmtptr - 1; @@ -2122,10 +2122,10 @@ static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o neg = 0; sign = 0; lm_flag = 0; flagc = 0; - radix_flags = HCL_INTTOSTR_NONEWOBJ; + radix_flags = HAK_INTTOSTR_NONEWOBJ; reswitch: - GET_NEXT_CHAR_TO (hcl, fmtptr, fmtend, ch); + GET_NEXT_CHAR_TO (hak, fmtptr, fmtend, ch); switch (ch) { case '%': /* %% */ @@ -2177,8 +2177,8 @@ static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o if (flagc & (FLAGC_STAR2 | FLAGC_PRECISION)) goto invalid_format; flagc |= FLAGC_STAR2; - GET_NEXT_ARG_TO (hcl, nargs, &arg_state, arg); - if (hcl_inttoooi(hcl, arg, &precision) <= -1) goto invalid_format; + GET_NEXT_ARG_TO (hak, nargs, &arg_state, arg); + if (hak_inttoooi(hak, arg, &precision) <= -1) goto invalid_format; if (precision < 0) { /* if precision is less than 0, @@ -2192,8 +2192,8 @@ static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o if (flagc & (FLAGC_STAR1 | FLAGC_WIDTH)) goto invalid_format; flagc |= FLAGC_STAR1; - GET_NEXT_ARG_TO (hcl, nargs, &arg_state, arg); - if (hcl_inttoooi(hcl, arg, &width) <= -1) goto invalid_format; + GET_NEXT_ARG_TO (hak, nargs, &arg_state, arg); + if (hak_inttoooi(hak, arg, &width) <= -1) goto invalid_format; if (width < 0) { flagc |= FLAGC_LEFTADJ; @@ -2256,7 +2256,7 @@ static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o radix = 10; goto print_integer; case 'x': - radix_flags |= HCL_INTTOSTR_LOWERCASE; + radix_flags |= HAK_INTTOSTR_LOWERCASE; case 'X': radix = 16; goto print_integer; @@ -2267,35 +2267,35 @@ static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o case 'f': { - const hcl_ooch_t* nsptr; - hcl_oow_t nslen; - hcl_oow_t scale = 0; + const hak_ooch_t* nsptr; + hak_oow_t nslen; + hak_oow_t scale = 0; - GET_NEXT_ARG_TO (hcl, nargs, &arg_state, arg); - if (HCL_OOP_IS_CHAR(arg)) + GET_NEXT_ARG_TO (hak, nargs, &arg_state, arg); + if (HAK_OOP_IS_CHAR(arg)) { - arg = HCL_SMOOI_TO_OOP(HCL_OOP_TO_CHAR(arg)); + arg = HAK_SMOOI_TO_OOP(HAK_OOP_TO_CHAR(arg)); } - else if (HCL_IS_FPDEC(hcl, arg)) + else if (HAK_IS_FPDEC(hak, arg)) { - hcl_oop_fpdec_t fa = (hcl_oop_fpdec_t)arg; - scale = HCL_OOP_TO_SMOOI(fa->scale); + hak_oop_fpdec_t fa = (hak_oop_fpdec_t)arg; + scale = HAK_OOP_TO_SMOOI(fa->scale); arg = fa->value; } - if (!hcl_inttostr(hcl, arg, 10 | HCL_INTTOSTR_NONEWOBJ)) + if (!hak_inttostr(hak, arg, 10 | HAK_INTTOSTR_NONEWOBJ)) { - HCL_LOG2 (hcl, HCL_LOG_WARN | HCL_LOG_UNTYPED, "unable to convert %O for float output\n", arg, hcl_geterrmsg(hcl)); + HAK_LOG2 (hak, HAK_LOG_WARN | HAK_LOG_UNTYPED, "unable to convert %O for float output\n", arg, hak_geterrmsg(hak)); goto invalid_format; } - nsptr = hcl->inttostr.xbuf.ptr; - nslen = hcl->inttostr.xbuf.len; - HCL_ASSERT (hcl, nslen > 0); + nsptr = hak->inttostr.xbuf.ptr; + nslen = hak->inttostr.xbuf.len; + HAK_ASSERT (hak, nslen > 0); if (nsptr[0] == '-') { - HCL_ASSERT (hcl, (HCL_OOP_IS_SMOOI(arg) && HCL_OOP_TO_SMOOI(arg) < 0) || HCL_IS_NBIGINT(hcl,arg)); + HAK_ASSERT (hak, (HAK_OOP_IS_SMOOI(arg) && HAK_OOP_TO_SMOOI(arg) < 0) || HAK_IS_NBIGINT(hak,arg)); nsptr++; nslen--; neg = 1; @@ -2309,7 +2309,7 @@ static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o if ((flagc & FLAGC_DOT) && precision < scale) { - hcl_oow_t diff = scale - precision; + hak_oow_t diff = scale - precision; scale = precision; nslen = (nslen < diff)? 0: (nslen - diff); } @@ -2343,58 +2343,58 @@ static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o if (!(flagc & FLAGC_LEFTADJ) && !(flagc & FLAGC_ZEROPAD) && width > extra) { width -= extra; - PUT_OOCH (hcl, fmtout, padc, width); + PUT_OOCH (hak, fmtout, padc, width); width = 0; } - if (neg) PUT_OOCH (hcl, fmtout, '-', 1); - else if (flagc & FLAGC_SIGN) PUT_OOCH (hcl, fmtout, '+', 1); - else if (flagc & FLAGC_SPACE) PUT_OOCH (hcl, fmtout, ' ', 1); + if (neg) PUT_OOCH (hak, fmtout, '-', 1); + else if (flagc & FLAGC_SIGN) PUT_OOCH (hak, fmtout, '+', 1); + else if (flagc & FLAGC_SPACE) PUT_OOCH (hak, fmtout, ' ', 1); if (!(flagc & FLAGC_LEFTADJ) && width > extra) { width -= extra; - PUT_OOCH (hcl, fmtout, padc, width); + PUT_OOCH (hak, fmtout, padc, width); } if (nslen < scale + 1) { - PUT_OOCH (hcl, fmtout, '0', 1); + PUT_OOCH (hak, fmtout, '0', 1); if (precision > 0) { - PUT_OOCH (hcl, fmtout, '.', 1); - PUT_OOCH (hcl, fmtout, '0', scale - nslen); - PUT_OOCS (hcl, fmtout, nsptr, nslen); + PUT_OOCH (hak, fmtout, '.', 1); + PUT_OOCH (hak, fmtout, '0', scale - nslen); + PUT_OOCS (hak, fmtout, nsptr, nslen); } } else { - if (nslen > 0) PUT_OOCS (hcl, fmtout, nsptr, nslen - scale); + if (nslen > 0) PUT_OOCS (hak, fmtout, nsptr, nslen - scale); if (precision > 0) { - PUT_OOCH (hcl, fmtout, '.', 1); - if (nslen > 0) PUT_OOCS (hcl, fmtout, &nsptr[nslen - scale], scale); + PUT_OOCH (hak, fmtout, '.', 1); + if (nslen > 0) PUT_OOCS (hak, fmtout, &nsptr[nslen - scale], scale); } } if (precision > scale) { /* trailing zeros in the fractional part */ - PUT_OOCH (hcl, fmtout, '0', precision - scale); + PUT_OOCH (hak, fmtout, '0', precision - scale); } if ((flagc & FLAGC_LEFTADJ) && width > extra) { width -= extra; - PUT_OOCH (hcl, fmtout, padc, width); + PUT_OOCH (hak, fmtout, padc, width); } break; } case 'c': case 'C': - GET_NEXT_ARG_TO (hcl, nargs, &arg_state, arg); - if (HCL_OOP_IS_SMOOI(arg)) arg = HCL_CHAR_TO_OOP(HCL_OOP_TO_SMOOI(arg)); - if (!HCL_OOP_IS_CHAR(arg)) goto invalid_format; - ooch = HCL_OOP_TO_CHAR(arg); + GET_NEXT_ARG_TO (hak, nargs, &arg_state, arg); + if (HAK_OOP_IS_SMOOI(arg)) arg = HAK_CHAR_TO_OOP(HAK_OOP_TO_SMOOI(arg)); + if (!HAK_OOP_IS_CHAR(arg)) goto invalid_format; + ooch = HAK_OOP_TO_CHAR(arg); print_char: /* zeropad must not take effect for 'c' */ @@ -2402,9 +2402,9 @@ static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o /* precision 0 doesn't kill the letter */ width--; - if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hcl, fmtout, padc, width); - PUT_OOCH (hcl, fmtout, ooch, 1); - if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hcl, fmtout, padc, width); + if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hak, fmtout, padc, width); + PUT_OOCH (hak, fmtout, ooch, 1); + if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hak, fmtout, padc, width); break; case 's': @@ -2413,18 +2413,18 @@ static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o /* zeropad must not take effect for 'S' */ if (flagc & FLAGC_ZEROPAD) padc = ' '; - GET_NEXT_ARG_TO (hcl, nargs, &arg_state, arg); - if (!HCL_OOP_IS_POINTER(arg)) goto invalid_format; - switch (HCL_OBJ_GET_FLAGS_TYPE(arg)) + GET_NEXT_ARG_TO (hak, nargs, &arg_state, arg); + if (!HAK_OOP_IS_POINTER(arg)) goto invalid_format; + switch (HAK_OBJ_GET_FLAGS_TYPE(arg)) { - case HCL_OBJ_TYPE_CHAR: + case HAK_OBJ_TYPE_CHAR: { /* string, symbol */ - const hcl_ooch_t* oosp; - hcl_oow_t oosl; + const hak_ooch_t* oosp; + hak_oow_t oosl; - oosp = HCL_OBJ_GET_CHAR_SLOT(arg); - oosl = HCL_OBJ_GET_SIZE(arg); + oosp = HAK_OBJ_GET_CHAR_SLOT(arg); + oosl = HAK_OBJ_GET_SIZE(arg); if (flagc & FLAGC_DOT) { @@ -2432,20 +2432,20 @@ static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o } width -= oosl; - if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hcl, fmtout, padc, width); - PUT_OOCS (hcl, fmtout, oosp, oosl); - if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hcl, fmtout, padc, width); + if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hak, fmtout, padc, width); + PUT_OOCS (hak, fmtout, oosp, oosl); + if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hak, fmtout, padc, width); break; } - case HCL_OBJ_TYPE_BYTE: + case HAK_OBJ_TYPE_BYTE: { /* byte array */ - const hcl_uint8_t* bsp; - hcl_oow_t bsl; + const hak_uint8_t* bsp; + hak_oow_t bsl; - bsp = HCL_OBJ_GET_BYTE_SLOT(arg); - bsl = HCL_OBJ_GET_SIZE(arg); + bsp = HAK_OBJ_GET_BYTE_SLOT(arg); + bsl = HAK_OBJ_GET_SIZE(arg); if (flagc & FLAGC_DOT) { @@ -2453,9 +2453,9 @@ static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o } width -= bsl; - if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hcl, fmtout, padc, width); - PUT_BCS (hcl, fmtout, (const hcl_bch_t*)bsp, bsl); - if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hcl, fmtout, padc, width); + if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hak, fmtout, padc, width); + PUT_BCS (hak, fmtout, (const hak_bch_t*)bsp, bsl); + if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hak, fmtout, padc, width); break; } @@ -2466,31 +2466,31 @@ static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o break; } - #if !defined(HCL_OOCH_IS_UCH) + #if !defined(HAK_OOCH_IS_UCH) case 'w': /* the string object is not in the unicode encoding */ case 'W': /* treat w/W like k/K */ #endif case 'k': case 'K': { - const hcl_uint8_t* bsp; - hcl_oow_t bsl, k_hex_width; + const hak_uint8_t* bsp; + hak_oow_t bsl, k_hex_width; - GET_NEXT_ARG_TO (hcl, nargs, &arg_state, arg); - if (!HCL_OOP_IS_POINTER(arg)) goto invalid_format; + GET_NEXT_ARG_TO (hak, nargs, &arg_state, arg); + if (!HAK_OOP_IS_POINTER(arg)) goto invalid_format; if (flagc & FLAGC_ZEROPAD) padc = ' '; - switch (HCL_OBJ_GET_FLAGS_TYPE(arg)) + switch (HAK_OBJ_GET_FLAGS_TYPE(arg)) { - case HCL_OBJ_TYPE_CHAR: - bsp = (const hcl_uint8_t*)HCL_OBJ_GET_CHAR_SLOT(arg); - bsl = HCL_OBJ_GET_SIZE(arg) * HCL_SIZEOF_OOCH_T; + case HAK_OBJ_TYPE_CHAR: + bsp = (const hak_uint8_t*)HAK_OBJ_GET_CHAR_SLOT(arg); + bsl = HAK_OBJ_GET_SIZE(arg) * HAK_SIZEOF_OOCH_T; goto format_byte_in_k; - case HCL_OBJ_TYPE_BYTE: - bsp = HCL_OBJ_GET_BYTE_SLOT(arg); - bsl = HCL_OBJ_GET_SIZE(arg); + case HAK_OBJ_TYPE_BYTE: + bsp = HAK_OBJ_GET_BYTE_SLOT(arg); + bsl = HAK_OBJ_GET_SIZE(arg); format_byte_in_k: k_hex_width = (lm_flag & (LF_H | LF_L))? 4: 2; @@ -2503,7 +2503,7 @@ static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o if (lm_flag & LF_H) { - hcl_oow_t i; + hak_oow_t i; for (i = 0; i < n; i++) width -= BYTE_PRINTABLE(bsp[i])? 1: k_hex_width; } else @@ -2511,31 +2511,31 @@ static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o width -= (n * k_hex_width); } - if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hcl, fmtout, padc, width); + if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hak, fmtout, padc, width); while (n--) { if ((lm_flag & LF_H) && BYTE_PRINTABLE(*bsp)) { - PUT_BCH (hcl, fmtout, *bsp, 1); + PUT_BCH (hak, fmtout, *bsp, 1); } else { - hcl_bch_t xbuf[3]; + hak_bch_t xbuf[3]; int flagged_radix = 16; - #if defined(HCL_OOCH_IS_UCH) - if (ch == 'k') flagged_radix |= HCL_BYTE_TO_BCSTR_LOWERCASE; + #if defined(HAK_OOCH_IS_UCH) + if (ch == 'k') flagged_radix |= HAK_BYTE_TO_BCSTR_LOWERCASE; #else - if (ch == 'k' || ch == 'w') flagged_radix |= HCL_BYTE_TO_BCSTR_LOWERCASE; + if (ch == 'k' || ch == 'w') flagged_radix |= HAK_BYTE_TO_BCSTR_LOWERCASE; #endif - hcl_byte_to_bcstr (*bsp, xbuf, HCL_COUNTOF(xbuf), flagged_radix, '0'); - if (lm_flag & (LF_H | LF_L)) PUT_BCS (hcl, fmtout, "\\x", 2); - PUT_BCS (hcl, fmtout, xbuf, 2); + hak_byte_to_bcstr (*bsp, xbuf, HAK_COUNTOF(xbuf), flagged_radix, '0'); + if (lm_flag & (LF_H | LF_L)) PUT_BCS (hak, fmtout, "\\x", 2); + PUT_BCS (hak, fmtout, xbuf, 2); } bsp++; } - if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hcl, fmtout, padc, width); + if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hak, fmtout, padc, width); break; default: @@ -2544,7 +2544,7 @@ static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o break; } - #if defined(HCL_OOCH_IS_UCH) + #if defined(HAK_OOCH_IS_UCH) case 'w': case 'W': { @@ -2554,16 +2554,16 @@ static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o * w -> \uXXXX, \UXXXXXXXX * lw -> all in \UXXXXXXXX */ - const hcl_uch_t* usp; - hcl_oow_t usl, i, uwid; + const hak_uch_t* usp; + hak_oow_t usl, i, uwid; - GET_NEXT_ARG_TO (hcl, nargs, &arg_state, arg); - if (!HCL_OOP_IS_POINTER(arg) || HCL_OBJ_GET_FLAGS_TYPE(arg) != HCL_OBJ_TYPE_CHAR) goto invalid_format; + GET_NEXT_ARG_TO (hak, nargs, &arg_state, arg); + if (!HAK_OOP_IS_POINTER(arg) || HAK_OBJ_GET_FLAGS_TYPE(arg) != HAK_OBJ_TYPE_CHAR) goto invalid_format; if (flagc & FLAGC_ZEROPAD) padc = ' '; - usp = HCL_OBJ_GET_CHAR_SLOT(arg); - usl = HCL_OBJ_GET_SIZE(arg); + usp = HAK_OBJ_GET_CHAR_SLOT(arg); + usl = HAK_OBJ_GET_SIZE(arg); if (flagc & FLAGC_DOT) { @@ -2579,110 +2579,110 @@ static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o width -= uwid; } - if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hcl, fmtout, padc, width); + if (!(flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hak, fmtout, padc, width); while (n--) { if ((lm_flag & LF_H) && BYTE_PRINTABLE(*usp)) { - PUT_OOCH (hcl, fmtout, *usp, 1); + PUT_OOCH (hak, fmtout, *usp, 1); } else if (!(lm_flag & LF_L) && *usp <= 0xFFFF) { - hcl_uint16_t u16 = *usp; - int extra_flags = ((ch) == 'w'? HCL_BYTE_TO_BCSTR_LOWERCASE: 0); - PUT_BCS (hcl, fmtout, "\\u", 2); - PUT_BYTE_IN_HEX (hcl, fmtout, (u16 >> 8) & 0xFF, extra_flags); - PUT_BYTE_IN_HEX (hcl, fmtout, u16 & 0xFF, extra_flags); + hak_uint16_t u16 = *usp; + int extra_flags = ((ch) == 'w'? HAK_BYTE_TO_BCSTR_LOWERCASE: 0); + PUT_BCS (hak, fmtout, "\\u", 2); + PUT_BYTE_IN_HEX (hak, fmtout, (u16 >> 8) & 0xFF, extra_flags); + PUT_BYTE_IN_HEX (hak, fmtout, u16 & 0xFF, extra_flags); } else { - hcl_uint32_t u32 = *usp; - int extra_flags = ((ch) == 'w'? HCL_BYTE_TO_BCSTR_LOWERCASE: 0); - PUT_BCS (hcl, fmtout, "\\u", 2); - PUT_BYTE_IN_HEX (hcl, fmtout, (u32 >> 24) & 0xFF, extra_flags); - PUT_BYTE_IN_HEX (hcl, fmtout, (u32 >> 16) & 0xFF, extra_flags); - PUT_BYTE_IN_HEX (hcl, fmtout, (u32 >> 8) & 0xFF, extra_flags); - PUT_BYTE_IN_HEX (hcl, fmtout, u32 & 0xFF, extra_flags); + hak_uint32_t u32 = *usp; + int extra_flags = ((ch) == 'w'? HAK_BYTE_TO_BCSTR_LOWERCASE: 0); + PUT_BCS (hak, fmtout, "\\u", 2); + PUT_BYTE_IN_HEX (hak, fmtout, (u32 >> 24) & 0xFF, extra_flags); + PUT_BYTE_IN_HEX (hak, fmtout, (u32 >> 16) & 0xFF, extra_flags); + PUT_BYTE_IN_HEX (hak, fmtout, (u32 >> 8) & 0xFF, extra_flags); + PUT_BYTE_IN_HEX (hak, fmtout, u32 & 0xFF, extra_flags); } usp++; } - if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hcl, fmtout, padc, width); + if ((flagc & FLAGC_LEFTADJ) && width > 0) PUT_OOCH (hak, fmtout, padc, width); break; } #endif case 'O': /* object - ignore precision, width, adjustment */ - GET_NEXT_ARG_TO (hcl, nargs, &arg_state, arg); - if (fmtout->putobj(hcl, fmtout, arg) <= -1) goto oops; + GET_NEXT_ARG_TO (hak, nargs, &arg_state, arg); + if (fmtout->putobj(hak, fmtout, arg) <= -1) goto oops; break; case 'J': { - hcl_bitmask_t tmp; - GET_NEXT_ARG_TO (hcl, nargs, &arg_state, arg); + hak_bitmask_t tmp; + GET_NEXT_ARG_TO (hak, nargs, &arg_state, arg); tmp = fmtout->mask; - fmtout->mask |= HCL_LOG_PREFER_JSON; - if (fmtout->putobj(hcl, fmtout, arg) <= -1) goto oops; + fmtout->mask |= HAK_LOG_PREFER_JSON; + if (fmtout->putobj(hak, fmtout, arg) <= -1) goto oops; fmtout->mask = tmp; break; } print_integer: { - const hcl_ooch_t* nsptr; - hcl_oow_t nslen; + const hak_ooch_t* nsptr; + hak_oow_t nslen; - GET_NEXT_ARG_TO (hcl, nargs, &arg_state, arg); - if (HCL_OOP_IS_CHAR(arg)) + GET_NEXT_ARG_TO (hak, nargs, &arg_state, arg); + if (HAK_OOP_IS_CHAR(arg)) { - arg = HCL_SMOOI_TO_OOP(HCL_OOP_TO_CHAR(arg)); + arg = HAK_SMOOI_TO_OOP(HAK_OOP_TO_CHAR(arg)); } - else if (HCL_IS_FPDEC(hcl, arg)) + else if (HAK_IS_FPDEC(hak, arg)) { - hcl_oop_t nv; - hcl_oop_fpdec_t fa = (hcl_oop_fpdec_t)arg; + hak_oop_t nv; + hak_oop_fpdec_t fa = (hak_oop_fpdec_t)arg; /* the given number for integer output is a fixed-point decimal. * i will drop all digits after the fixed point */ - hcl_pushvolat (hcl, &arg); - nv = hcl_truncfpdecval(hcl, fa->value, HCL_OOP_TO_SMOOI(fa->scale), 0); - hcl_popvolat (hcl); + hak_pushvolat (hak, &arg); + nv = hak_truncfpdecval(hak, fa->value, HAK_OOP_TO_SMOOI(fa->scale), 0); + hak_popvolat (hak); if (!nv) { - HCL_LOG1 (hcl, HCL_LOG_WARN | HCL_LOG_UNTYPED, "unable to truncate a fixed-point number %O to an integer for output\n", arg); + HAK_LOG1 (hak, HAK_LOG_WARN | HAK_LOG_UNTYPED, "unable to truncate a fixed-point number %O to an integer for output\n", arg); goto invalid_format; } arg = nv; } - if (!hcl_inttostr(hcl, arg, radix | radix_flags)) + if (!hak_inttostr(hak, arg, radix | radix_flags)) { - /*hcl_seterrbfmt (hcl, HCL_EINVAL, "not a valid number - %O", arg); + /*hak_seterrbfmt (hak, HAK_EINVAL, "not a valid number - %O", arg); goto oops;*/ - HCL_LOG2 (hcl, HCL_LOG_WARN | HCL_LOG_UNTYPED, "unable to convert %O for integer output - %js\n", arg, hcl_geterrmsg(hcl)); + HAK_LOG2 (hak, HAK_LOG_WARN | HAK_LOG_UNTYPED, "unable to convert %O for integer output - %js\n", arg, hak_geterrmsg(hak)); goto invalid_format; } - nsptr = hcl->inttostr.xbuf.ptr; - nslen = hcl->inttostr.xbuf.len; + nsptr = hak->inttostr.xbuf.ptr; + nslen = hak->inttostr.xbuf.len; - HCL_ASSERT (hcl, nslen > 0); + HAK_ASSERT (hak, nslen > 0); if (nsptr[0] == '-') { /* a negative number was given. i must skip the minus sign - * added by hcl_inttostr() for a negative number. */ - HCL_ASSERT (hcl, (HCL_OOP_IS_SMOOI(arg) && HCL_OOP_TO_SMOOI(arg) < 0) || HCL_IS_NBIGINT(hcl,arg)); + * added by hak_inttostr() for a negative number. */ + HAK_ASSERT (hak, (HAK_OOP_IS_SMOOI(arg) && HAK_OOP_TO_SMOOI(arg) < 0) || HAK_IS_NBIGINT(hak,arg)); nsptr++; nslen--; } extra = nslen; - if (sign && ((HCL_OOP_IS_SMOOI(arg) && HCL_OOP_TO_SMOOI(arg) < 0) || HCL_IS_NBIGINT(hcl,arg))) neg = 1; + if (sign && ((HAK_OOP_IS_SMOOI(arg) && HAK_OOP_TO_SMOOI(arg) < 0) || HAK_IS_NBIGINT(hak,arg))) neg = 1; - if ((flagc & FLAGC_SHARP) && arg != HCL_SMOOI_TO_OOP(0)) + if ((flagc & FLAGC_SHARP) && arg != HAK_SMOOI_TO_OOP(0)) { /* #b #o #x */ if (radix == 2 || radix == 8 || radix == 16) extra += 2; @@ -2699,59 +2699,59 @@ static HCL_INLINE int format_stack_args (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o if (!(flagc & FLAGC_LEFTADJ) && !(flagc & FLAGC_ZEROPAD) && width > 0 && (width -= extra) > 0) { - PUT_OOCH (hcl, fmtout, padc, width); + PUT_OOCH (hak, fmtout, padc, width); width = 0; } - if (neg) PUT_OOCH (hcl, fmtout, '-', 1); - else if (flagc & FLAGC_SIGN) PUT_OOCH (hcl, fmtout, '+', 1); - else if (flagc & FLAGC_SPACE) PUT_OOCH (hcl, fmtout, ' ', 1); + if (neg) PUT_OOCH (hak, fmtout, '-', 1); + else if (flagc & FLAGC_SIGN) PUT_OOCH (hak, fmtout, '+', 1); + else if (flagc & FLAGC_SPACE) PUT_OOCH (hak, fmtout, ' ', 1); - if ((flagc & FLAGC_SHARP) && arg != HCL_SMOOI_TO_OOP(0)) + if ((flagc & FLAGC_SHARP) && arg != HAK_SMOOI_TO_OOP(0)) { if (radix == 2) { - PUT_OOCH (hcl, fmtout, '0', 1); - PUT_OOCH (hcl, fmtout, 'b', 1); + PUT_OOCH (hak, fmtout, '0', 1); + PUT_OOCH (hak, fmtout, 'b', 1); } if (radix == 8) { - PUT_OOCH (hcl, fmtout, '0', 1); - PUT_OOCH (hcl, fmtout, 'o', 1); + PUT_OOCH (hak, fmtout, '0', 1); + PUT_OOCH (hak, fmtout, 'o', 1); } else if (radix == 16) { - PUT_OOCH (hcl, fmtout, '0', 1); - PUT_OOCH (hcl, fmtout, 'x', 1); + PUT_OOCH (hak, fmtout, '0', 1); + PUT_OOCH (hak, fmtout, 'x', 1); } } if ((flagc & FLAGC_DOT) && precision > nslen) { /* extra zeros for precision specified */ - PUT_OOCH (hcl, fmtout, '0', precision - nslen); + PUT_OOCH (hak, fmtout, '0', precision - nslen); } if (!(flagc & FLAGC_LEFTADJ) && width > 0 && (width -= extra) > 0) { - PUT_OOCH (hcl, fmtout, padc, width); + PUT_OOCH (hak, fmtout, padc, width); } - PUT_OOCS (hcl, fmtout, nsptr, nslen); + PUT_OOCS (hak, fmtout, nsptr, nslen); if ((flagc & FLAGC_LEFTADJ) && width > 0 && (width -= extra) > 0) { - PUT_OOCH (hcl, fmtout, padc, width); + PUT_OOCH (hak, fmtout, padc, width); } break; } invalid_format: - PUT_OOCS (hcl, fmtout, percent, fmtptr - percent); + PUT_OOCS (hak, fmtout, percent, fmtptr - percent); break; default: - PUT_OOCS (hcl, fmtout, percent, fmtptr - percent); + PUT_OOCS (hak, fmtout, percent, fmtptr - percent); /* * Since we ignore an formatting argument it is no * longer safe to obey the remaining formatting @@ -2770,65 +2770,65 @@ oops: return -1; } -int hcl_strfmtcallstack (hcl_t* hcl, hcl_ooi_t nargs) +int hak_strfmtcallstack (hak_t* hak, hak_ooi_t nargs) { /* format a string using the receiver and arguments on the stack */ - hcl_fmtout_t fo; + hak_fmtout_t fo; - HCL_MEMSET (&fo, 0, HCL_SIZEOF(fo)); + HAK_MEMSET (&fo, 0, HAK_SIZEOF(fo)); fo.putbchars = sprint_bcs; fo.putuchars = sprint_ucs; - fo.putobj = hcl_fmt_object; + fo.putobj = hak_fmt_object; /* format_stack_args doesn't use fmt_str and fmt_type. * it takes the format string from the stack. */ - hcl->sprintf.xbuf.len = 0; - return format_stack_args(hcl, &fo, nargs, 0); + hak->sprintf.xbuf.len = 0; + return format_stack_args(hak, &fo, nargs, 0); } -int hcl_prfmtcallstack (hcl_t* hcl, hcl_ooi_t nargs) +int hak_prfmtcallstack (hak_t* hak, hak_ooi_t nargs) { /* format a string using the receiver and arguments on the stack */ - hcl_fmtout_t fo; + hak_fmtout_t fo; - HCL_MEMSET (&fo, 0, HCL_SIZEOF(fo)); + HAK_MEMSET (&fo, 0, HAK_SIZEOF(fo)); fo.mask = 0; - fo.mmgr = HCL_MMGR(hcl); + fo.mmgr = HAK_MMGR(hak); fo.putbchars = print_bcs; fo.putuchars = print_ucs; - fo.putobj = hcl_fmt_object; + fo.putobj = hak_fmt_object; /* format_stack_args doesn't use fmt_str and fmt_type. * it takes the format string from the stack. */ - return format_stack_args(hcl, &fo, nargs, 0); + return format_stack_args(hak, &fo, nargs, 0); } -int hcl_logfmtcallstack (hcl_t* hcl, hcl_ooi_t nargs) +int hak_logfmtcallstack (hak_t* hak, hak_ooi_t nargs) { /* format a string using the receiver and arguments on the stack */ - hcl_fmtout_t fo; + hak_fmtout_t fo; - HCL_MEMSET (&fo, 0, HCL_SIZEOF(fo)); + HAK_MEMSET (&fo, 0, HAK_SIZEOF(fo)); - fo.mask = HCL_LOG_FATAL | HCL_LOG_APP; - if (hcl->log.default_type_mask & HCL_LOG_ALL_TYPES) + fo.mask = HAK_LOG_FATAL | HAK_LOG_APP; + if (hak->log.default_type_mask & HAK_LOG_ALL_TYPES) { /* if a type is given, it's not untyped any more. * mask off the UNTYPED bit */ - fo.mask &= ~HCL_LOG_UNTYPED; + fo.mask &= ~HAK_LOG_UNTYPED; /* if the default_type_mask has the UNTYPED bit on, * it'll get turned back on */ - fo.mask |= (hcl->log.default_type_mask & HCL_LOG_ALL_TYPES); + fo.mask |= (hak->log.default_type_mask & HAK_LOG_ALL_TYPES); } - fo.mmgr = HCL_MMGR(hcl); + fo.mmgr = HAK_MMGR(hak); fo.putbchars = log_bcs; fo.putuchars = log_ucs; - fo.putobj = hcl_fmt_object; + fo.putobj = hak_fmt_object; /* format_stack_args doesn't use fmt_str and fmt_type. * it takes the format string from the stack. */ - return format_stack_args(hcl, &fo, nargs, 0); + return format_stack_args(hak, &fo, nargs, 0); } /* -------------------------------------------------------------------------- @@ -2836,46 +2836,46 @@ int hcl_logfmtcallstack (hcl_t* hcl, hcl_ooi_t nargs) * -------------------------------------------------------------------------- */ -static int read_bcs (hcl_t* hcl, hcl_fmtin_t* fmtout, hcl_bch_t* buf, hcl_oow_t len) +static int read_bcs (hak_t* hak, hak_fmtin_t* fmtout, hak_bch_t* buf, hak_oow_t len) { - if (HCL_UNLIKELY(!hcl->io.udo_wrtr)) + if (HAK_UNLIKELY(!hak->io.udo_wrtr)) { - hcl_seterrbmsg (hcl, HCL_EINVAL, "no user-defined output handler"); + hak_seterrbmsg (hak, HAK_EINVAL, "no user-defined output handler"); return -1; } return 0; } -static int read_ucs (hcl_t* hcl, hcl_fmtin_t* fmtin, hcl_uch_t* buf, hcl_oow_t len) +static int read_ucs (hak_t* hak, hak_fmtin_t* fmtin, hak_uch_t* buf, hak_oow_t len) { - if (HCL_UNLIKELY(!hcl->io.udo_wrtr)) + if (HAK_UNLIKELY(!hak->io.udo_wrtr)) { - hcl_seterrbmsg (hcl, HCL_EINVAL, "no user-defined output handler"); + hak_seterrbmsg (hak, HAK_EINVAL, "no user-defined output handler"); return -1; } return 0; } -static HCL_INLINE int fmtin_stack_args (hcl_t* hcl, hcl_fmtin_t* fmtin, hcl_ooi_t nargs, int rcv_is_fmtstr) +static HAK_INLINE int fmtin_stack_args (hak_t* hak, hak_fmtin_t* fmtin, hak_ooi_t nargs, int rcv_is_fmtstr) { /* TODO: */ return 0; } -int hcl_scfmtcallstack (hcl_t* hcl, hcl_ooi_t nargs) +int hak_scfmtcallstack (hak_t* hak, hak_ooi_t nargs) { - hcl_fmtin_t fi; + hak_fmtin_t fi; - HCL_MEMSET (&fi, 0, HCL_SIZEOF(fi)); + HAK_MEMSET (&fi, 0, HAK_SIZEOF(fi)); /* * TODO: fi.getbchars = fi.getuchars = */ - return fmtin_stack_args(hcl, &fi, nargs, 0); + return fmtin_stack_args(hak, &fi, nargs, 0); } /* -------------------------------------------------------------------------- @@ -2884,22 +2884,22 @@ int hcl_scfmtcallstack (hcl_t* hcl, hcl_ooi_t nargs) struct fmt_uch_buf_t { - hcl_t* hcl; - hcl_uch_t* ptr; - hcl_oow_t len; - hcl_oow_t capa; + hak_t* hak; + hak_uch_t* ptr; + hak_oow_t len; + hak_oow_t capa; }; typedef struct fmt_uch_buf_t fmt_uch_buf_t; -static int fmt_put_bchars_to_uch_buf (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_bch_t* ptr, hcl_oow_t len) +static int fmt_put_bchars_to_uch_buf (hak_t* hak, hak_fmtout_t* fmtout, const hak_bch_t* ptr, hak_oow_t len) { fmt_uch_buf_t* b = (fmt_uch_buf_t*)fmtout->ctx; - hcl_oow_t bcslen, ucslen; + hak_oow_t bcslen, ucslen; int n; bcslen = len; ucslen = b->capa - b->len; - n = hcl_conv_bchars_to_uchars_with_cmgr(ptr, &bcslen, &b->ptr[b->len], &ucslen, b->hcl->_cmgr, 1); + n = hak_conv_bchars_to_uchars_with_cmgr(ptr, &bcslen, &b->ptr[b->len], &ucslen, b->hak->_cmgr, 1); b->len += ucslen; if (n <= -1) { @@ -2909,7 +2909,7 @@ static int fmt_put_bchars_to_uch_buf (hcl_t* hcl, hcl_fmtout_t* fmtout, const hc } else { - hcl_seterrnum (b->hcl, HCL_EECERR); + hak_seterrnum (b->hak, HAK_EECERR); return -1; } } @@ -2917,55 +2917,55 @@ static int fmt_put_bchars_to_uch_buf (hcl_t* hcl, hcl_fmtout_t* fmtout, const hc return 1; /* success. carry on */ } -static int fmt_put_uchars_to_uch_buf (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_uch_t* ptr, hcl_oow_t len) +static int fmt_put_uchars_to_uch_buf (hak_t* hak, hak_fmtout_t* fmtout, const hak_uch_t* ptr, hak_oow_t len) { fmt_uch_buf_t* b = (fmt_uch_buf_t*)fmtout->ctx; - hcl_oow_t n; + hak_oow_t n; /* this function null-terminates the destination. so give the restored buffer size */ - n = hcl_copy_uchars_to_ucstr(&b->ptr[b->len], b->capa - b->len + 1, ptr, len); + n = hak_copy_uchars_to_ucstr(&b->ptr[b->len], b->capa - b->len + 1, ptr, len); b->len += n; if (n < len) { - hcl_seterrnum (b->hcl, HCL_EBUFFULL); + hak_seterrnum (b->hak, HAK_EBUFFULL); return 0; /* stop. insufficient buffer */ } return 1; /* success */ } -hcl_oow_t hcl_vfmttoucstr (hcl_t* hcl, hcl_uch_t* buf, hcl_oow_t bufsz, const hcl_uch_t* fmt, va_list ap) +hak_oow_t hak_vfmttoucstr (hak_t* hak, hak_uch_t* buf, hak_oow_t bufsz, const hak_uch_t* fmt, va_list ap) { - hcl_fmtout_t fo; + hak_fmtout_t fo; fmt_uch_buf_t fb; if (bufsz <= 0) return 0; - HCL_MEMSET (&fo, 0, HCL_SIZEOF(fo)); - fo.mmgr = hcl->_mmgr; + HAK_MEMSET (&fo, 0, HAK_SIZEOF(fo)); + fo.mmgr = hak->_mmgr; fo.putbchars = fmt_put_bchars_to_uch_buf; fo.putuchars = fmt_put_uchars_to_uch_buf; - fo.putobj = hcl_fmt_object; + fo.putobj = hak_fmt_object; fo.ctx = &fb; - HCL_MEMSET (&fb, 0, HCL_SIZEOF(fb)); - fb.hcl = hcl; + HAK_MEMSET (&fb, 0, HAK_SIZEOF(fb)); + fb.hak = hak; fb.ptr = buf; fb.capa = bufsz - 1; - if (hcl_ufmt_outv(hcl, &fo, fmt, ap) <= -1) return -1; + if (hak_ufmt_outv(hak, &fo, fmt, ap) <= -1) return -1; buf[fb.len] = '\0'; return fb.len; } -hcl_oow_t hcl_fmttoucstr (hcl_t* hcl, hcl_uch_t* buf, hcl_oow_t bufsz, const hcl_uch_t* fmt, ...) +hak_oow_t hak_fmttoucstr (hak_t* hak, hak_uch_t* buf, hak_oow_t bufsz, const hak_uch_t* fmt, ...) { - hcl_oow_t x; + hak_oow_t x; va_list ap; va_start (ap, fmt); - x = hcl_vfmttoucstr(hcl, buf, bufsz, fmt, ap); + x = hak_vfmttoucstr(hak, buf, bufsz, fmt, ap); va_end (ap); return x; @@ -2975,39 +2975,39 @@ hcl_oow_t hcl_fmttoucstr (hcl_t* hcl, hcl_uch_t* buf, hcl_oow_t bufsz, const hcl struct fmt_bch_buf_t { - hcl_t* hcl; - hcl_bch_t* ptr; - hcl_oow_t len; - hcl_oow_t capa; + hak_t* hak; + hak_bch_t* ptr; + hak_oow_t len; + hak_oow_t capa; }; typedef struct fmt_bch_buf_t fmt_bch_buf_t; -static int fmt_put_bchars_to_bch_buf (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_bch_t* ptr, hcl_oow_t len) +static int fmt_put_bchars_to_bch_buf (hak_t* hak, hak_fmtout_t* fmtout, const hak_bch_t* ptr, hak_oow_t len) { fmt_bch_buf_t* b = (fmt_bch_buf_t*)fmtout->ctx; - hcl_oow_t n; + hak_oow_t n; /* this function null-terminates the destination. so give the restored buffer size */ - n = hcl_copy_bchars_to_bcstr(&b->ptr[b->len], b->capa - b->len + 1, ptr, len); + n = hak_copy_bchars_to_bcstr(&b->ptr[b->len], b->capa - b->len + 1, ptr, len); b->len += n; if (n < len) { - hcl_seterrnum (b->hcl, HCL_EBUFFULL); + hak_seterrnum (b->hak, HAK_EBUFFULL); return 0; /* stop. insufficient buffer */ } return 1; /* success */ } -static int fmt_put_uchars_to_bch_buf (hcl_t* hcl, hcl_fmtout_t* fmtout, const hcl_uch_t* ptr, hcl_oow_t len) +static int fmt_put_uchars_to_bch_buf (hak_t* hak, hak_fmtout_t* fmtout, const hak_uch_t* ptr, hak_oow_t len) { fmt_bch_buf_t* b = (fmt_bch_buf_t*)fmtout->ctx; - hcl_oow_t bcslen, ucslen; + hak_oow_t bcslen, ucslen; int n; bcslen = b->capa - b->len; ucslen = len; - n = hcl_conv_uchars_to_bchars_with_cmgr(ptr, &ucslen, &b->ptr[b->len], &bcslen, b->hcl->_cmgr); + n = hak_conv_uchars_to_bchars_with_cmgr(ptr, &ucslen, &b->ptr[b->len], &bcslen, b->hak->_cmgr); b->len += bcslen; if (n <= -1) { @@ -3017,7 +3017,7 @@ static int fmt_put_uchars_to_bch_buf (hcl_t* hcl, hcl_fmtout_t* fmtout, const hc } else { - hcl_seterrnum (b->hcl, HCL_EECERR); + hak_seterrnum (b->hak, HAK_EECERR); return -1; } } @@ -3025,38 +3025,38 @@ static int fmt_put_uchars_to_bch_buf (hcl_t* hcl, hcl_fmtout_t* fmtout, const hc return 1; /* success. carry on */ } -hcl_oow_t hcl_vfmttobcstr (hcl_t* hcl, hcl_bch_t* buf, hcl_oow_t bufsz, const hcl_bch_t* fmt, va_list ap) +hak_oow_t hak_vfmttobcstr (hak_t* hak, hak_bch_t* buf, hak_oow_t bufsz, const hak_bch_t* fmt, va_list ap) { - hcl_fmtout_t fo; + hak_fmtout_t fo; fmt_bch_buf_t fb; if (bufsz <= 0) return 0; - HCL_MEMSET (&fo, 0, HCL_SIZEOF(fo)); - fo.mmgr = hcl->_mmgr; + HAK_MEMSET (&fo, 0, HAK_SIZEOF(fo)); + fo.mmgr = hak->_mmgr; fo.putbchars = fmt_put_bchars_to_bch_buf; fo.putuchars = fmt_put_uchars_to_bch_buf; - fo.putobj = hcl_fmt_object; + fo.putobj = hak_fmt_object; fo.ctx = &fb; - HCL_MEMSET (&fb, 0, HCL_SIZEOF(fb)); - fb.hcl = hcl; + HAK_MEMSET (&fb, 0, HAK_SIZEOF(fb)); + fb.hak = hak; fb.ptr = buf; fb.capa = bufsz - 1; - if (hcl_bfmt_outv(hcl, &fo, fmt, ap) <= -1) return -1; + if (hak_bfmt_outv(hak, &fo, fmt, ap) <= -1) return -1; buf[fb.len] = '\0'; return fb.len; } -hcl_oow_t hcl_fmttobcstr (hcl_t* hcl, hcl_bch_t* buf, hcl_oow_t bufsz, const hcl_bch_t* fmt, ...) +hak_oow_t hak_fmttobcstr (hak_t* hak, hak_bch_t* buf, hak_oow_t bufsz, const hak_bch_t* fmt, ...) { - hcl_oow_t x; + hak_oow_t x; va_list ap; va_start (ap, fmt); - x = hcl_vfmttobcstr(hcl, buf, bufsz, fmt, ap); + x = hak_vfmttobcstr(hak, buf, bufsz, fmt, ap); va_end (ap); return x; diff --git a/lib/gc.c b/lib/gc.c index b80ce8f..49c7fc2 100644 --- a/lib/gc.c +++ b/lib/gc.c @@ -22,9 +22,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "hcl-prv.h" +#include "hak-prv.h" -#if defined(HCL_PROFILE_VM) +#if defined(HAK_PROFILE_VM) #include #include /* getrusage */ #endif @@ -76,7 +76,7 @@ struct kernel_class_info_t { - const hcl_bch_t* name; + const hak_bch_t* name; int superclass_kci; int class_brand; int class_flags; /* class flags for selfspec */ @@ -86,7 +86,7 @@ struct kernel_class_info_t int class_spec_flags; int class_spec_indexed_type; - hcl_oow_t offset; /* offset to the field in hcl_t that stored the class pointer */ + hak_oow_t offset; /* offset to the field in hak_t that stored the class pointer */ }; typedef struct kernel_class_info_t kernel_class_info_t; @@ -133,7 +133,7 @@ enum { __KCI_MAX__ }; -#define KCI(x) HCL_AID(x) +#define KCI(x) HAK_AID(x) static kernel_class_info_t kernel_classes[__KCI_MAX__] = { @@ -158,54 +158,54 @@ static kernel_class_info_t kernel_classes[__KCI_MAX__] = 0, /* ncvars */ 0, /* nivars */ 0, /* spec flags */ - HCL_OBJ_TYPE_OOP, /* indexed type */ - HCL_OFFSETOF(hcl_t, c_apex) + HAK_OBJ_TYPE_OOP, /* indexed type */ + HAK_OFFSETOF(hak_t, c_apex) }, KCI(KCI_CLASS) { "Class", KCI_APEX, - HCL_BRAND_CLASS, - HCL_CLASS_SELFSPEC_FLAG_FINAL | HCL_CLASS_SELFSPEC_FLAG_LIMITED, + HAK_BRAND_CLASS, + HAK_CLASS_SELFSPEC_FLAG_FINAL | HAK_CLASS_SELFSPEC_FLAG_LIMITED, 0, /* ncvars */ - HCL_CLASS_NAMED_INSTVARS, /* nivars */ - HCL_CLASS_SPEC_FLAG_INDEXED | HCL_CLASS_SPEC_FLAG_UNCOPYABLE, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_class) + HAK_CLASS_NAMED_INSTVARS, /* nivars */ + HAK_CLASS_SPEC_FLAG_INDEXED | HAK_CLASS_SPEC_FLAG_UNCOPYABLE, + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_class) }, KCI(KCI_UNDEFINED_OBJECT) { "UndefinedObject", KCI_APEX, - HCL_BRAND_UNDEF, + HAK_BRAND_UNDEF, 0, 0, 0, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_undefobj) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_undefobj) }, KCI(KCI_NIL_OBJECT) { "NilObject", KCI_APEX, - HCL_BRAND_NIL, + HAK_BRAND_NIL, 0, 0, 0, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_nilobj) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_nilobj) }, #if 0 { "Interface", - HCL_CLASS_SELFSPEC_FLAG_LIMITED, + HAK_CLASS_SELFSPEC_FLAG_LIMITED, 0, - HCL_INTERFACE_NAMED_INSTVARS, - HCL_CLASS_SPEC_FLAG_INDEXED | HCL_CLASS_SPEC_FLAG_UNCOPYABLE, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, _interface) }, + HAK_INTERFACE_NAMED_INSTVARS, + HAK_CLASS_SPEC_FLAG_INDEXED | HAK_CLASS_SPEC_FLAG_UNCOPYABLE, + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, _interface) }, #endif KCI(KCI_OBJECT) { @@ -216,8 +216,8 @@ static kernel_class_info_t kernel_classes[__KCI_MAX__] = 0, /* ncvars */ 0, /* nivars */ 0, /* spec flags */ - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_object) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_object) }, KCI(KCI_COLLECTION) { @@ -228,8 +228,8 @@ static kernel_class_info_t kernel_classes[__KCI_MAX__] = 0, 0, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_collection) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_collection) }, KCI(KCI_INDEXED_COLLECTION) { @@ -240,8 +240,8 @@ static kernel_class_info_t kernel_classes[__KCI_MAX__] = 0, 0, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_indexed_collection) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_indexed_collection) }, KCI(KCI_FIXED_SIZED_COLLECTION) { @@ -252,80 +252,80 @@ static kernel_class_info_t kernel_classes[__KCI_MAX__] = 0, 0, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_fixed_sized_collection) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_fixed_sized_collection) }, KCI(KCI_STRING) { "String", KCI_FIXED_SIZED_COLLECTION, - HCL_BRAND_STRING, + HAK_BRAND_STRING, 0, 0, 0, - HCL_CLASS_SPEC_FLAG_INDEXED, - HCL_OBJ_TYPE_CHAR, - HCL_OFFSETOF(hcl_t, c_string) + HAK_CLASS_SPEC_FLAG_INDEXED, + HAK_OBJ_TYPE_CHAR, + HAK_OFFSETOF(hak_t, c_string) }, KCI(KCI_BYTE_STRING) { "ByteString", KCI_FIXED_SIZED_COLLECTION, - HCL_BRAND_BYTE_STRING, + HAK_BRAND_BYTE_STRING, 0, 0, 0, - HCL_CLASS_SPEC_FLAG_INDEXED, - HCL_OBJ_TYPE_BYTE, - HCL_OFFSETOF(hcl_t, c_byte_string) + HAK_CLASS_SPEC_FLAG_INDEXED, + HAK_OBJ_TYPE_BYTE, + HAK_OFFSETOF(hak_t, c_byte_string) }, KCI(KCI_SYMBOL) { "Symbol", KCI_STRING, - HCL_BRAND_SYMBOL, - HCL_CLASS_SELFSPEC_FLAG_FINAL | HCL_CLASS_SELFSPEC_FLAG_LIMITED, /* TODO: these flags not implemented yet */ + HAK_BRAND_SYMBOL, + HAK_CLASS_SELFSPEC_FLAG_FINAL | HAK_CLASS_SELFSPEC_FLAG_LIMITED, /* TODO: these flags not implemented yet */ 0, 0, - HCL_CLASS_SPEC_FLAG_INDEXED | HCL_CLASS_SPEC_FLAG_IMMUTABLE, - HCL_OBJ_TYPE_CHAR, - HCL_OFFSETOF(hcl_t, c_symbol) + HAK_CLASS_SPEC_FLAG_INDEXED | HAK_CLASS_SPEC_FLAG_IMMUTABLE, + HAK_OBJ_TYPE_CHAR, + HAK_OFFSETOF(hak_t, c_symbol) }, KCI(KCI_ARRAY) { "Array", KCI_FIXED_SIZED_COLLECTION, - HCL_BRAND_ARRAY, + HAK_BRAND_ARRAY, 0, 0, 0, - HCL_CLASS_SPEC_FLAG_INDEXED, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_array) + HAK_CLASS_SPEC_FLAG_INDEXED, + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_array) }, KCI(KCI_CHARACTER_ARRAY) { "CharacterArray", KCI_FIXED_SIZED_COLLECTION, - HCL_BRAND_CHARACTER_ARRAY, + HAK_BRAND_CHARACTER_ARRAY, 0, 0, 0, - HCL_CLASS_SPEC_FLAG_INDEXED, - HCL_OBJ_TYPE_CHAR, - HCL_OFFSETOF(hcl_t, c_character_array) + HAK_CLASS_SPEC_FLAG_INDEXED, + HAK_OBJ_TYPE_CHAR, + HAK_OFFSETOF(hak_t, c_character_array) }, KCI(KCI_BYTE_ARRAY) { "ByteArray", KCI_FIXED_SIZED_COLLECTION, - HCL_BRAND_BYTE_ARRAY, + HAK_BRAND_BYTE_ARRAY, 0, 0, 0, - HCL_CLASS_SPEC_FLAG_INDEXED, - HCL_OBJ_TYPE_BYTE, - HCL_OFFSETOF(hcl_t, c_byte_array) + HAK_CLASS_SPEC_FLAG_INDEXED, + HAK_OBJ_TYPE_BYTE, + HAK_OFFSETOF(hak_t, c_byte_array) }, /* A special incarnation of a dictionary that allows only a symbol as a value. @@ -334,55 +334,55 @@ static kernel_class_info_t kernel_classes[__KCI_MAX__] = KCI(KCI_SYMBOL_TABLE) { "SymbolTable", KCI_COLLECTION, - HCL_BRAND_DIC, /* TODO: make this a special child class of Dictionary?? */ + HAK_BRAND_DIC, /* TODO: make this a special child class of Dictionary?? */ 0, 0, - HCL_DIC_NAMED_INSTVARS, + HAK_DIC_NAMED_INSTVARS, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_symtab) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_symtab) }, KCI(KCI_DICTIONARY) { "Dictionary", KCI_COLLECTION, - HCL_BRAND_DIC, + HAK_BRAND_DIC, 0, 0, - HCL_DIC_NAMED_INSTVARS, + HAK_DIC_NAMED_INSTVARS, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_dictionary) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_dictionary) }, KCI(KCI_CONS) { "Cons", KCI_OBJECT, - HCL_BRAND_CONS, + HAK_BRAND_CONS, 0, 0, - HCL_CONS_NAMED_INSTVARS, + HAK_CONS_NAMED_INSTVARS, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_cons) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_cons) }, #if 0 { "Namespace", - HCL_CLASS_SELFSPEC_FLAG_LIMITED, + HAK_CLASS_SELFSPEC_FLAG_LIMITED, 0, - HCL_NSDIC_NAMED_INSTVARS, + HAK_NSDIC_NAMED_INSTVARS, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_namespace) }, + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_namespace) }, { "PoolDictionary", 0, 0, - HCL_DIC_NAMED_INSTVARS, + HAK_DIC_NAMED_INSTVARS, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_pool_dictionary) }, + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_pool_dictionary) }, #endif KCI(KCI_METHOD_DICTIONARY) { @@ -391,28 +391,28 @@ static kernel_class_info_t kernel_classes[__KCI_MAX__] = 0, 0, 0, - HCL_DIC_NAMED_INSTVARS, + HAK_DIC_NAMED_INSTVARS, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_method_dictionary) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_method_dictionary) }, #if 0 { "CompiledMethod", 0, 0, - HCL_METHOD_NAMED_INSTVARS, - HCL_CLASS_SPEC_FLAG_INDEXED, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_method) }, + HAK_METHOD_NAMED_INSTVARS, + HAK_CLASS_SPEC_FLAG_INDEXED, + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_method) }, { "MethodSignature", 0, 0, - HCL_METHSIG_NAMED_INSTVARS, - HCL_CLASS_SPEC_FLAG_INDEXED, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_methsig) }, + HAK_METHSIG_NAMED_INSTVARS, + HAK_CLASS_SPEC_FLAG_INDEXED, + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_methsig) }, #endif /* special function created with MAKE_FUNCTION in interactive mode @@ -420,133 +420,133 @@ static kernel_class_info_t kernel_classes[__KCI_MAX__] = KCI(KCI_FUNCTION) { "Function", KCI_OBJECT, - HCL_BRAND_FUNCTION, + HAK_BRAND_FUNCTION, 0, 0, - HCL_FUNCTION_NAMED_INSTVARS, - HCL_CLASS_SPEC_FLAG_INDEXED, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_function) + HAK_FUNCTION_NAMED_INSTVARS, + HAK_CLASS_SPEC_FLAG_INDEXED, + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_function) }, KCI(KCI_PRIMITIVE) { "Primitive", KCI_OBJECT, - HCL_BRAND_PRIM, + HAK_BRAND_PRIM, 0, 0, - HCL_PRIM_NAMED_INSTVARS, + HAK_PRIM_NAMED_INSTVARS, 0, - HCL_OBJ_TYPE_WORD, - HCL_OFFSETOF(hcl_t, c_primitive) + HAK_OBJ_TYPE_WORD, + HAK_OFFSETOF(hak_t, c_primitive) }, KCI(KCI_COMPILED_BLOCK) { "CompiledBlock", KCI_OBJECT, - HCL_BRAND_BLOCK, + HAK_BRAND_BLOCK, 0, 0, - HCL_BLOCK_NAMED_INSTVARS, + HAK_BLOCK_NAMED_INSTVARS, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_compiled_block) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_compiled_block) }, KCI(KCI_BLOCK_CONTEXT) { "BlockContext", KCI_OBJECT, - HCL_BRAND_CONTEXT, - HCL_CLASS_SELFSPEC_FLAG_FINAL | HCL_CLASS_SELFSPEC_FLAG_LIMITED, + HAK_BRAND_CONTEXT, + HAK_CLASS_SELFSPEC_FLAG_FINAL | HAK_CLASS_SELFSPEC_FLAG_LIMITED, 0, - HCL_CONTEXT_NAMED_INSTVARS, - HCL_CLASS_SPEC_FLAG_INDEXED, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_block_context) + HAK_CONTEXT_NAMED_INSTVARS, + HAK_CLASS_SPEC_FLAG_INDEXED, + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_block_context) }, KCI(KCI_PROCESS) { "Process", KCI_OBJECT, - HCL_BRAND_PROCESS, - HCL_CLASS_SELFSPEC_FLAG_FINAL | HCL_CLASS_SELFSPEC_FLAG_LIMITED, + HAK_BRAND_PROCESS, + HAK_CLASS_SELFSPEC_FLAG_FINAL | HAK_CLASS_SELFSPEC_FLAG_LIMITED, 0, - HCL_PROCESS_NAMED_INSTVARS, - HCL_CLASS_SPEC_FLAG_INDEXED | HCL_CLASS_SPEC_FLAG_UNCOPYABLE, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_process) + HAK_PROCESS_NAMED_INSTVARS, + HAK_CLASS_SPEC_FLAG_INDEXED | HAK_CLASS_SPEC_FLAG_UNCOPYABLE, + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_process) }, KCI(KCI_SEMAPHORE) { "Semaphore", KCI_OBJECT, - HCL_BRAND_SEMAPHORE, + HAK_BRAND_SEMAPHORE, 0, 0, - HCL_SEMAPHORE_NAMED_INSTVARS, - HCL_CLASS_SPEC_FLAG_UNCOPYABLE, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_semaphore) + HAK_SEMAPHORE_NAMED_INSTVARS, + HAK_CLASS_SPEC_FLAG_UNCOPYABLE, + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_semaphore) }, KCI(KCI_SEMAPHORE_GROUP) { "SemaphoreGroup", KCI_OBJECT, - HCL_BRAND_SEMAPHORE_GROUP, + HAK_BRAND_SEMAPHORE_GROUP, 0, 0, - HCL_SEMAPHORE_GROUP_NAMED_INSTVARS, - HCL_CLASS_SPEC_FLAG_UNCOPYABLE, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_semaphore_group) + HAK_SEMAPHORE_GROUP_NAMED_INSTVARS, + HAK_CLASS_SPEC_FLAG_UNCOPYABLE, + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_semaphore_group) }, KCI(KCI_PROCESS_SCHEDULER) { "ProcessScheduler", KCI_OBJECT, - HCL_BRAND_PROCESS_SCHEDULER, - HCL_CLASS_SELFSPEC_FLAG_FINAL | HCL_CLASS_SELFSPEC_FLAG_LIMITED, + HAK_BRAND_PROCESS_SCHEDULER, + HAK_CLASS_SELFSPEC_FLAG_FINAL | HAK_CLASS_SELFSPEC_FLAG_LIMITED, 0, - HCL_PROCESS_SCHEDULER_NAMED_INSTVARS, - HCL_CLASS_SPEC_FLAG_UNCOPYABLE, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_process_scheduler) + HAK_PROCESS_SCHEDULER_NAMED_INSTVARS, + HAK_CLASS_SPEC_FLAG_UNCOPYABLE, + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_process_scheduler) }, KCI(KCI_ERROR) { "Error", KCI_OBJECT, 0, - HCL_CLASS_SELFSPEC_FLAG_LIMITED, + HAK_CLASS_SELFSPEC_FLAG_LIMITED, 0, 0, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_error) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_error) }, KCI(KCI_TRUE) { "True", KCI_OBJECT, - HCL_BRAND_TRUE, - HCL_CLASS_SELFSPEC_FLAG_LIMITED | HCL_CLASS_SELFSPEC_FLAG_FINAL, + HAK_BRAND_TRUE, + HAK_CLASS_SELFSPEC_FLAG_LIMITED | HAK_CLASS_SELFSPEC_FLAG_FINAL, 0, 0, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_true) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_true) }, KCI(KCI_FALSE) { "False", KCI_OBJECT, - HCL_BRAND_FALSE, - HCL_CLASS_SELFSPEC_FLAG_LIMITED | HCL_CLASS_SELFSPEC_FLAG_FINAL, + HAK_BRAND_FALSE, + HAK_CLASS_SELFSPEC_FLAG_LIMITED | HAK_CLASS_SELFSPEC_FLAG_FINAL, 0, 0, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_false) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_false) }, KCI(KCI_MAGNITUDE) { @@ -557,8 +557,8 @@ static kernel_class_info_t kernel_classes[__KCI_MAX__] = 0, 0, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_magnitude) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_magnitude) }, /* TOOD: what is a proper spec for Character and SmallInteger? @@ -567,97 +567,97 @@ static kernel_class_info_t kernel_classes[__KCI_MAX__] = KCI(KCI_CHARACTER) { "Character", KCI_MAGNITUDE, - HCL_BRAND_CHARACTER, - HCL_CLASS_SELFSPEC_FLAG_LIMITED, + HAK_BRAND_CHARACTER, + HAK_CLASS_SELFSPEC_FLAG_LIMITED, 0, 0, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_character) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_character) }, KCI(KCI_NUMBER) { "Number", KCI_MAGNITUDE, 0, /* brand */ - HCL_CLASS_SELFSPEC_FLAG_LIMITED, + HAK_CLASS_SELFSPEC_FLAG_LIMITED, 0, 0, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_number) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_number) }, KCI(KCI_SMALL_INTEGER) { "SmallInteger", KCI_NUMBER, - HCL_BRAND_SMOOI, - HCL_CLASS_SELFSPEC_FLAG_LIMITED, + HAK_BRAND_SMOOI, + HAK_CLASS_SELFSPEC_FLAG_LIMITED, 0, 0, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_small_integer) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_small_integer) }, KCI(KCI_LARGE_POSITIVE_INTEGER) { "LargePositiveInteger", KCI_NUMBER, - HCL_BRAND_PBIGINT, - HCL_CLASS_SELFSPEC_FLAG_LIMITED, + HAK_BRAND_PBIGINT, + HAK_CLASS_SELFSPEC_FLAG_LIMITED, 0, 0, - HCL_CLASS_SPEC_FLAG_INDEXED | HCL_CLASS_SPEC_FLAG_IMMUTABLE, - HCL_OBJ_TYPE_LIWORD, - HCL_OFFSETOF(hcl_t, c_large_positive_integer) + HAK_CLASS_SPEC_FLAG_INDEXED | HAK_CLASS_SPEC_FLAG_IMMUTABLE, + HAK_OBJ_TYPE_LIWORD, + HAK_OFFSETOF(hak_t, c_large_positive_integer) }, KCI(KCI_LARGE_NEGATIVE_INTEGER) { "LargeNegativeInteger", KCI_NUMBER, - HCL_BRAND_NBIGINT, - HCL_CLASS_SELFSPEC_FLAG_LIMITED, + HAK_BRAND_NBIGINT, + HAK_CLASS_SELFSPEC_FLAG_LIMITED, 0, 0, - HCL_CLASS_SPEC_FLAG_INDEXED | HCL_CLASS_SPEC_FLAG_IMMUTABLE, - HCL_OBJ_TYPE_LIWORD, - HCL_OFFSETOF(hcl_t, c_large_negative_integer) + HAK_CLASS_SPEC_FLAG_INDEXED | HAK_CLASS_SPEC_FLAG_IMMUTABLE, + HAK_OBJ_TYPE_LIWORD, + HAK_OFFSETOF(hak_t, c_large_negative_integer) }, KCI(KCI_FIXED_POINT_DECIMAL) { "FixedPointDecimal", KCI_NUMBER, - HCL_BRAND_FPDEC, - HCL_CLASS_SELFSPEC_FLAG_LIMITED, + HAK_BRAND_FPDEC, + HAK_CLASS_SELFSPEC_FLAG_LIMITED, 0, - HCL_FPDEC_NAMED_INSTVARS, - HCL_CLASS_SPEC_FLAG_IMMUTABLE, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_fixed_point_decimal) + HAK_FPDEC_NAMED_INSTVARS, + HAK_CLASS_SPEC_FLAG_IMMUTABLE, + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_fixed_point_decimal) }, KCI(KCI_SMALL_POINTER) { "SmallPointer", KCI_MAGNITUDE, - HCL_BRAND_SMPTR, - HCL_CLASS_SELFSPEC_FLAG_LIMITED, + HAK_BRAND_SMPTR, + HAK_CLASS_SELFSPEC_FLAG_LIMITED, 0, 0, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_small_pointer) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_small_pointer) }, KCI(KCI_LARGE_POINTER) { "LargePointer", KCI_MAGNITUDE, 0, - HCL_CLASS_SELFSPEC_FLAG_LIMITED, + HAK_CLASS_SELFSPEC_FLAG_LIMITED, 0, 1, /* #word(1) */ - HCL_CLASS_SPEC_FLAG_IMMUTABLE | HCL_CLASS_SPEC_FLAG_INDEXED, - HCL_OBJ_TYPE_WORD, - HCL_OFFSETOF(hcl_t, c_large_pointer) + HAK_CLASS_SPEC_FLAG_IMMUTABLE | HAK_CLASS_SPEC_FLAG_INDEXED, + HAK_OBJ_TYPE_WORD, + HAK_OFFSETOF(hak_t, c_large_pointer) }, KCI(KCI_SYSTEM) { @@ -668,85 +668,85 @@ static kernel_class_info_t kernel_classes[__KCI_MAX__] = 5, /* asyncsg, gcfin_sem, gcfin_should_exit, ossig_pid, shr */ 0, 0, - HCL_OBJ_TYPE_OOP, - HCL_OFFSETOF(hcl_t, c_system) + HAK_OBJ_TYPE_OOP, + HAK_OFFSETOF(hak_t, c_system) } }; /* ========================================================================= */ -static void compact_symbol_table (hcl_t* hcl, hcl_oop_t _nil) +static void compact_symbol_table (hak_t* hak, hak_oop_t _nil) { - hcl_oop_char_t symbol; - hcl_oow_t i, x, y, z; - hcl_oow_t bucket_size, index; - hcl_ooi_t tally; + hak_oop_char_t symbol; + hak_oow_t i, x, y, z; + hak_oow_t bucket_size, index; + hak_ooi_t tally; -#if defined(HCL_SUPPORT_GC_DURING_IGNITION) - if (!hcl->symtab) return; /* symbol table has not been created */ +#if defined(HAK_SUPPORT_GC_DURING_IGNITION) + if (!hak->symtab) return; /* symbol table has not been created */ #endif - /* the symbol table doesn't allow more data items than HCL_SMOOI_MAX. - * so hcl->symtab->tally must always be a small integer */ - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(hcl->symtab->tally)); - tally = HCL_OOP_TO_SMOOI(hcl->symtab->tally); - HCL_ASSERT (hcl, tally >= 0); /* it must not be less than 0 */ + /* the symbol table doesn't allow more data items than HAK_SMOOI_MAX. + * so hak->symtab->tally must always be a small integer */ + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(hak->symtab->tally)); + tally = HAK_OOP_TO_SMOOI(hak->symtab->tally); + HAK_ASSERT (hak, tally >= 0); /* it must not be less than 0 */ if (tally <= 0) return; - /* NOTE: in theory, the bucket size can be greater than HCL_SMOOI_MAX + /* NOTE: in theory, the bucket size can be greater than HAK_SMOOI_MAX * as it is an internal header field and is of an unsigned type */ - bucket_size = HCL_OBJ_GET_SIZE(hcl->symtab->bucket); + bucket_size = HAK_OBJ_GET_SIZE(hak->symtab->bucket); for (index = 0; index < bucket_size; ) { - if (HCL_OBJ_GET_FLAGS_MOVED(hcl->symtab->bucket->slot[index])) + if (HAK_OBJ_GET_FLAGS_MOVED(hak->symtab->bucket->slot[index])) { index++; continue; } - HCL_ASSERT (hcl, hcl->symtab->bucket->slot[index] != _nil); + HAK_ASSERT (hak, hak->symtab->bucket->slot[index] != _nil); for (i = 0, x = index, y = index; i < bucket_size; i++) { y = (y + 1) % bucket_size; /* done if the slot at the current hash index is _nil */ - if (hcl->symtab->bucket->slot[y] == _nil) break; + if (hak->symtab->bucket->slot[y] == _nil) break; /* get the natural hash index for the data in the slot * at the current hash index */ - symbol = (hcl_oop_char_t)hcl->symtab->bucket->slot[y]; + symbol = (hak_oop_char_t)hak->symtab->bucket->slot[y]; - HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl, symbol)); + HAK_ASSERT (hak, HAK_IS_SYMBOL(hak, symbol)); - z = hcl_hash_oochars(symbol->slot, HCL_OBJ_GET_SIZE(symbol)) % bucket_size; + z = hak_hash_oochars(symbol->slot, HAK_OBJ_GET_SIZE(symbol)) % bucket_size; /* move an element if necessary */ if ((y > x && (z <= x || z > y)) || (y < x && (z <= x && z > y))) { - hcl->symtab->bucket->slot[x] = hcl->symtab->bucket->slot[y]; + hak->symtab->bucket->slot[x] = hak->symtab->bucket->slot[y]; x = y; } } - hcl->symtab->bucket->slot[x] = _nil; + hak->symtab->bucket->slot[x] = _nil; tally--; } - HCL_ASSERT (hcl, tally >= 0); - HCL_ASSERT (hcl, tally <= HCL_SMOOI_MAX); - hcl->symtab->tally = HCL_SMOOI_TO_OOP(tally); + HAK_ASSERT (hak, tally >= 0); + HAK_ASSERT (hak, tally <= HAK_SMOOI_MAX); + hak->symtab->tally = HAK_SMOOI_TO_OOP(tally); } -hcl_oow_t hcl_getobjpayloadbytes (hcl_t* hcl, hcl_oop_t oop) +hak_oow_t hak_getobjpayloadbytes (hak_t* hak, hak_oop_t oop) { - hcl_oow_t nbytes_aligned; + hak_oow_t nbytes_aligned; - if (HCL_OBJ_GET_FLAGS_TRAILER(oop)) + if (HAK_OBJ_GET_FLAGS_TRAILER(oop)) { - hcl_oow_t nbytes; + hak_oow_t nbytes; /* only an OOP object can have the trailer. * @@ -760,17 +760,17 @@ hcl_oow_t hcl_getobjpayloadbytes (hcl_t* hcl, hcl_oop_t oop) * | Z | <-- if TRAILER is set, it is the number of bytes in the trailer * | | | | | */ - HCL_ASSERT (hcl, HCL_OBJ_GET_FLAGS_TYPE(oop) == HCL_OBJ_TYPE_OOP); - HCL_ASSERT (hcl, HCL_OBJ_GET_FLAGS_UNIT(oop) == HCL_SIZEOF(hcl_oow_t)); - HCL_ASSERT (hcl, HCL_OBJ_GET_FLAGS_EXTRA(oop) == 0); /* no 'extra' for an OOP object */ + HAK_ASSERT (hak, HAK_OBJ_GET_FLAGS_TYPE(oop) == HAK_OBJ_TYPE_OOP); + HAK_ASSERT (hak, HAK_OBJ_GET_FLAGS_UNIT(oop) == HAK_SIZEOF(hak_oow_t)); + HAK_ASSERT (hak, HAK_OBJ_GET_FLAGS_EXTRA(oop) == 0); /* no 'extra' for an OOP object */ - nbytes = HCL_OBJ_BYTESOF(oop) + HCL_SIZEOF(hcl_oow_t) + HCL_OBJ_GET_TRAILER_SIZE(oop); - nbytes_aligned = HCL_ALIGN(nbytes, HCL_SIZEOF(hcl_oop_t)); + nbytes = HAK_OBJ_BYTESOF(oop) + HAK_SIZEOF(hak_oow_t) + HAK_OBJ_GET_TRAILER_SIZE(oop); + nbytes_aligned = HAK_ALIGN(nbytes, HAK_SIZEOF(hak_oop_t)); } else { /* calculate the payload size in bytes */ - nbytes_aligned = HCL_ALIGN(HCL_OBJ_BYTESOF(oop), HCL_SIZEOF(hcl_oop_t)); + nbytes_aligned = HAK_ALIGN(HAK_OBJ_BYTESOF(oop), HAK_SIZEOF(hak_oop_t)); } return nbytes_aligned; @@ -780,291 +780,291 @@ hcl_oow_t hcl_getobjpayloadbytes (hcl_t* hcl, hcl_oop_t oop) /* ----------------------------------------------------------------------- */ #if 0 -static HCL_INLINE void gc_ms_mark (hcl_t* hcl, hcl_oop_t oop) +static HAK_INLINE void gc_ms_mark (hak_t* hak, hak_oop_t oop) { - hcl_oow_t i, sz; + hak_oow_t i, sz; -#if defined(HCL_SUPPORT_GC_DURING_IGNITION) +#if defined(HAK_SUPPORT_GC_DURING_IGNITION) if (!oop) return; #endif - if (!HCL_OOP_IS_POINTER(oop)) return; - if (HCL_OBJ_GET_FLAGS_MOVED(oop)) return; /* already marked */ + if (!HAK_OOP_IS_POINTER(oop)) return; + if (HAK_OBJ_GET_FLAGS_MOVED(oop)) return; /* already marked */ - HCL_OBJ_SET_FLAGS_MOVED(oop, 1); /* mark */ + HAK_OBJ_SET_FLAGS_MOVED(oop, 1); /* mark */ - /*gc_ms_mark (hcl, (hcl_oop_t)HCL_OBJ_GET_CLASS(oop));*/ /* TODO: remove recursion */ + /*gc_ms_mark (hak, (hak_oop_t)HAK_OBJ_GET_CLASS(oop));*/ /* TODO: remove recursion */ - if (HCL_OBJ_GET_FLAGS_TYPE(oop) == HCL_OBJ_TYPE_OOP) + if (HAK_OBJ_GET_FLAGS_TYPE(oop) == HAK_OBJ_TYPE_OOP) { - hcl_oow_t size, i; + hak_oow_t size, i; /* is it really better to use a flag bit in the header to * determine that it is an instance of process? */ - if (HCL_UNLIKELY(HCL_OBJ_GET_FLAGS_PROC(oop))) + if (HAK_UNLIKELY(HAK_OBJ_GET_FLAGS_PROC(oop))) { /* the stack in a process object doesn't need to be * scanned in full. the slots above the stack pointer * are garbages. */ - size = HCL_PROCESS_NAMED_INSTVARS + HCL_OOP_TO_SMOOI(((hcl_oop_process_t)oop)->sp) + 1; - HCL_ASSERT (hcl, size <= HCL_OBJ_GET_SIZE(oop)); + size = HAK_PROCESS_NAMED_INSTVARS + HAK_OOP_TO_SMOOI(((hak_oop_process_t)oop)->sp) + 1; + HAK_ASSERT (hak, size <= HAK_OBJ_GET_SIZE(oop)); } else { - size = HCL_OBJ_GET_SIZE(oop); + size = HAK_OBJ_GET_SIZE(oop); } for (i = 0; i < size; i++) { - hcl_oop_t tmp = HCL_OBJ_GET_OOP_VAL(oop, i); - if (HCL_OOP_IS_POINTER(tmp)) gc_ms_mark (hcl, tmp); /* TODO: no resursion */ + hak_oop_t tmp = HAK_OBJ_GET_OOP_VAL(oop, i); + if (HAK_OOP_IS_POINTER(tmp)) gc_ms_mark (hak, tmp); /* TODO: no resursion */ } } } #else -static HCL_INLINE void gc_ms_mark_object (hcl_t* hcl, hcl_oop_t oop) +static HAK_INLINE void gc_ms_mark_object (hak_t* hak, hak_oop_t oop) { -#if defined(HCL_SUPPORT_GC_DURING_IGNITION) +#if defined(HAK_SUPPORT_GC_DURING_IGNITION) if (!oop) return; #endif - if (!HCL_OOP_IS_POINTER(oop) || HCL_OBJ_GET_FLAGS_MOVED(oop)) return; /* non-pointer or already marked */ + if (!HAK_OOP_IS_POINTER(oop) || HAK_OBJ_GET_FLAGS_MOVED(oop)) return; /* non-pointer or already marked */ - HCL_OBJ_SET_FLAGS_MOVED(oop, 1); /* mark */ - HCL_ASSERT (hcl, hcl->gci.stack.len < hcl->gci.stack.capa); - hcl->gci.stack.ptr[hcl->gci.stack.len++] = oop; /* push */ - if (hcl->gci.stack.len > hcl->gci.stack.max) hcl->gci.stack.max = hcl->gci.stack.len; + HAK_OBJ_SET_FLAGS_MOVED(oop, 1); /* mark */ + HAK_ASSERT (hak, hak->gci.stack.len < hak->gci.stack.capa); + hak->gci.stack.ptr[hak->gci.stack.len++] = oop; /* push */ + if (hak->gci.stack.len > hak->gci.stack.max) hak->gci.stack.max = hak->gci.stack.len; } -static HCL_INLINE void gc_ms_scan_stack (hcl_t* hcl) +static HAK_INLINE void gc_ms_scan_stack (hak_t* hak) { - hcl_oop_t oop; + hak_oop_t oop; - while (hcl->gci.stack.len > 0) + while (hak->gci.stack.len > 0) { - oop = hcl->gci.stack.ptr[--hcl->gci.stack.len]; + oop = hak->gci.stack.ptr[--hak->gci.stack.len]; - gc_ms_mark_object (hcl, (hcl_oop_t)HCL_OBJ_GET_CLASS(oop)); + gc_ms_mark_object (hak, (hak_oop_t)HAK_OBJ_GET_CLASS(oop)); - if (HCL_OBJ_GET_FLAGS_TYPE(oop) == HCL_OBJ_TYPE_OOP) + if (HAK_OBJ_GET_FLAGS_TYPE(oop) == HAK_OBJ_TYPE_OOP) { - hcl_ooi_t i, ll; + hak_ooi_t i, ll; /* is it really better to use a flag bit in the header to * determine that it is an instance of process? */ - if (HCL_UNLIKELY(HCL_OBJ_GET_FLAGS_PROC(oop))) + if (HAK_UNLIKELY(HAK_OBJ_GET_FLAGS_PROC(oop))) { - hcl_oop_process_t proc; + hak_oop_process_t proc; - HCL_ASSERT (hcl, HCL_IS_PROCESS(hcl, oop)); + HAK_ASSERT (hak, HAK_IS_PROCESS(hak, oop)); /* the stack in a process object doesn't need to be * scanned in full. the slots above the stack pointer * are garbages. */ - proc = (hcl_oop_process_t)oop; + proc = (hak_oop_process_t)oop; /* the fixed part */ - ll = HCL_PROCESS_NAMED_INSTVARS; - for (i = 0; i < ll; i++) gc_ms_mark_object (hcl, HCL_OBJ_GET_OOP_VAL(oop, i)); + ll = HAK_PROCESS_NAMED_INSTVARS; + for (i = 0; i < ll; i++) gc_ms_mark_object (hak, HAK_OBJ_GET_OOP_VAL(oop, i)); /* stack */ - ll = HCL_OOP_TO_SMOOI(proc->sp); - HCL_ASSERT (hcl, ll < (hcl_ooi_t)(HCL_OBJ_GET_SIZE(oop) - HCL_PROCESS_NAMED_INSTVARS)); - for (i = 0; i <= ll; i++) gc_ms_mark_object (hcl, proc->slot[i]); + ll = HAK_OOP_TO_SMOOI(proc->sp); + HAK_ASSERT (hak, ll < (hak_ooi_t)(HAK_OBJ_GET_SIZE(oop) - HAK_PROCESS_NAMED_INSTVARS)); + for (i = 0; i <= ll; i++) gc_ms_mark_object (hak, proc->slot[i]); /* exception stack */ - ll = HCL_OOP_TO_SMOOI(proc->exsp); - HCL_ASSERT (hcl, ll < (hcl_ooi_t)(HCL_OBJ_GET_SIZE(oop) - HCL_PROCESS_NAMED_INSTVARS)); - for (i = HCL_OOP_TO_SMOOI(proc->st) + 1; i <= ll; i++) gc_ms_mark_object (hcl, proc->slot[i]); + ll = HAK_OOP_TO_SMOOI(proc->exsp); + HAK_ASSERT (hak, ll < (hak_ooi_t)(HAK_OBJ_GET_SIZE(oop) - HAK_PROCESS_NAMED_INSTVARS)); + for (i = HAK_OOP_TO_SMOOI(proc->st) + 1; i <= ll; i++) gc_ms_mark_object (hak, proc->slot[i]); /* class stack */ - ll = HCL_OOP_TO_SMOOI(proc->clsp); - HCL_ASSERT (hcl, ll < (hcl_ooi_t)(HCL_OBJ_GET_SIZE(oop) - HCL_PROCESS_NAMED_INSTVARS)); - for (i = HCL_OOP_TO_SMOOI(proc->exst) + 1; i <= ll; i++) gc_ms_mark_object (hcl, proc->slot[i]); + ll = HAK_OOP_TO_SMOOI(proc->clsp); + HAK_ASSERT (hak, ll < (hak_ooi_t)(HAK_OBJ_GET_SIZE(oop) - HAK_PROCESS_NAMED_INSTVARS)); + for (i = HAK_OOP_TO_SMOOI(proc->exst) + 1; i <= ll; i++) gc_ms_mark_object (hak, proc->slot[i]); } else { - ll = HCL_OBJ_GET_SIZE(oop); - for (i = 0; i < ll; i++) gc_ms_mark_object (hcl, HCL_OBJ_GET_OOP_VAL(oop, i)); + ll = HAK_OBJ_GET_SIZE(oop); + for (i = 0; i < ll; i++) gc_ms_mark_object (hak, HAK_OBJ_GET_OOP_VAL(oop, i)); } } } } -static HCL_INLINE void gc_ms_mark (hcl_t* hcl, hcl_oop_t oop) +static HAK_INLINE void gc_ms_mark (hak_t* hak, hak_oop_t oop) { - gc_ms_mark_object (hcl, oop); - gc_ms_scan_stack (hcl); + gc_ms_mark_object (hak, oop); + gc_ms_scan_stack (hak); } #endif -static HCL_INLINE void gc_ms_mark_roots (hcl_t* hcl) +static HAK_INLINE void gc_ms_mark_roots (hak_t* hak) { - hcl_oow_t i; + hak_oow_t i; #if defined(ENABLE_GCFIN) - hcl_oow_t gcfin_count; + hak_oow_t gcfin_count; #endif - hcl_cb_t* cb; + hak_cb_t* cb; -#if defined(HCL_PROFILE_VM) +#if defined(HAK_PROFILE_VM) struct rusage ru; - hcl_ntime_t rut; + hak_ntime_t rut; getrusage(RUSAGE_SELF, &ru); - HCL_INIT_NTIME (&rut, ru.ru_utime.tv_sec, HCL_USEC_TO_NSEC(ru.ru_utime.tv_usec)); + HAK_INIT_NTIME (&rut, ru.ru_utime.tv_sec, HAK_USEC_TO_NSEC(ru.ru_utime.tv_usec)); #endif - if (hcl->processor && hcl->processor->active) + if (hak->processor && hak->processor->active) { - HCL_ASSERT (hcl, (hcl_oop_t)hcl->processor != hcl->_nil); - HCL_ASSERT (hcl, (hcl_oop_t)hcl->processor->active != hcl->_nil); + HAK_ASSERT (hak, (hak_oop_t)hak->processor != hak->_nil); + HAK_ASSERT (hak, (hak_oop_t)hak->processor->active != hak->_nil); /* commit the stack pointer to the active process because * gc needs the correct stack pointer for a process object */ - hcl->processor->active->sp = HCL_SMOOI_TO_OOP(hcl->sp); + hak->processor->active->sp = HAK_SMOOI_TO_OOP(hak->sp); } - gc_ms_mark (hcl, hcl->_undef); - gc_ms_mark (hcl, hcl->_nil); - gc_ms_mark (hcl, hcl->_true); - gc_ms_mark (hcl, hcl->_false); + gc_ms_mark (hak, hak->_undef); + gc_ms_mark (hak, hak->_nil); + gc_ms_mark (hak, hak->_true); + gc_ms_mark (hak, hak->_false); - for (i = 0; i < HCL_COUNTOF(kernel_classes); i++) + for (i = 0; i < HAK_COUNTOF(kernel_classes); i++) { - gc_ms_mark (hcl, *(hcl_oop_t*)((hcl_uint8_t*)hcl + kernel_classes[i].offset)); + gc_ms_mark (hak, *(hak_oop_t*)((hak_uint8_t*)hak + kernel_classes[i].offset)); } - gc_ms_mark (hcl, (hcl_oop_t)hcl->sysdic); - gc_ms_mark (hcl, (hcl_oop_t)hcl->processor); - gc_ms_mark (hcl, (hcl_oop_t)hcl->nil_process); + gc_ms_mark (hak, (hak_oop_t)hak->sysdic); + gc_ms_mark (hak, (hak_oop_t)hak->processor); + gc_ms_mark (hak, (hak_oop_t)hak->nil_process); - for (i = 0; i < hcl->code.lit.len; i++) + for (i = 0; i < hak->code.lit.len; i++) { /* the literal array ia a NGC object. but the literal objects * pointed by the elements of this array must be gabage-collected. */ - gc_ms_mark (hcl, ((hcl_oop_oop_t)hcl->code.lit.arr)->slot[i]); + gc_ms_mark (hak, ((hak_oop_oop_t)hak->code.lit.arr)->slot[i]); } - gc_ms_mark (hcl, hcl->p.e); + gc_ms_mark (hak, hak->p.e); - for (i = 0; i < hcl->sem_list_count; i++) + for (i = 0; i < hak->sem_list_count; i++) { - gc_ms_mark (hcl, (hcl_oop_t)hcl->sem_list[i]); + gc_ms_mark (hak, (hak_oop_t)hak->sem_list[i]); } - for (i = 0; i < hcl->sem_heap_count; i++) + for (i = 0; i < hak->sem_heap_count; i++) { - gc_ms_mark (hcl, (hcl_oop_t)hcl->sem_heap[i]); + gc_ms_mark (hak, (hak_oop_t)hak->sem_heap[i]); } - for (i = 0; i < hcl->sem_io_tuple_count; i++) + for (i = 0; i < hak->sem_io_tuple_count; i++) { - if (hcl->sem_io_tuple[i].sem[HCL_SEMAPHORE_IO_TYPE_INPUT]) - gc_ms_mark (hcl, (hcl_oop_t)hcl->sem_io_tuple[i].sem[HCL_SEMAPHORE_IO_TYPE_INPUT]); - if (hcl->sem_io_tuple[i].sem[HCL_SEMAPHORE_IO_TYPE_OUTPUT]) - gc_ms_mark (hcl, (hcl_oop_t)hcl->sem_io_tuple[i].sem[HCL_SEMAPHORE_IO_TYPE_OUTPUT]); + if (hak->sem_io_tuple[i].sem[HAK_SEMAPHORE_IO_TYPE_INPUT]) + gc_ms_mark (hak, (hak_oop_t)hak->sem_io_tuple[i].sem[HAK_SEMAPHORE_IO_TYPE_INPUT]); + if (hak->sem_io_tuple[i].sem[HAK_SEMAPHORE_IO_TYPE_OUTPUT]) + gc_ms_mark (hak, (hak_oop_t)hak->sem_io_tuple[i].sem[HAK_SEMAPHORE_IO_TYPE_OUTPUT]); } #if defined(ENABLE_GCFIN) - gc_ms_mark (hcl, (hcl_oop_t)hcl->sem_gcfin); + gc_ms_mark (hak, (hak_oop_t)hak->sem_gcfin); #endif - for (i = 0; i < hcl->proc_map_capa; i++) + for (i = 0; i < hak->proc_map_capa; i++) { - gc_ms_mark (hcl, hcl->proc_map[i]); + gc_ms_mark (hak, hak->proc_map[i]); } - for (i = 0; i < hcl->volat_count; i++) + for (i = 0; i < hak->volat_count; i++) { - gc_ms_mark (hcl, *hcl->volat_stack[i]); + gc_ms_mark (hak, *hak->volat_stack[i]); } - if (hcl->initial_context) gc_ms_mark (hcl, (hcl_oop_t)hcl->initial_context); - if (hcl->active_context) gc_ms_mark (hcl, (hcl_oop_t)hcl->active_context); - if (hcl->initial_function) gc_ms_mark (hcl, (hcl_oop_t)hcl->initial_function); - if (hcl->active_function) gc_ms_mark (hcl, (hcl_oop_t)hcl->active_function); + if (hak->initial_context) gc_ms_mark (hak, (hak_oop_t)hak->initial_context); + if (hak->active_context) gc_ms_mark (hak, (hak_oop_t)hak->active_context); + if (hak->initial_function) gc_ms_mark (hak, (hak_oop_t)hak->initial_function); + if (hak->active_function) gc_ms_mark (hak, (hak_oop_t)hak->active_function); - if (hcl->last_retv) gc_ms_mark (hcl, hcl->last_retv); + if (hak->last_retv) gc_ms_mark (hak, hak->last_retv); - /*hcl_rbt_walk (&hcl->modtab, call_module_gc, hcl); */ + /*hak_rbt_walk (&hak->modtab, call_module_gc, hak); */ - for (cb = hcl->cblist; cb; cb = cb->next) + for (cb = hak->cblist; cb; cb = cb->next) { - if (cb->on_gc) cb->on_gc (hcl); + if (cb->on_gc) cb->on_gc (hak); } #if defined(ENABLE_GCFIN) - gcfin_count = move_finalizable_objects(hcl); /* mark finalizable objects */ + gcfin_count = move_finalizable_objects(hak); /* mark finalizable objects */ #endif - if (hcl->symtab) + if (hak->symtab) { - compact_symbol_table (hcl, hcl->_nil); /* delete symbol table entries that are not marked */ + compact_symbol_table (hak, hak->_nil); /* delete symbol table entries that are not marked */ #if 0 - gc_ms_mark (hcl, (hcl_oop_t)hcl->symtab); /* mark the symbol table */ + gc_ms_mark (hak, (hak_oop_t)hak->symtab); /* mark the symbol table */ #else - HCL_OBJ_SET_FLAGS_MOVED(hcl->symtab, 1); /* mark */ - HCL_OBJ_SET_FLAGS_MOVED(hcl->symtab->bucket, 1); /* mark */ + HAK_OBJ_SET_FLAGS_MOVED(hak->symtab, 1); /* mark */ + HAK_OBJ_SET_FLAGS_MOVED(hak->symtab->bucket, 1); /* mark */ #endif } #if defined(ENABLE_GCFIN) - if (gcfin_count > 0) hcl->sem_gcfin_sigreq = 1; + if (gcfin_count > 0) hak->sem_gcfin_sigreq = 1; #endif - if (hcl->active_function) hcl->active_code = HCL_FUNCTION_GET_CODE_BYTE(hcl->active_function); /* update hcl->active_code */ + if (hak->active_function) hak->active_code = HAK_FUNCTION_GET_CODE_BYTE(hak->active_function); /* update hak->active_code */ -#if defined(HCL_PROFILE_VM) +#if defined(HAK_PROFILE_VM) getrusage(RUSAGE_SELF, &ru); - HCL_SUB_NTIME_SNS (&rut, &rut, ru.ru_utime.tv_sec, HCL_USEC_TO_NSEC(ru.ru_utime.tv_usec)); - HCL_SUB_NTIME (&hcl->gci.stat.mark, &hcl->gci.stat.mark, &rut); /* do subtraction because rut is negative */ + HAK_SUB_NTIME_SNS (&rut, &rut, ru.ru_utime.tv_sec, HAK_USEC_TO_NSEC(ru.ru_utime.tv_usec)); + HAK_SUB_NTIME (&hak->gci.stat.mark, &hak->gci.stat.mark, &rut); /* do subtraction because rut is negative */ #endif } -void hcl_gc_ms_sweep_lazy (hcl_t* hcl, hcl_oow_t allocsize) +void hak_gc_ms_sweep_lazy (hak_t* hak, hak_oow_t allocsize) { - hcl_gchdr_t* curr, * next, * prev; - hcl_oop_t obj; - hcl_oow_t freed_size; + hak_gchdr_t* curr, * next, * prev; + hak_oop_t obj; + hak_oow_t freed_size; -#if defined(HCL_PROFILE_VM) +#if defined(HAK_PROFILE_VM) struct rusage ru; - hcl_ntime_t rut; + hak_ntime_t rut; getrusage(RUSAGE_SELF, &ru); - HCL_INIT_NTIME (&rut, ru.ru_utime.tv_sec, HCL_USEC_TO_NSEC(ru.ru_utime.tv_usec)); + HAK_INIT_NTIME (&rut, ru.ru_utime.tv_sec, HAK_USEC_TO_NSEC(ru.ru_utime.tv_usec)); #endif - if (!hcl->gci.ls.curr) goto done; + if (!hak->gci.ls.curr) goto done; freed_size = 0; - prev = hcl->gci.ls.prev; - curr = hcl->gci.ls.curr; + prev = hak->gci.ls.prev; + curr = hak->gci.ls.curr; while (curr) { next = curr->next; - obj = (hcl_oop_t)(curr + 1); + obj = (hak_oop_t)(curr + 1); - if (HCL_OBJ_GET_FLAGS_MOVED(obj)) /* if marked */ + if (HAK_OBJ_GET_FLAGS_MOVED(obj)) /* if marked */ { - HCL_OBJ_SET_FLAGS_MOVED (obj, 0); /* unmark */ + HAK_OBJ_SET_FLAGS_MOVED (obj, 0); /* unmark */ prev = curr; } else { - hcl_oow_t objsize; + hak_oow_t objsize; if (prev) prev->next = next; - else hcl->gci.b = next; + else hak->gci.b = next; - objsize = HCL_SIZEOF(hcl_obj_t) + hcl_getobjpayloadbytes(hcl, obj); + objsize = HAK_SIZEOF(hak_obj_t) + hak_getobjpayloadbytes(hak, obj); freed_size += objsize; - hcl->gci.bsz -= objsize; - hcl_freeheapmem(hcl, hcl->heap, curr); /* destroy */ + hak->gci.bsz -= objsize; + hak_freeheapmem(hak, hak->heap, curr); /* destroy */ /*if (freed_size > allocsize)*/ /* TODO: can it secure large enough space? */ if (objsize == allocsize) { - hcl->gci.ls.prev = prev; - hcl->gci.ls.curr = next; /* let the next lazy sweeping begin at this point */ + hak->gci.ls.prev = prev; + hak->gci.ls.curr = next; /* let the next lazy sweeping begin at this point */ goto done; } } @@ -1072,96 +1072,96 @@ void hcl_gc_ms_sweep_lazy (hcl_t* hcl, hcl_oow_t allocsize) curr = next; } - hcl->gci.ls.curr = HCL_NULL; + hak->gci.ls.curr = HAK_NULL; done: -#if defined(HCL_PROFILE_VM) +#if defined(HAK_PROFILE_VM) getrusage(RUSAGE_SELF, &ru); - HCL_SUB_NTIME_SNS(&rut, &rut, ru.ru_utime.tv_sec, HCL_USEC_TO_NSEC(ru.ru_utime.tv_usec)); - HCL_SUB_NTIME(&hcl->gci.stat.sweep, &hcl->gci.stat.sweep, &rut); /* do subtraction because rut is negative */ + HAK_SUB_NTIME_SNS(&rut, &rut, ru.ru_utime.tv_sec, HAK_USEC_TO_NSEC(ru.ru_utime.tv_usec)); + HAK_SUB_NTIME(&hak->gci.stat.sweep, &hak->gci.stat.sweep, &rut); /* do subtraction because rut is negative */ #endif return; } -static HCL_INLINE void gc_ms_sweep (hcl_t* hcl) +static HAK_INLINE void gc_ms_sweep (hak_t* hak) { - hcl_gchdr_t* curr, * next, * prev; - hcl_oop_t obj; + hak_gchdr_t* curr, * next, * prev; + hak_oop_t obj; -#if defined(HCL_PROFILE_VM) +#if defined(HAK_PROFILE_VM) struct rusage ru; - hcl_ntime_t rut; + hak_ntime_t rut; getrusage(RUSAGE_SELF, &ru); - HCL_INIT_NTIME(&rut, ru.ru_utime.tv_sec, HCL_USEC_TO_NSEC(ru.ru_utime.tv_usec)); + HAK_INIT_NTIME(&rut, ru.ru_utime.tv_sec, HAK_USEC_TO_NSEC(ru.ru_utime.tv_usec)); #endif - prev = HCL_NULL; - curr = hcl->gci.b; + prev = HAK_NULL; + curr = hak->gci.b; while (curr) { next = curr->next; - obj = (hcl_oop_t)(curr + 1); + obj = (hak_oop_t)(curr + 1); - if (HCL_OBJ_GET_FLAGS_MOVED(obj)) /* if marked */ + if (HAK_OBJ_GET_FLAGS_MOVED(obj)) /* if marked */ { - HCL_OBJ_SET_FLAGS_MOVED(obj, 0); /* unmark */ + HAK_OBJ_SET_FLAGS_MOVED(obj, 0); /* unmark */ prev = curr; } else { if (prev) prev->next = next; - else hcl->gci.b = next; + else hak->gci.b = next; - hcl->gci.bsz -= HCL_SIZEOF(hcl_obj_t) + hcl_getobjpayloadbytes(hcl, obj); - hcl_freeheapmem(hcl, hcl->heap, curr); /* destroy */ + hak->gci.bsz -= HAK_SIZEOF(hak_obj_t) + hak_getobjpayloadbytes(hak, obj); + hak_freeheapmem(hak, hak->heap, curr); /* destroy */ } curr = next; } - hcl->gci.ls.curr = HCL_NULL; + hak->gci.ls.curr = HAK_NULL; -#if defined(HCL_PROFILE_VM) +#if defined(HAK_PROFILE_VM) getrusage(RUSAGE_SELF, &ru); - HCL_SUB_NTIME_SNS(&rut, &rut, ru.ru_utime.tv_sec, HCL_USEC_TO_NSEC(ru.ru_utime.tv_usec)); - HCL_SUB_NTIME(&hcl->gci.stat.sweep, &hcl->gci.stat.sweep, &rut); /* do subtraction because rut is negative */ + HAK_SUB_NTIME_SNS(&rut, &rut, ru.ru_utime.tv_sec, HAK_USEC_TO_NSEC(ru.ru_utime.tv_usec)); + HAK_SUB_NTIME(&hak->gci.stat.sweep, &hak->gci.stat.sweep, &rut); /* do subtraction because rut is negative */ #endif } -void hcl_gc (hcl_t* hcl, int full) +void hak_gc (hak_t* hak, int full) { - if (hcl->gci.lazy_sweep) hcl_gc_ms_sweep_lazy (hcl, HCL_TYPE_MAX(hcl_oow_t)); + if (hak->gci.lazy_sweep) hak_gc_ms_sweep_lazy (hak, HAK_TYPE_MAX(hak_oow_t)); - HCL_LOG1 (hcl, HCL_LOG_GC | HCL_LOG_INFO, "Starting GC (mark-sweep) - gci.bsz = %zu\n", hcl->gci.bsz); + HAK_LOG1 (hak, HAK_LOG_GC | HAK_LOG_INFO, "Starting GC (mark-sweep) - gci.bsz = %zu\n", hak->gci.bsz); - hcl->gci.stack.len = 0; - /*hcl->gci.stack.max = 0;*/ - gc_ms_mark_roots (hcl); + hak->gci.stack.len = 0; + /*hak->gci.stack.max = 0;*/ + gc_ms_mark_roots (hak); - if (!full && hcl->gci.lazy_sweep) + if (!full && hak->gci.lazy_sweep) { /* set the lazy sweeping pointer to the head of the allocated blocks. - * hcl_allocbytes() updates hcl->gci.ls.prev if it is called while - * hcl->gci.ls.curr stays at hcl->gci.b */ - hcl->gci.ls.prev = HCL_NULL; - hcl->gci.ls.curr = hcl->gci.b; + * hak_allocbytes() updates hak->gci.ls.prev if it is called while + * hak->gci.ls.curr stays at hak->gci.b */ + hak->gci.ls.prev = HAK_NULL; + hak->gci.ls.curr = hak->gci.b; } else { - gc_ms_sweep (hcl); + gc_ms_sweep (hak); } - HCL_LOG2 (hcl, HCL_LOG_GC | HCL_LOG_INFO, "Finished GC (mark-sweep) - gci.bsz = %zu, gci.stack.max %zu\n", hcl->gci.bsz, hcl->gci.stack.max); + HAK_LOG2 (hak, HAK_LOG_GC | HAK_LOG_INFO, "Finished GC (mark-sweep) - gci.bsz = %zu, gci.stack.max %zu\n", hak->gci.bsz, hak->gci.stack.max); } -hcl_oop_t hcl_moveoop (hcl_t* hcl, hcl_oop_t oop) +hak_oop_t hak_moveoop (hak_t* hak, hak_oop_t oop) { - if (oop) gc_ms_mark (hcl, oop); + if (oop) gc_ms_mark (hak, oop); return oop; } #if 0 -void hcl_gc (hcl_t* hcl) +void hak_gc (hak_t* hak) { /* * move a referenced object to the new heap. @@ -1169,197 +1169,197 @@ void hcl_gc (hcl_t* hcl) * move objects pointed to by the fields to the new heap. * finally perform some tricky symbol table clean-up. */ - hcl_uint8_t* ptr; - hcl_heap_t* tmp; - hcl_oop_t old_nil; - hcl_oow_t i; - hcl_cb_t* cb; + hak_uint8_t* ptr; + hak_heap_t* tmp; + hak_oop_t old_nil; + hak_oow_t i; + hak_cb_t* cb; - if (hcl->active_context) + if (hak->active_context) { - HCL_ASSERT (hcl, (hcl_oop_t)hcl->processor != hcl->_nil); - HCL_ASSERT (hcl, (hcl_oop_t)hcl->processor->active != hcl->_nil); - HCL_ASSERT (hcl, HCL_IS_PROCESS(hcl, hcl->processor->active)); + HAK_ASSERT (hak, (hak_oop_t)hak->processor != hak->_nil); + HAK_ASSERT (hak, (hak_oop_t)hak->processor->active != hak->_nil); + HAK_ASSERT (hak, HAK_IS_PROCESS(hak, hak->processor->active)); /* commit the stack pointer to the active process */ - hcl->processor->active->sp = HCL_SMOOI_TO_OOP(hcl->sp); + hak->processor->active->sp = HAK_SMOOI_TO_OOP(hak->sp); /* commit the instruction pointer to the active context */ - hcl->active_context->ip = HCL_SMOOI_TO_OOP(hcl->ip); + hak->active_context->ip = HAK_SMOOI_TO_OOP(hak->ip); } - HCL_LOG4 (hcl, HCL_LOG_GC | HCL_LOG_INFO, + HAK_LOG4 (hak, HAK_LOG_GC | HAK_LOG_INFO, "Starting GC curheap base %p ptr %p newheap base %p ptr %p\n", - hcl->curheap->base, hcl->curheap->ptr, hcl->newheap->base, hcl->newheap->ptr); + hak->curheap->base, hak->curheap->ptr, hak->newheap->base, hak->newheap->ptr); /* TODO: allocate common objects like _nil and the root dictionary * in the permanant heap. minimize moving around */ - old_nil = hcl->_nil; + old_nil = hak->_nil; /* move _nil and the root object table */ - hcl->_undef = hcl_moveoop(hcl, hcl->_undef); - hcl->_nil = hcl_moveoop(hcl, hcl->_nil); - hcl->_true = hcl_moveoop(hcl, hcl->_true); - hcl->_false = hcl_moveoop(hcl, hcl->_false); + hak->_undef = hak_moveoop(hak, hak->_undef); + hak->_nil = hak_moveoop(hak, hak->_nil); + hak->_true = hak_moveoop(hak, hak->_true); + hak->_false = hak_moveoop(hak, hak->_false); - for (i = 0; i < HCL_COUNTOF(kernel_classes); i++) + for (i = 0; i < HAK_COUNTOF(kernel_classes); i++) { - hcl_oop_t tmp; - tmp = *(hcl_oop_t*)((hcl_uint8_t*)hcl + kernel_classes[i].offset); - tmp = hcl_moveoop(hcl, tmp); - *(hcl_oop_t*)((hcl_uint8_t*)hcl + kernel_classes[i].offset) = tmp; + hak_oop_t tmp; + tmp = *(hak_oop_t*)((hak_uint8_t*)hak + kernel_classes[i].offset); + tmp = hak_moveoop(hak, tmp); + *(hak_oop_t*)((hak_uint8_t*)hak + kernel_classes[i].offset) = tmp; } - hcl->sysdic = (hcl_oop_dic_t)hcl_moveoop(hcl, (hcl_oop_t)hcl->sysdic); - hcl->processor = (hcl_oop_process_scheduler_t)hcl_moveoop(hcl, (hcl_oop_t)hcl->processor); - hcl->nil_process = (hcl_oop_process_t)hcl_moveoop(hcl, (hcl_oop_t)hcl->nil_process); + hak->sysdic = (hak_oop_dic_t)hak_moveoop(hak, (hak_oop_t)hak->sysdic); + hak->processor = (hak_oop_process_scheduler_t)hak_moveoop(hak, (hak_oop_t)hak->processor); + hak->nil_process = (hak_oop_process_t)hak_moveoop(hak, (hak_oop_t)hak->nil_process); - for (i = 0; i < hcl->code.lit.len; i++) + for (i = 0; i < hak->code.lit.len; i++) { /* the literal array ia a NGC object. but the literal objects * pointed by the elements of this array must be gabage-collected. */ - ((hcl_oop_oop_t)hcl->code.lit.arr)->slot[i] = - hcl_moveoop(hcl, ((hcl_oop_oop_t)hcl->code.lit.arr)->slot[i]); + ((hak_oop_oop_t)hak->code.lit.arr)->slot[i] = + hak_moveoop(hak, ((hak_oop_oop_t)hak->code.lit.arr)->slot[i]); } - hcl->p.e = hcl_moveoop(hcl, hcl->p.e); + hak->p.e = hak_moveoop(hak, hak->p.e); - for (i = 0; i < hcl->sem_list_count; i++) + for (i = 0; i < hak->sem_list_count; i++) { - hcl->sem_list[i] = (hcl_oop_semaphore_t)hcl_moveoop(hcl, (hcl_oop_t)hcl->sem_list[i]); + hak->sem_list[i] = (hak_oop_semaphore_t)hak_moveoop(hak, (hak_oop_t)hak->sem_list[i]); } - for (i = 0; i < hcl->sem_heap_count; i++) + for (i = 0; i < hak->sem_heap_count; i++) { - hcl->sem_heap[i] = (hcl_oop_semaphore_t)hcl_moveoop(hcl, (hcl_oop_t)hcl->sem_heap[i]); + hak->sem_heap[i] = (hak_oop_semaphore_t)hak_moveoop(hak, (hak_oop_t)hak->sem_heap[i]); } - for (i = 0; i < hcl->sem_io_tuple_count; i++) + for (i = 0; i < hak->sem_io_tuple_count; i++) { - if (hcl->sem_io_tuple[i].sem[HCL_SEMAPHORE_IO_TYPE_INPUT]) - hcl->sem_io_tuple[i].sem[HCL_SEMAPHORE_IO_TYPE_INPUT] = (hcl_oop_semaphore_t)hcl_moveoop(hcl, (hcl_oop_t)hcl->sem_io_tuple[i].sem[HCL_SEMAPHORE_IO_TYPE_INPUT]); - if (hcl->sem_io_tuple[i].sem[HCL_SEMAPHORE_IO_TYPE_OUTPUT]) - hcl->sem_io_tuple[i].sem[HCL_SEMAPHORE_IO_TYPE_OUTPUT] = (hcl_oop_semaphore_t)hcl_moveoop(hcl, (hcl_oop_t)hcl->sem_io_tuple[i].sem[HCL_SEMAPHORE_IO_TYPE_OUTPUT]); + if (hak->sem_io_tuple[i].sem[HAK_SEMAPHORE_IO_TYPE_INPUT]) + hak->sem_io_tuple[i].sem[HAK_SEMAPHORE_IO_TYPE_INPUT] = (hak_oop_semaphore_t)hak_moveoop(hak, (hak_oop_t)hak->sem_io_tuple[i].sem[HAK_SEMAPHORE_IO_TYPE_INPUT]); + if (hak->sem_io_tuple[i].sem[HAK_SEMAPHORE_IO_TYPE_OUTPUT]) + hak->sem_io_tuple[i].sem[HAK_SEMAPHORE_IO_TYPE_OUTPUT] = (hak_oop_semaphore_t)hak_moveoop(hak, (hak_oop_t)hak->sem_io_tuple[i].sem[HAK_SEMAPHORE_IO_TYPE_OUTPUT]); } #if defined(ENABLE_GCFIN) - hcl->sem_gcfin = (hcl_oop_semaphore_t)hcl_moveoop(hcl, (hcl_oop_t)hcl->sem_gcfin); + hak->sem_gcfin = (hak_oop_semaphore_t)hak_moveoop(hak, (hak_oop_t)hak->sem_gcfin); #endif - for (i = 0; i < hcl->proc_map_capa; i++) + for (i = 0; i < hak->proc_map_capa; i++) { - hcl->proc_map[i] = hcl_moveoop(hcl, hcl->proc_map[i]); + hak->proc_map[i] = hak_moveoop(hak, hak->proc_map[i]); } - for (i = 0; i < hcl->volat_count; i++) + for (i = 0; i < hak->volat_count; i++) { - *hcl->volat_stack[i] = hcl_moveoop(hcl, *hcl->volat_stack[i]); + *hak->volat_stack[i] = hak_moveoop(hak, *hak->volat_stack[i]); } - if (hcl->initial_context) - hcl->initial_context = (hcl_oop_context_t)hcl_moveoop(hcl, (hcl_oop_t)hcl->initial_context); - if (hcl->active_context) - hcl->active_context = (hcl_oop_context_t)hcl_moveoop(hcl, (hcl_oop_t)hcl->active_context); - if (hcl->initial_function) - hcl->initial_function = (hcl_oop_function_t)hcl_moveoop(hcl, (hcl_oop_t)hcl->initial_function); - if (hcl->active_function) - hcl->active_function = (hcl_oop_function_t)hcl_moveoop(hcl, (hcl_oop_t)hcl->active_function); + if (hak->initial_context) + hak->initial_context = (hak_oop_context_t)hak_moveoop(hak, (hak_oop_t)hak->initial_context); + if (hak->active_context) + hak->active_context = (hak_oop_context_t)hak_moveoop(hak, (hak_oop_t)hak->active_context); + if (hak->initial_function) + hak->initial_function = (hak_oop_function_t)hak_moveoop(hak, (hak_oop_t)hak->initial_function); + if (hak->active_function) + hak->active_function = (hak_oop_function_t)hak_moveoop(hak, (hak_oop_t)hak->active_function); - if (hcl->last_retv) hcl->last_retv = hcl_moveoop(hcl, hcl->last_retv); + if (hak->last_retv) hak->last_retv = hak_moveoop(hak, hak->last_retv); - for (cb = hcl->cblist; cb; cb = cb->next) + for (cb = hak->cblist; cb; cb = cb->next) { - if (cb->gc) cb->gc (hcl); + if (cb->gc) cb->gc (hak); } /* scan the new heap to move referenced objects */ - ptr = (hcl_uint8_t*)HCL_ALIGN((hcl_uintptr_t)hcl->newheap->base, HCL_SIZEOF(hcl_oop_t)); - ptr = scan_new_heap(hcl, ptr); + ptr = (hak_uint8_t*)HAK_ALIGN((hak_uintptr_t)hak->newheap->base, HAK_SIZEOF(hak_oop_t)); + ptr = scan_new_heap(hak, ptr); /* traverse the symbol table for unreferenced symbols. * if the symbol has not moved to the new heap, the symbol * is not referenced by any other objects than the symbol * table itself */ - compact_symbol_table (hcl, old_nil); + compact_symbol_table (hak, old_nil); /* move the symbol table itself */ - hcl->symtab = (hcl_oop_dic_t)hcl_moveoop(hcl, (hcl_oop_t)hcl->symtab); + hak->symtab = (hak_oop_dic_t)hak_moveoop(hak, (hak_oop_t)hak->symtab); /* scan the new heap again from the end position of * the previous scan to move referenced objects by * the symbol table. */ - ptr = scan_new_heap(hcl, ptr); + ptr = scan_new_heap(hak, ptr); /* the contents of the current heap is not needed any more. * reset the upper bound to the base. don't forget to align the heap - * pointer to the OOP size. See hcl_makeheap() also */ - hcl->curheap->ptr = (hcl_uint8_t*)HCL_ALIGN(((hcl_uintptr_t)hcl->curheap->base), HCL_SIZEOF(hcl_oop_t)); + * pointer to the OOP size. See hak_makeheap() also */ + hak->curheap->ptr = (hak_uint8_t*)HAK_ALIGN(((hak_uintptr_t)hak->curheap->base), HAK_SIZEOF(hak_oop_t)); /* swap the current heap and old heap */ - tmp = hcl->curheap; - hcl->curheap = hcl->newheap; - hcl->newheap = tmp; + tmp = hak->curheap; + hak->curheap = hak->newheap; + hak->newheap = tmp; /* - if (hcl->symtab && HCL_LOG_ENABLED(hcl, HCL_LOG_GC | HCL_LOG_DEBUG)) + if (hak->symtab && HAK_LOG_ENABLED(hak, HAK_LOG_GC | HAK_LOG_DEBUG)) { - hcl_oow_t index; - hcl_oop_oop_t buc; - HCL_LOG0 (hcl, HCL_LOG_GC | HCL_LOG_DEBUG, "--------- SURVIVING SYMBOLS IN GC ----------\n"); - buc = (hcl_oop_oop_t) hcl->symtab->bucket; - for (index = 0; index < HCL_OBJ_GET_SIZE(buc); index++) + hak_oow_t index; + hak_oop_oop_t buc; + HAK_LOG0 (hak, HAK_LOG_GC | HAK_LOG_DEBUG, "--------- SURVIVING SYMBOLS IN GC ----------\n"); + buc = (hak_oop_oop_t) hak->symtab->bucket; + for (index = 0; index < HAK_OBJ_GET_SIZE(buc); index++) { - if ((hcl_oop_t)buc->slot[index] != hcl->_nil) + if ((hak_oop_t)buc->slot[index] != hak->_nil) { - HCL_LOG1 (hcl, HCL_LOG_GC | HCL_LOG_DEBUG, "\t%O\n", buc->slot[index]); + HAK_LOG1 (hak, HAK_LOG_GC | HAK_LOG_DEBUG, "\t%O\n", buc->slot[index]); } } - HCL_LOG0 (hcl, HCL_LOG_GC | HCL_LOG_DEBUG, "--------------------------------------------\n"); + HAK_LOG0 (hak, HAK_LOG_GC | HAK_LOG_DEBUG, "--------------------------------------------\n"); } */ - if (hcl->active_function) hcl->active_code = HCL_FUNCTION_GET_CODE_BYTE(hcl->active_function); /* update hcl->active_code */ + if (hak->active_function) hak->active_code = HAK_FUNCTION_GET_CODE_BYTE(hak->active_function); /* update hak->active_code */ /* TODO: include some gc statstics like number of live objects, gc performance, etc */ - HCL_LOG4 (hcl, HCL_LOG_GC | HCL_LOG_INFO, + HAK_LOG4 (hak, HAK_LOG_GC | HAK_LOG_INFO, "Finished GC curheap base %p ptr %p newheap base %p ptr %p\n", - hcl->curheap->base, hcl->curheap->ptr, hcl->newheap->base, hcl->newheap->ptr); + hak->curheap->base, hak->curheap->ptr, hak->newheap->base, hak->newheap->ptr); } #endif -void hcl_pushvolat (hcl_t* hcl, hcl_oop_t* oop_ptr) +void hak_pushvolat (hak_t* hak, hak_oop_t* oop_ptr) { /* if you have too many temporaries pushed, something must be wrong. * change your code not to exceede the stack limit */ - HCL_ASSERT (hcl, hcl->volat_count < HCL_COUNTOF(hcl->volat_stack)); - hcl->volat_stack[hcl->volat_count++] = oop_ptr; + HAK_ASSERT (hak, hak->volat_count < HAK_COUNTOF(hak->volat_stack)); + hak->volat_stack[hak->volat_count++] = oop_ptr; } -void hcl_popvolat (hcl_t* hcl) +void hak_popvolat (hak_t* hak) { - HCL_ASSERT (hcl, hcl->volat_count > 0); - hcl->volat_count--; + HAK_ASSERT (hak, hak->volat_count > 0); + hak->volat_count--; } -void hcl_popvolats (hcl_t* hcl, hcl_oow_t count) +void hak_popvolats (hak_t* hak, hak_oow_t count) { - HCL_ASSERT (hcl, hcl->volat_count >= count); - hcl->volat_count -= count; + HAK_ASSERT (hak, hak->volat_count >= count); + hak->volat_count -= count; } -hcl_oop_t hcl_shallowcopy (hcl_t* hcl, hcl_oop_t oop) +hak_oop_t hak_shallowcopy (hak_t* hak, hak_oop_t oop) { - if (HCL_OOP_IS_POINTER(oop) && HCL_OBJ_GET_CLASS(oop) != (hcl_oop_t)hcl->c_symbol) + if (HAK_OOP_IS_POINTER(oop) && HAK_OBJ_GET_CLASS(oop) != (hak_oop_t)hak->c_symbol) { - hcl_oop_t z; - hcl_oow_t total_bytes; + hak_oop_t z; + hak_oow_t total_bytes; - total_bytes = HCL_SIZEOF(hcl_obj_t) + hcl_getobjpayloadbytes(hcl, oop); + total_bytes = HAK_SIZEOF(hak_obj_t) + hak_getobjpayloadbytes(hak, oop); - hcl_pushvolat (hcl, &oop); - z = (hcl_oop_t)hcl_allocbytes(hcl, total_bytes); - hcl_popvolat(hcl); + hak_pushvolat (hak, &oop); + z = (hak_oop_t)hak_allocbytes(hak, total_bytes); + hak_popvolat(hak); - HCL_MEMCPY (z, oop, total_bytes); + HAK_MEMCPY (z, oop, total_bytes); return z; } @@ -1372,76 +1372,76 @@ hcl_oop_t hcl_shallowcopy (hcl_t* hcl, hcl_oop_t oop) * BOOTSTRAPPER * ----------------------------------------------------------------------- */ -static hcl_oop_class_t alloc_kernel_class (hcl_t* hcl, int class_flags, hcl_oow_t num_classvars, hcl_oow_t spec, hcl_ooi_t nivars_super, int ibrand) +static hak_oop_class_t alloc_kernel_class (hak_t* hak, int class_flags, hak_oow_t num_classvars, hak_oow_t spec, hak_ooi_t nivars_super, int ibrand) { - hcl_oop_class_t c; - hcl_ooi_t cspec; + hak_oop_class_t c; + hak_ooi_t cspec; - c = (hcl_oop_class_t)hcl_allocoopobj(hcl, HCL_CLASS_NAMED_INSTVARS + num_classvars); - if (HCL_UNLIKELY(!c)) return HCL_NULL; + c = (hak_oop_class_t)hak_allocoopobj(hak, HAK_CLASS_NAMED_INSTVARS + num_classvars); + if (HAK_UNLIKELY(!c)) return HAK_NULL; - HCL_OBJ_SET_FLAGS_KERNEL (c, HCL_OBJ_FLAGS_KERNEL_IMMATURE); + HAK_OBJ_SET_FLAGS_KERNEL (c, HAK_OBJ_FLAGS_KERNEL_IMMATURE); cspec = kernel_classes[KCI_CLASS].class_spec_flags; - if (HCL_CLASS_SPEC_IS_IMMUTABLE(cspec)) HCL_OBJ_SET_FLAGS_RDONLY (c, 1); /* just for completeness of code. will never be true as it's not defined in the kernel class info table */ + if (HAK_CLASS_SPEC_IS_IMMUTABLE(cspec)) HAK_OBJ_SET_FLAGS_RDONLY (c, 1); /* just for completeness of code. will never be true as it's not defined in the kernel class info table */ #if 0 /* TODO extend the flags and uncomment this part */ - if (HCL_CLASS_SPEC_IS_UNCOPYABLE(cspec)) HCL_OBJ_SET_FLAGS_UNCOPYABLE (c, 1); /* class itself is uncopyable */ + if (HAK_CLASS_SPEC_IS_UNCOPYABLE(cspec)) HAK_OBJ_SET_FLAGS_UNCOPYABLE (c, 1); /* class itself is uncopyable */ #endif - HCL_OBJ_SET_CLASS (c, (hcl_oop_t)hcl->c_class); - c->spec = HCL_SMOOI_TO_OOP(spec); - c->selfspec = HCL_SMOOI_TO_OOP(HCL_CLASS_SELFSPEC_MAKE(num_classvars, 0, class_flags)); - c->nivars_super = HCL_SMOOI_TO_OOP(nivars_super); /* TODO: encode it into spec? */ - c->ibrand = HCL_SMOOI_TO_OOP(ibrand); + HAK_OBJ_SET_CLASS (c, (hak_oop_t)hak->c_class); + c->spec = HAK_SMOOI_TO_OOP(spec); + c->selfspec = HAK_SMOOI_TO_OOP(HAK_CLASS_SELFSPEC_MAKE(num_classvars, 0, class_flags)); + c->nivars_super = HAK_SMOOI_TO_OOP(nivars_super); /* TODO: encode it into spec? */ + c->ibrand = HAK_SMOOI_TO_OOP(ibrand); return c; } -static int ignite_1 (hcl_t* hcl) +static int ignite_1 (hak_t* hak) { - hcl_oow_t i; + hak_oow_t i; /* * Create fundamental class objects with some fields mis-initialized yet. * Such fields include 'superclass', 'subclasses', 'name', etc. */ - HCL_ASSERT (hcl, hcl->_nil != HCL_NULL); - HCL_ASSERT (hcl, HCL_OBJ_GET_CLASS(hcl->_nil) == HCL_NULL); + HAK_ASSERT (hak, hak->_nil != HAK_NULL); + HAK_ASSERT (hak, HAK_OBJ_GET_CLASS(hak->_nil) == HAK_NULL); - HCL_ASSERT (hcl, hcl->c_class == HCL_NULL); + HAK_ASSERT (hak, hak->c_class == HAK_NULL); /* -------------------------------------------------------------- * Class * The instance of Class can have indexed instance variables * which are actually class variables. * -------------------------------------------------------------- */ - if (HCL_LIKELY(!hcl->c_class)) + if (HAK_LIKELY(!hak->c_class)) { - HCL_ASSERT (hcl, kernel_classes[KCI_CLASS].superclass_kci >= 0); - hcl->c_class = alloc_kernel_class( - hcl, + HAK_ASSERT (hak, kernel_classes[KCI_CLASS].superclass_kci >= 0); + hak->c_class = alloc_kernel_class( + hak, kernel_classes[KCI_CLASS].class_flags, kernel_classes[KCI_CLASS].class_ncvars, - HCL_CLASS_SPEC_MAKE(kernel_classes[KCI_CLASS].class_spec_nivars, + HAK_CLASS_SPEC_MAKE(kernel_classes[KCI_CLASS].class_spec_nivars, kernel_classes[KCI_CLASS].class_spec_flags, kernel_classes[KCI_CLASS].class_spec_indexed_type), kernel_classes[kernel_classes[KCI_CLASS].superclass_kci].class_spec_nivars, kernel_classes[KCI_CLASS].class_brand); - if (HCL_UNLIKELY(!hcl->c_class)) + if (HAK_UNLIKELY(!hak->c_class)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), "unable to allocate %hs - %js", kernel_classes[KCI_CLASS].name, orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), "unable to allocate %hs - %js", kernel_classes[KCI_CLASS].name, orgmsg); return -1; } - HCL_ASSERT (hcl, HCL_OBJ_GET_CLASS(hcl->c_class) == HCL_NULL); - HCL_OBJ_SET_CLASS (hcl->c_class, (hcl_oop_t)hcl->c_class); + HAK_ASSERT (hak, HAK_OBJ_GET_CLASS(hak->c_class) == HAK_NULL); + HAK_OBJ_SET_CLASS (hak->c_class, (hak_oop_t)hak->c_class); } /* create class objects except Class */ - for (i = 0; i < HCL_COUNTOF(kernel_classes); i++) + for (i = 0; i < HAK_COUNTOF(kernel_classes); i++) { - hcl_oop_class_t tmp; - hcl_ooi_t nivars_super; + hak_oop_class_t tmp; + hak_ooi_t nivars_super; int superclass_kci; if (i == KCI_CLASS) continue; /* skip Class as it's created above */ @@ -1449,34 +1449,34 @@ static int ignite_1 (hcl_t* hcl) superclass_kci = kernel_classes[i].superclass_kci; nivars_super = superclass_kci <= -1? 0: kernel_classes[superclass_kci].class_spec_nivars; tmp = alloc_kernel_class( - hcl, + hak, kernel_classes[i].class_flags, kernel_classes[i].class_ncvars, - HCL_CLASS_SPEC_MAKE(kernel_classes[i].class_spec_nivars, + HAK_CLASS_SPEC_MAKE(kernel_classes[i].class_spec_nivars, kernel_classes[i].class_spec_flags, kernel_classes[i].class_spec_indexed_type), nivars_super, kernel_classes[i].class_brand); - if (HCL_UNLIKELY(!tmp)) + if (HAK_UNLIKELY(!tmp)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), "unable to allocate %hs - %js", kernel_classes[i].name, orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), "unable to allocate %hs - %js", kernel_classes[i].name, orgmsg); return -1; } - *(hcl_oop_class_t*)((hcl_uint8_t*)hcl + kernel_classes[i].offset) = tmp; + *(hak_oop_class_t*)((hak_uint8_t*)hak + kernel_classes[i].offset) = tmp; } /* update the superclass field */ - for (i = 0; i < HCL_COUNTOF(kernel_classes); i++) + for (i = 0; i < HAK_COUNTOF(kernel_classes); i++) { int skci; skci = kernel_classes[i].superclass_kci; if (skci >= 0) { - hcl_oop_class_t* x, * y; - x = (hcl_oop_class_t*)((hcl_uint8_t*)hcl + kernel_classes[i].offset); - y = (hcl_oop_class_t*)((hcl_uint8_t*)hcl + kernel_classes[skci].offset); - (*x)->superclass = (hcl_oop_t)*y; + hak_oop_class_t* x, * y; + x = (hak_oop_class_t*)((hak_uint8_t*)hak + kernel_classes[i].offset); + y = (hak_oop_class_t*)((hak_uint8_t*)hak + kernel_classes[skci].offset); + (*x)->superclass = (hak_oop_t)*y; } } @@ -1487,31 +1487,31 @@ static int ignite_1 (hcl_t* hcl) * the compiler determines the actual size of the trailer space depending * on the byte codes generated. i should set the following fields to avoid * confusion at the GC phase. */ - hcl->c_method->trsize = HCL_SMOOI_TO_OOP(0); - hcl->c_method->trgc = HCL_SMPTR_TO_OOP(0); + hak->c_method->trsize = HAK_SMOOI_TO_OOP(0); + hak->c_method->trgc = HAK_SMPTR_TO_OOP(0); #endif return 0; } -static int ignite_2 (hcl_t* hcl) +static int ignite_2 (hak_t* hak) { - hcl_oop_t tmp; + hak_oop_t tmp; #if 0 - int old_igniting = hcl->igniting; + int old_igniting = hak->igniting; #endif /* Create 'true' and 'false objects */ - if (HCL_LIKELY(!hcl->_true)) + if (HAK_LIKELY(!hak->_true)) { - hcl->_true = hcl_instantiate(hcl, hcl->c_true, HCL_NULL, 0); - if (HCL_UNLIKELY(!hcl->_true)) goto oops; + hak->_true = hak_instantiate(hak, hak->c_true, HAK_NULL, 0); + if (HAK_UNLIKELY(!hak->_true)) goto oops; } - if (HCL_LIKELY(!hcl->_false)) + if (HAK_LIKELY(!hak->_false)) { - hcl->_false = hcl_instantiate(hcl, hcl->c_false, HCL_NULL, 0); - if (HCL_UNLIKELY(!hcl->_false)) goto oops; + hak->_false = hak_instantiate(hak, hak->c_false, HAK_NULL, 0); + if (HAK_UNLIKELY(!hak->_false)) goto oops; } #if 0 @@ -1523,106 +1523,106 @@ static int ignite_2 (hcl_t* hcl) * system dictionary is wasted. I'd rather allocate these * in the normal space. * - * 2. For compact_symbol_table() to work properly, hcl_gc() must not + * 2. For compact_symbol_table() to work properly, hak_gc() must not * scan the symbol table before it executes compact_symbol_table(). - * since hcl_gc() scans the entire perspace, it naturally gets to - * hcl->symtab, which causes problems in compact_symbol_table(). + * since hak_gc() scans the entire perspace, it naturally gets to + * hak->symtab, which causes problems in compact_symbol_table(). * I may reserve a special space for only the symbol table * to overcome this issue. * * For now, let's just allocate the symbol table and the system dictionary * in the normal space */ - hcl->igniting = 0; + hak->igniting = 0; #endif - if (HCL_LIKELY(!hcl->symtab)) + if (HAK_LIKELY(!hak->symtab)) { /* Create the symbol table - values in the bucket are limited to symbols only */ - tmp = hcl_instantiate(hcl, hcl->c_symtab, HCL_NULL, 0); - if (HCL_UNLIKELY(!tmp)) goto oops; - hcl->symtab = (hcl_oop_dic_t)tmp; - hcl->symtab->tally = HCL_SMOOI_TO_OOP(0); + tmp = hak_instantiate(hak, hak->c_symtab, HAK_NULL, 0); + if (HAK_UNLIKELY(!tmp)) goto oops; + hak->symtab = (hak_oop_dic_t)tmp; + hak->symtab->tally = HAK_SMOOI_TO_OOP(0); } - if (HCL_LIKELY((hcl_oop_t)hcl->symtab->bucket == hcl->_nil)) + if (HAK_LIKELY((hak_oop_t)hak->symtab->bucket == hak->_nil)) { - /* It's important to assign the result of hcl_instantiate() to a temporary - * variable first and then assign it to hcl->symtab->bucket. - * The pointer 'hcl->symtab; can change in hcl_instantiate() and the - * target address of assignment may get set before hcl_instantiate() + /* It's important to assign the result of hak_instantiate() to a temporary + * variable first and then assign it to hak->symtab->bucket. + * The pointer 'hak->symtab; can change in hak_instantiate() and the + * target address of assignment may get set before hak_instantiate() * is called. */ - HCL_ASSERT (hcl, hcl->option.dfl_symtab_size > 0); - tmp = hcl_instantiate(hcl, hcl->c_array, HCL_NULL, hcl->option.dfl_symtab_size); - if (HCL_UNLIKELY(!tmp)) goto oops; /* TODO: delete hcl->symtab instad of this separate initialization of the bucket??? */ - hcl->symtab->bucket = (hcl_oop_oop_t)tmp; + HAK_ASSERT (hak, hak->option.dfl_symtab_size > 0); + tmp = hak_instantiate(hak, hak->c_array, HAK_NULL, hak->option.dfl_symtab_size); + if (HAK_UNLIKELY(!tmp)) goto oops; /* TODO: delete hak->symtab instad of this separate initialization of the bucket??? */ + hak->symtab->bucket = (hak_oop_oop_t)tmp; } #if 0 /* Create the system dictionary */ - tmp = (hcl_oop_t)hcl_makensdic(hcl, hcl->_namespace, hcl->option.dfl_sysdic_size); + tmp = (hak_oop_t)hak_makensdic(hak, hak->_namespace, hak->option.dfl_sysdic_size); if (!tmp) return -1; - hcl->sysdic = (hcl_oop_nsdic_t)tmp; + hak->sysdic = (hak_oop_nsdic_t)tmp; #else - if (HCL_LIKELY(!hcl->sysdic)) + if (HAK_LIKELY(!hak->sysdic)) { - tmp = hcl_instantiate(hcl, hcl->c_dictionary, HCL_NULL, 0); - if (HCL_UNLIKELY(!tmp)) goto oops; - hcl->sysdic = (hcl_oop_dic_t)tmp; - hcl->sysdic->tally = HCL_SMOOI_TO_OOP(0); + tmp = hak_instantiate(hak, hak->c_dictionary, HAK_NULL, 0); + if (HAK_UNLIKELY(!tmp)) goto oops; + hak->sysdic = (hak_oop_dic_t)tmp; + hak->sysdic->tally = HAK_SMOOI_TO_OOP(0); } - if (HCL_LIKELY((hcl_oop_t)hcl->sysdic->bucket == hcl->_nil)) + if (HAK_LIKELY((hak_oop_t)hak->sysdic->bucket == hak->_nil)) { - /* It's important to assign the result of hcl_instantiate() to a temporary - * variable first and then assign it to hcl->symtab->bucket. - * The pointer 'hcl->symtab; can change in hcl_instantiate() and the - * target address of assignment may get set before hcl_instantiate() + /* It's important to assign the result of hak_instantiate() to a temporary + * variable first and then assign it to hak->symtab->bucket. + * The pointer 'hak->symtab; can change in hak_instantiate() and the + * target address of assignment may get set before hak_instantiate() * is called. */ - tmp = hcl_instantiate(hcl, hcl->c_array, HCL_NULL, hcl->option.dfl_sysdic_size); - if (HCL_UNLIKELY(!tmp)) goto oops; - hcl->sysdic->bucket = (hcl_oop_oop_t)tmp; + tmp = hak_instantiate(hak, hak->c_array, HAK_NULL, hak->option.dfl_sysdic_size); + if (HAK_UNLIKELY(!tmp)) goto oops; + hak->sysdic->bucket = (hak_oop_oop_t)tmp; } #endif #if 0 - hcl->igniting = old_igniting; /* back to the permspace */ + hak->igniting = old_igniting; /* back to the permspace */ #endif - if (HCL_LIKELY(!hcl->nil_process)) + if (HAK_LIKELY(!hak->nil_process)) { /* Create a nil process used to simplify nil check in GC. * only accessible by VM. not exported via the global dictionary. */ - tmp = (hcl_oop_t)hcl_instantiate(hcl, hcl->c_process, HCL_NULL, 0); - if (HCL_UNLIKELY(!tmp)) goto oops; - hcl->nil_process = (hcl_oop_process_t)tmp; - hcl->nil_process->id = HCL_SMOOI_TO_OOP(-1); - hcl->nil_process->state = HCL_SMOOI_TO_OOP(HCL_PROCESS_STATE_TERMINATED); + tmp = (hak_oop_t)hak_instantiate(hak, hak->c_process, HAK_NULL, 0); + if (HAK_UNLIKELY(!tmp)) goto oops; + hak->nil_process = (hak_oop_process_t)tmp; + hak->nil_process->id = HAK_SMOOI_TO_OOP(-1); + hak->nil_process->state = HAK_SMOOI_TO_OOP(HAK_PROCESS_STATE_TERMINATED); #if 0 - hcl->nil_process->perr = HCL_ERROR_TO_OOP(HCL_ENOERR); - hcl->nil_process->perrmsg = hcl->_nil; + hak->nil_process->perr = HAK_ERROR_TO_OOP(HAK_ENOERR); + hak->nil_process->perrmsg = hak->_nil; #endif /* unusable stack */ - hcl->nil_process->sp = HCL_SMOOI_TO_OOP(-1); - hcl->nil_process->st = HCL_SMOOI_TO_OOP(-1); + hak->nil_process->sp = HAK_SMOOI_TO_OOP(-1); + hak->nil_process->st = HAK_SMOOI_TO_OOP(-1); /* unusable exception stack */ - hcl->nil_process->exsp = HCL_SMOOI_TO_OOP(-1); - hcl->nil_process->exst = HCL_SMOOI_TO_OOP(-1); + hak->nil_process->exsp = HAK_SMOOI_TO_OOP(-1); + hak->nil_process->exst = HAK_SMOOI_TO_OOP(-1); /* unusable class stack */ - hcl->nil_process->clsp = HCL_SMOOI_TO_OOP(-1); - hcl->nil_process->clst = HCL_SMOOI_TO_OOP(-1); + hak->nil_process->clsp = HAK_SMOOI_TO_OOP(-1); + hak->nil_process->clst = HAK_SMOOI_TO_OOP(-1); } - if (HCL_LIKELY(!hcl->processor)) + if (HAK_LIKELY(!hak->processor)) { /* Create a process scheduler */ - tmp = (hcl_oop_t)hcl_instantiate(hcl, hcl->c_process_scheduler, HCL_NULL, 0); - if (HCL_UNLIKELY(!tmp)) goto oops; - hcl->processor = (hcl_oop_process_scheduler_t)tmp; - hcl->processor->active = hcl->nil_process; - hcl->processor->total_count = HCL_SMOOI_TO_OOP(0); - hcl->processor->runnable.count = HCL_SMOOI_TO_OOP(0); - hcl->processor->suspended.count = HCL_SMOOI_TO_OOP(0); + tmp = (hak_oop_t)hak_instantiate(hak, hak->c_process_scheduler, HAK_NULL, 0); + if (HAK_UNLIKELY(!tmp)) goto oops; + hak->processor = (hak_oop_process_scheduler_t)tmp; + hak->processor->active = hak->nil_process; + hak->processor->total_count = HAK_SMOOI_TO_OOP(0); + hak->processor->runnable.count = HAK_SMOOI_TO_OOP(0); + hak->processor->suspended.count = HAK_SMOOI_TO_OOP(0); } return 0; @@ -1631,194 +1631,194 @@ oops: return -1; } -static int ignite_3 (hcl_t* hcl) +static int ignite_3 (hak_t* hak) { /* Register kernel classes manually created so far to the system dictionary */ #if 0 - static hcl_ooch_t str_processor[] = { 'P', 'r', 'o', 'c', 'e', 's', 's', 'o', 'r' }; - static hcl_ooch_t str_dicnew[] = { 'n', 'e', 'w', ':' }; - static hcl_ooch_t str_dicputassoc[] = { '_','_','p', 'u', 't', '_', 'a', 's', 's', 'o', 'c', ':' }; - static hcl_ooch_t str_does_not_understand[] = { 'd', 'o', 'e', 's', 'N', 'o', 't', 'U', 'n', 'd', 'e', 'r', 's', 't', 'a', 'n', 'd', ':' }; - static hcl_ooch_t str_primitive_failed[] = { 'p', 'r', 'i', 'm', 'i', 't', 'i', 'v', 'e', 'F', 'a', 'i', 'l', 'e', 'd' }; - static hcl_ooch_t str_unwindto_return[] = { 'u', 'n', 'w', 'i', 'n', 'd', 'T', 'o', ':', 'r', 'e', 't', 'u', 'r', 'n', ':' }; + static hak_ooch_t str_processor[] = { 'P', 'r', 'o', 'c', 'e', 's', 's', 'o', 'r' }; + static hak_ooch_t str_dicnew[] = { 'n', 'e', 'w', ':' }; + static hak_ooch_t str_dicputassoc[] = { '_','_','p', 'u', 't', '_', 'a', 's', 's', 'o', 'c', ':' }; + static hak_ooch_t str_does_not_understand[] = { 'd', 'o', 'e', 's', 'N', 'o', 't', 'U', 'n', 'd', 'e', 'r', 's', 't', 'a', 'n', 'd', ':' }; + static hak_ooch_t str_primitive_failed[] = { 'p', 'r', 'i', 'm', 'i', 't', 'i', 'v', 'e', 'F', 'a', 'i', 'l', 'e', 'd' }; + static hak_ooch_t str_unwindto_return[] = { 'u', 'n', 'w', 'i', 'n', 'd', 'T', 'o', ':', 'r', 'e', 't', 'u', 'r', 'n', ':' }; #endif - hcl_oow_t i; - hcl_oop_t sym; - hcl_oop_class_t _class; + hak_oow_t i; + hak_oop_t sym; + hak_oop_class_t _class; - for (i = 0; i < HCL_COUNTOF(kernel_classes); i++) + for (i = 0; i < HAK_COUNTOF(kernel_classes); i++) { - sym = hcl_makesymbolwithbcstr(hcl, kernel_classes[i].name); - if (HCL_UNLIKELY(!sym)) return -1; + sym = hak_makesymbolwithbcstr(hak, kernel_classes[i].name); + if (HAK_UNLIKELY(!sym)) return -1; - _class = *(hcl_oop_class_t*)((hcl_uint8_t*)hcl + kernel_classes[i].offset); - HCL_STORE_OOP (hcl, (hcl_oop_t*)&_class->name, sym); + _class = *(hak_oop_class_t*)((hak_uint8_t*)hak + kernel_classes[i].offset); + HAK_STORE_OOP (hak, (hak_oop_t*)&_class->name, sym); #if 0 - HCL_STORE_OOP (hcl, (hcl_oop_t*)&_class->nsup, (hcl_oop_t)hcl->sysdic); + HAK_STORE_OOP (hak, (hak_oop_t*)&_class->nsup, (hak_oop_t)hak->sysdic); #endif - if (!hcl_putatsysdic(hcl, sym, (hcl_oop_t)_class)) return -1; + if (!hak_putatsysdic(hak, sym, (hak_oop_t)_class)) return -1; } #if 0 /* Attach the system dictionary to the nsdic field of the System class */ - HCL_STORE_OOP (hcl, (hcl_oop_t*)&hcl->_system->nsdic, (hcl_oop_t)hcl->sysdic); + HAK_STORE_OOP (hak, (hak_oop_t*)&hak->_system->nsdic, (hak_oop_t)hak->sysdic); /* Set the name field of the system dictionary */ - HCL_STORE_OOP (hcl, (hcl_oop_t*)&hcl->sysdic->name, (hcl_oop_t)hcl->_system->name); + HAK_STORE_OOP (hak, (hak_oop_t*)&hak->sysdic->name, (hak_oop_t)hak->_system->name); /* Set the owning class field of the system dictionary, it's circular here */ - HCL_STORE_OOP (hcl, (hcl_oop_t*)&hcl->sysdic->nsup, (hcl_oop_t)hcl->_system); + HAK_STORE_OOP (hak, (hak_oop_t*)&hak->sysdic->nsup, (hak_oop_t)hak->_system); /* Make the process scheduler avaialble as the global name 'Processor' */ - sym = hcl_makesymbol(hcl, str_processor, HCL_COUNTOF(str_processor)); + sym = hak_makesymbol(hak, str_processor, HAK_COUNTOF(str_processor)); if (!sym) return -1; - if (!hcl_putatsysdic(hcl, sym, (hcl_oop_t)hcl->processor)) return -1; + if (!hak_putatsysdic(hak, sym, (hak_oop_t)hak->processor)) return -1; - sym = hcl_makesymbol(hcl, str_dicnew, HCL_COUNTOF(str_dicnew)); + sym = hak_makesymbol(hak, str_dicnew, HAK_COUNTOF(str_dicnew)); if (!sym) return -1; - hcl->dicnewsym = (hcl_oop_char_t)sym; + hak->dicnewsym = (hak_oop_char_t)sym; - sym = hcl_makesymbol(hcl, str_dicputassoc, HCL_COUNTOF(str_dicputassoc)); + sym = hak_makesymbol(hak, str_dicputassoc, HAK_COUNTOF(str_dicputassoc)); if (!sym) return -1; - hcl->dicputassocsym = (hcl_oop_char_t)sym; + hak->dicputassocsym = (hak_oop_char_t)sym; - sym = hcl_makesymbol(hcl, str_does_not_understand, HCL_COUNTOF(str_does_not_understand)); + sym = hak_makesymbol(hak, str_does_not_understand, HAK_COUNTOF(str_does_not_understand)); if (!sym) return -1; - hcl->does_not_understand_sym = (hcl_oop_char_t)sym; + hak->does_not_understand_sym = (hak_oop_char_t)sym; - sym = hcl_makesymbol(hcl, str_primitive_failed, HCL_COUNTOF(str_primitive_failed)); + sym = hak_makesymbol(hak, str_primitive_failed, HAK_COUNTOF(str_primitive_failed)); if (!sym) return -1; - hcl->primitive_failed_sym = (hcl_oop_char_t)sym; + hak->primitive_failed_sym = (hak_oop_char_t)sym; - sym = hcl_makesymbol(hcl, str_unwindto_return, HCL_COUNTOF(str_unwindto_return)); + sym = hak_makesymbol(hak, str_unwindto_return, HAK_COUNTOF(str_unwindto_return)); if (!sym) return -1; - hcl->unwindto_return_sym = (hcl_oop_char_t)sym; + hak->unwindto_return_sym = (hak_oop_char_t)sym; #endif return 0; } -static int make_kernel_objs (hcl_t* hcl) +static int make_kernel_objs (hak_t* hak) { /* make_kernel_objs() creates a chain of classes as well as some key objects * for initial bootstrapping. when the objects are loaded from an image file, * this function is skipped */ #if 0 - hcl->igniting = 1; + hak->igniting = 1; #endif - if (HCL_LIKELY(!hcl->_undef)) + if (HAK_LIKELY(!hak->_undef)) { /* TODO: create it as nogc */ - hcl->_undef = hcl_hatchundef(hcl); - if (HCL_UNLIKELY(!hcl->_undef)) goto oops; + hak->_undef = hak_hatchundef(hak); + if (HAK_UNLIKELY(!hak->_undef)) goto oops; } - if (HCL_LIKELY(!hcl->_nil)) + if (HAK_LIKELY(!hak->_nil)) { /* TODO: create it as nogc? */ - hcl->_nil = hcl_hatchnil(hcl); - if (HCL_UNLIKELY(!hcl->_nil)) goto oops; + hak->_nil = hak_hatchnil(hak); + if (HAK_UNLIKELY(!hak->_nil)) goto oops; } - if (ignite_1(hcl) <= -1) goto oops; + if (ignite_1(hak) <= -1) goto oops; /* ready to set the class of object created prior to class creation in ignite_1() */ - HCL_OBJ_SET_CLASS (hcl->_nil, (hcl_oop_t)hcl->c_undefobj); - HCL_OBJ_SET_CLASS (hcl->_undef, (hcl_oop_t)hcl->c_undefobj); + HAK_OBJ_SET_CLASS (hak->_nil, (hak_oop_t)hak->c_undefobj); + HAK_OBJ_SET_CLASS (hak->_undef, (hak_oop_t)hak->c_undefobj); - if (ignite_2(hcl) <= -1) goto oops; + if (ignite_2(hak) <= -1) goto oops; - if (ignite_3(hcl) <= -1) goto oops; + if (ignite_3(hak) <= -1) goto oops; /* TODO: scan the heap. and fix the class of objects using brand if the class is NULL */ #if 0 - hcl->igniting = 0; + hak->igniting = 0; #endif return 0; oops: #if 0 - hcl>igniting = 0; + hak>igniting = 0; #endif return -1; } -int hcl_ignite (hcl_t* hcl, hcl_oow_t heapsize) +int hak_ignite (hak_t* hak, hak_oow_t heapsize) { - if (!hcl->heap) + if (!hak->heap) { - hcl->heap = hcl_makeheap(hcl, heapsize); - if (HCL_UNLIKELY(!hcl->heap)) return -1; + hak->heap = hak_makeheap(hak, heapsize); + if (HAK_UNLIKELY(!hak->heap)) return -1; } - if (make_kernel_objs(hcl) <= -1) return -1; + if (make_kernel_objs(hak) <= -1) return -1; - HCL_ASSERT (hcl, hcl->_true != HCL_NULL); - HCL_ASSERT (hcl, hcl->_false != HCL_NULL); + HAK_ASSERT (hak, hak->_true != HAK_NULL); + HAK_ASSERT (hak, hak->_false != HAK_NULL); - if (!hcl->symtab) + if (!hak->symtab) { - hcl->symtab = (hcl_oop_dic_t)hcl_makedic(hcl, hcl->option.dfl_symtab_size); - if (HCL_UNLIKELY(!hcl->symtab)) goto oops; + hak->symtab = (hak_oop_dic_t)hak_makedic(hak, hak->option.dfl_symtab_size); + if (HAK_UNLIKELY(!hak->symtab)) goto oops; } - if (!hcl->sysdic) + if (!hak->sysdic) { - hcl->sysdic = (hcl_oop_dic_t)hcl_makedic(hcl, hcl->option.dfl_sysdic_size); - if (HCL_UNLIKELY(!hcl->sysdic)) goto oops; + hak->sysdic = (hak_oop_dic_t)hak_makedic(hak, hak->option.dfl_sysdic_size); + if (HAK_UNLIKELY(!hak->sysdic)) goto oops; } - if (!hcl->nil_process) + if (!hak->nil_process) { /* Create a nil process used to simplify nil check in GC. * only accessible by VM. not exported via the global dictionary. */ - /*hcl->nil_process = (hcl_oop_process_t)hcl_allocoopobj(hcl, HCL_BRAND_PROCESS, HCL_PROCESS_NAMED_INSTVARS);*/ - hcl->nil_process = (hcl_oop_process_t)hcl_instantiate(hcl, hcl->c_process, HCL_NULL, 0); - if (HCL_UNLIKELY(!hcl->nil_process)) + /*hak->nil_process = (hak_oop_process_t)hak_allocoopobj(hak, HAK_BRAND_PROCESS, HAK_PROCESS_NAMED_INSTVARS);*/ + hak->nil_process = (hak_oop_process_t)hak_instantiate(hak, hak->c_process, HAK_NULL, 0); + if (HAK_UNLIKELY(!hak->nil_process)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), - "unable to instantiate %O to be nil process - %js", hcl->c_process->name, orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), + "unable to instantiate %O to be nil process - %js", hak->c_process->name, orgmsg); goto oops; } /* unusable stack */ - hcl->nil_process->sp = HCL_SMOOI_TO_OOP(-1); - hcl->nil_process->st = HCL_SMOOI_TO_OOP(-1); + hak->nil_process->sp = HAK_SMOOI_TO_OOP(-1); + hak->nil_process->st = HAK_SMOOI_TO_OOP(-1); /* unusable exception stack */ - hcl->nil_process->exsp = HCL_SMOOI_TO_OOP(-1); - hcl->nil_process->exst = HCL_SMOOI_TO_OOP(-1); + hak->nil_process->exsp = HAK_SMOOI_TO_OOP(-1); + hak->nil_process->exst = HAK_SMOOI_TO_OOP(-1); /* unusable class stack */ - hcl->nil_process->clsp = HCL_SMOOI_TO_OOP(-1); - hcl->nil_process->clst = HCL_SMOOI_TO_OOP(-1); + hak->nil_process->clsp = HAK_SMOOI_TO_OOP(-1); + hak->nil_process->clst = HAK_SMOOI_TO_OOP(-1); } - if (!hcl->processor) + if (!hak->processor) { - /*hcl->processor = (hcl_oop_process_scheduler_t)hcl_allocoopobj(hcl, HCL_BRAND_PROCESS_SCHEDULER, HCL_PROCESS_SCHEDULER_NAMED_INSTVARS);*/ - hcl->processor = (hcl_oop_process_scheduler_t)hcl_instantiate(hcl, hcl->c_process_scheduler, HCL_NULL, 0); - if (HCL_UNLIKELY(!hcl->processor)) + /*hak->processor = (hak_oop_process_scheduler_t)hak_allocoopobj(hak, HAK_BRAND_PROCESS_SCHEDULER, HAK_PROCESS_SCHEDULER_NAMED_INSTVARS);*/ + hak->processor = (hak_oop_process_scheduler_t)hak_instantiate(hak, hak->c_process_scheduler, HAK_NULL, 0); + if (HAK_UNLIKELY(!hak->processor)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), - "unable to instantiate %O - %js",hcl->c_process_scheduler->name, orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), + "unable to instantiate %O - %js",hak->c_process_scheduler->name, orgmsg); goto oops; } - hcl->processor->active = hcl->nil_process; - hcl->processor->total_count = HCL_SMOOI_TO_OOP(0); - hcl->processor->runnable.count = HCL_SMOOI_TO_OOP(0); - hcl->processor->suspended.count = HCL_SMOOI_TO_OOP(0); + hak->processor->active = hak->nil_process; + hak->processor->total_count = HAK_SMOOI_TO_OOP(0); + hak->processor->runnable.count = HAK_SMOOI_TO_OOP(0); + hak->processor->suspended.count = HAK_SMOOI_TO_OOP(0); - /* commit the sp field of the initial active context to hcl->sp */ - hcl->sp = HCL_OOP_TO_SMOOI(hcl->processor->active->sp); + /* commit the sp field of the initial active context to hak->sp */ + hak->sp = HAK_OOP_TO_SMOOI(hak->processor->active->sp); } - /* TODO: move this initialization to hcl_init? */ - if (hcl_brewcode(hcl, &hcl->code) <= -1) goto oops; + /* TODO: move this initialization to hak_init? */ + if (hak_brewcode(hak, &hak->code) <= -1) goto oops; - hcl->p.e = hcl->_nil; + hak->p.e = hak->_nil; return 0; oops: diff --git a/lib/hcl-cfg.h.in b/lib/hak-cfg.h.in similarity index 89% rename from lib/hcl-cfg.h.in rename to lib/hak-cfg.h.in index c395f54..9bd6ac5 100644 --- a/lib/hcl-cfg.h.in +++ b/lib/hak-cfg.h.in @@ -1,8 +1,170 @@ -/* lib/hcl-cfg.h.in. Generated from configure.ac by autoheader. */ +/* lib/hak-cfg.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD +/* build release/debug */ +#undef HAK_BUILD_DEBUG + +/* build release/debug */ +#undef HAK_BUILD_RELEASE + +/* configure arguments */ +#undef HAK_CONFIGURE_ARGS + +/* configure command */ +#undef HAK_CONFIGURE_CMD + +/* enable dynamic module capability */ +#undef HAK_ENABLE_DYNAMIC_MODULE + +/* Use a full word as a large integer word */ +#undef HAK_ENABLE_FULL_LIW + +/* use libltdl when loading a dynamic module */ +#undef HAK_ENABLE_LIBLTDL + +/* use libunwind for backtracing stack frames */ +#undef HAK_ENABLE_LIBUNWIND + +/* link modules statically into the main library */ +#undef HAK_ENABLE_STATIC_MODULE + +/* Use the wide-character type as the default character type */ +#undef HAK_ENABLE_WIDE_CHAR + +/* Big Endian */ +#undef HAK_ENDIAN_BIG + +/* Little Endian */ +#undef HAK_ENDIAN_LITTLE + +/* Unknown Endian */ +#undef HAK_ENDIAN_UNKNOWN + +/* MB_LEN_MAX */ +#undef HAK_MBLEN_MAX + +/* offsetof(struct sockaddr, sa_family) */ +#undef HAK_OFFSETOF_SA_FAMILY + +/* Author */ +#undef HAK_PACKAGE_AUTHOR + +/* package name */ +#undef HAK_PACKAGE_NAME + +/* Project URL */ +#undef HAK_PACKAGE_URL + +/* Package version */ +#undef HAK_PACKAGE_VERSION + +/* Major version number */ +#undef HAK_PACKAGE_VERSION_MAJOR + +/* Minor version number */ +#undef HAK_PACKAGE_VERSION_MINOR + +/* Patch level */ +#undef HAK_PACKAGE_VERSION_PATCH + +/* PATH_MAX */ +#undef HAK_PATH_MAX + +/* Define if sa_family_t is signed */ +#undef HAK_SA_FAMILY_T_IS_SIGNED + +/* sizeof(char) */ +#undef HAK_SIZEOF_CHAR + +/* sizeof(double) */ +#undef HAK_SIZEOF_DOUBLE + +/* sizeof(float) */ +#undef HAK_SIZEOF_FLOAT + +/* sizeof(int) */ +#undef HAK_SIZEOF_INT + +/* sizeof(long) */ +#undef HAK_SIZEOF_LONG + +/* sizeof(long double) */ +#undef HAK_SIZEOF_LONG_DOUBLE + +/* sizeof(long long) */ +#undef HAK_SIZEOF_LONG_LONG + +/* sizeof(mbstate_t) */ +#undef HAK_SIZEOF_MBSTATE_T + +/* sizeof(off64_t) */ +#undef HAK_SIZEOF_OFF64_T + +/* sizeof(off_t) */ +#undef HAK_SIZEOF_OFF_T + +/* sizeof(sa_family_t) */ +#undef HAK_SIZEOF_SA_FAMILY_T + +/* sizeof(short) */ +#undef HAK_SIZEOF_SHORT + +/* sizeof(socklen_t) */ +#undef HAK_SIZEOF_SOCKLEN_T + +/* sizeof(struct sockaddr_dl) */ +#undef HAK_SIZEOF_STRUCT_SOCKADDR_DL + +/* sizeof(struct sockaddr_in) */ +#undef HAK_SIZEOF_STRUCT_SOCKADDR_IN + +/* sizeof(struct sockaddr_in6) */ +#undef HAK_SIZEOF_STRUCT_SOCKADDR_IN6 + +/* sizeof(struct sockaddr_ll) */ +#undef HAK_SIZEOF_STRUCT_SOCKADDR_LL + +/* sizeof(struct sockaddr_un) */ +#undef HAK_SIZEOF_STRUCT_SOCKADDR_UN + +/* sizeof(void*) */ +#undef HAK_SIZEOF_VOID_P + +/* sizeof(wchar_t) */ +#undef HAK_SIZEOF_WCHAR_T + +/* sizeof(__float128) */ +#undef HAK_SIZEOF___FLOAT128 + +/* sizeof(__int128) */ +#undef HAK_SIZEOF___INT128 + +/* sizeof(__int128_t) */ +#undef HAK_SIZEOF___INT128_T + +/* sizeof(__int16) */ +#undef HAK_SIZEOF___INT16 + +/* sizeof(__int32) */ +#undef HAK_SIZEOF___INT32 + +/* sizeof(__int64) */ +#undef HAK_SIZEOF___INT64 + +/* sizeof(__int8) */ +#undef HAK_SIZEOF___INT8 + +/* sizeof(__uint128_t) */ +#undef HAK_SIZEOF___UINT128_T + +/* Define if socklen_t is signed */ +#undef HAK_SOCKLEN_T_IS_SIGNED + +/* Wide-character type size */ +#undef HAK_WIDE_CHAR_SIZE + /* Define to 1 if you have the 'accept4' function. */ #undef HAVE_ACCEPT4 @@ -297,168 +459,6 @@ /* __va_copy is available */ #undef HAVE___VA_COPY -/* build release/debug */ -#undef HCL_BUILD_DEBUG - -/* build release/debug */ -#undef HCL_BUILD_RELEASE - -/* configure arguments */ -#undef HCL_CONFIGURE_ARGS - -/* configure command */ -#undef HCL_CONFIGURE_CMD - -/* enable dynamic module capability */ -#undef HCL_ENABLE_DYNAMIC_MODULE - -/* Use a full word as a large integer word */ -#undef HCL_ENABLE_FULL_LIW - -/* use libltdl when loading a dynamic module */ -#undef HCL_ENABLE_LIBLTDL - -/* use libunwind for backtracing stack frames */ -#undef HCL_ENABLE_LIBUNWIND - -/* link modules statically into the main library */ -#undef HCL_ENABLE_STATIC_MODULE - -/* Use the wide-character type as the default character type */ -#undef HCL_ENABLE_WIDE_CHAR - -/* Big Endian */ -#undef HCL_ENDIAN_BIG - -/* Little Endian */ -#undef HCL_ENDIAN_LITTLE - -/* Unknown Endian */ -#undef HCL_ENDIAN_UNKNOWN - -/* MB_LEN_MAX */ -#undef HCL_MBLEN_MAX - -/* offsetof(struct sockaddr, sa_family) */ -#undef HCL_OFFSETOF_SA_FAMILY - -/* Author */ -#undef HCL_PACKAGE_AUTHOR - -/* package name */ -#undef HCL_PACKAGE_NAME - -/* Project URL */ -#undef HCL_PACKAGE_URL - -/* Package version */ -#undef HCL_PACKAGE_VERSION - -/* Major version number */ -#undef HCL_PACKAGE_VERSION_MAJOR - -/* Minor version number */ -#undef HCL_PACKAGE_VERSION_MINOR - -/* Patch level */ -#undef HCL_PACKAGE_VERSION_PATCH - -/* PATH_MAX */ -#undef HCL_PATH_MAX - -/* Define if sa_family_t is signed */ -#undef HCL_SA_FAMILY_T_IS_SIGNED - -/* sizeof(char) */ -#undef HCL_SIZEOF_CHAR - -/* sizeof(double) */ -#undef HCL_SIZEOF_DOUBLE - -/* sizeof(float) */ -#undef HCL_SIZEOF_FLOAT - -/* sizeof(int) */ -#undef HCL_SIZEOF_INT - -/* sizeof(long) */ -#undef HCL_SIZEOF_LONG - -/* sizeof(long double) */ -#undef HCL_SIZEOF_LONG_DOUBLE - -/* sizeof(long long) */ -#undef HCL_SIZEOF_LONG_LONG - -/* sizeof(mbstate_t) */ -#undef HCL_SIZEOF_MBSTATE_T - -/* sizeof(off64_t) */ -#undef HCL_SIZEOF_OFF64_T - -/* sizeof(off_t) */ -#undef HCL_SIZEOF_OFF_T - -/* sizeof(sa_family_t) */ -#undef HCL_SIZEOF_SA_FAMILY_T - -/* sizeof(short) */ -#undef HCL_SIZEOF_SHORT - -/* sizeof(socklen_t) */ -#undef HCL_SIZEOF_SOCKLEN_T - -/* sizeof(struct sockaddr_dl) */ -#undef HCL_SIZEOF_STRUCT_SOCKADDR_DL - -/* sizeof(struct sockaddr_in) */ -#undef HCL_SIZEOF_STRUCT_SOCKADDR_IN - -/* sizeof(struct sockaddr_in6) */ -#undef HCL_SIZEOF_STRUCT_SOCKADDR_IN6 - -/* sizeof(struct sockaddr_ll) */ -#undef HCL_SIZEOF_STRUCT_SOCKADDR_LL - -/* sizeof(struct sockaddr_un) */ -#undef HCL_SIZEOF_STRUCT_SOCKADDR_UN - -/* sizeof(void*) */ -#undef HCL_SIZEOF_VOID_P - -/* sizeof(wchar_t) */ -#undef HCL_SIZEOF_WCHAR_T - -/* sizeof(__float128) */ -#undef HCL_SIZEOF___FLOAT128 - -/* sizeof(__int128) */ -#undef HCL_SIZEOF___INT128 - -/* sizeof(__int128_t) */ -#undef HCL_SIZEOF___INT128_T - -/* sizeof(__int16) */ -#undef HCL_SIZEOF___INT16 - -/* sizeof(__int32) */ -#undef HCL_SIZEOF___INT32 - -/* sizeof(__int64) */ -#undef HCL_SIZEOF___INT64 - -/* sizeof(__int8) */ -#undef HCL_SIZEOF___INT8 - -/* sizeof(__uint128_t) */ -#undef HCL_SIZEOF___UINT128_T - -/* Define if socklen_t is signed */ -#undef HCL_SOCKLEN_T_IS_SIGNED - -/* Wide-character type size */ -#undef HCL_WIDE_CHAR_SIZE - /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR diff --git a/lib/hak-chr.h b/lib/hak-chr.h new file mode 100644 index 0000000..1154f29 --- /dev/null +++ b/lib/hak-chr.h @@ -0,0 +1,334 @@ +/* + Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _HAK_CHR_H_ +#define _HAK_CHR_H_ + +#include + +enum hak_ooch_prop_t +{ + HAK_OOCH_PROP_UPPER = (1 << 0), +#define HAK_UCH_PROP_UPPER HAK_OOCH_PROP_UPPER +#define HAK_BCH_PROP_UPPER HAK_OOCH_PROP_UPPER + + HAK_OOCH_PROP_LOWER = (1 << 1), +#define HAK_UCH_PROP_LOWER HAK_OOCH_PROP_LOWER +#define HAK_BCH_PROP_LOWER HAK_OOCH_PROP_LOWER + + HAK_OOCH_PROP_ALPHA = (1 << 2), +#define HAK_UCH_PROP_ALPHA HAK_OOCH_PROP_ALPHA +#define HAK_BCH_PROP_ALPHA HAK_OOCH_PROP_ALPHA + + HAK_OOCH_PROP_DIGIT = (1 << 3), +#define HAK_UCH_PROP_DIGIT HAK_OOCH_PROP_DIGIT +#define HAK_BCH_PROP_DIGIT HAK_OOCH_PROP_DIGIT + + HAK_OOCH_PROP_XDIGIT = (1 << 4), +#define HAK_UCH_PROP_XDIGIT HAK_OOCH_PROP_XDIGIT +#define HAK_BCH_PROP_XDIGIT HAK_OOCH_PROP_XDIGIT + + HAK_OOCH_PROP_ALNUM = (1 << 5), +#define HAK_UCH_PROP_ALNUM HAK_OOCH_PROP_XDIGIT +#define HAK_BCH_PROP_ALNUM HAK_OOCH_PROP_XDIGIT + + HAK_OOCH_PROP_SPACE = (1 << 6), +#define HAK_UCH_PROP_SPACE HAK_OOCH_PROP_SPACE +#define HAK_BCH_PROP_SPACE HAK_OOCH_PROP_SPACE + + HAK_OOCH_PROP_PRINT = (1 << 8), +#define HAK_UCH_PROP_PRINT HAK_OOCH_PROP_PRINT +#define HAK_BCH_PROP_PRINT HAK_OOCH_PROP_PRINT + + HAK_OOCH_PROP_GRAPH = (1 << 9), +#define HAK_UCH_PROP_GRAPH HAK_OOCH_PROP_GRAPH +#define HAK_BCH_PROP_GRAPH HAK_OOCH_PROP_GRAPH + + HAK_OOCH_PROP_CNTRL = (1 << 10), +#define HAK_UCH_PROP_CNTRL HAK_OOCH_PROP_CNTRL +#define HAK_BCH_PROP_CNTRL HAK_OOCH_PROP_CNTRL + + HAK_OOCH_PROP_PUNCT = (1 << 11), +#define HAK_UCH_PROP_PUNCT HAK_OOCH_PROP_PUNCT +#define HAK_BCH_PROP_PUNCT HAK_OOCH_PROP_PUNCT + + HAK_OOCH_PROP_BLANK = (1 << 12) +#define HAK_UCH_PROP_BLANK HAK_OOCH_PROP_BLANK +#define HAK_BCH_PROP_BLANK HAK_OOCH_PROP_BLANK +}; + +typedef enum hak_ooch_prop_t hak_ooch_prop_t; +typedef enum hak_ooch_prop_t hak_uch_prop_t; +typedef enum hak_ooch_prop_t hak_bch_prop_t; + +#if defined(__cplusplus) +extern "C" { +#endif + +HAK_EXPORT int hak_is_uch_type (hak_uch_t c, hak_uch_prop_t type); +HAK_EXPORT int hak_is_uch_upper (hak_uch_t c); +HAK_EXPORT int hak_is_uch_lower (hak_uch_t c); +HAK_EXPORT int hak_is_uch_alpha (hak_uch_t c); +HAK_EXPORT int hak_is_uch_digit (hak_uch_t c); +HAK_EXPORT int hak_is_uch_xdigit (hak_uch_t c); +HAK_EXPORT int hak_is_uch_alnum (hak_uch_t c); +HAK_EXPORT int hak_is_uch_space (hak_uch_t c); +HAK_EXPORT int hak_is_uch_print (hak_uch_t c); +HAK_EXPORT int hak_is_uch_graph (hak_uch_t c); +HAK_EXPORT int hak_is_uch_cntrl (hak_uch_t c); +HAK_EXPORT int hak_is_uch_punct (hak_uch_t c); +HAK_EXPORT int hak_is_uch_blank (hak_uch_t c); +HAK_EXPORT hak_uch_t hak_to_uch_upper (hak_uch_t c); +HAK_EXPORT hak_uch_t hak_to_uch_lower (hak_uch_t c); + + +/* ------------------------------------------------------------------------- */ + +HAK_EXPORT int hak_is_bch_type (hak_bch_t c, hak_bch_prop_t type); + +#if defined(__has_builtin) +# if __has_builtin(__builtin_isupper) +# define hak_is_bch_upper __builtin_isupper +# endif +# if __has_builtin(__builtin_islower) +# define hak_is_bch_lower __builtin_islower +# endif +# if __has_builtin(__builtin_isalpha) +# define hak_is_bch_alpha __builtin_isalpha +# endif +# if __has_builtin(__builtin_isdigit) +# define hak_is_bch_digit __builtin_isdigit +# endif +# if __has_builtin(__builtin_isxdigit) +# define hak_is_bch_xdigit __builtin_isxdigit +# endif +# if __has_builtin(__builtin_isalnum) +# define hak_is_bch_alnum __builtin_isalnum +# endif +# if __has_builtin(__builtin_isspace) +# define hak_is_bch_space __builtin_isspace +# endif +# if __has_builtin(__builtin_isprint) +# define hak_is_bch_print __builtin_isprint +# endif +# if __has_builtin(__builtin_isgraph) +# define hak_is_bch_graph __builtin_isgraph +# endif +# if __has_builtin(__builtin_iscntrl) +# define hak_is_bch_cntrl __builtin_iscntrl +# endif +# if __has_builtin(__builtin_ispunct) +# define hak_is_bch_punct __builtin_ispunct +# endif +# if __has_builtin(__builtin_isblank) +# define hak_is_bch_blank __builtin_isblank +# endif +# if __has_builtin(__builtin_toupper) +# define hak_to_bch_upper __builtin_toupper +# endif +# if __has_builtin(__builtin_tolower) +# define hak_to_bch_lower __builtin_tolower +# endif +#elif (__GNUC__ >= 4) +# define hak_is_bch_upper __builtin_isupper +# define hak_is_bch_lower __builtin_islower +# define hak_is_bch_alpha __builtin_isalpha +# define hak_is_bch_digit __builtin_isdigit +# define hak_is_bch_xdigit __builtin_isxdigit +# define hak_is_bch_alnum __builtin_isalnum +# define hak_is_bch_space __builtin_isspace +# define hak_is_bch_print __builtin_isprint +# define hak_is_bch_graph __builtin_isgraph +# define hak_is_bch_cntrl __builtin_iscntrl +# define hak_is_bch_punct __builtin_ispunct +# define hak_is_bch_blank __builtin_isblank +# define hak_to_bch_upper __builtin_toupper +# define hak_to_bch_lower __builtin_tolower +#endif + +/* the bch class functions support no locale. + * these implemenent latin-1 only */ + +#if !defined(hak_is_bch_upper) && defined(HAK_HAVE_INLINE) +static HAK_INLINE int hak_is_bch_upper (hak_bch_t c) { return (hak_bcu_t)c - 'A' < 26; } +#elif !defined(hak_is_bch_upper) +# define hak_is_bch_upper(c) ((hak_bcu_t)(c) - 'A' < 26) +#endif + +#if !defined(hak_is_bch_lower) && defined(HAK_HAVE_INLINE) +static HAK_INLINE int hak_is_bch_lower (hak_bch_t c) { return (hak_bcu_t)c - 'a' < 26; } +#elif !defined(hak_is_bch_lower) +# define hak_is_bch_lower(c) ((hak_bcu_t)(c) - 'a' < 26) +#endif + +#if !defined(hak_is_bch_alpha) && defined(HAK_HAVE_INLINE) +static HAK_INLINE int hak_is_bch_alpha (hak_bch_t c) { return ((hak_bcu_t)c | 32) - 'a' < 26; } +#elif !defined(hak_is_bch_alpha) +# define hak_is_bch_alpha(c) (((hak_bcu_t)(c) | 32) - 'a' < 26) +#endif + +#if !defined(hak_is_bch_digit) && defined(HAK_HAVE_INLINE) +static HAK_INLINE int hak_is_bch_digit (hak_bch_t c) { return (hak_bcu_t)c - '0' < 10; } +#elif !defined(hak_is_bch_digit) +# define hak_is_bch_digit(c) ((hak_bcu_t)(c) - '0' < 10) +#endif + +#if !defined(hak_is_bch_xdigit) && defined(HAK_HAVE_INLINE) +static HAK_INLINE int hak_is_bch_xdigit (hak_bch_t c) { return hak_is_bch_digit(c) || ((hak_bcu_t)c | 32) - 'a' < 6; } +#elif !defined(hak_is_bch_xdigit) +# define hak_is_bch_xdigit(c) (hak_is_bch_digit(c) || ((hak_bcu_t)(c) | 32) - 'a' < 6) +#endif + +#if !defined(hak_is_bch_alnum) && defined(HAK_HAVE_INLINE) +static HAK_INLINE int hak_is_bch_alnum (hak_bch_t c) { return hak_is_bch_alpha(c) || hak_is_bch_digit(c); } +#elif !defined(hak_is_bch_alnum) +# define hak_is_bch_alnum(c) (hak_is_bch_alpha(c) || hak_is_bch_digit(c)) +#endif + +#if !defined(hak_is_bch_space) && defined(HAK_HAVE_INLINE) +static HAK_INLINE int hak_is_bch_space (hak_bch_t c) { return c == ' ' || (hak_bcu_t)c - '\t' < 5; } +#elif !defined(hak_is_bch_space) +# define hak_is_bch_space(c) ((c) == ' ' || (hak_bcu_t)(c) - '\t' < 5) +#endif + +#if !defined(hak_is_bch_print) && defined(HAK_HAVE_INLINE) +static HAK_INLINE int hak_is_bch_print (hak_bch_t c) { return (hak_bcu_t)c - ' ' < 95; } +#elif !defined(hak_is_bch_print) +# define hak_is_bch_print(c) ((hak_bcu_t)(c) - ' ' < 95) +#endif + +#if !defined(hak_is_bch_graph) && defined(HAK_HAVE_INLINE) +static HAK_INLINE int hak_is_bch_graph (hak_bch_t c) { return (hak_bcu_t)c - '!' < 94; } +#elif !defined(hak_is_bch_graph) +# define hak_is_bch_graph(c) ((hak_bcu_t)(c) - '!' < 94) +#endif + +#if !defined(hak_is_bch_cntrl) && defined(HAK_HAVE_INLINE) +static HAK_INLINE int hak_is_bch_cntrl (hak_bch_t c) { return (hak_bcu_t)c < ' ' || (hak_bcu_t)c == 127; } +#elif !defined(hak_is_bch_cntrl) +# define hak_is_bch_cntrl(c) ((hak_bcu_t)(c) < ' ' || (hak_bcu_t)(c) == 127) +#endif + +#if !defined(hak_is_bch_punct) && defined(HAK_HAVE_INLINE) +static HAK_INLINE int hak_is_bch_punct (hak_bch_t c) { return hak_is_bch_graph(c) && !hak_is_bch_alnum(c); } +#elif !defined(hak_is_bch_punct) +# define hak_is_bch_punct(c) (hak_is_bch_graph(c) && !hak_is_bch_alnum(c)) +#endif + +#if !defined(hak_is_bch_blank) && defined(HAK_HAVE_INLINE) +static HAK_INLINE int hak_is_bch_blank (hak_bch_t c) { return c == ' ' || c == '\t'; } +#elif !defined(hak_is_bch_blank) +# define hak_is_bch_blank(c) ((c) == ' ' || (c) == '\t') +#endif + +#if !defined(hak_to_bch_upper) +HAK_EXPORT hak_bch_t hak_to_bch_upper (hak_bch_t c); +#endif +#if !defined(hak_to_bch_lower) +HAK_EXPORT hak_bch_t hak_to_bch_lower (hak_bch_t c); +#endif + +#if defined(HAK_OOCH_IS_UCH) +# define hak_is_ooch_type hak_is_uch_type +# define hak_is_ooch_upper hak_is_uch_upper +# define hak_is_ooch_lower hak_is_uch_lower +# define hak_is_ooch_alpha hak_is_uch_alpha +# define hak_is_ooch_digit hak_is_uch_digit +# define hak_is_ooch_xdigit hak_is_uch_xdigit +# define hak_is_ooch_alnum hak_is_uch_alnum +# define hak_is_ooch_space hak_is_uch_space +# define hak_is_ooch_print hak_is_uch_print +# define hak_is_ooch_graph hak_is_uch_graph +# define hak_is_ooch_cntrl hak_is_uch_cntrl +# define hak_is_ooch_punct hak_is_uch_punct +# define hak_is_ooch_blank hak_is_uch_blank +# define hak_to_ooch_upper hak_to_uch_upper +# define hak_to_ooch_lower hak_to_uch_lower +#else +# define hak_is_ooch_type hak_is_bch_type +# define hak_is_ooch_upper hak_is_bch_upper +# define hak_is_ooch_lower hak_is_bch_lower +# define hak_is_ooch_alpha hak_is_bch_alpha +# define hak_is_ooch_digit hak_is_bch_digit +# define hak_is_ooch_xdigit hak_is_bch_xdigit +# define hak_is_ooch_alnum hak_is_bch_alnum +# define hak_is_ooch_space hak_is_bch_space +# define hak_is_ooch_print hak_is_bch_print +# define hak_is_ooch_graph hak_is_bch_graph +# define hak_is_ooch_cntrl hak_is_bch_cntrl +# define hak_is_ooch_punct hak_is_bch_punct +# define hak_is_ooch_blank hak_is_bch_blank +# define hak_to_ooch_upper hak_to_bch_upper +# define hak_to_ooch_lower hak_to_bch_lower +#endif + +/* ------------------------------------------------------------------------- */ + +HAK_EXPORT int hak_get_ucwidth ( + hak_uch_t uc +); + +/* ------------------------------------------------------------------------- */ + +HAK_EXPORT hak_oow_t hak_uc_to_utf8 ( + hak_uch_t uc, + hak_bch_t* utf8, + hak_oow_t size +); + +HAK_EXPORT hak_oow_t hak_utf8_to_uc ( + const hak_bch_t* utf8, + hak_oow_t size, + hak_uch_t* uc +); + + +HAK_EXPORT hak_oow_t hak_uc_to_utf16 ( + hak_uch_t uc, + hak_bch_t* utf16, + hak_oow_t size +); + +HAK_EXPORT hak_oow_t hak_utf16_to_uc ( + const hak_bch_t* utf16, + hak_oow_t size, + hak_uch_t* uc +); +HAK_EXPORT hak_oow_t hak_uc_to_mb8 ( + hak_uch_t uc, + hak_bch_t* mb8, + hak_oow_t size +); + +HAK_EXPORT hak_oow_t hak_mb8_to_uc ( + const hak_bch_t* mb8, + hak_oow_t size, + hak_uch_t* uc +); + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/lib/hcl-cmgr.h b/lib/hak-cmgr.h similarity index 58% rename from lib/hcl-cmgr.h rename to lib/hak-cmgr.h index 9579553..4233e5c 100644 --- a/lib/hcl-cmgr.h +++ b/lib/hak-cmgr.h @@ -22,55 +22,55 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef _HCL_CMGR_H_ -#define _HCL_CMGR_H_ +#ifndef _HAK_CMGR_H_ +#define _HAK_CMGR_H_ -#include +#include -enum hcl_cmgr_id_t +enum hak_cmgr_id_t { - HCL_CMGR_UTF8, - HCL_CMGR_UTF16, - HCL_CMGR_MB8 + HAK_CMGR_UTF8, + HAK_CMGR_UTF16, + HAK_CMGR_MB8 }; -typedef enum hcl_cmgr_id_t hcl_cmgr_id_t; +typedef enum hak_cmgr_id_t hak_cmgr_id_t; #if defined(__cplusplus) extern "C" { #endif -HCL_EXPORT hcl_cmgr_t* hcl_get_utf8_cmgr ( +HAK_EXPORT hak_cmgr_t* hak_get_utf8_cmgr ( void ); -HCL_EXPORT hcl_cmgr_t* hcl_get_cmgr_by_id ( - hcl_cmgr_id_t id +HAK_EXPORT hak_cmgr_t* hak_get_cmgr_by_id ( + hak_cmgr_id_t id ); -HCL_EXPORT hcl_cmgr_t* hcl_get_cmgr_by_bcstr ( - const hcl_bch_t* name +HAK_EXPORT hak_cmgr_t* hak_get_cmgr_by_bcstr ( + const hak_bch_t* name ); -HCL_EXPORT hcl_cmgr_t* hcl_get_cmgr_by_ucstr ( - const hcl_uch_t* name +HAK_EXPORT hak_cmgr_t* hak_get_cmgr_by_ucstr ( + const hak_uch_t* name ); -#if defined(HCL_OOCH_IS_UCH) -# define hcl_get_cmgr_by_name(name) hcl_get_cmgr_by_ucstr(name) +#if defined(HAK_OOCH_IS_UCH) +# define hak_get_cmgr_by_name(name) hak_get_cmgr_by_ucstr(name) #else -# define hcl_get_cmgr_by_name(name) hcl_get_cmgr_by_bcstr(name) +# define hak_get_cmgr_by_name(name) hak_get_cmgr_by_bcstr(name) #endif -#define hcl_get_utf8_cmgr() hcl_get_cmgr_by_id(HCL_CMGR_UTF8) -#define hcl_get_utf16_cmgr() hcl_get_cmgr_by_id(HCL_CMGR_UTF16) -#define hcl_get_mb8_cmgr() hcl_get_cmgr_by_id(HCL_CMGR_MB8) +#define hak_get_utf8_cmgr() hak_get_cmgr_by_id(HAK_CMGR_UTF8) +#define hak_get_utf16_cmgr() hak_get_cmgr_by_id(HAK_CMGR_UTF16) +#define hak_get_mb8_cmgr() hak_get_cmgr_by_id(HAK_CMGR_MB8) /* ------------------------------------------------------------------------- */ /** - * The hcl_conv_uchars_to_utf8() function converts a unicode character string \a ucs + * The hak_conv_uchars_to_utf8() function converts a unicode character string \a ucs * to a UTF8 string and writes it into the buffer pointed to by \a bcs, but * not more than \a bcslen bytes including the terminating null. * @@ -78,7 +78,7 @@ HCL_EXPORT hcl_cmgr_t* hcl_get_cmgr_by_ucstr ( * \a bcs excluding the terminating null; \a ucslen is modified to the number of * wide characters converted. * - * You may pass #HCL_NULL for \a bcs to dry-run conversion or to get the + * You may pass #HAK_NULL for \a bcs to dry-run conversion or to get the * required buffer size for conversion. -2 is never returned in this case. * * \return @@ -87,36 +87,36 @@ HCL_EXPORT hcl_cmgr_t* hcl_get_cmgr_by_ucstr ( * - -2 on no or partial conversion for a small buffer. * * \code - * const hcl_uch_t ucs[] = { 'H', 'e', 'l', 'l', 'o' }; - * hcl_bch_t bcs[10]; - * hcl_oow_t ucslen = 5; - * hcl_oow_t bcslen = HCL_COUNTOF(bcs); - * n = hcl_conv_uchars_to_utf8 (ucs, &ucslen, bcs, &bcslen); + * const hak_uch_t ucs[] = { 'H', 'e', 'l', 'l', 'o' }; + * hak_bch_t bcs[10]; + * hak_oow_t ucslen = 5; + * hak_oow_t bcslen = HAK_COUNTOF(bcs); + * n = hak_conv_uchars_to_utf8 (ucs, &ucslen, bcs, &bcslen); * if (n <= -1) * { * // conversion error * } * \endcode */ -HCL_EXPORT int hcl_conv_uchars_to_utf8 ( - const hcl_uch_t* ucs, - hcl_oow_t* ucslen, - hcl_bch_t* bcs, - hcl_oow_t* bcslen +HAK_EXPORT int hak_conv_uchars_to_utf8 ( + const hak_uch_t* ucs, + hak_oow_t* ucslen, + hak_bch_t* bcs, + hak_oow_t* bcslen ); /** - * The hcl_conv_utf8_to_uchars() function converts a UTF8 string to a uncide string. + * The hak_conv_utf8_to_uchars() function converts a UTF8 string to a uncide string. * - * It never returns -2 if \a ucs is #HCL_NULL. + * It never returns -2 if \a ucs is #HAK_NULL. * * \code - * const hcl_bch_t* bcs = "test string"; - * hcl_uch_t ucs[100]; - * hcl_oow_t ucslen = HCL_COUNTOF(buf), n; - * hcl_oow_t bcslen = 11; + * const hak_bch_t* bcs = "test string"; + * hak_uch_t ucs[100]; + * hak_oow_t ucslen = HAK_COUNTOF(buf), n; + * hak_oow_t bcslen = 11; * int n; - * n = hcl_conv_utf8_to_uchars (bcs, &bcslen, ucs, &ucslen); + * n = hak_conv_utf8_to_uchars (bcs, &bcslen, ucs, &ucslen); * if (n <= -1) { invalid/incomplenete sequence or buffer to small } * \endcode * @@ -129,26 +129,26 @@ HCL_EXPORT int hcl_conv_uchars_to_utf8 ( * -2 if the wide-character string buffer is too small. * -3 if \a bcs is not a complete sequence. */ -HCL_EXPORT int hcl_conv_utf8_to_uchars ( - const hcl_bch_t* bcs, - hcl_oow_t* bcslen, - hcl_uch_t* ucs, - hcl_oow_t* ucslen +HAK_EXPORT int hak_conv_utf8_to_uchars ( + const hak_bch_t* bcs, + hak_oow_t* bcslen, + hak_uch_t* ucs, + hak_oow_t* ucslen ); -HCL_EXPORT int hcl_conv_ucstr_to_utf8 ( - const hcl_uch_t* ucs, - hcl_oow_t* ucslen, - hcl_bch_t* bcs, - hcl_oow_t* bcslen +HAK_EXPORT int hak_conv_ucstr_to_utf8 ( + const hak_uch_t* ucs, + hak_oow_t* ucslen, + hak_bch_t* bcs, + hak_oow_t* bcslen ); -HCL_EXPORT int hcl_conv_utf8_to_ucstr ( - const hcl_bch_t* bcs, - hcl_oow_t* bcslen, - hcl_uch_t* ucs, - hcl_oow_t* ucslen +HAK_EXPORT int hak_conv_utf8_to_ucstr ( + const hak_bch_t* bcs, + hak_oow_t* bcslen, + hak_uch_t* ucs, + hak_oow_t* ucslen ); #if defined(__cplusplus) } diff --git a/lib/hak-cmn.h b/lib/hak-cmn.h new file mode 100644 index 0000000..1ef77e6 --- /dev/null +++ b/lib/hak-cmn.h @@ -0,0 +1,1196 @@ +/* + Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _HAK_CMN_H_ +#define _HAK_CMN_H_ + +/* WARNING: NEVER CHANGE/DELETE THE FOLLOWING HAK_HAVE_CFG_H DEFINITION. + * IT IS USED FOR DEPLOYMENT BY MAKEFILE.AM */ +/*#define HAK_HAVE_CFG_H*/ + +#if defined(HAK_HAVE_CFG_H) +# include +#elif defined(_WIN32) +# include +#elif defined(__OS2__) +# include +#elif defined(__DOS__) || defined(__MSDOS__) +# if defined(__MSDOS__) && !defined(__DOS__) +# define __DOS__ __MSDOS__ +# endif +# include +#elif defined(macintosh) +# include /* classic mac os */ +#else +# error UNSUPPORTED SYSTEM +#endif + +/* ========================================================================= + * ARCHITECTURE/COMPILER TWEAKS + * ========================================================================= */ + +#if defined(EMSCRIPTEN) +# if defined(HAK_SIZEOF___INT128) +# undef HAK_SIZEOF___INT128 +# define HAK_SIZEOF___INT128 0 +# endif +# if defined(HAK_SIZEOF_LONG) && defined(HAK_SIZEOF_INT) && (HAK_SIZEOF_LONG > HAK_SIZEOF_INT) + /* autoconf doesn't seem to match actual emscripten */ +# undef HAK_SIZEOF_LONG +# define HAK_SIZEOF_LONG HAK_SIZEOF_INT +# endif +#endif + +#if defined(__GNUC__) && defined(__arm__) && !defined(__ARM_ARCH) +# if defined(__ARM_ARCH_8__) +# define __ARM_ARCH 8 +# elif defined(__ARM_ARCH_7__) +# define __ARM_ARCH 7 +# elif defined(__ARM_ARCH_6__) +# define __ARM_ARCH 6 +# elif defined(__ARM_ARCH_5__) +# define __ARM_ARCH 5 +# elif defined(__ARM_ARCH_4__) +# define __ARM_ARCH 4 +# endif +#endif + +/* ========================================================================= + * PREPROCESSOR CAPABILITY CHECK + * ========================================================================= */ +#if !defined(__has_attribute) + #define __has_attribute(x) 0 +#endif + +#if !defined(__has_builtin) && defined(_INTELC32_) + /* intel c code builder 1.0 ended up with an error without this override */ + #define __has_builtin(x) 0 +#endif + +/* +#if !defined(__has_feature) + #define __has_feature(x) 0 +#endif +#if !defined(__is_identifier) + #define __is_identifier(x) 0 +#endif +*/ + +/* ========================================================================= + * PRIMITIVE TYPE DEFINTIONS + * ========================================================================= */ + +/* hak_int8_t */ +#if defined(HAK_SIZEOF_CHAR) && (HAK_SIZEOF_CHAR == 1) +# define HAK_HAVE_UINT8_T +# define HAK_HAVE_INT8_T +# define HAK_SIZEOF_UINT8_T (HAK_SIZEOF_CHAR) +# define HAK_SIZEOF_INT8_T (HAK_SIZEOF_CHAR) + typedef unsigned char hak_uint8_t; + typedef signed char hak_int8_t; +#elif defined(HAK_SIZEOF___INT8) && (HAK_SIZEOF___INT8 == 1) +# define HAK_HAVE_UINT8_T +# define HAK_HAVE_INT8_T +# define HAK_SIZEOF_UINT8_T (HAK_SIZEOF___INT8) +# define HAK_SIZEOF_INT8_T (HAK_SIZEOF___INT8) + typedef unsigned __int8 hak_uint8_t; + typedef signed __int8 hak_int8_t; +#elif defined(HAK_SIZEOF___INT8_T) && (HAK_SIZEOF___INT8_T == 1) +# define HAK_HAVE_UINT8_T +# define HAK_HAVE_INT8_T +# define HAK_SIZEOF_UINT8_T (HAK_SIZEOF___INT8_T) +# define HAK_SIZEOF_INT8_T (HAK_SIZEOF___INT8_T) + typedef unsigned __int8_t hak_uint8_t; + typedef signed __int8_t hak_int8_t; +#else +# define HAK_HAVE_UINT8_T +# define HAK_HAVE_INT8_T +# define HAK_SIZEOF_UINT8_T (1) +# define HAK_SIZEOF_INT8_T (1) + typedef unsigned char hak_uint8_t; + typedef signed char hak_int8_t; +#endif + +/* hak_int16_t */ +#if defined(HAK_SIZEOF_SHORT) && (HAK_SIZEOF_SHORT == 2) +# define HAK_HAVE_UINT16_T +# define HAK_HAVE_INT16_T +# define HAK_SIZEOF_UINT16_T (HAK_SIZEOF_SHORT) +# define HAK_SIZEOF_INT16_T (HAK_SIZEOF_SHORT) + typedef unsigned short int hak_uint16_t; + typedef signed short int hak_int16_t; +#elif defined(HAK_SIZEOF___INT16) && (HAK_SIZEOF___INT16 == 2) +# define HAK_HAVE_UINT16_T +# define HAK_HAVE_INT16_T +# define HAK_SIZEOF_UINT16_T (HAK_SIZEOF___INT16) +# define HAK_SIZEOF_INT16_T (HAK_SIZEOF___INT16) + typedef unsigned __int16 hak_uint16_t; + typedef signed __int16 hak_int16_t; +#elif defined(HAK_SIZEOF___INT16_T) && (HAK_SIZEOF___INT16_T == 2) +# define HAK_HAVE_UINT16_T +# define HAK_HAVE_INT16_T +# define HAK_SIZEOF_UINT16_T (HAK_SIZEOF___INT16_T) +# define HAK_SIZEOF_INT16_T (HAK_SIZEOF___INT16_T) + typedef unsigned __int16_t hak_uint16_t; + typedef signed __int16_t hak_int16_t; +#else +# define HAK_HAVE_UINT16_T +# define HAK_HAVE_INT16_T +# define HAK_SIZEOF_UINT16_T (2) +# define HAK_SIZEOF_INT16_T (2) + typedef unsigned short int hak_uint16_t; + typedef signed short int hak_int16_t; +#endif + + +/* hak_int32_t */ +#if defined(HAK_SIZEOF_INT) && (HAK_SIZEOF_INT == 4) +# define HAK_HAVE_UINT32_T +# define HAK_HAVE_INT32_T +# define HAK_SIZEOF_UINT32_T (HAK_SIZEOF_INT) +# define HAK_SIZEOF_INT32_T (HAK_SIZEOF_INT) + typedef unsigned int hak_uint32_t; + typedef signed int hak_int32_t; +#elif defined(HAK_SIZEOF_LONG) && (HAK_SIZEOF_LONG == 4) +# define HAK_HAVE_UINT32_T +# define HAK_HAVE_INT32_T +# define HAK_SIZEOF_UINT32_T (HAK_SIZEOF_LONG) +# define HAK_SIZEOF_INT32_T (HAK_SIZEOF_LONG) + typedef unsigned long int hak_uint32_t; + typedef signed long int hak_int32_t; +#elif defined(HAK_SIZEOF___INT32) && (HAK_SIZEOF___INT32 == 4) +# define HAK_HAVE_UINT32_T +# define HAK_HAVE_INT32_T +# define HAK_SIZEOF_UINT32_T (HAK_SIZEOF___INT32) +# define HAK_SIZEOF_INT32_T (HAK_SIZEOF___INT32) + typedef unsigned __int32 hak_uint32_t; + typedef signed __int32 hak_int32_t; +#elif defined(HAK_SIZEOF___INT32_T) && (HAK_SIZEOF___INT32_T == 4) +# define HAK_HAVE_UINT32_T +# define HAK_HAVE_INT32_T +# define HAK_SIZEOF_UINT32_T (HAK_SIZEOF___INT32_T) +# define HAK_SIZEOF_INT32_T (HAK_SIZEOF___INT32_T) + typedef unsigned __int32_t hak_uint32_t; + typedef signed __int32_t hak_int32_t; +#elif defined(__DOS__) +# define HAK_HAVE_UINT32_T +# define HAK_HAVE_INT32_T +# define HAK_SIZEOF_UINT32_T (4) +# define HAK_SIZEOF_INT32_T (4) + typedef unsigned long int hak_uint32_t; + typedef signed long int hak_int32_t; +#else +# define HAK_HAVE_UINT32_T +# define HAK_HAVE_INT32_T +# define HAK_SIZEOF_UINT32_T (4) +# define HAK_SIZEOF_INT32_T (4) + typedef unsigned int hak_uint32_t; + typedef signed int hak_int32_t; +#endif + +/* hak_int64_t */ +#if defined(HAK_SIZEOF_INT) && (HAK_SIZEOF_INT == 8) +# define HAK_HAVE_UINT64_T +# define HAK_HAVE_INT64_T +# define HAK_SIZEOF_UINT64_T (HAK_SIZEOF_INT) +# define HAK_SIZEOF_INT64_T (HAK_SIZEOF_INT) + typedef unsigned int hak_uint64_t; + typedef signed int hak_int64_t; +#elif defined(HAK_SIZEOF_LONG) && (HAK_SIZEOF_LONG == 8) +# define HAK_HAVE_UINT64_T +# define HAK_HAVE_INT64_T +# define HAK_SIZEOF_UINT64_T (HAK_SIZEOF_LONG) +# define HAK_SIZEOF_INT64_T (HAK_SIZEOF_LONG) + typedef unsigned long int hak_uint64_t; + typedef signed long int hak_int64_t; +#elif defined(HAK_SIZEOF_LONG_LONG) && (HAK_SIZEOF_LONG_LONG == 8) +# define HAK_HAVE_UINT64_T +# define HAK_HAVE_INT64_T +# define HAK_SIZEOF_UINT64_T (HAK_SIZEOF_LONG_LONG) +# define HAK_SIZEOF_INT64_T (HAK_SIZEOF_LONG_LONG) + typedef unsigned long long int hak_uint64_t; + typedef signed long long int hak_int64_t; +#elif defined(HAK_SIZEOF___INT64) && (HAK_SIZEOF___INT64 == 8) +# define HAK_HAVE_UINT64_T +# define HAK_HAVE_INT64_T +# define HAK_SIZEOF_UINT64_T (HAK_SIZEOF_LONG___INT64) +# define HAK_SIZEOF_INT64_T (HAK_SIZEOF_LONG___INT64) + typedef unsigned __int64 hak_uint64_t; + typedef signed __int64 hak_int64_t; +#elif defined(HAK_SIZEOF___INT64_T) && (HAK_SIZEOF___INT64_T == 8) +# define HAK_HAVE_UINT64_T +# define HAK_HAVE_INT64_T +# define HAK_SIZEOF_UINT64_T (HAK_SIZEOF_LONG___INT64_T) +# define HAK_SIZEOF_INT64_T (HAK_SIZEOF_LONG___INT64_T) + typedef unsigned __int64_t hak_uint64_t; + typedef signed __int64_t hak_int64_t; +#else + /* no 64-bit integer */ +#endif + +/* hak_int128_t */ +#if defined(HAK_SIZEOF_INT) && (HAK_SIZEOF_INT == 16) +# define HAK_HAVE_UINT128_T +# define HAK_HAVE_INT128_T +# define HAK_SIZEOF_UINT128_T (HAK_SIZEOF_INT) +# define HAK_SIZEOF_INT128_T (HAK_SIZEOF_INT) + typedef unsigned int hak_uint128_t; + typedef signed int hak_int128_t; +#elif defined(HAK_SIZEOF_LONG) && (HAK_SIZEOF_LONG == 16) +# define HAK_HAVE_UINT128_T +# define HAK_HAVE_INT128_T +# define HAK_SIZEOF_UINT128_T (HAK_SIZEOF_LONG) +# define HAK_SIZEOF_INT128_T (HAK_SIZEOF_LONG) + typedef unsigned long int hak_uint128_t; + typedef signed long int hak_int128_t; +#elif defined(HAK_SIZEOF_LONG_LONG) && (HAK_SIZEOF_LONG_LONG == 16) +# define HAK_HAVE_UINT128_T +# define HAK_HAVE_INT128_T +# define HAK_SIZEOF_UINT128_T (HAK_SIZEOF_LONG_LONG) +# define HAK_SIZEOF_INT128_T (HAK_SIZEOF_LONG_LONG) + typedef unsigned long long int hak_uint128_t; + typedef signed long long int hak_int128_t; +#elif defined(HAK_SIZEOF___INT128) && (HAK_SIZEOF___INT128 == 16) +# define HAK_HAVE_UINT128_T +# define HAK_HAVE_INT128_T +# define HAK_SIZEOF_UINT128_T (HAK_SIZEOF___INT128) +# define HAK_SIZEOF_INT128_T (HAK_SIZEOF___INT128) + typedef unsigned __int128 hak_uint128_t; + typedef signed __int128 hak_int128_t; +#elif defined(HAK_SIZEOF___INT128_T) && (HAK_SIZEOF___INT128_T == 16) +# define HAK_HAVE_UINT128_T +# define HAK_HAVE_INT128_T +# define HAK_SIZEOF_UINT128_T (HAK_SIZEOF___INT128_T) +# define HAK_SIZEOF_INT128_T (HAK_SIZEOF___INT128_T) + #if defined(HAK_SIZEOF___UINT128_T) && (HAK_SIZEOF___UINT128_T == HAK_SIZEOF___INT128_T) + typedef __uint128_t hak_uint128_t; + typedef __int128_t hak_int128_t; + #elif defined(__clang__) + typedef __uint128_t hak_uint128_t; + typedef __int128_t hak_int128_t; + #else + typedef unsigned __int128_t hak_uint128_t; + typedef signed __int128_t hak_int128_t; + #endif +#else + /* no 128-bit integer */ +#endif + +#if defined(HAK_HAVE_UINT8_T) && (HAK_SIZEOF_VOID_P == 1) +# error UNSUPPORTED POINTER SIZE +#elif defined(HAK_HAVE_UINT16_T) && (HAK_SIZEOF_VOID_P == 2) + typedef hak_uint16_t hak_uintptr_t; + typedef hak_int16_t hak_intptr_t; + typedef hak_uint8_t hak_ushortptr_t; + typedef hak_int8_t hak_shortptr_t; +#elif defined(HAK_HAVE_UINT32_T) && (HAK_SIZEOF_VOID_P == 4) + typedef hak_uint32_t hak_uintptr_t; + typedef hak_int32_t hak_intptr_t; + typedef hak_uint16_t hak_ushortptr_t; + typedef hak_int16_t hak_shortptr_t; +#elif defined(HAK_HAVE_UINT64_T) && (HAK_SIZEOF_VOID_P == 8) + typedef hak_uint64_t hak_uintptr_t; + typedef hak_int64_t hak_intptr_t; + typedef hak_uint32_t hak_ushortptr_t; + typedef hak_int32_t hak_shortptr_t; +#elif defined(HAK_HAVE_UINT128_T) && (HAK_SIZEOF_VOID_P == 16) + typedef hak_uint128_t hak_uintptr_t; + typedef hak_int128_t hak_intptr_t; + typedef hak_uint64_t hak_ushortptr_t; + typedef hak_int64_t hak_shortptr_t; +#else +# error UNKNOWN POINTER SIZE +#endif + +#define HAK_SIZEOF_INTPTR_T HAK_SIZEOF_VOID_P +#define HAK_SIZEOF_UINTPTR_T HAK_SIZEOF_VOID_P +#define HAK_SIZEOF_SHORTPTR_T (HAK_SIZEOF_VOID_P / 2) +#define HAK_SIZEOF_USHORTPTR_T (HAK_SIZEOF_VOID_P / 2) + +#if defined(HAK_HAVE_INT128_T) +# define HAK_SIZEOF_INTMAX_T 16 +# define HAK_SIZEOF_UINTMAX_T 16 + typedef hak_int128_t hak_intmax_t; + typedef hak_uint128_t hak_uintmax_t; +#elif defined(HAK_HAVE_INT64_T) +# define HAK_SIZEOF_INTMAX_T 8 +# define HAK_SIZEOF_UINTMAX_T 8 + typedef hak_int64_t hak_intmax_t; + typedef hak_uint64_t hak_uintmax_t; +#elif defined(HAK_HAVE_INT32_T) +# define HAK_SIZEOF_INTMAX_T 4 +# define HAK_SIZEOF_UINTMAX_T 4 + typedef hak_int32_t hak_intmax_t; + typedef hak_uint32_t hak_uintmax_t; +#elif defined(HAK_HAVE_INT16_T) +# define HAK_SIZEOF_INTMAX_T 2 +# define HAK_SIZEOF_UINTMAX_T 2 + typedef hak_int16_t hak_intmax_t; + typedef hak_uint16_t hak_uintmax_t; +#elif defined(HAK_HAVE_INT8_T) +# define HAK_SIZEOF_INTMAX_T 1 +# define HAK_SIZEOF_UINTMAX_T 1 + typedef hak_int8_t hak_intmax_t; + typedef hak_uint8_t hak_uintmax_t; +#else +# error UNKNOWN INTMAX SIZE +#endif + +/* ========================================================================= + * FLOATING-POINT TYPE + * ========================================================================= */ +/** \typedef hak_fltbas_t + * The hak_fltbas_t type defines the largest floating-pointer number type + * naturally supported. + */ +#if defined(__FreeBSD__) || defined(__MINGW32__) + /* TODO: check if the support for long double is complete. + * if so, use long double for hak_flt_t */ + typedef double hak_fltbas_t; +# define HAK_SIZEOF_FLTBAS_T HAK_SIZEOF_DOUBLE +#elif HAK_SIZEOF_LONG_DOUBLE > HAK_SIZEOF_DOUBLE + typedef long double hak_fltbas_t; +# define HAK_SIZEOF_FLTBAS_T HAK_SIZEOF_LONG_DOUBLE +#else + typedef double hak_fltbas_t; +# define HAK_SIZEOF_FLTBAS_T HAK_SIZEOF_DOUBLE +#endif + +/** \typedef hak_fltmax_t + * The hak_fltmax_t type defines the largest floating-pointer number type + * ever supported. + */ +#if HAK_SIZEOF___FLOAT128 >= HAK_SIZEOF_FLTBAS_T + /* the size of long double may be equal to the size of __float128 + * for alignment on some platforms */ + typedef __float128 hak_fltmax_t; +# define HAK_SIZEOF_FLTMAX_T HAK_SIZEOF___FLOAT128 +# define HAK_FLTMAX_REQUIRE_QUADMATH 1 +#else + typedef hak_fltbas_t hak_fltmax_t; +# define HAK_SIZEOF_FLTMAX_T HAK_SIZEOF_FLTBAS_T +# undef HAK_FLTMAX_REQUIRE_QUADMATH +#endif + +#if defined(HAK_USE_FLTMAX) +typedef hak_fltmax_t hak_flt_t; +#define HAK_SIZEOF_FLT_T HAK_SIZEOF_FLTMAX_T +#else +typedef hak_fltbas_t hak_flt_t; +#define HAK_SIZEOF_FLT_T HAK_SIZEOF_FLTBAS_T +#endif + +/* ========================================================================= + * BASIC HARD-CODED DEFINES + * ========================================================================= */ +#define HAK_BITS_PER_BYTE (8) +/* the maximum number of bch charaters to represent a single uch character */ +#define HAK_BCSIZE_MAX 6 + +/* ========================================================================= + * BASIC HAK TYPES + * ========================================================================= */ + +typedef char hak_bch_t; +typedef int hak_bci_t; +typedef unsigned int hak_bcu_t; +typedef unsigned char hak_bchu_t; /* unsigned version of hak_bch_t for inner working */ +#define HAK_SIZEOF_BCH_T HAK_SIZEOF_CHAR +#define HAK_SIZEOF_BCI_T HAK_SIZEOF_INT + +#if defined(HAK_WIDE_CHAR_SIZE) && (HAK_WIDE_CHAR_SIZE >= 4) +# if defined(__GNUC__) && defined(__CHAR32_TYPE__) + typedef __CHAR32_TYPE__ hak_uch_t; +# else + typedef hak_uint32_t hak_uch_t; +# endif + typedef hak_uint32_t hak_uchu_t; /* same as hak_uch_t as it is already unsigned */ +# define HAK_SIZEOF_UCH_T 4 + +#elif defined(__GNUC__) && defined(__CHAR16_TYPE__) + typedef __CHAR16_TYPE__ hak_uch_t; + typedef hak_uint16_t hak_uchu_t; /* same as hak_uch_t as it is already unsigned */ +# define HAK_SIZEOF_UCH_T 2 +#else + typedef hak_uint16_t hak_uch_t; + typedef hak_uint16_t hak_uchu_t; /* same as hak_uch_t as it is already unsigned */ +# define HAK_SIZEOF_UCH_T 2 +#endif + +typedef hak_int32_t hak_uci_t; +typedef hak_uint32_t hak_ucu_t; +#define HAK_SIZEOF_UCI_T 4 + +typedef hak_uint8_t hak_oob_t; + +/* NOTE: sizeof(hak_oop_t) must be equal to sizeof(hak_oow_t) */ +typedef hak_uintptr_t hak_oow_t; +typedef hak_intptr_t hak_ooi_t; +#define HAK_SIZEOF_OOW_T HAK_SIZEOF_UINTPTR_T +#define HAK_SIZEOF_OOI_T HAK_SIZEOF_INTPTR_T +#define HAK_OOW_BITS (HAK_SIZEOF_OOW_T * HAK_BITS_PER_BYTE) +#define HAK_OOI_BITS (HAK_SIZEOF_OOI_T * HAK_BITS_PER_BYTE) + +typedef hak_ushortptr_t hak_oohw_t; /* half word - half word */ +typedef hak_shortptr_t hak_oohi_t; /* signed half word */ +#define HAK_SIZEOF_OOHW_T HAK_SIZEOF_USHORTPTR_T +#define HAK_SIZEOF_OOHI_T HAK_SIZEOF_SHORTPTR_T +#define HAK_OOHW_BITS (HAK_SIZEOF_OOHW_T * HAK_BITS_PER_BYTE) +#define HAK_OOHI_BITS (HAK_SIZEOF_OOHI_T * HAK_BITS_PER_BYTE) + +struct hak_ucs_t +{ + hak_uch_t* ptr; + hak_oow_t len; +}; +typedef struct hak_ucs_t hak_ucs_t; + +struct hak_bcs_t +{ + hak_bch_t* ptr; + hak_oow_t len; +}; +typedef struct hak_bcs_t hak_bcs_t; + +struct hak_ucsc_t +{ + /* the first two fields 'ptr' and 'len' must match those in hak_ucs_t + * for easy downcasting to it. */ + hak_uch_t* ptr; + hak_oow_t len; /* length */ + hak_oow_t capa; /* capacity */ +}; +typedef struct hak_ucsc_t hak_ucsc_t; + +struct hak_bcsc_t +{ + /* the first two fields 'ptr' and 'len' must match those in hak_bcs_t + * for easy downcasting to it. */ + hak_bch_t* ptr; + hak_oow_t len; /* length */ + hak_oow_t capa; /* capacity */ +}; +typedef struct hak_bcsc_t hak_bcsc_t; + +#if defined(HAK_ENABLE_WIDE_CHAR) + typedef hak_uch_t hak_ooch_t; + typedef hak_uchu_t hak_oochu_t; + typedef hak_uci_t hak_ooci_t; + typedef hak_ucu_t hak_oocu_t; + typedef hak_ucs_t hak_oocs_t; + typedef hak_ucsc_t hak_oocsc_t; +# define HAK_OOCH_IS_UCH +# define HAK_SIZEOF_OOCH_T HAK_SIZEOF_UCH_T +#else + typedef hak_bch_t hak_ooch_t; + typedef hak_bchu_t hak_oochu_t; + typedef hak_bci_t hak_ooci_t; + typedef hak_bcu_t hak_oocu_t; + typedef hak_bcs_t hak_oocs_t; + typedef hak_bcsc_t hak_oocsc_t; +# define HAK_OOCH_IS_BCH +# define HAK_SIZEOF_OOCH_T HAK_SIZEOF_BCH_T +#endif + +typedef struct hak_ptl_t hak_ptl_t; +struct hak_ptl_t +{ + void* ptr; + hak_oow_t len; +}; + +typedef struct hak_ptlc_t hak_ptlc_t; +struct hak_ptlc_t +{ + void* ptr; + hak_oow_t len; + hak_oow_t capa; +}; + +typedef unsigned int hak_bitmask_t; + +/* ========================================================================= + * BIGINT TYPES AND MACROS + * ========================================================================= */ +#if defined(HAK_ENABLE_FULL_LIW) && (HAK_SIZEOF_UINTMAX_T > HAK_SIZEOF_OOW_T) +# define HAK_USE_OOW_FOR_LIW +#endif + +#if defined(HAK_USE_OOW_FOR_LIW) + typedef hak_oow_t hak_liw_t; /* large integer word */ + typedef hak_ooi_t hak_lii_t; + typedef hak_uintmax_t hak_lidw_t; /* large integer double word */ + typedef hak_intmax_t hak_lidi_t; +# define HAK_SIZEOF_LIW_T HAK_SIZEOF_OOW_T +# define HAK_SIZEOF_LIDW_T HAK_SIZEOF_UINTMAX_T +# define HAK_LIW_BITS HAK_OOW_BITS +# define HAK_LIDW_BITS (HAK_SIZEOF_UINTMAX_T * HAK_BITS_PER_BYTE) +#else + typedef hak_oohw_t hak_liw_t; + typedef hak_oohi_t hak_lii_t; + typedef hak_oow_t hak_lidw_t; + typedef hak_ooi_t hak_lidi_t; +# define HAK_SIZEOF_LIW_T HAK_SIZEOF_OOHW_T +# define HAK_SIZEOF_LIDW_T HAK_SIZEOF_OOW_T +# define HAK_LIW_BITS HAK_OOHW_BITS +# define HAK_LIDW_BITS HAK_OOW_BITS +#endif + +/* ========================================================================= + * BASIC OOP ENCODING + * ========================================================================= */ + +/* actual structure defined in hak.h */ +typedef struct hak_obj_t hak_obj_t; +typedef struct hak_obj_t* hak_oop_t; + +/* + * An object pointer(OOP) is an ordinary pointer value to an object. + * but some simple numeric values are also encoded into OOP using a simple + * bit-shifting and masking. + * + * A real OOP is stored without any bit-shifting while a non-pointer value encoded + * in an OOP is bit-shifted to the left by 2 and the 2 least-significant bits + * are set to 1 or 2. + * + * This scheme works because the object allocators aligns the object size to + * a multiple of sizeof(hak_oop_t). This way, the 2 least-significant bits + * of a real OOP are always 0s. + * + * With 2 bits, i can encode only 3 special types except object pointers. + * Since I need more than 3 special types, I extend the tag bits up to 4 bits + * to represent a special data type that doesn't require a range as wide + * as a small integer. A unicode character, for instance, only requires 21 + * bits at most. An error doesn't need to be as diverse as a small integer. + */ + +#define HAK_OOP_TAG_BITS_LO 2 +#define HAK_OOP_TAG_BITS_HI 2 + +#define HAK_OOP_TAG_SMOOI 1 /* 01 */ +#define HAK_OOP_TAG_SMPTR 2 /* 10 */ +#define HAK_OOP_TAG_EXTENDED 3 /* 11 - internal use only */ +#define HAK_OOP_TAG_CHAR 3 /* 0011 */ +#define HAK_OOP_TAG_ERROR 7 /* 0111 */ +#define HAK_OOP_TAG_RESERVED0 11 /* 1011 */ +#define HAK_OOP_TAG_RESERVED1 15 /* 1111 */ + +#define HAK_OOP_GET_TAG_LO(oop) (((hak_oow_t)oop) & HAK_LBMASK(hak_oow_t, HAK_OOP_TAG_BITS_LO)) +#define HAK_OOP_GET_TAG_LOHI(oop) (((hak_oow_t)oop) & HAK_LBMASK(hak_oow_t, HAK_OOP_TAG_BITS_LO + HAK_OOP_TAG_BITS_HI)) +#define HAK_OOP_GET_TAG(oop) (HAK_OOP_GET_TAG_LO(oop) == HAK_OOP_TAG_EXTENDED? HAK_OOP_GET_TAG_LOHI(oop): HAK_OOP_GET_TAG_LO(oop)) + +#define HAK_OOP_IS_NUMERIC(oop) (HAK_OOP_GET_TAG_LO(oop) != 0) +#define HAK_OOP_IS_POINTER(oop) (HAK_OOP_GET_TAG_LO(oop) == 0) + +#define HAK_OOP_IS_SMOOI(oop) (HAK_OOP_GET_TAG_LO(oop) == HAK_OOP_TAG_SMOOI) +#define HAK_OOP_IS_SMPTR(oop) (HAK_OOP_GET_TAG_LO(oop) == HAK_OOP_TAG_SMPTR) + +#define HAK_SMOOI_TO_OOP(num) ((hak_oop_t)((((hak_oow_t)(hak_ooi_t)(num)) << HAK_OOP_TAG_BITS_LO) | HAK_OOP_TAG_SMOOI)) +#define HAK_OOP_TO_SMOOI(oop) (((hak_ooi_t)oop) >> HAK_OOP_TAG_BITS_LO) +/* +#define HAK_SMPTR_TO_OOP(ptr) ((hak_oop_t)((((hak_oow_t)(ptr)) << HAK_OOP_TAG_BITS_LO) | HAK_OOP_TAG_SMPTR)) +#define HAK_OOP_TO_SMPTR(oop) (((hak_ooi_t)oop) >> HAK_OOP_TAG_BITS_LO) +*/ +#define HAK_SMPTR_TO_OOP(ptr) ((hak_oop_t)(((hak_oow_t)ptr) | HAK_OOP_TAG_SMPTR)) +#define HAK_OOP_TO_SMPTR(oop) ((void*)(((hak_oow_t)oop) & ~HAK_LBMASK(hak_oow_t, HAK_OOP_TAG_BITS_LO))) + +#define HAK_OOP_IS_CHAR(oop) (HAK_OOP_GET_TAG(oop) == HAK_OOP_TAG_CHAR) +#define HAK_OOP_IS_ERROR(oop) (HAK_OOP_GET_TAG(oop) == HAK_OOP_TAG_ERROR) + +#define HAK_OOP_TO_CHAR(oop) (((hak_oow_t)oop) >> (HAK_OOP_TAG_BITS_LO + HAK_OOP_TAG_BITS_LO)) +#define HAK_CHAR_TO_OOP(num) ((hak_oop_t)((((hak_oow_t)(num)) << (HAK_OOP_TAG_BITS_LO + HAK_OOP_TAG_BITS_LO)) | HAK_OOP_TAG_CHAR)) +#define HAK_OOP_TO_ERROR(oop) (((hak_oow_t)oop) >> (HAK_OOP_TAG_BITS_LO + HAK_OOP_TAG_BITS_LO)) +#define HAK_ERROR_TO_OOP(num) ((hak_oop_t)((((hak_oow_t)(num)) << (HAK_OOP_TAG_BITS_LO + HAK_OOP_TAG_BITS_LO)) | HAK_OOP_TAG_ERROR)) + +/* SMOOI takes up 62 bit on a 64-bit architecture and 30 bits + * on a 32-bit architecture. The absolute value takes up 61 bits and 29 bits + * respectively for the 1 sign bit. */ +#define HAK_SMOOI_BITS (HAK_OOI_BITS - HAK_OOP_TAG_BITS_LO) +#define HAK_SMOOI_ABS_BITS (HAK_SMOOI_BITS - 1) +#define HAK_SMOOI_MAX ((hak_ooi_t)(~((hak_oow_t)0) >> (HAK_OOP_TAG_BITS_LO + 1))) +/* Sacrificing 1 bit pattern for a negative SMOOI makes + * implementation a lot eaisier in many respect. */ +/*#define HAK_SMOOI_MIN (-HAK_SMOOI_MAX - 1)*/ +#define HAK_SMOOI_MIN (-HAK_SMOOI_MAX) +#define HAK_IN_SMOOI_RANGE(ooi) ((ooi) >= HAK_SMOOI_MIN && (ooi) <= HAK_SMOOI_MAX) + + +/* SMPTR is a special value which has been devised to encode an address value + * whose low HAK_OOP_TAG_BITS_LO bits are 0. its class is SmallPointer. A pointer + * returned by most of system functions would be aligned to the pointer size. + * you can use the followings macros when converting such a pointer without loss. */ +#define HAK_IN_SMPTR_RANGE(ptr) ((((hak_oow_t)ptr) & HAK_LBMASK(hak_oow_t, HAK_OOP_TAG_BITS_LO)) == 0) + +#define HAK_CHAR_BITS (HAK_OOI_BITS - HAK_OOP_TAG_BITS_LO - HAK_OOP_TAG_BITS_HI) +#define HAK_CHAR_MIN 0 +#define HAK_CHAR_MAX (~((hak_oow_t)0) >> (HAK_OOP_TAG_BITS_LO + HAK_OOP_TAG_BITS_HI)) + +#define HAK_ERROR_BITS (HAK_OOI_BITS - HAK_OOP_TAG_BITS_LO - HAK_OOP_TAG_BITS_HI) +#define HAK_ERROR_MIN 0 +#define HAK_ERROR_MAX (~((hak_oow_t)0) >> (HAK_OOP_TAG_BITS_LO + HAK_OOP_TAG_BITS_HI)) + +/* TODO: There are untested code where smint is converted to hak_oow_t. + * for example, the spec making macro treats the number as hak_oow_t instead of hak_ooi_t. + * as of this writing, i skip testing that part with the spec value exceeding HAK_SMOOI_MAX. + * later, please verify it works, probably by limiting the value ranges in such macros + */ + +/* ========================================================================= + * TIME-RELATED TYPES + * =========================================================================*/ +#define HAK_MSECS_PER_SEC (1000) +#define HAK_MSECS_PER_MIN (HAK_MSECS_PER_SEC * HAK_SECS_PER_MIN) +#define HAK_MSECS_PER_HOUR (HAK_MSECS_PER_SEC * HAK_SECS_PER_HOUR) +#define HAK_MSECS_PER_DAY (HAK_MSECS_PER_SEC * HAK_SECS_PER_DAY) + +#define HAK_USECS_PER_MSEC (1000) +#define HAK_NSECS_PER_USEC (1000) +#define HAK_NSECS_PER_MSEC (HAK_NSECS_PER_USEC * HAK_USECS_PER_MSEC) +#define HAK_USECS_PER_SEC (HAK_USECS_PER_MSEC * HAK_MSECS_PER_SEC) +#define HAK_NSECS_PER_SEC (HAK_NSECS_PER_USEC * HAK_USECS_PER_MSEC * HAK_MSECS_PER_SEC) + +#define HAK_SECNSEC_TO_MSEC(sec,nsec) \ + (((hak_intptr_t)(sec) * HAK_MSECS_PER_SEC) + ((hak_intptr_t)(nsec) / HAK_NSECS_PER_MSEC)) + +#define HAK_SECNSEC_TO_USEC(sec,nsec) \ + (((hak_intptr_t)(sec) * HAK_USECS_PER_SEC) + ((hak_intptr_t)(nsec) / HAK_NSECS_PER_USEC)) + +#define HAK_SECNSEC_TO_NSEC(sec,nsec) \ + (((hak_intptr_t)(sec) * HAK_NSECS_PER_SEC) + (hak_intptr_t)(nsec)) + +#define HAK_SEC_TO_MSEC(sec) ((sec) * HAK_MSECS_PER_SEC) +#define HAK_MSEC_TO_SEC(sec) ((sec) / HAK_MSECS_PER_SEC) + +#define HAK_USEC_TO_NSEC(usec) ((usec) * HAK_NSECS_PER_USEC) +#define HAK_NSEC_TO_USEC(nsec) ((nsec) / HAK_NSECS_PER_USEC) + +#define HAK_MSEC_TO_NSEC(msec) ((msec) * HAK_NSECS_PER_MSEC) +#define HAK_NSEC_TO_MSEC(nsec) ((nsec) / HAK_NSECS_PER_MSEC) + +#define HAK_SEC_TO_NSEC(sec) ((sec) * HAK_NSECS_PER_SEC) +#define HAK_NSEC_TO_SEC(nsec) ((nsec) / HAK_NSECS_PER_SEC) + +#define HAK_SEC_TO_USEC(sec) ((sec) * HAK_USECS_PER_SEC) +#define HAK_USEC_TO_SEC(usec) ((usec) / HAK_USECS_PER_SEC) + +#if defined(HAK_SIZEOF_INT64_T) && (HAK_SIZEOF_INT64_T > 0) +typedef hak_int64_t hak_ntime_sec_t; +#else +typedef hak_int32_t hak_ntime_sec_t; +#endif +typedef hak_int32_t hak_ntime_nsec_t; + +typedef struct hak_ntime_t hak_ntime_t; +struct hak_ntime_t +{ + hak_ntime_sec_t sec; + hak_ntime_nsec_t nsec; /* nanoseconds */ +}; + +#define HAK_INIT_NTIME(c,s,ns) (((c)->sec = (s)), ((c)->nsec = (ns))) +#define HAK_CLEAR_NTIME(c) HAK_INIT_NTIME(c, 0, 0) + +#define HAK_ADD_NTIME(c,a,b) \ + do { \ + (c)->sec = (a)->sec + (b)->sec; \ + (c)->nsec = (a)->nsec + (b)->nsec; \ + while ((c)->nsec >= HAK_NSECS_PER_SEC) { (c)->sec++; (c)->nsec -= HAK_NSECS_PER_SEC; } \ + } while(0) + +#define HAK_ADD_NTIME_SNS(c,a,s,ns) \ + do { \ + (c)->sec = (a)->sec + (s); \ + (c)->nsec = (a)->nsec + (ns); \ + while ((c)->nsec >= HAK_NSECS_PER_SEC) { (c)->sec++; (c)->nsec -= HAK_NSECS_PER_SEC; } \ + } while(0) + +#define HAK_SUB_NTIME(c,a,b) \ + do { \ + (c)->sec = (a)->sec - (b)->sec; \ + (c)->nsec = (a)->nsec - (b)->nsec; \ + while ((c)->nsec < 0) { (c)->sec--; (c)->nsec += HAK_NSECS_PER_SEC; } \ + } while(0) + +#define HAK_SUB_NTIME_SNS(c,a,s,ns) \ + do { \ + (c)->sec = (a)->sec - s; \ + (c)->nsec = (a)->nsec - ns; \ + while ((c)->nsec < 0) { (c)->sec--; (c)->nsec += HAK_NSECS_PER_SEC; } \ + } while(0) + + +#define HAK_CMP_NTIME(a,b) (((a)->sec == (b)->sec)? ((a)->nsec - (b)->nsec): ((a)->sec - (b)->sec)) + +/* ========================================================================= + * PRIMITIVE MACROS + * ========================================================================= */ +#define HAK_UCI_EOF ((hak_uci_t)-1) +#define HAK_BCI_EOF ((hak_bci_t)-1) +#define HAK_OOCI_EOF ((hak_ooci_t)-1) + +#define HAK_SIZEOF(x) (sizeof(x)) +#define HAK_COUNTOF(x) (sizeof(x) / sizeof((x)[0])) +#define HAK_BITSOF(x) (sizeof(x) * HAK_BITS_PER_BYTE) + +/** + * The HAK_OFFSETOF() macro returns the offset of a field from the beginning + * of a structure. + */ +#define HAK_OFFSETOF(type,member) ((hak_uintptr_t)&((type*)0)->member) + +/** + * The HAK_ALIGNOF() macro returns the alignment size of a structure. + * Note that this macro may not work reliably depending on the type given. + */ +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202311L) /* C23 */ +#define HAK_ALIGNOF(type) alignof(type) +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) /* C11 */ +#define HAK_ALIGNOF(type) _Alignof(type) +#elif defined(__cplusplus) && (__cplusplus >= 201103L) /* C++11 */ +#define HAK_ALIGNOF(type) alignof(type) +#else +#define HAK_ALIGNOF(type) HAK_OFFSETOF(struct { hak_uint8_t d1; type d2; }, d2) + /*(sizeof(struct { hak_uint8_t d1; type d2; }) - sizeof(type))*/ +#endif + +#if defined(__cplusplus) +# if (__cplusplus >= 201103L) /* C++11 */ +# define HAK_NULL nullptr +# else +# define HAK_NULL (0) +# endif +#else +# define HAK_NULL ((void*)0) +#endif + +/* make a bit mask that can mask off low n bits */ +#define HAK_LBMASK(type,n) (~(~((type)0) << (n))) +#define HAK_LBMASK_SAFE(type,n) (((n) < HAK_BITSOF(type))? HAK_LBMASK(type,n): ~(type)0) + +/* make a bit mask that can mask off high n bits */ +#define HAK_HBMASK(type,n) (~(~((type)0) >> (n))) +#define HAK_HBMASK_SAFE(type,n) (((n) < HAK_BITSOF(type))? HAK_HBMASK(type,n): ~(type)0) + +/* get 'length' bits starting from the bit at the 'offset' */ +#define HAK_GETBITS(type,value,offset,length) \ + ((((type)(value)) >> (offset)) & HAK_LBMASK(type,length)) + +#define HAK_CLEARBITS(type,value,offset,length) \ + (((type)(value)) & ~(HAK_LBMASK(type,length) << (offset))) + +#define HAK_SETBITS(type,value,offset,length,bits) \ + (value = (HAK_CLEARBITS(type,value,offset,length) | (((bits) & HAK_LBMASK(type,length)) << (offset)))) + +#define HAK_FLIPBITS(type,value,offset,length) \ + (((type)(value)) ^ (HAK_LBMASK(type,length) << (offset))) + +#define HAK_ORBITS(type,value,offset,length,bits) \ + (value = (((type)(value)) | (((bits) & HAK_LBMASK(type,length)) << (offset)))) + + +/** + * The HAK_BITS_MAX() macros calculates the maximum value that the 'nbits' + * bits of an unsigned integer of the given 'type' can hold. + * \code + * printf ("%u", HAK_BITS_MAX(unsigned int, 5)); + * \endcode + */ +/*#define HAK_BITS_MAX(type,nbits) ((((type)1) << (nbits)) - 1)*/ +#define HAK_BITS_MAX(type,nbits) ((~(type)0) >> (HAK_BITSOF(type) - (nbits))) + +/* ========================================================================= + * MMGR + * ========================================================================= */ +typedef struct hak_mmgr_t hak_mmgr_t; + +/** + * allocate a memory chunk of the size \a n. + * \return pointer to a memory chunk on success, #HAK_NULL on failure. + */ +typedef void* (*hak_mmgr_alloc_t) (hak_mmgr_t* mmgr, hak_oow_t n); +/** + * resize a memory chunk pointed to by \a ptr to the size \a n. + * \return pointer to a memory chunk on success, #HAK_NULL on failure. + */ +typedef void* (*hak_mmgr_realloc_t) (hak_mmgr_t* mmgr, void* ptr, hak_oow_t n); +/** + * free a memory chunk pointed to by \a ptr. + */ +typedef void (*hak_mmgr_free_t) (hak_mmgr_t* mmgr, void* ptr); + +/** + * The hak_mmgr_t type defines the memory management interface. + * As the type is merely a structure, it is just used as a single container + * for memory management functions with a pointer to user-defined data. + * The user-defined data pointer \a ctx is passed to each memory management + * function whenever it is called. You can allocate, reallocate, and free + * a memory chunk. + * + * For example, a hak_xxx_open() function accepts a pointer of the hak_mmgr_t + * type and the xxx object uses it to manage dynamic data within the object. + */ +struct hak_mmgr_t +{ + hak_mmgr_alloc_t allocmem; /**< allocation function */ + hak_mmgr_realloc_t reallocmem; /**< resizing function */ + hak_mmgr_free_t freemem; /**< disposal function */ + void* ctx; /**< user-defined data pointer */ +}; + +/** + * The HAK_MMGR_ALLOC() macro allocates a memory block of the \a size bytes + * using the \a mmgr memory manager. + */ +#define HAK_MMGR_ALLOC(mmgr,size) ((mmgr)->allocmem(mmgr,size)) + +/** + * The HAK_MMGR_REALLOC() macro resizes a memory block pointed to by \a ptr + * to the \a size bytes using the \a mmgr memory manager. + */ +#define HAK_MMGR_REALLOC(mmgr,ptr,size) ((mmgr)->reallocmem(mmgr,ptr,size)) + +/** + * The HAK_MMGR_FREE() macro deallocates the memory block pointed to by \a ptr. + */ +#define HAK_MMGR_FREE(mmgr,ptr) ((mmgr)->freemem(mmgr,ptr)) + + +/* ========================================================================= + * CMGR + * =========================================================================*/ + +typedef struct hak_cmgr_t hak_cmgr_t; + +typedef hak_oow_t (*hak_cmgr_bctouc_t) ( + const hak_bch_t* mb, + hak_oow_t size, + hak_uch_t* wc +); + +typedef hak_oow_t (*hak_cmgr_uctobc_t) ( + hak_uch_t wc, + hak_bch_t* mb, + hak_oow_t size +); + +/** + * The hak_cmgr_t type defines the character-level interface to + * multibyte/wide-character conversion. This interface doesn't + * provide any facility to store conversion state in a context + * independent manner. This leads to the limitation that it can + * handle a stateless multibyte encoding only. + */ +struct hak_cmgr_t +{ + hak_cmgr_bctouc_t bctouc; + hak_cmgr_uctobc_t uctobc; +}; + +/* ========================================================================= + * FORWARD DECLARATION FOR MAIN HAK STRUCTURE + * =========================================================================*/ +typedef struct hak_t hak_t; + +/* ========================================================================= + * MACROS THAT CHANGES THE BEHAVIORS OF THE C COMPILER/LINKER + * =========================================================================*/ + +#if defined(__BORLANDC__) && (__BORLANDC__ < 0x500) +# define HAK_IMPORT +# define HAK_EXPORT +# define HAK_PRIVATE +#elif defined(_WIN32) || (defined(__WATCOMC__) && (__WATCOMC__ >= 1000) && !defined(__WINDOWS_386__)) +# define HAK_IMPORT __declspec(dllimport) +# define HAK_EXPORT __declspec(dllexport) +# define HAK_PRIVATE +#elif defined(__GNUC__) && ((__GNUC__>= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) +# define HAK_IMPORT __attribute__((visibility("default"))) +# define HAK_EXPORT __attribute__((visibility("default"))) +# define HAK_PRIVATE __attribute__((visibility("hidden"))) +/*# define HAK_PRIVATE __attribute__((visibility("internal")))*/ +#else +# define HAK_IMPORT +# define HAK_EXPORT +# define HAK_PRIVATE +#endif + +#if defined(__cplusplus) || (defined(__STDC_VERSION__) && (__STDC_VERSION__>=199901L)) + /* C++/C99 has inline */ +# define HAK_INLINE inline +# define HAK_HAVE_INLINE +#elif defined(__GNUC__) && defined(__GNUC_GNU_INLINE__) + /* gcc disables inline when -std=c89 or -ansi is used. + * so use __inline__ supported by gcc regardless of the options */ +# define HAK_INLINE /*extern*/ __inline__ +# define HAK_HAVE_INLINE +#else +# define HAK_INLINE +# undef HAK_HAVE_INLINE +#endif + +#if __has_attribute(__sentinel__) || (defined(__GNUC__) && (__GNUC__ >= 4)) +# define HAK_SENTINEL(v) __attribute__((__sentinel__(x))) +#else +# define HAK_SENTINEL(v) +#endif + +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)) +# define HAK_UNUSED __attribute__((__unused__)) +#else +# define HAK_UNUSED +#endif + +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202311L) +# define HAK_NORETURN noreturn +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) +# define HAK_NORETURN _Noreturn +#else +# define HAK_NORETURN +#endif + +/** + * The HAK_TYPE_IS_SIGNED() macro determines if a type is signed. + * \code + * printf ("%d\n", (int)HAK_TYPE_IS_SIGNED(int)); + * printf ("%d\n", (int)HAK_TYPE_IS_SIGNED(unsigned int)); + * \endcode + */ +#define HAK_TYPE_IS_SIGNED(type) (((type)0) > ((type)-1)) + +/** + * The HAK_TYPE_IS_SIGNED() macro determines if a type is unsigned. + * \code + * printf ("%d\n", HAK_TYPE_IS_UNSIGNED(int)); + * printf ("%d\n", HAK_TYPE_IS_UNSIGNED(unsigned int)); + * \endcode + */ +#define HAK_TYPE_IS_UNSIGNED(type) (((type)0) < ((type)-1)) + +#define HAK_TYPE_SIGNED_MAX(type) \ + ((type)~((type)1 << ((type)HAK_BITSOF(type) - 1))) +#define HAK_TYPE_UNSIGNED_MAX(type) ((type)(~(type)0)) + +#define HAK_TYPE_SIGNED_MIN(type) \ + ((type)((type)1 << ((type)HAK_BITSOF(type) - 1))) +#define HAK_TYPE_UNSIGNED_MIN(type) ((type)0) + +#define HAK_TYPE_MAX(type) \ + ((HAK_TYPE_IS_SIGNED(type)? HAK_TYPE_SIGNED_MAX(type): HAK_TYPE_UNSIGNED_MAX(type))) +#define HAK_TYPE_MIN(type) \ + ((HAK_TYPE_IS_SIGNED(type)? HAK_TYPE_SIGNED_MIN(type): HAK_TYPE_UNSIGNED_MIN(type))) + +/* round up a positive integer x to the nearst multiple of y */ +#define HAK_ALIGN(x,y) ((((x) + (y) - 1) / (y)) * (y)) + +/* round up a positive integer x to the nearst multiple of y where + * y must be a multiple of a power of 2*/ +#define HAK_ALIGN_POW2(x,y) ((((x) + (y) - 1)) & ~((y) - 1)) + +#define HAK_IS_UNALIGNED_POW2(x,y) ((x) & ((y) - 1)) +#define HAK_IS_ALIGNED_POW2(x,y) (!HAK_IS_UNALIGNED_POW2(x,y)) + +#if defined(__cplusplus) || (defined(__STDC_VERSION__) && (__STDC_VERSION__>=199901L)) +/* array index */ +#define HAK_AID(x) [x]= +/* struct field name */ +#define HAK_SFN(x) .x= +#else +#define HAK_AID(x) +#define HAK_SFN(x) +#endif + +/* ========================================================================= + * COMPILER FEATURE TEST MACROS + * =========================================================================*/ +#if defined(__has_builtin) + #if __has_builtin(__builtin_ctz) + #define HAK_HAVE_BUILTIN_CTZ + #endif + #if __has_builtin(__builtin_ctzl) + #define HAK_HAVE_BUILTIN_CTZL + #endif + #if __has_builtin(__builtin_ctzll) + #define HAK_HAVE_BUILTIN_CTZLL + #endif + + #if __has_builtin(__builtin_clz) + #define HAK_HAVE_BUILTIN_CLZ + #endif + #if __has_builtin(__builtin_clzl) + #define HAK_HAVE_BUILTIN_CLZL + #endif + #if __has_builtin(__builtin_clzll) + #define HAK_HAVE_BUILTIN_CLZLL + #endif + + #if __has_builtin(__builtin_uadd_overflow) + #define HAK_HAVE_BUILTIN_UADD_OVERFLOW + #endif + #if __has_builtin(__builtin_uaddl_overflow) + #define HAK_HAVE_BUILTIN_UADDL_OVERFLOW + #endif + #if __has_builtin(__builtin_uaddll_overflow) + #define HAK_HAVE_BUILTIN_UADDLL_OVERFLOW + #endif + #if __has_builtin(__builtin_umul_overflow) + #define HAK_HAVE_BUILTIN_UMUL_OVERFLOW + #endif + #if __has_builtin(__builtin_umull_overflow) + #define HAK_HAVE_BUILTIN_UMULL_OVERFLOW + #endif + #if __has_builtin(__builtin_umulll_overflow) + #define HAK_HAVE_BUILTIN_UMULLL_OVERFLOW + #endif + + #if __has_builtin(__builtin_sadd_overflow) + #define HAK_HAVE_BUILTIN_SADD_OVERFLOW + #endif + #if __has_builtin(__builtin_saddl_overflow) + #define HAK_HAVE_BUILTIN_SADDL_OVERFLOW + #endif + #if __has_builtin(__builtin_saddll_overflow) + #define HAK_HAVE_BUILTIN_SADDLL_OVERFLOW + #endif + #if __has_builtin(__builtin_smul_overflow) + #define HAK_HAVE_BUILTIN_SMUL_OVERFLOW + #endif + #if __has_builtin(__builtin_smull_overflow) + #define HAK_HAVE_BUILTIN_SMULL_OVERFLOW + #endif + #if __has_builtin(__builtin_smulll_overflow) + #define HAK_HAVE_BUILTIN_SMULLL_OVERFLOW + #endif + + #if __has_builtin(__builtin_expect) + #define HAK_HAVE_BUILTIN_EXPECT + #endif + + + #if __has_builtin(__sync_lock_test_and_set) + #define HAK_HAVE_SYNC_LOCK_TEST_AND_SET + #endif + #if __has_builtin(__sync_lock_release) + #define HAK_HAVE_SYNC_LOCK_RELEASE + #endif + + #if __has_builtin(__sync_synchronize) + #define HAK_HAVE_SYNC_SYNCHRONIZE + #endif + #if __has_builtin(__sync_bool_compare_and_swap) + #define HAK_HAVE_SYNC_BOOL_COMPARE_AND_SWAP + #endif + #if __has_builtin(__sync_val_compare_and_swap) + #define HAK_HAVE_SYNC_VAL_COMPARE_AND_SWAP + #endif + + #if __has_builtin(__builtin_bswap16) + #define HAK_HAVE_BUILTIN_BSWAP16 + #endif + #if __has_builtin(__builtin_bswap32) + #define HAK_HAVE_BUILTIN_BSWAP32 + #endif + #if __has_builtin(__builtin_bswap64) + #define HAK_HAVE_BUILTIN_BSWAP64 + #endif + #if __has_builtin(__builtin_bswap128) + #define HAK_HAVE_BUILTIN_BSWAP128 + #endif + +#elif defined(__GNUC__) && defined(__GNUC_MINOR__) + + #if (__GNUC__ >= 4) + #define HAK_HAVE_SYNC_LOCK_TEST_AND_SET + #define HAK_HAVE_SYNC_LOCK_RELEASE + + #define HAK_HAVE_SYNC_SYNCHRONIZE + #define HAK_HAVE_SYNC_BOOL_COMPARE_AND_SWAP + #define HAK_HAVE_SYNC_VAL_COMPARE_AND_SWAP + #endif + + #if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + #define HAK_HAVE_BUILTIN_CTZ + #define HAK_HAVE_BUILTIN_CTZL + #define HAK_HAVE_BUILTIN_CTZLL + #define HAK_HAVE_BUILTIN_CLZ + #define HAK_HAVE_BUILTIN_CLZL + #define HAK_HAVE_BUILTIN_CLZLL + #define HAK_HAVE_BUILTIN_EXPECT + #endif + + #if (__GNUC__ >= 5) + #define HAK_HAVE_BUILTIN_UADD_OVERFLOW + #define HAK_HAVE_BUILTIN_UADDL_OVERFLOW + #define HAK_HAVE_BUILTIN_UADDLL_OVERFLOW + #define HAK_HAVE_BUILTIN_UMUL_OVERFLOW + #define HAK_HAVE_BUILTIN_UMULL_OVERFLOW + #define HAK_HAVE_BUILTIN_UMULLL_OVERFLOW + + #define HAK_HAVE_BUILTIN_SADD_OVERFLOW + #define HAK_HAVE_BUILTIN_SADDL_OVERFLOW + #define HAK_HAVE_BUILTIN_SADDLL_OVERFLOW + #define HAK_HAVE_BUILTIN_SMUL_OVERFLOW + #define HAK_HAVE_BUILTIN_SMULL_OVERFLOW + #define HAK_HAVE_BUILTIN_SMULLL_OVERFLOW + #endif + + #if (__GNUC__ >= 5) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + /* 4.8.0 or later */ + #define HAK_HAVE_BUILTIN_BSWAP16 + #endif + #if (__GNUC__ >= 5) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) + /* 4.3.0 or later */ + #define HAK_HAVE_BUILTIN_BSWAP32 + #define HAK_HAVE_BUILTIN_BSWAP64 + /*#define HAK_HAVE_BUILTIN_BSWAP128*/ + #endif + +#endif + +#if defined(HAK_HAVE_BUILTIN_EXPECT) +# define HAK_LIKELY(x) (__builtin_expect(!!(x),1)) +# define HAK_UNLIKELY(x) (__builtin_expect(!!(x),0)) +#else +# define HAK_LIKELY(x) (x) +# define HAK_UNLIKELY(x) (x) +#endif + +/* ========================================================================= + * STATIC ASSERTION + * =========================================================================*/ +#define HAK_STATIC_JOIN_INNER(x, y) x ## y +#define HAK_STATIC_JOIN(x, y) HAK_STATIC_JOIN_INNER(x, y) + +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202311L) +# define HAK_STATIC_ASSERT(expr) static_assert (expr, "invalid assertion") +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) +# define HAK_STATIC_ASSERT(expr) _Static_assert (expr, "invalid assertion") +#elif defined(__cplusplus) && (__cplusplus >= 201103L) +# define HAK_STATIC_ASSERT(expr) static_assert (expr, "invalid assertion") +#else +# define HAK_STATIC_ASSERT(expr) typedef char HAK_STATIC_JOIN(HAK_STATIC_ASSERT_T_, __LINE__)[(expr)? 1: -1] HAK_UNUSED +#endif + +#define HAK_STATIC_ASSERT_EXPR(expr) ((void)HAK_SIZEOF(char[(expr)? 1: -1])) + +#endif diff --git a/lib/hak-dos.h b/lib/hak-dos.h new file mode 100644 index 0000000..4e94f8c --- /dev/null +++ b/lib/hak-dos.h @@ -0,0 +1,165 @@ +/* + Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* DOS for other platforms than x86? + * If so, the endian should be defined selectively + */ +#define HAK_ENDIAN_LITTLE + +#if defined(__WATCOMC__) && defined(__386__) +# define HAK_SIZEOF_CHAR 1 +# define HAK_SIZEOF_SHORT 2 +# define HAK_SIZEOF_INT 4 +# define HAK_SIZEOF_LONG 4 +# if (__WATCOMC__ < 1200) +# define HAK_SIZEOF_LONG_LONG 0 +# else +# define HAK_SIZEOF_LONG_LONG 8 +# endif +# define HAK_SIZEOF_VOID_P 4 +# define HAK_SIZEOF_FLOAT 4 +# define HAK_SIZEOF_DOUBLE 8 +# define HAK_SIZEOF_LONG_DOUBLE 8 +# define HAK_SIZEOF_WCHAR_T 2 + +# define HAK_SIZEOF___INT8 1 +# define HAK_SIZEOF___INT16 2 +# define HAK_SIZEOF___INT32 4 +# define HAK_SIZEOF___INT64 8 +# define HAK_SIZEOF___INT128 0 + +# define HAK_SIZEOF_OFF64_T 0 +# define HAK_SIZEOF_OFF_T 4 + +# define HAK_SIZEOF_MBSTATE_T HAK_SIZEOF_LONG +# define HAK_MBLEN_MAX 8 + +#elif defined(__WATCOMC__) && !defined(__386__) +# define HAK_SIZEOF_CHAR 1 +# define HAK_SIZEOF_SHORT 2 +# define HAK_SIZEOF_INT 2 +# define HAK_SIZEOF_LONG 4 +# define HAK_SIZEOF_LONG_LONG 8 + +# define HAK_SIZEOF_VOID_P 4 +# define HAK_SIZEOF_FLOAT 4 +# define HAK_SIZEOF_DOUBLE 8 +# define HAK_SIZEOF_LONG_DOUBLE 8 +# define HAK_SIZEOF_WCHAR_T 2 + +# define HAK_SIZEOF___INT8 1 +# define HAK_SIZEOF___INT16 2 +# define HAK_SIZEOF___INT32 4 +# define HAK_SIZEOF___INT64 8 +# define HAK_SIZEOF___INT128 0 + +# define HAK_SIZEOF_OFF64_T 0 +# define HAK_SIZEOF_OFF_T 4 + +# define HAK_SIZEOF_MBSTATE_T HAK_SIZEOF_LONG +# define HAK_MBLEN_MAX 8 + +#elif defined(__TURBOC__) || defined(_MSC_VER) +/* TODO: be more version specific wchar_t may be available in newer BCC */ +# define HAK_SIZEOF_CHAR 1 +# define HAK_SIZEOF_SHORT 2 +# define HAK_SIZEOF_INT 2 +# define HAK_SIZEOF_LONG 4 +# define HAK_SIZEOF_LONG_LONG 0 + +# define HAK_SIZEOF_VOID_P 4 +# define HAK_SIZEOF_FLOAT 4 +# define HAK_SIZEOF_DOUBLE 8 +# define HAK_SIZEOF_LONG_DOUBLE 10 +# define HAK_SIZEOF_WCHAR_T 0 + +# define HAK_SIZEOF___INT8 0 +# define HAK_SIZEOF___INT16 0 +# define HAK_SIZEOF___INT32 0 +# define HAK_SIZEOF___INT64 0 +# define HAK_SIZEOF___INT128 0 + +# define HAK_SIZEOF_OFF64_T 0 +# define HAK_SIZEOF_OFF_T 4 + +# define HAK_SIZEOF_MBSTATE_T HAK_SIZEOF_LONG +# define HAK_MBLEN_MAX 8 + +#elif defined(__ZTC__) && defined(DOS386) + + /* Zortech in DOSX 386 mode (ztc -mx) */ +# define HAK_SIZEOF_CHAR 1 +# define HAK_SIZEOF_SHORT 2 +# define HAK_SIZEOF_INT 4 +# define HAK_SIZEOF_LONG 4 +# define HAK_SIZEOF_LONG_LONG 0 + +# define HAK_SIZEOF_VOID_P 4 +# define HAK_SIZEOF_FLOAT 4 +# define HAK_SIZEOF_DOUBLE 8 +# define HAK_SIZEOF_LONG_DOUBLE 8 +# define HAK_SIZEOF_WCHAR_T 1 + +# define HAK_SIZEOF___INT8 0 +# define HAK_SIZEOF___INT16 0 +# define HAK_SIZEOF___INT32 0 +# define HAK_SIZEOF___INT64 0 +# define HAK_SIZEOF___INT128 0 + +# define HAK_SIZEOF_OFF64_T 0 +# define HAK_SIZEOF_OFF_T 4 + +# define HAK_SIZEOF_MBSTATE_T HAK_SIZEOF_LONG +# define HAK_MBLEN_MAX 8 + +#elif defined(_INTELC32_) + + /* Intel C Code Builder 1.0 */ +# define HAK_SIZEOF_CHAR 1 +# define HAK_SIZEOF_SHORT 2 +# define HAK_SIZEOF_INT 4 +# define HAK_SIZEOF_LONG 4 +# define HAK_SIZEOF_LONG_LONG 0 + +# define HAK_SIZEOF_VOID_P 4 +# define HAK_SIZEOF_FLOAT 4 +# define HAK_SIZEOF_DOUBLE 8 +# define HAK_SIZEOF_LONG_DOUBLE 8 +# define HAK_SIZEOF_WCHAR_T 1 + +# define HAK_SIZEOF___INT8 0 +# define HAK_SIZEOF___INT16 0 +# define HAK_SIZEOF___INT32 0 +# define HAK_SIZEOF___INT64 0 +# define HAK_SIZEOF___INT128 0 + +# define HAK_SIZEOF_OFF64_T 0 +# define HAK_SIZEOF_OFF_T 4 + +# define HAK_SIZEOF_MBSTATE_T HAK_SIZEOF_LONG +# define HAK_MBLEN_MAX 8 + +#else +# error Define the size of various data types. +#endif + diff --git a/lib/hak-fmt.h b/lib/hak-fmt.h new file mode 100644 index 0000000..8cca8d0 --- /dev/null +++ b/lib/hak-fmt.h @@ -0,0 +1,407 @@ +/* + Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _HAK_FMT_H_ +#define _HAK_FMT_H_ + +#include +#include + +/** \file + * This file defines various formatting functions. + */ + +/** + * The hak_fmt_intmax_flag_t type defines enumerators to change the + * behavior of hak_fmt_intmax() and hak_fmt_uintmax(). + */ +enum hak_fmt_intmax_flag_t +{ + /* Use lower 6 bits to represent base between 2 and 36 inclusive. + * Upper bits are used for these flag options */ + + /** Don't truncate if the buffer is not large enough */ + HAK_FMT_INTMAX_NOTRUNC = (0x40 << 0), +#define HAK_FMT_INTMAX_NOTRUNC HAK_FMT_INTMAX_NOTRUNC +#define HAK_FMT_UINTMAX_NOTRUNC HAK_FMT_INTMAX_NOTRUNC +#define HAK_FMT_INTMAX_TO_BCSTR_NOTRUNC HAK_FMT_INTMAX_NOTRUNC +#define HAK_FMT_UINTMAX_TO_BCSTR_NOTRUNC HAK_FMT_INTMAX_NOTRUNC +#define HAK_FMT_INTMAX_TO_UCSTR_NOTRUNC HAK_FMT_INTMAX_NOTRUNC +#define HAK_FMT_UINTMAX_TO_UCSTR_NOTRUNC HAK_FMT_INTMAX_NOTRUNC +#define HAK_FMT_INTMAX_TO_OOCSTR_NOTRUNC HAK_FMT_INTMAX_NOTRUNC +#define HAK_FMT_UINTMAX_TO_OOCSTR_NOTRUNC HAK_FMT_INTMAX_NOTRUNC + + /** Don't append a terminating null */ + HAK_FMT_INTMAX_NONULL = (0x40 << 1), +#define HAK_FMT_INTMAX_NONULL HAK_FMT_INTMAX_NONULL +#define HAK_FMT_UINTMAX_NONULL HAK_FMT_INTMAX_NONULL +#define HAK_FMT_INTMAX_TO_BCSTR_NONULL HAK_FMT_INTMAX_NONULL +#define HAK_FMT_UINTMAX_TO_BCSTR_NONULL HAK_FMT_INTMAX_NONULL +#define HAK_FMT_INTMAX_TO_UCSTR_NONULL HAK_FMT_INTMAX_NONULL +#define HAK_FMT_UINTMAX_TO_UCSTR_NONULL HAK_FMT_INTMAX_NONULL +#define HAK_FMT_INTMAX_TO_OOCSTR_NONULL HAK_FMT_INTMAX_NONULL +#define HAK_FMT_UINTMAX_TO_OOCSTR_NONULL HAK_FMT_INTMAX_NONULL + + /** Produce no digit for a value of zero */ + HAK_FMT_INTMAX_NOZERO = (0x40 << 2), +#define HAK_FMT_INTMAX_NOZERO HAK_FMT_INTMAX_NOZERO +#define HAK_FMT_UINTMAX_NOZERO HAK_FMT_INTMAX_NOZERO +#define HAK_FMT_INTMAX_TO_BCSTR_NOZERO HAK_FMT_INTMAX_NOZERO +#define HAK_FMT_UINTMAX_TO_BCSTR_NOZERO HAK_FMT_INTMAX_NOZERO +#define HAK_FMT_INTMAX_TO_UCSTR_NOZERO HAK_FMT_INTMAX_NOZERO +#define HAK_FMT_UINTMAX_TO_UCSTR_NOZERO HAK_FMT_INTMAX_NOZERO +#define HAK_FMT_INTMAX_TO_OOCSTR_NOZERO HAK_FMT_INTMAX_NOZERO +#define HAK_FMT_UINTMAX_TO_OOCSTR_NOZERO HAK_FMT_INTMAX_NOZERO + + /** Produce a leading zero for a non-zero value */ + HAK_FMT_INTMAX_ZEROLEAD = (0x40 << 3), +#define HAK_FMT_INTMAX_ZEROLEAD HAK_FMT_INTMAX_ZEROLEAD +#define HAK_FMT_UINTMAX_ZEROLEAD HAK_FMT_INTMAX_ZEROLEAD +#define HAK_FMT_INTMAX_TO_BCSTR_ZEROLEAD HAK_FMT_INTMAX_ZEROLEAD +#define HAK_FMT_UINTMAX_TO_BCSTR_ZEROLEAD HAK_FMT_INTMAX_ZEROLEAD +#define HAK_FMT_INTMAX_TO_UCSTR_ZEROLEAD HAK_FMT_INTMAX_ZEROLEAD +#define HAK_FMT_UINTMAX_TO_UCSTR_ZEROLEAD HAK_FMT_INTMAX_ZEROLEAD +#define HAK_FMT_INTMAX_TO_OOCSTR_ZEROLEAD HAK_FMT_INTMAX_ZEROLEAD +#define HAK_FMT_UINTMAX_TO_OOCSTR_ZEROLEAD HAK_FMT_INTMAX_ZEROLEAD + + /** Use uppercase letters for alphabetic digits */ + HAK_FMT_INTMAX_UPPERCASE = (0x40 << 4), +#define HAK_FMT_INTMAX_UPPERCASE HAK_FMT_INTMAX_UPPERCASE +#define HAK_FMT_UINTMAX_UPPERCASE HAK_FMT_INTMAX_UPPERCASE +#define HAK_FMT_INTMAX_TO_BCSTR_UPPERCASE HAK_FMT_INTMAX_UPPERCASE +#define HAK_FMT_UINTMAX_TO_BCSTR_UPPERCASE HAK_FMT_INTMAX_UPPERCASE +#define HAK_FMT_INTMAX_TO_UCSTR_UPPERCASE HAK_FMT_INTMAX_UPPERCASE +#define HAK_FMT_UINTMAX_TO_UCSTR_UPPERCASE HAK_FMT_INTMAX_UPPERCASE +#define HAK_FMT_INTMAX_TO_OOCSTR_UPPERCASE HAK_FMT_INTMAX_UPPERCASE +#define HAK_FMT_UINTMAX_TO_OOCSTR_UPPERCASE HAK_FMT_INTMAX_UPPERCASE + + /** Insert a plus sign for a positive integer including 0 */ + HAK_FMT_INTMAX_PLUSSIGN = (0x40 << 5), +#define HAK_FMT_INTMAX_PLUSSIGN HAK_FMT_INTMAX_PLUSSIGN +#define HAK_FMT_UINTMAX_PLUSSIGN HAK_FMT_INTMAX_PLUSSIGN +#define HAK_FMT_INTMAX_TO_BCSTR_PLUSSIGN HAK_FMT_INTMAX_PLUSSIGN +#define HAK_FMT_UINTMAX_TO_BCSTR_PLUSSIGN HAK_FMT_INTMAX_PLUSSIGN +#define HAK_FMT_INTMAX_TO_UCSTR_PLUSSIGN HAK_FMT_INTMAX_PLUSSIGN +#define HAK_FMT_UINTMAX_TO_UCSTR_PLUSSIGN HAK_FMT_INTMAX_PLUSSIGN +#define HAK_FMT_INTMAX_TO_OOCSTR_PLUSSIGN HAK_FMT_INTMAX_PLUSSIGN +#define HAK_FMT_UINTMAX_TO_OOCSTR_PLUSSIGN HAK_FMT_INTMAX_PLUSSIGN + + /** Insert a space for a positive integer including 0 */ + HAK_FMT_INTMAX_EMPTYSIGN = (0x40 << 6), +#define HAK_FMT_INTMAX_EMPTYSIGN HAK_FMT_INTMAX_EMPTYSIGN +#define HAK_FMT_UINTMAX_EMPTYSIGN HAK_FMT_INTMAX_EMPTYSIGN +#define HAK_FMT_INTMAX_TO_BCSTR_EMPTYSIGN HAK_FMT_INTMAX_EMPTYSIGN +#define HAK_FMT_UINTMAX_TO_BCSTR_EMPTYSIGN HAK_FMT_INTMAX_EMPTYSIGN +#define HAK_FMT_INTMAX_TO_UCSTR_EMPTYSIGN HAK_FMT_INTMAX_EMPTYSIGN +#define HAK_FMT_UINTMAX_TO_UCSTR_EMPTYSIGN HAK_FMT_INTMAX_EMPTYSIGN + + /** Fill the right part of the string */ + HAK_FMT_INTMAX_FILLRIGHT = (0x40 << 7), +#define HAK_FMT_INTMAX_FILLRIGHT HAK_FMT_INTMAX_FILLRIGHT +#define HAK_FMT_UINTMAX_FILLRIGHT HAK_FMT_INTMAX_FILLRIGHT +#define HAK_FMT_INTMAX_TO_BCSTR_FILLRIGHT HAK_FMT_INTMAX_FILLRIGHT +#define HAK_FMT_UINTMAX_TO_BCSTR_FILLRIGHT HAK_FMT_INTMAX_FILLRIGHT +#define HAK_FMT_INTMAX_TO_UCSTR_FILLRIGHT HAK_FMT_INTMAX_FILLRIGHT +#define HAK_FMT_UINTMAX_TO_UCSTR_FILLRIGHT HAK_FMT_INTMAX_FILLRIGHT +#define HAK_FMT_INTMAX_TO_OOCSTR_FILLRIGHT HAK_FMT_INTMAX_FILLRIGHT +#define HAK_FMT_UINTMAX_TO_OOCSTR_FILLRIGHT HAK_FMT_INTMAX_FILLRIGHT + + /** Fill between the sign chacter and the digit part */ + HAK_FMT_INTMAX_FILLCENTER = (0x40 << 8) +#define HAK_FMT_INTMAX_FILLCENTER HAK_FMT_INTMAX_FILLCENTER +#define HAK_FMT_UINTMAX_FILLCENTER HAK_FMT_INTMAX_FILLCENTER +#define HAK_FMT_INTMAX_TO_BCSTR_FILLCENTER HAK_FMT_INTMAX_FILLCENTER +#define HAK_FMT_UINTMAX_TO_BCSTR_FILLCENTER HAK_FMT_INTMAX_FILLCENTER +#define HAK_FMT_INTMAX_TO_UCSTR_FILLCENTER HAK_FMT_INTMAX_FILLCENTER +#define HAK_FMT_UINTMAX_TO_UCSTR_FILLCENTER HAK_FMT_INTMAX_FILLCENTER +#define HAK_FMT_INTMAX_TO_OOCSTR_FILLCENTER HAK_FMT_INTMAX_FILLCENTER +#define HAK_FMT_UINTMAX_TO_OOCSTR_FILLCENTER HAK_FMT_INTMAX_FILLCENTER +}; + +/* ========================================================================= + * FORMATTED OUTPUT + * ========================================================================= */ +typedef struct hak_fmtout_t hak_fmtout_t; + +typedef int (*hak_fmtout_putbchars_t) ( + hak_t* hak, + hak_fmtout_t* fmtout, + const hak_bch_t* ptr, + hak_oow_t len +); + +typedef int (*hak_fmtout_putuchars_t) ( + hak_t* hak, + hak_fmtout_t* fmtout, + const hak_uch_t* ptr, + hak_oow_t len +); + +typedef int (*hak_fmtout_putobj_t) ( + hak_t* hak, + hak_fmtout_t* fmtout, + hak_oop_t obj +); + +enum hak_fmtout_fmt_type_t +{ + HAK_FMTOUT_FMT_TYPE_BCH = 0, + HAK_FMTOUT_FMT_TYPE_UCH +}; +typedef enum hak_fmtout_fmt_type_t hak_fmtout_fmt_type_t; + +struct hak_fmtout_t +{ + hak_oow_t count; /* out */ + + hak_mmgr_t* mmgr; /* in */ + hak_fmtout_putbchars_t putbchars; /* in */ + hak_fmtout_putuchars_t putuchars; /* in */ + hak_fmtout_putobj_t putobj; /* in - %O is not handled if it's not set. */ + hak_bitmask_t mask; /* in */ + void* ctx; /* in */ + + /* internally set as input */ + hak_fmtout_fmt_type_t fmt_type; + const void* fmt_str; +}; + +/* ========================================================================= + * FORMATTED INPUT + * ========================================================================= */ + +typedef struct hak_fmtin_t hak_fmtin_t; + +struct hak_fmtin_t +{ +#if 0 + hak_fmtin_getbchars_t getbchars; /* in */ + hak_fmtin_getuchars_t getuchars; /* in */ +#endif + void* ctx; /* in */ +}; + +#if defined(__cplusplus) +extern "C" { +#endif + +/** + * The hak_fmt_intmax_to_bcstr() function formats an integer \a value to a + * multibyte string according to the given base and writes it to a buffer + * pointed to by \a buf. It writes to the buffer at most \a size characters + * including the terminating null. The base must be between 2 and 36 inclusive + * and can be ORed with zero or more #hak_fmt_intmax_to_bcstr_flag_t enumerators. + * This ORed value is passed to the function via the \a base_and_flags + * parameter. If the formatted string is shorter than \a bufsize, the redundant + * slots are filled with the fill character \a fillchar if it is not a null + * character. The filling behavior is determined by the flags shown below: + * + * - If #HAK_FMT_INTMAX_TO_BCSTR_FILLRIGHT is set in \a base_and_flags, slots + * after the formatting string are filled. + * - If #HAK_FMT_INTMAX_TO_BCSTR_FILLCENTER is set in \a base_and_flags, slots + * before the formatting string are filled. However, if it contains the + * sign character, the slots between the sign character and the digit part + * are filled. + * - If neither #HAK_FMT_INTMAX_TO_BCSTR_FILLRIGHT nor #HAK_FMT_INTMAX_TO_BCSTR_FILLCENTER + * , slots before the formatting string are filled. + * + * The \a precision parameter specified the minimum number of digits to + * produce from the \a value. If \a value produces fewer digits than + * \a precision, the actual digits are padded with '0' to meet the precision + * requirement. You can pass a negative number if you don't wish to specify + * precision. + * + * The terminating null is not added if #HAK_FMT_INTMAX_TO_BCSTR_NONULL is set; + * The #HAK_FMT_INTMAX_TO_BCSTR_UPPERCASE flag indicates that the function should + * use the uppercase letter for a alphabetic digit; + * You can set #HAK_FMT_INTMAX_TO_BCSTR_NOTRUNC if you require lossless formatting. + * The #HAK_FMT_INTMAX_TO_BCSTR_PLUSSIGN flag and #HAK_FMT_INTMAX_TO_BCSTR_EMPTYSIGN + * ensures that the plus sign and a space is added for a positive integer + * including 0 respectively. + * The #HAK_FMT_INTMAX_TO_BCSTR_ZEROLEAD flag ensures that the numeric string + * begins with '0' before applying the prefix. + * You can set the #HAK_FMT_INTMAX_TO_BCSTR_NOZERO flag if you want the value of + * 0 to produce nothing. If both #HAK_FMT_INTMAX_TO_BCSTR_NOZERO and + * #HAK_FMT_INTMAX_TO_BCSTR_ZEROLEAD are specified, '0' is still produced. + * + * If \a prefix is not #HAK_NULL, it is inserted before the digits. + * + * \return + * - -1 if the base is not between 2 and 36 inclusive. + * - negated number of characters required for lossless formatting + * - if \a bufsize is 0. + * - if #HAK_FMT_INTMAX_TO_BCSTR_NOTRUNC is set and \a bufsize is less than + * the minimum required for lossless formatting. + * - number of characters written to the buffer excluding a terminating + * null in all other cases. + */ +HAK_EXPORT int hak_fmt_intmax_to_bcstr ( + hak_bch_t* buf, /**< buffer pointer */ + int bufsize, /**< buffer size */ + hak_intmax_t value, /**< integer to format */ + int base_and_flags, /**< base ORed with flags */ + int precision, /**< precision */ + hak_bch_t fillchar, /**< fill character */ + const hak_bch_t* prefix /**< prefix */ +); + +/** + * The hak_fmt_intmax_to_ucstr() function formats an integer \a value to a + * wide-character string according to the given base and writes it to a buffer + * pointed to by \a buf. It writes to the buffer at most \a size characters + * including the terminating null. The base must be between 2 and 36 inclusive + * and can be ORed with zero or more #hak_fmt_intmax_to_ucstr_flag_t enumerators. + * This ORed value is passed to the function via the \a base_and_flags + * parameter. If the formatted string is shorter than \a bufsize, the redundant + * slots are filled with the fill character \a fillchar if it is not a null + * character. The filling behavior is determined by the flags shown below: + * + * - If #HAK_FMT_INTMAX_TO_UCSTR_FILLRIGHT is set in \a base_and_flags, slots + * after the formatting string are filled. + * - If #HAK_FMT_INTMAX_TO_UCSTR_FILLCENTER is set in \a base_and_flags, slots + * before the formatting string are filled. However, if it contains the + * sign character, the slots between the sign character and the digit part + * are filled. + * - If neither #HAK_FMT_INTMAX_TO_UCSTR_FILLRIGHT nor #HAK_FMT_INTMAX_TO_UCSTR_FILLCENTER + * , slots before the formatting string are filled. + * + * The \a precision parameter specified the minimum number of digits to + * produce from the \ value. If \a value produces fewer digits than + * \a precision, the actual digits are padded with '0' to meet the precision + * requirement. You can pass a negative number if don't wish to specify + * precision. + * + * The terminating null is not added if #HAK_FMT_INTMAX_TO_UCSTR_NONULL is set; + * The #HAK_FMT_INTMAX_TO_UCSTR_UPPERCASE flag indicates that the function should + * use the uppercase letter for a alphabetic digit; + * You can set #HAK_FMT_INTMAX_TO_UCSTR_NOTRUNC if you require lossless formatting. + * The #HAK_FMT_INTMAX_TO_UCSTR_PLUSSIGN flag and #HAK_FMT_INTMAX_TO_UCSTR_EMPTYSIGN + * ensures that the plus sign and a space is added for a positive integer + * including 0 respectively. + * The #HAK_FMT_INTMAX_TO_UCSTR_ZEROLEAD flag ensures that the numeric string + * begins with 0 before applying the prefix. + * You can set the #HAK_FMT_INTMAX_TO_UCSTR_NOZERO flag if you want the value of + * 0 to produce nothing. If both #HAK_FMT_INTMAX_TO_UCSTR_NOZERO and + * #HAK_FMT_INTMAX_TO_UCSTR_ZEROLEAD are specified, '0' is still produced. + * + * If \a prefix is not #HAK_NULL, it is inserted before the digits. + * + * \return + * - -1 if the base is not between 2 and 36 inclusive. + * - negated number of characters required for lossless formatting + * - if \a bufsize is 0. + * - if #HAK_FMT_INTMAX_TO_UCSTR_NOTRUNC is set and \a bufsize is less than + * the minimum required for lossless formatting. + * - number of characters written to the buffer excluding a terminating + * null in all other cases. + */ +HAK_EXPORT int hak_fmt_intmax_to_ucstr ( + hak_uch_t* buf, /**< buffer pointer */ + int bufsize, /**< buffer size */ + hak_intmax_t value, /**< integer to format */ + int base_and_flags, /**< base ORed with flags */ + int precision, /**< precision */ + hak_uch_t fillchar, /**< fill character */ + const hak_uch_t* prefix /**< prefix */ +); + +/** + * The hak_fmt_uintmax_to_bcstr() function formats an unsigned integer \a value + * to a multibyte string buffer. It behaves the same as hak_fmt_intmax_to_bcstr() + * except that it handles an unsigned integer. + */ +HAK_EXPORT int hak_fmt_uintmax_to_bcstr ( + hak_bch_t* buf, /**< buffer pointer */ + int bufsize, /**< buffer size */ + hak_uintmax_t value, /**< integer to format */ + int base_and_flags, /**< base ORed with flags */ + int precision, /**< precision */ + hak_bch_t fillchar, /**< fill character */ + const hak_bch_t* prefix /**< prefix */ +); + +/** + * The hak_fmt_uintmax_to_ucstr() function formats an unsigned integer \a value + * to a multibyte string buffer. It behaves the same as hak_fmt_intmax_to_ucstr() + * except that it handles an unsigned integer. + */ +HAK_EXPORT int hak_fmt_uintmax_to_ucstr ( + hak_uch_t* buf, /**< buffer pointer */ + int bufsize, /**< buffer size */ + hak_uintmax_t value, /**< integer to format */ + int base_and_flags, /**< base ORed with flags */ + int precision, /**< precision */ + hak_uch_t fillchar, /**< fill character */ + const hak_uch_t* prefix /**< prefix */ +); + +#if defined(HAK_OOCH_IS_BCH) +# define hak_fmt_intmax_to_oocstr hak_fmt_intmax_to_bcstr +# define hak_fmt_uintmax_to_oocstr hak_fmt_uintmax_to_bcstr +#else +# define hak_fmt_intmax_to_oocstr hak_fmt_intmax_to_ucstr +# define hak_fmt_uintmax_to_oocstr hak_fmt_uintmax_to_ucstr +#endif + + +/* TODO: hak_fmt_fltmax_to_bcstr()... hak_fmt_fltmax_to_ucstr() */ + + +/* ========================================================================= + * FORMATTED OUTPUT + * ========================================================================= */ +HAK_EXPORT int hak_bfmt_outv ( + hak_t* hak, + hak_fmtout_t* fmtout, + const hak_bch_t* fmt, + va_list ap +); + +HAK_EXPORT int hak_ufmt_outv ( + hak_t* hak, + hak_fmtout_t* fmtout, + const hak_uch_t* fmt, + va_list ap +); + + +HAK_EXPORT int hak_bfmt_out ( + hak_t* hak, + hak_fmtout_t* fmtout, + const hak_bch_t* fmt, + ... +); + +HAK_EXPORT int hak_ufmt_out ( + hak_t* hak, + hak_fmtout_t* fmtout, + const hak_uch_t* fmt, + ... +); + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/lib/hak-json.h b/lib/hak-json.h new file mode 100644 index 0000000..16e64fd --- /dev/null +++ b/lib/hak-json.h @@ -0,0 +1,252 @@ +/* + Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _HAK_JSON_H_ +#define _HAK_JSON_H_ + +#include + +/** + * The hak_json_t type defines a simple json parser. + */ +typedef struct hak_json_t hak_json_t; + +enum hak_json_option_t +{ + HAK_JSON_TRAIT, + HAK_JSON_LOG_MASK, +}; +typedef enum hak_json_option_t hak_json_option_t; + +enum hak_json_trait_t +{ + /* no trait defined at this moment. XXXX is just a placeholder */ + HAK_JSON_XXXX = (1 << 0) +}; +typedef enum hak_json_trait_t hak_json_trait_t; + +/* ========================================================================= */ + +enum hak_json_state_t +{ + HAK_JSON_STATE_START, + HAK_JSON_STATE_IN_ARRAY, + HAK_JSON_STATE_IN_DIC, + + HAK_JSON_STATE_IN_WORD_VALUE, + HAK_JSON_STATE_IN_NUMERIC_VALUE, + HAK_JSON_STATE_IN_STRING_VALUE, + HAK_JSON_STATE_IN_CHARACTER_VALUE +}; +typedef enum hak_json_state_t hak_json_state_t; + + +/* ========================================================================= */ +enum hak_json_inst_t +{ + HAK_JSON_INST_START_ARRAY, + HAK_JSON_INST_END_ARRAY, + HAK_JSON_INST_START_DIC, + HAK_JSON_INST_END_DIC, + + HAK_JSON_INST_KEY, + + HAK_JSON_INST_CHARACTER, /* there is no such element as character in real JSON */ + HAK_JSON_INST_STRING, + HAK_JSON_INST_NUMBER, + HAK_JSON_INST_NIL, + HAK_JSON_INST_TRUE, + HAK_JSON_INST_FALSE, +}; +typedef enum hak_json_inst_t hak_json_inst_t; + +typedef void (*hak_json_log_write_t) ( + hak_json_t* json, + hak_bitmask_t mask, + const hak_ooch_t* msg, + hak_oow_t len +); + +typedef int (*hak_json_instcb_t) ( + hak_json_t* json, + hak_json_inst_t inst, + const hak_oocs_t* str +); + +struct hak_json_prim_t +{ + hak_json_log_write_t log_write; + hak_json_instcb_t instcb; +}; +typedef struct hak_json_prim_t hak_json_prim_t; + +/* ========================================================================= */ + +#if defined(__cplusplus) +extern "C" { +#endif + +HAK_EXPORT hak_json_t* hak_json_open ( + hak_mmgr_t* mmgr, + hak_oow_t xtnsize, + hak_json_prim_t* prim, + hak_errnum_t* errnum +); + +HAK_EXPORT void hak_json_close ( + hak_json_t* json +); + +HAK_EXPORT void hak_json_reset ( + hak_json_t* json +); + +HAK_EXPORT int hak_json_feedbchars ( + hak_json_t* json, + const hak_bch_t* ptr, + hak_oow_t len, + hak_oow_t* xlen +); + +HAK_EXPORT int hak_json_feeduchars ( + hak_json_t* json, + const hak_uch_t* ptr, + hak_oow_t len, + hak_oow_t* xlen +); + + +#if defined(HAK_OOCH_IS_UCH) +# define hak_json_feed hak_json_feeduchars +#else +# define hak_json_feed hak_json_feedbchars +#endif + + +HAK_EXPORT hak_json_state_t hak_json_getstate ( + hak_json_t* json +); + +HAK_EXPORT int hak_json_setoption ( + hak_json_t* json, + hak_json_option_t id, + const void* value +); + +HAK_EXPORT int hak_json_getoption ( + hak_json_t* json, + hak_json_option_t id, + void* value +); + + +HAK_EXPORT void* hak_json_getxtn ( + hak_json_t* json +); + +HAK_EXPORT hak_mmgr_t* hak_json_getmmgr ( + hak_json_t* json +); + +HAK_EXPORT hak_cmgr_t* hak_json_getcmgr ( + hak_json_t* json +); + +HAK_EXPORT void hak_json_setcmgr ( + hak_json_t* json, + hak_cmgr_t* cmgr +); + + +HAK_EXPORT hak_errnum_t hak_json_geterrnum ( + hak_json_t* json +); + +HAK_EXPORT const hak_ooch_t* hak_json_geterrstr ( + hak_json_t* json +); + +HAK_EXPORT const hak_ooch_t* hak_json_geterrmsg ( + hak_json_t* json +); + +HAK_EXPORT void hak_json_seterrnum ( + hak_json_t* json, + hak_errnum_t errnum +); + +HAK_EXPORT void hak_json_seterrbfmt ( + hak_json_t* json, + hak_errnum_t errnum, + const hak_bch_t* fmt, + ... +); + +HAK_EXPORT void hak_json_seterrufmt ( + hak_json_t* json, + hak_errnum_t errnum, + const hak_uch_t* fmt, + ... +); + +HAK_EXPORT void hak_json_logbfmt ( + hak_json_t* json, + hak_bitmask_t mask, + const hak_bch_t* fmt, + ... +); + +HAK_EXPORT void hak_json_logufmt ( + hak_json_t* json, + hak_bitmask_t mask, + const hak_uch_t* fmt, + ... +); + +HAK_EXPORT void* hak_json_allocmem ( + hak_json_t* json, + hak_oow_t size +); + +HAK_EXPORT void* hak_json_callocmem ( + hak_json_t* json, + hak_oow_t size +); + +HAK_EXPORT void* hak_json_reallocmem ( + hak_json_t* json, + void* ptr, + hak_oow_t size +); + +HAK_EXPORT void hak_json_freemem ( + hak_json_t* json, + void* ptr +); + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/lib/hcl-mac.h b/lib/hak-mac.h similarity index 66% rename from lib/hcl-mac.h rename to lib/hak-mac.h index 3de909c..e19d1f9 100644 --- a/lib/hcl-mac.h +++ b/lib/hak-mac.h @@ -24,36 +24,36 @@ /* This file is for class Mac OS */ /* Mac OS on PPC and m68k uses the big endian mode */ -#define HCL_ENDIAN_BIG +#define HAK_ENDIAN_BIG #if defined(__MWERKS__) -# define HCL_SIZEOF_CHAR 1 -# define HCL_SIZEOF_SHORT 2 -# define HCL_SIZEOF_INT 4 -# define HCL_SIZEOF_LONG 4 -# define HCL_SIZEOF_LONG_LONG 8 -# define HCL_SIZEOF_VOID_P 4 -# define HCL_SIZEOF_FLOAT 4 -# define HCL_SIZEOF_DOUBLE 8 -# define HCL_SIZEOF_LONG_DOUBLE 8 -# define HCL_SIZEOF_WCHAR_T 2 +# define HAK_SIZEOF_CHAR 1 +# define HAK_SIZEOF_SHORT 2 +# define HAK_SIZEOF_INT 4 +# define HAK_SIZEOF_LONG 4 +# define HAK_SIZEOF_LONG_LONG 8 +# define HAK_SIZEOF_VOID_P 4 +# define HAK_SIZEOF_FLOAT 4 +# define HAK_SIZEOF_DOUBLE 8 +# define HAK_SIZEOF_LONG_DOUBLE 8 +# define HAK_SIZEOF_WCHAR_T 2 -# define HCL_SIZEOF___INT8 1 -# define HCL_SIZEOF___INT16 2 -# define HCL_SIZEOF___INT32 4 -# define HCL_SIZEOF___INT64 8 -# define HCL_SIZEOF___INT128 0 +# define HAK_SIZEOF___INT8 1 +# define HAK_SIZEOF___INT16 2 +# define HAK_SIZEOF___INT32 4 +# define HAK_SIZEOF___INT64 8 +# define HAK_SIZEOF___INT128 0 -# define HCL_SIZEOF_OFF64_T 0 -# define HCL_SIZEOF_OFF_T 8 +# define HAK_SIZEOF_OFF64_T 0 +# define HAK_SIZEOF_OFF_T 8 -# define HCL_SIZEOF_MBSTATE_T HCL_SIZEOF_LONG -# define HCL_MBLEN_MAX 16 +# define HAK_SIZEOF_MBSTATE_T HAK_SIZEOF_LONG +# define HAK_MBLEN_MAX 16 /* these two have only to be large enough */ -# define HCL_SIZEOF_STRUCT_SOCKADDR_IN 32 -# define HCL_SIZEOF_STRUCT_SOCKADDR_IN6 64 -# define HCL_SIZEOF_SOCKLEN_T 4 +# define HAK_SIZEOF_STRUCT_SOCKADDR_IN 32 +# define HAK_SIZEOF_STRUCT_SOCKADDR_IN6 64 +# define HAK_SIZEOF_SOCKLEN_T 4 #else # error Define the size of various data types. diff --git a/lib/hak-msw.h b/lib/hak-msw.h new file mode 100644 index 0000000..9e2c938 --- /dev/null +++ b/lib/hak-msw.h @@ -0,0 +1,196 @@ +/* + Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* +Macro Meaning +_WIN64 A 64-bit platform. +_WIN32 A 32-bit platform. This value is also defined by the 64-bit + compiler for backward compatibility. +_WIN16 A 16-bit platform + +The following macros are specific to the architecture. + +Macro Meaning +_M_IA64 Intel Itanium Processor Family +_M_IX86 x86 platform +_M_X64 x64 platform +*/ + +/* windows for most of non-x86 platforms dropped. + * make it selective to support old non-x86 windows platforms. */ +#define HAK_ENDIAN_LITTLE +#define HAK_ENABLE_WIDE_CHAR + +#if defined(__WATCOMC__) +# define HAK_SIZEOF_CHAR 1 +# define HAK_SIZEOF_SHORT 2 +# define HAK_SIZEOF_INT 4 +# define HAK_SIZEOF_LONG 4 +# if (__WATCOMC__ < 1200) +# define HAK_SIZEOF_LONG_LONG 0 +# else +# define HAK_SIZEOF_LONG_LONG 8 +# endif + +# if defined(_WIN64) +# define HAK_SIZEOF_VOID_P 8 +# else +# define HAK_SIZEOF_VOID_P 4 +# endif +# define HAK_SIZEOF_FLOAT 4 +# define HAK_SIZEOF_DOUBLE 8 +# define HAK_SIZEOF_LONG_DOUBLE 8 +# define HAK_SIZEOF_WCHAR_T 2 + +# define HAK_SIZEOF___INT8 1 +# define HAK_SIZEOF___INT16 2 +# define HAK_SIZEOF___INT32 4 +# define HAK_SIZEOF___INT64 8 +# define HAK_SIZEOF___INT128 0 + +# define HAK_SIZEOF_OFF64_T 0 +# define HAK_SIZEOF_OFF_T 8 + +# define HAK_SIZEOF_MBSTATE_T HAK_SIZEOF_LONG +# define HAK_MBLEN_MAX 16 + + /* these two have only to be large enough */ +# define HAK_SIZEOF_STRUCT_SOCKADDR_IN 32 +# define HAK_SIZEOF_STRUCT_SOCKADDR_IN6 64 +# define HAK_SIZEOF_SOCKLEN_T 4 + +#elif defined(__GNUC__) || defined(__DMC__) || defined(__POCC__) +# define HAK_SIZEOF_CHAR 1 +# define HAK_SIZEOF_SHORT 2 +# define HAK_SIZEOF_INT 4 +# define HAK_SIZEOF_LONG 4 +# define HAK_SIZEOF_LONG_LONG 8 + +# if defined(_WIN64) +# define HAK_SIZEOF_VOID_P 8 +# else +# define HAK_SIZEOF_VOID_P 4 +# endif +# define HAK_SIZEOF_FLOAT 4 +# define HAK_SIZEOF_DOUBLE 8 +# define HAK_SIZEOF_LONG_DOUBLE 16 +# define HAK_SIZEOF_WCHAR_T 2 + +# define HAK_SIZEOF___INT8 0 +# define HAK_SIZEOF___INT16 0 +# define HAK_SIZEOF___INT32 0 +# define HAK_SIZEOF___INT64 0 +# define HAK_SIZEOF___INT128 0 + +# define HAK_SIZEOF_OFF64_T 0 +# define HAK_SIZEOF_OFF_T 8 + +# define HAK_SIZEOF_MBSTATE_T HAK_SIZEOF_LONG +# define HAK_MBLEN_MAX 16 + + /* these two have only to be large enough */ +# define HAK_SIZEOF_STRUCT_SOCKADDR_IN 32 +# define HAK_SIZEOF_STRUCT_SOCKADDR_IN6 64 + +#elif defined(_MSC_VER) +# define HAK_SIZEOF_CHAR 1 +# define HAK_SIZEOF_SHORT 2 +# define HAK_SIZEOF_INT 4 +# define HAK_SIZEOF_LONG 4 +# if (_MSC_VER>=1310) +# define HAK_SIZEOF_LONG_LONG 8 +# else +# define HAK_SIZEOF_LONG_LONG 0 +# endif + +# if defined(_WIN64) +# define HAK_SIZEOF_VOID_P 8 +# else +# define HAK_SIZEOF_VOID_P 4 +# endif +# define HAK_SIZEOF_FLOAT 4 +# define HAK_SIZEOF_DOUBLE 8 +# define HAK_SIZEOF_LONG_DOUBLE 8 +# define HAK_SIZEOF_WCHAR_T 2 + +# define HAK_SIZEOF___INT8 1 +# define HAK_SIZEOF___INT16 2 +# define HAK_SIZEOF___INT32 4 +# define HAK_SIZEOF___INT64 8 +# define HAK_SIZEOF___INT128 0 + +# define HAK_SIZEOF_OFF64_T 0 +# define HAK_SIZEOF_OFF_T 8 + +# define HAK_SIZEOF_MBSTATE_T HAK_SIZEOF_LONG +# define HAK_MBLEN_MAX 8 + + /* these two have only to be large enough */ +# define HAK_SIZEOF_STRUCT_SOCKADDR_IN 32 +# define HAK_SIZEOF_STRUCT_SOCKADDR_IN6 64 +# define HAK_SIZEOF_SOCKLEN_T 4 + +#elif defined(__BORLANDC__) + +# define HAK_SIZEOF_CHAR 1 +# define HAK_SIZEOF_SHORT 2 +# define HAK_SIZEOF_INT 4 +# define HAK_SIZEOF_LONG 4 +# define HAK_SIZEOF_LONG_LONG 0 + +# if defined(_WIN64) +# define HAK_SIZEOF_VOID_P 8 +# else +# define HAK_SIZEOF_VOID_P 4 +# endif +# define HAK_SIZEOF_FLOAT 4 +# define HAK_SIZEOF_DOUBLE 8 +# define HAK_SIZEOF_LONG_DOUBLE 8 +# define HAK_SIZEOF_WCHAR_T 2 + +# define HAK_SIZEOF___INT8 1 +# define HAK_SIZEOF___INT16 2 +# define HAK_SIZEOF___INT32 4 +# if (__BORLANDC__ >= 0x500) +# define HAK_SIZEOF___INT64 0 +# else +# define HAK_SIZEOF___INT64 0 +# endif +# define HAK_SIZEOF___INT128 0 + +# define HAK_SIZEOF_OFF64_T 0 +# define HAK_SIZEOF_OFF_T 8 + +# define HAK_SIZEOF_MBSTATE_T HAK_SIZEOF_LONG +# define HAK_MBLEN_MAX 8 + + /* these two have only to be large enough */ +# define HAK_SIZEOF_STRUCT_SOCKADDR_IN 32 +# define HAK_SIZEOF_STRUCT_SOCKADDR_IN6 64 +# define HAK_SIZEOF_SOCKLEN_T 4 + +#else +# error Define the size of various data types. +#endif + diff --git a/lib/hcl-opt.h b/lib/hak-opt.h similarity index 61% rename from lib/hcl-opt.h rename to lib/hak-opt.h index d20419e..2fae883 100644 --- a/lib/hcl-opt.h +++ b/lib/hak-opt.h @@ -22,72 +22,72 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef _HCL_OPT_H_ -#define _HCL_OPT_H_ +#ifndef _HAK_OPT_H_ +#define _HAK_OPT_H_ -#include +#include /** \file * This file defines functions and data structures to process * command-line arguments. */ -typedef struct hcl_uopt_t hcl_uopt_t; -typedef struct hcl_uopt_lng_t hcl_uopt_lng_t; +typedef struct hak_uopt_t hak_uopt_t; +typedef struct hak_uopt_lng_t hak_uopt_lng_t; -struct hcl_uopt_lng_t +struct hak_uopt_lng_t { - const hcl_uch_t* str; - hcl_uci_t val; + const hak_uch_t* str; + hak_uci_t val; }; -struct hcl_uopt_t +struct hak_uopt_t { /* input */ - const hcl_uch_t* str; /* option string */ - hcl_uopt_lng_t* lng; /* long options */ + const hak_uch_t* str; /* option string */ + hak_uopt_lng_t* lng; /* long options */ /* output */ - hcl_uci_t opt; /* character checked for validity */ - hcl_uch_t* arg; /* argument associated with an option */ + hak_uci_t opt; /* character checked for validity */ + hak_uch_t* arg; /* argument associated with an option */ /* output */ - const hcl_uch_t* lngopt; + const hak_uch_t* lngopt; /* input + output */ int ind; /* index into parent argv vector */ /* input + output - internal*/ - hcl_uch_t* cur; + hak_uch_t* cur; }; -typedef struct hcl_bopt_t hcl_bopt_t; -typedef struct hcl_bopt_lng_t hcl_bopt_lng_t; +typedef struct hak_bopt_t hak_bopt_t; +typedef struct hak_bopt_lng_t hak_bopt_lng_t; -struct hcl_bopt_lng_t +struct hak_bopt_lng_t { - const hcl_bch_t* str; - hcl_bci_t val; + const hak_bch_t* str; + hak_bci_t val; }; -struct hcl_bopt_t +struct hak_bopt_t { /* input */ - const hcl_bch_t* str; /* option string */ - hcl_bopt_lng_t* lng; /* long options */ + const hak_bch_t* str; /* option string */ + hak_bopt_lng_t* lng; /* long options */ /* output */ - hcl_bci_t opt; /* character checked for validity */ - hcl_bch_t* arg; /* argument associated with an option */ + hak_bci_t opt; /* character checked for validity */ + hak_bch_t* arg; /* argument associated with an option */ /* output */ - const hcl_bch_t* lngopt; + const hak_bch_t* lngopt; /* input + output */ int ind; /* index into parent argv vector */ /* input + output - internal*/ - hcl_bch_t* cur; + hak_bch_t* cur; }; #if defined(__cplusplus) @@ -95,7 +95,7 @@ extern "C" { #endif /** - * The hcl_getopt() function processes the \a argc command-line arguments + * The hak_getopt() function processes the \a argc command-line arguments * pointed to by \a argv as configured in \a opt. It can process two * different option styles: a single character starting with '-', and a * long name starting with '--'. @@ -107,29 +107,29 @@ extern "C" { * - \b ? indicates a bad option stored in the \a opt->opt field. * - \b : indicates a bad parameter for an option stored in the \a opt->opt field. * - * @return an option character on success, HCL_CHAR_EOF on no more options. + * @return an option character on success, HAK_CHAR_EOF on no more options. */ -HCL_EXPORT hcl_uci_t hcl_getuopt ( +HAK_EXPORT hak_uci_t hak_getuopt ( int argc, /* argument count */ - hcl_uch_t* const* argv, /* argument array */ - hcl_uopt_t* opt /* option configuration */ + hak_uch_t* const* argv, /* argument array */ + hak_uopt_t* opt /* option configuration */ ); -HCL_EXPORT hcl_bci_t hcl_getbopt ( +HAK_EXPORT hak_bci_t hak_getbopt ( int argc, /* argument count */ - hcl_bch_t* const* argv, /* argument array */ - hcl_bopt_t* opt /* option configuration */ + hak_bch_t* const* argv, /* argument array */ + hak_bopt_t* opt /* option configuration */ ); -#if defined(HCL_OOCH_IS_UCH) -# define hcl_opt_t hcl_uopt_t -# define hcl_opt_lng_t hcl_uopt_lng_t -# define hcl_getopt(argc,argv,opt) hcl_getuopt(argc,argv,opt) +#if defined(HAK_OOCH_IS_UCH) +# define hak_opt_t hak_uopt_t +# define hak_opt_lng_t hak_uopt_lng_t +# define hak_getopt(argc,argv,opt) hak_getuopt(argc,argv,opt) #else -# define hcl_opt_t hcl_bopt_t -# define hcl_opt_lng_t hcl_bopt_lng_t -# define hcl_getopt(argc,argv,opt) hcl_getbopt(argc,argv,opt) +# define hak_opt_t hak_bopt_t +# define hak_opt_lng_t hak_bopt_lng_t +# define hak_getopt(argc,argv,opt) hak_getbopt(argc,argv,opt) #endif #if defined(__cplusplus) diff --git a/lib/hak-os2.h b/lib/hak-os2.h new file mode 100644 index 0000000..79d6893 --- /dev/null +++ b/lib/hak-os2.h @@ -0,0 +1,125 @@ +/* + Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* OS/2 for other platforms than x86? + * If so, the endian should be defined selectively + */ +#define HAK_ENDIAN_LITTLE + +#if defined(__WATCOMC__) +# define HAK_SIZEOF_CHAR 1 +# define HAK_SIZEOF_SHORT 2 +# define HAK_SIZEOF_INT 4 +# define HAK_SIZEOF_LONG 4 +# if (__WATCOMC__ < 1200) +# define HAK_SIZEOF_LONG_LONG 0 +# else +# define HAK_SIZEOF_LONG_LONG 8 +# endif +# define HAK_SIZEOF_VOID_P 4 +# define HAK_SIZEOF_FLOAT 4 +# define HAK_SIZEOF_DOUBLE 8 +# define HAK_SIZEOF_LONG_DOUBLE 8 +# define HAK_SIZEOF_WCHAR_T 2 + +# define HAK_SIZEOF___INT8 1 +# define HAK_SIZEOF___INT16 2 +# define HAK_SIZEOF___INT32 4 +# define HAK_SIZEOF___INT64 8 +# define HAK_SIZEOF___INT128 0 + +# define HAK_SIZEOF_OFF64_T 0 +# define HAK_SIZEOF_OFF_T 8 + +/* I don't know the exact mbstate size. + * but this should be large enough */ +# define HAK_SIZEOF_MBSTATE_T HAK_SIZEOF_LONG +/* TODO: check the exact value */ +# define HAK_MBLEN_MAX 8 + + /* these two have only to be large enough */ +# define HAK_SIZEOF_STRUCT_SOCKADDR_IN 32 +# define HAK_SIZEOF_STRUCT_SOCKADDR_IN6 64 +# define HAK_SIZEOF_SOCKLEN_T 4 + +#elif defined(__BORLANDC__) +# define HAK_SIZEOF_CHAR 1 +# define HAK_SIZEOF_SHORT 2 +# define HAK_SIZEOF_INT 4 +# define HAK_SIZEOF_LONG 4 +# define HAK_SIZEOF_LONG_LONG 0 +# define HAK_SIZEOF_VOID_P 4 +# define HAK_SIZEOF_FLOAT 4 +# define HAK_SIZEOF_DOUBLE 8 +# define HAK_SIZEOF_LONG_DOUBLE 10 +# define HAK_SIZEOF_WCHAR_T 2 + +# define HAK_SIZEOF___INT8 0 +# define HAK_SIZEOF___INT16 0 +# define HAK_SIZEOF___INT32 0 +# define HAK_SIZEOF___INT64 0 +# define HAK_SIZEOF___INT128 0 + +# define HAK_SIZEOF_OFF64_T 0 +# define HAK_SIZEOF_OFF_T 4 + +# define HAK_SIZEOF_MBSTATE_T HAK_SIZEOF_LONG +# define HAK_MBLEN_MAX 8 + +# define HAK_SIZEOF_STRUCT_SOCKADDR_IN 32 +# define HAK_SIZEOF_STRUCT_SOCKADDR_IN6 64 +# define HAK_SIZEOF_SOCKLEN_T 4 + +#elif defined(__IBMC__) || defined(__IBMCPP__) + + /* visualage c or c++ */ +# define HAK_SIZEOF_CHAR 1 +# define HAK_SIZEOF_SHORT 2 +# define HAK_SIZEOF_INT 4 +# define HAK_SIZEOF_LONG 4 +# define HAK_SIZEOF_LONG_LONG 0 +# define HAK_SIZEOF_VOID_P 4 +# define HAK_SIZEOF_FLOAT 4 +# define HAK_SIZEOF_DOUBLE 8 +# define HAK_SIZEOF_LONG_DOUBLE 16 +# define HAK_SIZEOF_WCHAR_T 2 + +# define HAK_SIZEOF___INT8 0 +# define HAK_SIZEOF___INT16 0 +# define HAK_SIZEOF___INT32 0 +# define HAK_SIZEOF___INT64 0 +# define HAK_SIZEOF___INT128 0 + +# define HAK_SIZEOF_OFF64_T 0 +# define HAK_SIZEOF_OFF_T 4 + +# define HAK_SIZEOF_MBSTATE_T HAK_SIZEOF_LONG +# define HAK_MBLEN_MAX 8 + +# define HAK_SIZEOF_STRUCT_SOCKADDR_IN 32 +# define HAK_SIZEOF_STRUCT_SOCKADDR_IN6 64 +# define HAK_SIZEOF_SOCKLEN_T 4 + +#else +# error Define the size of various data types. +#endif diff --git a/lib/hcl-pac1.h b/lib/hak-pac1.h similarity index 100% rename from lib/hcl-pac1.h rename to lib/hak-pac1.h diff --git a/lib/hak-prv.h b/lib/hak-prv.h new file mode 100644 index 0000000..bc53fc5 --- /dev/null +++ b/lib/hak-prv.h @@ -0,0 +1,2080 @@ +/* + Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _HAK_PRV_H_ +#define _HAK_PRV_H_ + +#include +#include +#include +#include +#include +#include + +/* you can define this to either 1 or 2 */ +#define HAK_CODE_LONG_PARAM_SIZE 2 + +/* this is useful for debugging. hak_gc() can be called + * while hak has not been fully initialized when this is defined*/ +#define HAK_SUPPORT_GC_DURING_IGNITION + +/* define this to enable karatsuba multiplication in bigint */ +#define HAK_ENABLE_KARATSUBA +#define HAK_KARATSUBA_CUTOFF 32 +#define HAK_KARATSUBA_CUTOFF_DEBUG 3 + +/* enable floating-pointer number support in the basic formatting functions */ +#define HAK_ENABLE_FLTFMT + +#if defined(HAK_BUILD_DEBUG) +/*#define HAK_DEBUG_LEXER 1*/ +#define HAK_DEBUG_VM_PROCESSOR 1 +#define HAK_DEBUG_VM_EXEC 1 +/*#define HAK_PROFILE_VM 1*/ +#endif + +/* allow the caller to drive process switching by calling + * stix_switchprocess(). */ +#define HAK_EXTERNAL_PROCESS_SWITCH + +/* limit the maximum object size such that: + * 1. an index to an object field can be represented in a small integer. + * 2. the maximum number of bits including bit-shifts can be represented + * in the hak_oow_t type. + */ +#define HAK_LIMIT_OBJ_SIZE + + +#define HAK_BC_BUFFER_INIT 10240 +#define HAK_BC_BUFFER_ALIGN 10240 + +#define HAK_LIT_BUFFER_INIT 1024 +#define HAK_LIT_BUFFER_ALIGN 1024 + +#if defined(__has_builtin) + +# if (!__has_builtin(__builtin_memset) || !__has_builtin(__builtin_memcpy) || !__has_builtin(__builtin_memmove) || !__has_builtin(__builtin_memcmp)) +# include +# endif + +# if __has_builtin(__builtin_memset) +# define HAK_MEMSET(dst,src,size) __builtin_memset(dst,src,size) +# else +# define HAK_MEMSET(dst,src,size) memset(dst,src,size) +# endif +# if __has_builtin(__builtin_memcpy) +# define HAK_MEMCPY(dst,src,size) __builtin_memcpy(dst,src,size) +# else +# define HAK_MEMCPY(dst,src,size) memcpy(dst,src,size) +# endif +# if __has_builtin(__builtin_memmove) +# define HAK_MEMMOVE(dst,src,size) __builtin_memmove(dst,src,size) +# else +# define HAK_MEMMOVE(dst,src,size) memmove(dst,src,size) +# endif +# if __has_builtin(__builtin_memcmp) +# define HAK_MEMCMP(dst,src,size) __builtin_memcmp(dst,src,size) +# else +# define HAK_MEMCMP(dst,src,size) memcmp(dst,src,size) +# endif + +#else + + /* g++ 2.95 had a problem with __builtin_memxxx functions: + * implicit declaration of function `__builtin_memmove' */ +# if defined(__cplusplus) && defined(__GNUC__) && (__GNUC__ <= 2) +# undef HAVE___BUILTIN_MEMSET +# undef HAVE___BUILTIN_MEMCPY +# undef HAVE___BUILTIN_MEMMOVE +# undef HAVE___BUILTIN_MEMCMP +# endif + +# if !defined(HAVE___BUILTIN_MEMSET) || \ + !defined(HAVE___BUILTIN_MEMCPY) || \ + !defined(HAVE___BUILTIN_MEMMOVE) || \ + !defined(HAVE___BUILTIN_MEMCMP) +# include +# endif + +# if defined(HAVE___BUILTIN_MEMSET) +# define HAK_MEMSET(dst,src,size) __builtin_memset(dst,src,size) +# else +# define HAK_MEMSET(dst,src,size) memset(dst,src,size) +# endif +# if defined(HAVE___BUILTIN_MEMCPY) +# define HAK_MEMCPY(dst,src,size) __builtin_memcpy(dst,src,size) +# else +# define HAK_MEMCPY(dst,src,size) memcpy(dst,src,size) +# endif +# if defined(HAVE___BUILTIN_MEMMOVE) +# define HAK_MEMMOVE(dst,src,size) __builtin_memmove(dst,src,size) +# else +# define HAK_MEMMOVE(dst,src,size) memmove(dst,src,size) +# endif +# if defined(HAVE___BUILTIN_MEMCMP) +# define HAK_MEMCMP(dst,src,size) __builtin_memcmp(dst,src,size) +# else +# define HAK_MEMCMP(dst,src,size) memcmp(dst,src,size) +# endif + +#endif + +#if defined(HAK_LIMIT_OBJ_SIZE) +/* limit the maximum object size such that: + * 1. an index to an object field can be represented in a small integer. + * 2. the maximum number of bit shifts can be represented in the hak_oow_t type. + */ +# define HAK_OBJ_SIZE_MAX ((hak_oow_t)HAK_SMOOI_MAX) +# define HAK_OBJ_SIZE_BITS_MAX (HAK_OBJ_SIZE_MAX * HAK_BITS_PER_BYTE) +#else +# define HAK_OBJ_SIZE_MAX ((hak_oow_t)HAK_TYPE_MAX(hak_oow_t)) +# define HAK_OBJ_SIZE_BITS_MAX (HAK_OBJ_SIZE_MAX * HAK_BITS_PER_BYTE) +#endif + +/* ========================================================================= */ +/* CLASS SPEC ENCODING */ +/* ========================================================================= */ +/* + * The spec field of a class object encodes the number of the fixed part + * and the type of the indexed part. The fixed part is the number of + * named instance variables. If the spec of a class is indexed, the object + * of the class can be instantiated with the size of the indexed part. + * + * For example, on a platform where sizeof(hak_oow_t) is 4, + * the layout of the spec field of a class as an OOP value looks like this: + * + * 31 12 11 10 9 8 7 6 5 4 3 2 1 0 + * |number of named instance variables|indexed-type|flags |oop-tag| + * + * the number of named instance variables is stored in high 21 bits. + * the indexed type takes up bit 5 to bit 10 (assuming HAK_OBJ_TYPE_BITS is 6. + * HAK_OBJ_TYPE_XXX enumerators are used to represent actual values). + * and the indexability is stored in the flag bits which span from bit 2 to 4. + * + * The maximum number of named(fixed) instance variables for a class is: + * 2 ^ ((BITS-IN-OOW - HAK_OOP_TAG_BITS_LO) - HAK_OBJ_TYPE_BITS - 1 - 2) - 1 + * + * HAK_OOP_TAG_BITS_LO are decremented from the number of bits in OOW because + * the spec field is always encoded as a small integer. + * + * The number of named instance variables can be greater than 0 if the + * class spec is not indexed or if it's a pointer indexed class + * (indexed_type == HAK_OBJ_TYPE_OOP) + * + * indexed_type is one of the #hak_obj_type_t enumerators. + */ + +#define HAK_CLASS_SPEC_FLAG_BITS (3) + +/* + * The HAK_CLASS_SPEC_MAKE() macro creates a class spec value. + * _class->spec = HAK_SMOOI_TO_OOP(HAK_CLASS_SPEC_MAKE(0, 1, HAK_OBJ_TYPE_CHAR)); + */ +#define HAK_CLASS_SPEC_MAKE(named_instvar,flags,indexed_type) ( \ + (((hak_oow_t)(named_instvar)) << (HAK_OBJ_FLAGS_TYPE_BITS + HAK_CLASS_SPEC_FLAG_BITS)) | \ + (((hak_oow_t)(indexed_type)) << (HAK_CLASS_SPEC_FLAG_BITS)) | (((hak_oow_t)flags) & HAK_LBMASK(hak_oow_t,HAK_CLASS_SPEC_FLAG_BITS))) + +/* what is the number of named instance variables? + * HAK_CLASS_SPEC_NAMED_INSTVARS(HAK_OOP_TO_SMOOI(_class->spec)) + * ensure to update Class<> (HAK_OBJ_FLAGS_TYPE_BITS + HAK_CLASS_SPEC_FLAG_BITS)) + +/* is it a user-indexable class? + * all objects can be indexed with basicAt:. + * this indicates if an object can be instantiated with a dynamic size + * (new: size) and and can be indexed with at:. + */ +#define HAK_CLASS_SPEC_FLAGS(spec) (((hak_oow_t)(spec)) & HAK_LBMASK(hak_oow_t,HAK_CLASS_SPEC_FLAG_BITS)) + +/* if so, what is the indexing type? character? pointer? etc? */ +#define HAK_CLASS_SPEC_INDEXED_TYPE(spec) \ + ((((hak_oow_t)(spec)) >> HAK_CLASS_SPEC_FLAG_BITS) & HAK_LBMASK(hak_oow_t, HAK_OBJ_FLAGS_TYPE_BITS)) + +/* If you add more than 4 items, you must update code related to CLASS_ENTER instruction + * and class attributes as well as HAK_CLASS_SPEC_FLAG_BITS. */ +#define HAK_CLASS_SPEC_FLAG_INDEXED (1 << 0) +#define HAK_CLASS_SPEC_FLAG_IMMUTABLE (1 << 1) +#define HAK_CLASS_SPEC_FLAG_UNCOPYABLE (1 << 2) + +#define HAK_CLASS_SPEC_IS_INDEXED(spec) (HAK_CLASS_SPEC_FLAGS(spec) & HAK_CLASS_SPEC_FLAG_INDEXED) +#define HAK_CLASS_SPEC_IS_IMMUTABLE(spec) (HAK_CLASS_SPEC_FLAGS(spec) & HAK_CLASS_SPEC_FLAG_IMMUTABLE) +#define HAK_CLASS_SPEC_IS_UNCOPYABLE(spec) (HAK_CLASS_SPEC_FLAGS(spec) & HAK_CLASS_SPEC_FLAG_UNCOPYABLE) + +/* What is the maximum number of named instance variables? + * This limit is set this way because the number must be encoded into + * the spec field of the class with limited number of bits assigned to + * the number of named instance variables. + */ +#define HAK_CLASS_SPEC_INSTVAR_BITS (HAK_SMOOI_ABS_BITS - (HAK_OBJ_FLAGS_TYPE_BITS + HAK_CLASS_SPEC_FLAG_BITS)) +#define HAK_MAX_NAMED_INSTVARS HAK_BITS_MAX(hak_oow_t, HAK_CLASS_SPEC_INSTVAR_BITS) + +/* Given the number of named instance variables, what is the maximum number + * of indexed instance variables? The number of indexed instance variables + * is not stored in the spec field of the class. It only affects the actual + * size of an object(obj->_size) selectively combined with the number of + * named instance variables. So it's the maximum value of obj->_size minus + * the number of named instance variables. + */ +#define HAK_MAX_INDEXED_INSTVARS(named_instvar) (HAK_OBJ_SIZE_MAX - named_instvar) + +/* + * self-specification of a class + * | classinstvars | classvars | flags | + * + * When converted to a small integer + * | sign-bit | classinstvars | classvars | flags | tag | + */ +#define HAK_CLASS_SELFSPEC_FLAG_BITS (3) +#define HAK_CLASS_SELFSPEC_CLASSINSTVAR_BITS ((HAK_SMOOI_ABS_BITS - HAK_CLASS_SELFSPEC_FLAG_BITS) / 2) +#define HAK_CLASS_SELFSPEC_CLASSVAR_BITS (HAK_SMOOI_ABS_BITS - (HAK_CLASS_SELFSPEC_CLASSINSTVAR_BITS + HAK_CLASS_SELFSPEC_FLAG_BITS)) + +#define HAK_CLASS_SELFSPEC_MAKE(class_var,classinst_var,flag) \ + ((((hak_oow_t)class_var) << (HAK_CLASS_SELFSPEC_CLASSINSTVAR_BITS + HAK_CLASS_SELFSPEC_FLAG_BITS)) | \ + (((hak_oow_t)classinst_var) << (HAK_CLASS_SELFSPEC_FLAG_BITS)) | \ + (((hak_oow_t)flag) << (0))) + +#define HAK_CLASS_SELFSPEC_CLASSVARS(spec) \ + (((hak_oow_t)spec) >> (HAK_CLASS_SELFSPEC_CLASSINSTVAR_BITS + HAK_CLASS_SELFSPEC_FLAG_BITS)) + +#define HAK_CLASS_SELFSPEC_CLASSINSTVARS(spec) \ + ((((hak_oow_t)spec) >> HAK_CLASS_SELFSPEC_FLAG_BITS) & HAK_LBMASK(hak_oow_t, HAK_CLASS_SELFSPEC_CLASSINSTVAR_BITS)) + +#define HAK_CLASS_SELFSPEC_FLAGS(spec) \ + (((hak_oow_t)spec) & HAK_LBMASK(hak_oow_t, HAK_CLASS_SELFSPEC_FLAG_BITS)) + +/* If you add more than 4 items, you must update code related to CLASS_ENTER instruction + * and class attributes as well as HAK_CLASS_SELFSPEC_FLAG_BITS. */ +#define HAK_CLASS_SELFSPEC_FLAG_FINAL (1 << 0) +#define HAK_CLASS_SELFSPEC_FLAG_LIMITED (1 << 1) /* not allowed to instantiate normally */ + + +#define HAK_MAX_CLASSVARS HAK_BITS_MAX(hak_oow_t, HAK_CLASS_SELFSPEC_CLASSVAR_BITS) +#define HAK_MAX_CLASSINSTVARS HAK_BITS_MAX(hak_oow_t, HAK_CLASS_SELFSPEC_CLASSINSTVAR_BITS) + +/* ========================================================================= */ +/* END OF CLASS SPEC ENCODING */ +/* ========================================================================= */ + + + +#if defined(HAK_INCLUDE_COMPILER) + +/* ========================================================================= */ +/* SOURCE CODE I/O FOR COMPILER */ +/* ========================================================================= */ +enum hak_tok_type_t +{ + HAK_TOK_EOF, + + /* the following 5 items must be in this order for code + * in flx_quoted_token() in read.c */ + HAK_TOK_CHARLIT, + HAK_TOK_BCHRLIT, + HAK_TOK_STRLIT, + HAK_TOK_BSTRLIT, + HAK_TOK_SYMLIT, + + HAK_TOK_NUMLIT, + HAK_TOK_RADNUMLIT, + HAK_TOK_FPDECLIT, + HAK_TOK_SMPTRLIT, + HAK_TOK_ERRLIT, + + HAK_TOK_NIL, + HAK_TOK_TRUE, + HAK_TOK_FALSE, + HAK_TOK_SELF, + HAK_TOK_SUPER, + + HAK_TOK_CLASS, + HAK_TOK_FUN, + HAK_TOK_VAR, + HAK_TOK_DO, + HAK_TOK_IF, + HAK_TOK_ELIF, + HAK_TOK_ELSE, + HAK_TOK_THROW, + HAK_TOK_TRY, + HAK_TOK_CATCH, + HAK_TOK_BREAK, + HAK_TOK_CONTINUE, + HAK_TOK_UNTIL, + HAK_TOK_WHILE, + HAK_TOK_RETURN, + HAK_TOK_REVERT, + HAK_TOK_AND, + HAK_TOK_OR, + HAK_TOK_PLUS, + HAK_TOK_SET, + HAK_TOK_SET_R, + + HAK_TOK_BINOP, + HAK_TOK_IDENT, + HAK_TOK_IDENT_DOTTED, + HAK_TOK_IDENT_DOTTED_CLA, + HAK_TOK_DOT, /* . */ + HAK_TOK_DBLDOTS, /* .. */ + HAK_TOK_ELLIPSIS, /* ... */ + HAK_TOK_COLON, /* : */ + HAK_TOK_DBLCOLONS, /* :: */ + HAK_TOK_TRPCOLONS, /* ::: */ + HAK_TOK_COLONEQ, /* := */ + HAK_TOK_COLONGT, /* :+ */ + HAK_TOK_COLONLT, /* :+ */ + HAK_TOK_SEMICOLON, /* ; */ + HAK_TOK_COMMA, /* , */ + HAK_TOK_LPAREN, /* ( */ + HAK_TOK_RPAREN, /* ) */ + +#if 0 /* use the (obj:message ... ) syntax instad. no more mlist by (: */ + HAK_TOK_LPARCOLON, /* (: */ +#define HAK_TOK_LPARCOLON HAK_TOK_LPARCOLON +#endif + + HAK_TOK_APAREN, /* #[ - array parenthesis */ + HAK_TOK_BAPAREN, /* #b[ - byte array parenthesis */ + HAK_TOK_CAPAREN, /* #c[ - character array parenthesis */ +#if 0 + HAK_TOK_WAPAREN, /* #w[ - word array parenthesis */ + HAK_TOK_HWAPAREN, /* #hw[ - half-word array parenthesis */ +#endif + HAK_TOK_QLPAREN, /* #( - quoted-list parenthesis */ + HAK_TOK_DLPAREN, /* #{ - dictionary parenthese */ + HAK_TOK_LBRACK, /* [ - group */ + HAK_TOK_RBRACK, /* ] */ + HAK_TOK_LBRACE, /* { - block */ + HAK_TOK_RBRACE, /* } */ + HAK_TOK_VBAR, /* | */ + HAK_TOK_EOL, /* end of line */ + + HAK_TOK_INCLUDE, + HAK_TOK_PRAGMA +}; +typedef enum hak_tok_type_t hak_tok_type_t; + +typedef struct hak_tok_t hak_tok_t; +struct hak_tok_t +{ + hak_tok_type_t type; + hak_oocs_t name; + hak_oow_t name_capa; + hak_loc_t loc; +}; + + +typedef struct hak_link_t hak_link_t; +struct hak_link_t +{ + hak_link_t* link; +}; + +enum hak_cnode_type_t +{ + HAK_CNODE_CHARLIT, + HAK_CNODE_BCHRLIT, + HAK_CNODE_SYMBOL, + HAK_CNODE_DSYMBOL, /* dotted symbol */ + HAK_CNODE_STRLIT, + HAK_CNODE_BSTRLIT, + HAK_CNODE_SYMLIT, + HAK_CNODE_NUMLIT, + HAK_CNODE_RADNUMLIT, + HAK_CNODE_FPDECLIT, + HAK_CNODE_SMPTRLIT, + HAK_CNODE_ERRLIT, /* last item for HAK_CNODE_IS_FOR_DATA_LITERAL */ + + HAK_CNODE_NIL, + HAK_CNODE_TRUE, + HAK_CNODE_FALSE, + HAK_CNODE_SELF, + HAK_CNODE_SUPER, /* last item for HAK_CNODE_IS_FOR_DATA_SIMPLE */ + + HAK_CNODE_CONS, + HAK_CNODE_ELIST, /* empty list */ + HAK_CNODE_SHELL, /* pseudo-node to hold another actual node */ + + /* If HAK_CNODE_SHELL is not the last item before the horizontal line, + * HAK_CNDOE_IS_FOR_DATA(x) must be revised */ + /* ------------------------------------------------------------------ */ + + /* the cnode types from here don't represent actual data. + * these represent syntactical elements of the language only. */ + HAK_CNODE_CLASS, /* first item for HAK_CNODE_IS_FOR_LANG */ + HAK_CNODE_FUN, + HAK_CNODE_VAR, + HAK_CNODE_DO, + HAK_CNODE_IF, + HAK_CNODE_ELIF, + HAK_CNODE_ELSE, + HAK_CNODE_THROW, + HAK_CNODE_TRY, + HAK_CNODE_CATCH, + HAK_CNODE_BREAK, + HAK_CNODE_CONTINUE, + HAK_CNODE_UNTIL, + HAK_CNODE_WHILE, + HAK_CNODE_RETURN, + HAK_CNODE_REVERT, + HAK_CNODE_AND, + HAK_CNODE_OR, + HAK_CNODE_PLUS, + HAK_CNODE_SET, + HAK_CNODE_SET_R, /* language item for HAK_CODE_IS_FOR_LANG */ + + HAK_CNODE_ELLIPSIS, /* ... */ + HAK_CNODE_TRPCOLONS, /* ::: */ + HAK_CNODE_DBLCOLONS, /* :: */ + HAK_CNODE_COLON, /* : */ + HAK_CNODE_COLONGT, /* :> */ + HAK_CNODE_COLONLT /* :< */ +}; +typedef enum hak_cnode_type_t hak_cnode_type_t; + +enum hak_cnode_flag_t +{ + HAK_CNODE_AUTO_FORGED = (1 << 0) +}; +typedef enum hak_cnode_flag_t hak_cnode_flag_t; + +#define HAK_CNODE_GET_TYPE(x) ((x)->cn_type) +#define HAK_CNODE_GET_FLAGS(x) ((x)->cn_flags) +#define HAK_CNODE_GET_LOC(x) (&(x)->cn_loc) +#define HAK_CNODE_GET_TOK(x) (&(x)->cn_tok) +#define HAK_CNODE_GET_TOKPTR(x) ((x)->cn_tok.ptr) +#define HAK_CNODE_GET_TOKLEN(x) ((x)->cn_tok.len) + +#define HAK_CNODE_IS_TYPED(x, _type) ((x)->cn_type == _type) +#define HAK_CNODE_IS_FOR_DATA(x) ((x)->cn_type <= HAK_CNODE_SHELL) +#define HAK_CNODE_IS_FOR_DATA_SIMPLE(x) ((x)->cn_type <= HAK_CNODE_SUPER) +#define HAK_CNODE_IS_FOR_DATA_LITERAL(x) ((x)->cn_type <= HAK_CNODE_ERRLIT) + +/* words to compose the language itself. + * the words pointing to data items(e.g. super, self, nil, true, false) are excluded */ +#define HAK_CNODE_IS_FOR_LANG(x)((x)->cn_type >= HAK_CNODE_CLASS && (x)->cn_type <= HAK_CNODE_SET_R) + +#define HAK_CNODE_IS_ELLIPSIS(x) ((x)->cn_type == HAK_CNODE_ELLIPSIS) +#define HAK_CNODE_IS_TRPCOLONS(x) ((x)->cn_type == HAK_CNODE_TRPCOLONS) +#define HAK_CNODE_IS_DBLCOLONS(x) ((x)->cn_type == HAK_CNODE_DBLCOLONS) +#define HAK_CNODE_IS_COLON(x) ((x)->cn_type == HAK_CNODE_COLON) +#define HAK_CNODE_IS_COLONGT(x) ((x)->cn_type == HAK_CNODE_COLONGT) +#define HAK_CNODE_IS_COLONLT(x) ((x)->cn_type == HAK_CNODE_COLONLT) + +#define HAK_CNODE_IS_SYMBOL(x) ((x)->cn_type == HAK_CNODE_SYMBOL) +#define HAK_CNODE_IS_SYMBOL_IDENT(x) (HAK_CNODE_IS_SYMBOL(x) && !hak_is_binop_char((x)->cn_tok.ptr[0])) +#define HAK_CNODE_IS_SYMBOL_BINOP(x) (HAK_CNODE_IS_SYMBOL(x) && hak_is_binop_char((x)->cn_tok.ptr[0])) + +#define HAK_CNODE_IS_DSYMBOL(x) ((x)->cn_type == HAK_CNODE_DSYMBOL) +#define HAK_CNODE_IS_DSYMBOL_CLA(x) ((x)->cn_type == HAK_CNODE_DSYMBOL && (x)->u.dsymbol.is_cla) + +#define HAK_CNODE_IS_CONS(x) ((x)->cn_type == HAK_CNODE_CONS) +#define HAK_CNODE_IS_CONS_CONCODED(x, code) ((x)->cn_type == HAK_CNODE_CONS && (x)->u.cons.concode == (code)) +#define HAK_CNODE_CONS_CONCODE(x) ((x)->u.cons.concode) +#define HAK_CNODE_CONS_CAR(x) ((x)->u.cons.car) +#define HAK_CNODE_CONS_CDR(x) ((x)->u.cons.cdr) + +#define HAK_CNODE_IS_ELIST(x) ((x)->cn_type == HAK_CNODE_ELIST) +#define HAK_CNODE_IS_ELIST_CONCODED(x, code) ((x)->cn_type == HAK_CNODE_ELIST && (x)->u.elist.concode == (code)) +#define HAK_CNODE_ELIST_CONCODE(x) ((x)->u.elist.concode) + +/* NOTE: hak_cnode_t used by the built-in compiler is not an OOP object */ +struct hak_cnode_t +{ + hak_cnode_type_t cn_type; + int cn_flags; + hak_loc_t cn_loc; + hak_oocs_t cn_tok; + + union + { + struct + { + hak_ooch_t v; + } charlit; + struct + { + hak_oob_t v; + } bchrlit; + struct + { + int is_cla; /* class-level accessor. prefixed with self or super */ + } dsymbol; + struct + { + hak_oow_t v; + } smptrlit; + struct + { + hak_ooi_t v; + } errlit; + struct + { + hak_concode_t concode; + hak_cnode_t* car; + hak_cnode_t* cdr; + } cons; + struct + { + hak_concode_t concode; + } elist; + struct + { + hak_cnode_t* obj; + } shell; + } u; +}; + +struct hak_var_info_t +{ + int type; + /* ctx_offset 0 means the current context. + * 1 means current->home. + * 2 means current->home->home. + * index_in_ctx is a relative index within the context found. + */ + hak_oow_t ctx_offset; /* context offset */ + hak_oow_t index_in_ctx; /* index in the current scope */ +}; +typedef struct hak_var_info_t hak_var_info_t; + + +/* NOTE: hak_cframe_t used by the built-in compiler is not an OOP object */ +struct hak_cframe_t +{ + int opcode; + hak_cnode_t* operand; + + union + { + /* COP_COMPILE_OBJECT_R */ + struct + { + hak_ooi_t nrets; + } obj_r; + + /* COP_EMIT_CALL */ + struct + { + hak_ooi_t index; + hak_ooi_t nrets; + } call; + + /* COP_EMIT_SEND_MESSAGE */ + struct + { + hak_ooi_t nargs; + hak_ooi_t nrets; + int to_super; + } sendmsg; + + /* COP_EMIT_SET */ + struct + { + int mode; /* VAR_ACCESS_STORE or VAR_ACCESS_POP */ + hak_var_info_t vi; + } set; + + struct + { + hak_ooi_t cond_pos; + hak_ooi_t body_pos; + hak_ooi_t jump_inst_pos; + hak_loc_t start_loc; + } post_while; + + struct + { + hak_ooi_t body_pos; + hak_ooi_t jump_inst_pos; + hak_loc_t start_loc; + hak_cnode_t* cmd_cnode; + } post_if; + + struct + { + hak_ooi_t jump_inst_pos; + } post_and; + + struct + { + hak_ooi_t jump_inst_pos; + } post_or; + + /* COP_POST_TRY */ + struct + { + hak_oow_t jump_inst_pos; + } post_try; + + /* COP_POST_CATCH */ + struct + { + hak_oow_t jump_inst_pos; + hak_oow_t exarg_offset; + } post_catch; + + struct + { + hak_oow_t lvar_start; + hak_oow_t lvar_end; + } post_do; + + /* COP_COMPILE_ARRAY_LIST, COP_POP_INTO_ARRAY, COP_EMIT_MAKE_ARRAY */ + struct + { + hak_ooi_t index; + } array_list; + + /* COP_COMPILE_PURE_ARRAY_LIST, COP_POP_INTO_PURE_ARRAY, COP_EMIT_MAKE_PURE_ARRAY */ + struct + { + int elem_type; + hak_ooi_t index; + } pure_array_list; + + /* COP_EMIT_MAKE_DIC */ + struct + { + hak_ooi_t index; + } dic_list; + + /* COP_POST_FUN, COP_EMIT_FUN */ + struct + { + unsigned int fun_type; + hak_oow_t jump_inst_pos; + hak_ooi_t lfbase_pos; + hak_ooi_t lfsize_pos; + hak_cnode_t* class_name; /* class name for out-of-class method definition */ + } fun; + + /* COP_EMIT_RETURN */ + struct + { + int from_home; + } _return; + + /* COP_POST_BREAK */ + struct + { + hak_ooi_t jump_inst_pos; + } _break; + + /* COP_COMPILE_CLASS_P1, COP_COMPILE_CLASS_P2 */ + struct + { + hak_ooi_t nsuperclasses; + unsigned int indexed_type; + hak_loc_t start_loc; + hak_cnode_t* cmd_cnode; + hak_cnode_t* class_name_cnode; + } _class; + } u; +}; +typedef struct hak_cframe_t hak_cframe_t; + +enum hak_ctlblk_type_t +{ + HAK_CTLBLK_TYPE_LOOP, + HAK_CTLBLK_TYPE_TRY, + HAK_CTLBLK_TYPE_CLASS +}; +typedef enum hak_ctlblk_type_t hak_ctlblk_type_t; + +/* control block information for the compiler */ +struct hak_ctlblk_info_t +{ + hak_ctlblk_type_t _type; +}; +typedef struct hak_ctlblk_info_t hak_ctlblk_info_t; + +/* function block information for the compiler */ +struct hak_funblk_info_t +{ + unsigned int fun_type; + + hak_oow_t tmprlen; /* accumulated length of the temporaries string including outer blocks */ + hak_oow_t tmprcnt; /* accumulated number of temporaries including outer blocks */ + + hak_oow_t tmpr_va; /* 0 or 1 */ + hak_oow_t tmpr_nargs; /* number of fixed arguments */ + hak_oow_t tmpr_nrvars; /* number of return variables */ + hak_oow_t tmpr_nlvars; /* number of local variables */ + + hak_oow_t make_inst_pos; + hak_oow_t lfbase; + + hak_ooi_t ctlblk_base; + + hak_ooi_t clsblk_base; + hak_ooi_t clsblk_top; + + unsigned int access_outer: 1; + unsigned int accessed_by_inner: 1; +}; +typedef struct hak_funblk_info_t hak_funblk_info_t; + +/* class block information for the compiler */ + +struct hak_clsblk_info_t +{ + hak_cnode_t* class_name; + + hak_oocsc_t ivars; + hak_oocsc_t cvars; + + hak_oow_t nivars; + hak_oow_t ncvars; + hak_oow_t spec; /* TODO: byte indexed, word indexed? */ + + hak_ooi_t funblk_base; + hak_ooi_t class_start_inst_pos; /* the position of the first instruction in the class body after CLASS_ENTER */ + hak_ooi_t class_enter_inst_pos; /* the position of the CLASS_ENTER instruction */ +}; +typedef struct hak_clsblk_info_t hak_clsblk_info_t; + + +/* reader stack for list reading */ +typedef struct hak_rstl_t hak_rstl_t; +struct hak_rstl_t +{ + hak_cnode_t* head; + hak_cnode_t* tail; + hak_loc_t loc; + int flagv; + hak_oow_t count; + hak_rstl_t* prev; +}; + +typedef struct hak_flx_dt_t hak_flx_dt_t; /* delemiter token */ +struct hak_flx_dt_t +{ + int row_start; + int row_end; + int col_next; +}; + +typedef struct hak_flx_di_t hak_flx_di_t; /* dollared-signed identifier */ +struct hak_flx_di_t +{ + /* state data */ + hak_oow_t char_count; +}; + +typedef struct hak_flx_hc_t hak_flx_hc_t; /* hash-marked character like #\, #\newline */ +struct hak_flx_hc_t +{ + /* state data */ + hak_oow_t char_count; +}; + +typedef struct hak_flx_hi_t hak_flx_hi_t; /* hash-marked identifier */ +struct hak_flx_hi_t +{ + /* state data */ + hak_oow_t char_count; +}; + +typedef struct hak_flx_hbc_t hak_flx_hbc_t; /* intermediate state for #b */ +struct hak_flx_hbc_t +{ + /* state data */ + hak_ooch_t start_c; +}; + +typedef struct hak_flx_pi_t hak_flx_pi_t; +struct hak_flx_pi_t +{ + /* state data */ + hak_oow_t char_count; + hak_oow_t seg_count; + hak_oow_t seg_len; + hak_oow_t non_ident_seg_count; + hak_tok_type_t last_non_ident_type; + int is_cla; /* class-level accrssor. prefixed with self/super */ +}; + +typedef struct hak_flx_binop_t hak_flx_binop_t; +struct hak_flx_binop_t +{ + hak_oow_t _not_used; +}; + +typedef struct hak_flx_pn_t hak_flx_pn_t; +struct hak_flx_pn_t +{ + /* state data */ + int fpdec; + int radix; + int radix_cand_overflown; + hak_oow_t radix_cand; + hak_tok_type_t tok_type; + hak_oow_t digit_count[2]; + hak_ooch_t start_digit; +}; + +typedef struct hak_flx_qt_t hak_flx_qt_t; /* quoted token */ +struct hak_flx_qt_t +{ + /* input data */ + hak_tok_type_t tok_type; + hak_synerrnum_t synerr_code; + hak_ooch_t end_char; + hak_ooch_t esc_char; + hak_oow_t min_len; + hak_oow_t max_len; + unsigned int is_byte: 1; + unsigned int regex: 1; + + /* state data */ + unsigned int escaped: 4; /* must be large enough to hold 1, 2, 4, 8 */ + int digit_count; + hak_ooci_t c_acc; +}; + +typedef struct hak_flx_st_t hak_flx_st_t; +struct hak_flx_st_t +{ + /* input data */ + hak_ooch_t sign_c; + + /* state data */ + hak_oow_t char_count; + int hmarked; +}; + + +typedef struct hak_flx_bcp_t hak_flx_bcp_t; +struct hak_flx_bcp_t +{ + hak_ooch_t start_c; +}; + +enum hak_flx_state_t +{ + HAK_FLX_START, + HAK_FLX_BACKSLASHED, + HAK_FLX_COMMENT, + HAK_FLX_DELIM_TOKEN, + HAK_FLX_DOLLARED_IDENT, + HAK_FLX_HMARKED_TOKEN, /* hash-marked token */ + HAK_FLX_HMARKED_BC, /* #b - intermediate state before #b[, #c[, or #b-radixed binary number */ + HAK_FLX_HMARKED_BINOP, /* #++ - binary operator symbol */ + HAK_FLX_HMARKED_CHAR, /* hash-marked character that begins with #\ */ + HAK_FLX_HMARKED_IDENT, /* literal symbol */ + HAK_FLX_PLAIN_IDENT, /* plain identifier */ + HAK_FLX_BINOP, /* binary operator */ + HAK_FLX_PLAIN_NUMBER, /* plain number */ + HAK_FLX_QUOTED_TOKEN, /* string, character */ + HAK_FLX_SIGNED_TOKEN, /* prefixed with + or - */ + HAK_FLX_BC_PREFIX /* b or C prefix before " or ' */ +}; +typedef enum hak_flx_state_t hak_flx_state_t; + +typedef struct hak_frd_t hak_frd_t; +struct hak_frd_t +{ + int level; + int flagv; + int expect_include_file; + int expect_vlist_item; + int do_include_file; + hak_cnode_t* obj; + hak_loc_t list_loc; +}; + +struct hak_compiler_t +{ + /* flags passed in via hak_compile() */ + int flags; + + /* callback pointer registerd upon compiler creation */ + hak_cb_t* cbp; + + /* input handler */ + hak_io_impl_t cci_rdr; + + /* static input data buffer */ + hak_io_cciarg_t cci_arg; + + /* pointer to the current input data. initially, it points to &inarg */ + hak_io_cciarg_t* curinp; + + /* information about the last meaningful character read. + * this is a copy of curinp->lxc if no ungetting is performed. + * if there is something in the unget buffer, this is overwritten + * by a value from the buffer when the request to read a character + * is served */ + hak_lxc_t lxc; + + /* unget buffer */ + hak_lxc_t ungot[10]; + int nungots; + + /* the last token read */ + hak_tok_t tok; + hak_link_t* sr_names; + + hak_synerr_t synerr; + + /* temporary space to handle an illegal character */ + hak_ooch_t ilchr; + hak_oocs_t ilchr_ucs; + + /* == READER == */ + struct + { + hak_oop_t s; /* stack for reading */ + hak_oop_t e; /* last object read */ + hak_rstl_t* st; + } r; /* reading */ + /* == END READER == */ + + struct + { + #if defined(HAK_OOCH_IS_UCH) + struct + { + hak_bch_t buf[HAK_BCSIZE_MAX]; + hak_oow_t len; + int no_check; + } rsd; /* residue - incomplete sequence at the end of the last data fed by hak_feedbchars() */ + #endif + + struct + { + hak_flx_state_t state; + hak_loc_t loc; + hak_loc_t _oloc; + + union + { + hak_flx_dt_t dt; /* delimiter token */ + hak_flx_di_t di; /* dollar-signed identifier */ + hak_flx_hc_t hc; /* hash-marked character */ + hak_flx_hi_t hi; /* hash-marked identifier - literal symbol */ + hak_flx_hbc_t hbc; /* #b #c ... */ + hak_flx_pi_t pi; /* plain identifier */ + hak_flx_binop_t binop; /* binary operator */ + hak_flx_pn_t pn; /* plain number */ + hak_flx_qt_t qt; /* quoted token */ + hak_flx_st_t st; /* signed token */ + hak_flx_bcp_t bcp; /* b or c prefix */ + } u; + } lx; + + struct hak_frd_t rd; + hak_on_cnode_t on_cnode; + } feed; + + /* == COMPILER STACK == */ + struct + { + hak_cframe_t* ptr; + hak_ooi_t top; + hak_oow_t capa; + } cfs; + /* == END COMPILER STACK == */ + + struct + { + hak_oocs_t s; /* buffer */ + hak_oow_t capa; /* bufer capacity */ + hak_oow_t wcount; /* word count */ + } tv; /* temporary variables including arguments */ + + struct + { + hak_ooi_t depth; /* signed because it starts with -1 */ + hak_ctlblk_info_t* info; + hak_oow_t info_capa; + } ctlblk; /* control block - loop, try-catch */ + + struct + { + hak_ooi_t depth; /* signed because it starts with -1 */ + hak_funblk_info_t* info; + hak_oow_t info_capa; + } funblk; /* function block */ + + struct + { + hak_ooi_t depth; /* signed because it starts with -1 */ + hak_clsblk_info_t* info; + hak_oow_t info_capa; + } clsblk; /* class block */ + + + struct + { + hak_cnode_t cons_to_nil; + hak_cnode_t nil; + } fake_cnode; +}; +#endif + + + +/* hak_context_t, hak_block_t, hak_function_t stores the local variable information + * + * Use up to 29 bits in a 32-bit hak_ooi_t. Exclude the tag bit and the sign bit. + * | SIGN | INSTA | VA | NARGS | NRVARS | NLVARS | TAG | + * 1 1 8 8 11 2 <= 32 + * ----------------------------------------------------------- + * Parameters to the MAKE_BLOCK or MAKE_FUNCTION instructions + * | INSTA | VA | NARGS | NRVARS | NLVARS + * 1 1 4 4 6 <= 16 (HAK_CODE_LONG_PARAM_SIZE 1, two params) + * 1 1 8 8 11 <= 32 (HAK_CODE_LONG_PARAM_SIZE 2, two params, use 29 bits to avoid collection when converted to a smooi) + * + * INSTA indicates the class instantiation method. + * NARGS and NRVARS are also used for the CALL and CALL2 instructions. + * CALL encodes NARGS in one parameter. + * CALLR encodes NARGS in one parameter and NRVARS in another parameter. + * NARGS and NRVARS must not exceed a single parameter size. + */ + +#if defined(HAK_CODE_LONG_PARAM_SIZE) && (HAK_CODE_LONG_PARAM_SIZE == 1) + +# define MAX_CODE_NBLKARGS (0xFu) /* 15 - 4 bits*/ +# define MAX_CODE_NBLKRVARS (0xFu) /* 15 - 4 bits*/ +# define MAX_CODE_NBLKLVARS (0x3Fu) /* 63 - 6 bits */ + +# define ENCODE_BLK_MASK(insta,va,nargs,nrvars,nlvars) \ + ((((insta) & 0x1) << 15) | (((va) & 0x1) << 14) | (((nargs) & 0xF) << 10) | (((nrvars) & 0xF) << 6) | (((nlvars) & 0x3FF))) +# define GET_BLK_MASK_INSTA(x) (((x) >> 15) & 0x1) +# define GET_BLK_MASK_VA(x) (((x) >> 14) & 0x1) +# define GET_BLK_MASK_NARGS(x) (((x) >> 10) & 0xF) +# define GET_BLK_MASK_NRVARS(x) (((x) >> 6) & 0xF) +# define GET_BLK_MASK_NLVARS(x) ((x) & 0x3F) + +# define MAX_CODE_JUMP (0xFFu) +# define MAX_CODE_PARAM (0xFFu) +# define MAX_CODE_PARAM2 (0xFFFFu) /* 16 bits */ +#elif defined(HAK_CODE_LONG_PARAM_SIZE) && (HAK_CODE_LONG_PARAM_SIZE == 2) + +# define MAX_CODE_NBLKARGS (0xFFu) /* 255, 8 bits */ +# define MAX_CODE_NBLKRVARS (0xFFu) /* 255, 8 bits */ +# define MAX_CODE_NBLKLVARS (0x7FFu) /* 2047, 11 bits */ +# define ENCODE_BLK_MASK(insta,va,nargs,nrvars,nlvars) \ + ((((insta) & 0x1) << 28) | (((va) & 0x1) << 27) | (((nargs) & 0xFF) << 19) | (((nrvars) & 0xFF) << 11) | (((nlvars) & 0x7FF))) +# define GET_BLK_MASK_INSTA(x) (((x) >> 28) & 0x1) +# define GET_BLK_MASK_VA(x) (((x) >> 27) & 0x1) +# define GET_BLK_MASK_NARGS(x) (((x) >> 19) & 0xFF) +# define GET_BLK_MASK_NRVARS(x) (((x) >> 11) & 0xFF) +# define GET_BLK_MASK_NLVARS(x) ((x) & 0x7FF) + +# define MAX_CODE_JUMP (0xFFFFu) +# define MAX_CODE_PARAM (0xFFFFu) +# define MAX_CODE_PARAM2 (0xFFFFFFFFu) /* 32 bits */ +#else +# error Unsupported HAK_CODE_LONG_PARAM_SIZE +#endif + + + +/* +---------------------------------------------------------------------------------------------------------------- +SHORT INSTRUCTION CODE LONG INSTRUCTION CODE +---------------------------------------------------------------------------------------------------------------- + v v +0-3 0000 00XX STORE_INTO_INSTVAR 128 1000 0000 XXXXXXXX STORE_INTO_IVAR_X (bit 4 off, bit 3 off) +4-7 0000 01XX STORE_INTO_INSTVAR +8-11 0000 10XX POP_INTO_INSTVAR 136 1000 1000 XXXXXXXX POP_INTO_IVAR_X (bit 4 off, bit 3 on) +12-15 0000 11XX POP_INTO_INSTVAR +16-19 0001 00XX PUSH_INSTVAR 144 1001 0000 XXXXXXXX PUSH_IVAR_X (bit 4 on) +20-23 0001 01XX PUSH_INSTVAR + + v v +24-27 0001 10XX PUSH_TEMPVAR 152 1001 1000 XXXXXXXX PUSH_TEMPVAR_X (bit 4 on) +28-31 0001 11XX PUSH_TEMPVAR +32-35 0010 00XX STORE_INTO_TEMPVAR 160 1010 0000 XXXXXXXX STORE_INTO_TEMPVAR_X (bit 4 off, bit 3 off) +36-39 0010 01XX STORE_INTO_TEMPVAR +40-43 0010 10XX POP_INTO_TEMPVAR 168 1010 1000 XXXXXXXX POP_INTO_TEMPVAR_X (bit 4 off, bit 3 on) +44-47 0010 11XX POP_INTO_TEMPVAR + +48-51 0011 00XX PUSH_LITERAL 176 1011 0000 XXXXXXXX PUSH_LITERAL_X +52-55 0011 01XX PUSH_LITERAL 177 1011 0001 XXXXXXXX XXXXXXXX PUSH_LITERAL_X2 + + vv +56-59 0011 10XX STORE_INTO_OBJECT 184 1011 1000 XXXXXXXX STORE_INTO_OBJECT (bit 3 on, bit 2 off) +60-63 0011 11XX POP_INTO_OBJECT 188 1011 1100 XXXXXXXX POP_INTO_OBJECT (bit 3 on, bit 2 on) +64-67 0100 00XX PUSH_OBJECT 192 1100 0000 XXXXXXXX PUSH_OBJECT (bit 3 off) + + +68-71 0100 01XX JUMP_FORWARD 196 1100 0100 XXXXXXXX JUMP_FORWARD_X + 197 1100 0101 XXXXXXXX JUMP2_FORWARD +72-75 0100 10XX JUMP_BACKWARD 200 1100 1000 XXXXXXXX JUMP_BACKWARD_X + 201 1100 1001 XXXXXXXX JUMP2_BACKWARD +76-79 0100 11XX UNUSED 204 1100 1100 XXXXXXXX JUMP_FORWARD_IF_TRUE + 205 1100 1101 XXXXXXXX JUMP2_FORWARD_IF_TRUE + 206 1100 1110 XXXXXXXX JUMP_BACKWARD_IF_TRUE + 207 1100 1111 XXXXXXXX JUMP2_BACKWARD_IF_TRUE +80-83 0101 00XX UNUSED 208 1101 0000 XXXXXXXX JUMP_FORWARD_IF_FALSE + 209 1101 0001 XXXXXXXX JUMP2_FORWARD_IF_FALSE + 210 1101 0010 XXXXXXXX JUMP_BACKWARD_IF_FALSE + 211 1101 0011 XXXXXXXX JUMP2_BACKWARD_IF_FALSE + +84-87 0101 01XX CALL 212 1101 0100 XXXXXXXX CALL_X + + vv +88-91 0101 10XX YYYYYYYY STORE_INTO_CTXTEMPVAR 216 1101 1000 XXXXXXXX YYYYYYYY STORE_INTO_CTXTEMPVAR_X (bit 3 on, bit 2 off) +92-95 0101 11XX YYYYYYYY POP_INTO_CTXTEMPVAR 220 1101 1100 XXXXXXXX YYYYYYYY POP_INTO_CTXTEMPVAR_X (bit 3 on, bit 2 on) +96-99 0110 00XX YYYYYYYY PUSH_CTXTEMPVAR 224 1110 0000 XXXXXXXX YYYYYYYY PUSH_CTXTEMPVAR_X (bit 3 off) +# XXXth outer-frame, YYYYYYYY local variable + +100-103 0110 01XX YYYYYYYY PUSH_OBJVAR 228 1110 0100 XXXXXXXX YYYYYYYY PUSH_OBJVAR_X (bit 3 off) +104-107 0110 10XX YYYYYYYY STORE_INTO_OBJVAR 232 1110 1000 XXXXXXXX YYYYYYYY STORE_INTO_OBJVAR_X (bit 3 on, bit 2 off) +108-111 0110 11XX YYYYYYYY POP_INTO_OBJVAR 236 1110 1100 XXXXXXXX YYYYYYYY POP_INTO_OBJVAR_X (bit 3 on, bit 2 on) +# XXXth instance variable of YYYYYYYY object + + v +112-115 0111 00XX YYYYYYYY SEND_MESSAGE 240 1111 0000 XXXXXXXX YYYYYYYY SEND_X (bit 2 off) +116-119 0111 01XX YYYYYYYY SEND_TO_SUPER 244 1111 0100 XXXXXXXX YYYYYYYY SEND_TO_SUPER_X (bit 2 on) +# XXX args, YYYYYYYY message + +120 0111 1000 YYYYYYYY PUSH_CVAR_I_X +121 0111 1001 YYYYYYYY STORE_INTO_CVAR_I_X +122 0111 1010 YYYYYYYY POP_INTO_CVAR_I_X + +123 0111 1011 YYYYYYYY PUSH_CVAR_M_X +124 0111 1100 YYYYYYYY STORE_INTO_CVAR_M_X +125 0111 1101 YYYYYYYY POP_INTO_CVAR_M_X + +126 0111 1110 UNUSED +127 0111 1111 UNUSED + +## +## "SHORT_CODE_0 | 0x80" becomes "LONG_CODE_X". +## A special single byte instruction is assigned an unused number greater than 128. +## +*/ + +enum hak_bcode_t +{ + HAK_CODE_STORE_INTO_IVAR_0 = 0x00, + HAK_CODE_STORE_INTO_IVAR_1 = 0x01, + HAK_CODE_STORE_INTO_IVAR_2 = 0x02, + HAK_CODE_STORE_INTO_IVAR_3 = 0x03, + + HAK_CODE_STORE_INTO_IVAR_4 = 0x04, + HAK_CODE_STORE_INTO_IVAR_5 = 0x05, + HAK_CODE_STORE_INTO_IVAR_6 = 0x06, + HAK_CODE_STORE_INTO_IVAR_7 = 0x07, + + HAK_CODE_POP_INTO_IVAR_0 = 0x08, + HAK_CODE_POP_INTO_IVAR_1 = 0x09, + HAK_CODE_POP_INTO_IVAR_2 = 0x0A, + HAK_CODE_POP_INTO_IVAR_3 = 0x0B, + + HAK_CODE_POP_INTO_IVAR_4 = 0x0C, + HAK_CODE_POP_INTO_IVAR_5 = 0x0D, + HAK_CODE_POP_INTO_IVAR_6 = 0x0E, + HAK_CODE_POP_INTO_IVAR_7 = 0x0F, + + HAK_CODE_PUSH_IVAR_0 = 0x10, + HAK_CODE_PUSH_IVAR_1 = 0x11, + HAK_CODE_PUSH_IVAR_2 = 0x12, + HAK_CODE_PUSH_IVAR_3 = 0x13, + + HAK_CODE_PUSH_IVAR_4 = 0x14, + HAK_CODE_PUSH_IVAR_5 = 0x15, + HAK_CODE_PUSH_IVAR_6 = 0x16, + HAK_CODE_PUSH_IVAR_7 = 0x17, + + HAK_CODE_PUSH_TEMPVAR_0 = 0x18, + HAK_CODE_PUSH_TEMPVAR_1 = 0x19, + HAK_CODE_PUSH_TEMPVAR_2 = 0x1A, + HAK_CODE_PUSH_TEMPVAR_3 = 0x1B, + + HAK_CODE_PUSH_TEMPVAR_4 = 0x1C, + HAK_CODE_PUSH_TEMPVAR_5 = 0x1D, + HAK_CODE_PUSH_TEMPVAR_6 = 0x1E, + HAK_CODE_PUSH_TEMPVAR_7 = 0x1F, + + HAK_CODE_STORE_INTO_TEMPVAR_0 = 0x20, + HAK_CODE_STORE_INTO_TEMPVAR_1 = 0x21, + HAK_CODE_STORE_INTO_TEMPVAR_2 = 0x22, + HAK_CODE_STORE_INTO_TEMPVAR_3 = 0x23, + + HAK_CODE_STORE_INTO_TEMPVAR_4 = 0x24, + HAK_CODE_STORE_INTO_TEMPVAR_5 = 0x25, + HAK_CODE_STORE_INTO_TEMPVAR_6 = 0x26, + HAK_CODE_STORE_INTO_TEMPVAR_7 = 0x27, + + HAK_CODE_POP_INTO_TEMPVAR_0 = 0x28, + HAK_CODE_POP_INTO_TEMPVAR_1 = 0x29, + HAK_CODE_POP_INTO_TEMPVAR_2 = 0x2A, + HAK_CODE_POP_INTO_TEMPVAR_3 = 0x2B, + + HAK_CODE_POP_INTO_TEMPVAR_4 = 0x2C, + HAK_CODE_POP_INTO_TEMPVAR_5 = 0x2D, + HAK_CODE_POP_INTO_TEMPVAR_6 = 0x2E, + HAK_CODE_POP_INTO_TEMPVAR_7 = 0x2F, + + HAK_CODE_PUSH_LITERAL_0 = 0x30, + HAK_CODE_PUSH_LITERAL_1 = 0x31, + HAK_CODE_PUSH_LITERAL_2 = 0x32, + HAK_CODE_PUSH_LITERAL_3 = 0x33, + + HAK_CODE_PUSH_LITERAL_4 = 0x34, + HAK_CODE_PUSH_LITERAL_5 = 0x35, + HAK_CODE_PUSH_LITERAL_6 = 0x36, + HAK_CODE_PUSH_LITERAL_7 = 0x37, + + /* -------------------------------------- */ + + HAK_CODE_STORE_INTO_OBJECT_0 = 0x38, + HAK_CODE_STORE_INTO_OBJECT_1 = 0x39, + HAK_CODE_STORE_INTO_OBJECT_2 = 0x3A, + HAK_CODE_STORE_INTO_OBJECT_3 = 0x3B, + + HAK_CODE_POP_INTO_OBJECT_0 = 0x3C, + HAK_CODE_POP_INTO_OBJECT_1 = 0x3D, + HAK_CODE_POP_INTO_OBJECT_2 = 0x3E, + HAK_CODE_POP_INTO_OBJECT_3 = 0x3F, + + HAK_CODE_PUSH_OBJECT_0 = 0x40, + HAK_CODE_PUSH_OBJECT_1 = 0x41, + HAK_CODE_PUSH_OBJECT_2 = 0x42, + HAK_CODE_PUSH_OBJECT_3 = 0x43, + + HAK_CODE_JUMP_FORWARD_0 = 0x44, /* 68 */ + HAK_CODE_JUMP_FORWARD_1 = 0x45, /* 69 */ + HAK_CODE_JUMP_FORWARD_2 = 0x46, /* 70 */ + HAK_CODE_JUMP_FORWARD_3 = 0x47, /* 71 */ + + HAK_CODE_JUMP_BACKWARD_0 = 0x48, /* 72 */ + HAK_CODE_JUMP_BACKWARD_1 = 0x49, /* 73 */ + HAK_CODE_JUMP_BACKWARD_2 = 0x4A, /* 74 */ + HAK_CODE_JUMP_BACKWARD_3 = 0x4B, /* 75 */ + + /* UNUSED 0x4C - 0x53 */ + + HAK_CODE_CALL_0 = 0x54, /* 84 */ + HAK_CODE_CALL_1 = 0x55, /* 85 */ + HAK_CODE_CALL_2 = 0x56, /* 86 */ + HAK_CODE_CALL_3 = 0x57, /* 87 */ + + HAK_CODE_STORE_INTO_CTXTEMPVAR_0 = 0x58, /* 88 */ + HAK_CODE_STORE_INTO_CTXTEMPVAR_1 = 0x59, /* 89 */ + HAK_CODE_STORE_INTO_CTXTEMPVAR_2 = 0x5A, /* 90 */ + HAK_CODE_STORE_INTO_CTXTEMPVAR_3 = 0x5B, /* 91 */ + + HAK_CODE_POP_INTO_CTXTEMPVAR_0 = 0x5C, /* 92 */ + HAK_CODE_POP_INTO_CTXTEMPVAR_1 = 0x5D, /* 93 */ + HAK_CODE_POP_INTO_CTXTEMPVAR_2 = 0x5E, /* 94 */ + HAK_CODE_POP_INTO_CTXTEMPVAR_3 = 0x5F, /* 95 */ + + HAK_CODE_PUSH_CTXTEMPVAR_0 = 0x60, /* 96 */ + HAK_CODE_PUSH_CTXTEMPVAR_1 = 0x61, /* 97 */ + HAK_CODE_PUSH_CTXTEMPVAR_2 = 0x62, /* 98 */ + HAK_CODE_PUSH_CTXTEMPVAR_3 = 0x63, /* 99 */ + + HAK_CODE_PUSH_OBJVAR_0 = 0x64, + HAK_CODE_PUSH_OBJVAR_1 = 0x65, + HAK_CODE_PUSH_OBJVAR_2 = 0x66, + HAK_CODE_PUSH_OBJVAR_3 = 0x67, + + HAK_CODE_STORE_INTO_OBJVAR_0 = 0x68, + HAK_CODE_STORE_INTO_OBJVAR_1 = 0x69, + HAK_CODE_STORE_INTO_OBJVAR_2 = 0x6A, + HAK_CODE_STORE_INTO_OBJVAR_3 = 0x6B, + + HAK_CODE_POP_INTO_OBJVAR_0 = 0x6C, + HAK_CODE_POP_INTO_OBJVAR_1 = 0x6D, + HAK_CODE_POP_INTO_OBJVAR_2 = 0x6E, + HAK_CODE_POP_INTO_OBJVAR_3 = 0x6F, + + HAK_CODE_SEND_0 = 0x70, /* 112 */ + HAK_CODE_SEND_1 = 0x71, /* 113 */ + HAK_CODE_SEND_2 = 0x72, /* 114 */ + HAK_CODE_SEND_3 = 0x73, /* 115 */ + + HAK_CODE_SEND_TO_SUPER_0 = 0x74, /* 116 */ + HAK_CODE_SEND_TO_SUPER_1 = 0x75, /* 117 */ + HAK_CODE_SEND_TO_SUPER_2 = 0x76, /* 118 */ + HAK_CODE_SEND_TO_SUPER_3 = 0x77, /* 119 */ + + HAK_CODE_PUSH_CVAR_I_X = 0x78, /* 120 */ + HAK_CODE_STORE_INTO_CVAR_I_X = 0x79, /* 121 */ + HAK_CODE_POP_INTO_CVAR_I_X = 0x7A, /* 122 */ + + HAK_CODE_PUSH_CVAR_M_X = 0x7B, /* 123 */ + HAK_CODE_STORE_INTO_CVAR_M_X = 0x7C, /* 124 */ + HAK_CODE_POP_INTO_CVAR_M_X = 0x7D, /* 125 */ + + /* UNUSED 0x7E - 0x7F */ + HAK_CODE_STORE_INTO_IVAR_X = 0x80, /* 128 */ + + HAK_CODE_PUSH_RECEIVER = 0x81, /* 129 */ + HAK_CODE_PUSH_NIL = 0x82, /* 130 */ + HAK_CODE_PUSH_TRUE = 0x83, /* 131 */ + HAK_CODE_PUSH_FALSE = 0x84, /* 132 */ + HAK_CODE_PUSH_CONTEXT = 0x85, /* 133 */ + HAK_CODE_PUSH_PROCESS = 0x86, /* 134 */ + /* UNUSED 0x87 */ + + HAK_CODE_POP_INTO_IVAR_X = 0x88, /* 136 ## */ + + HAK_CODE_PUSH_NEGONE = 0x89, /* 137 */ + HAK_CODE_PUSH_ZERO = 0x8A, /* 138 */ + HAK_CODE_PUSH_ONE = 0x8B, /* 139 */ + HAK_CODE_PUSH_TWO = 0x8C, /* 140 */ + + HAK_CODE_PUSH_IVAR_X = 0x90, /* 144 ## */ + HAK_CODE_PUSH_TEMPVAR_X = 0x98, /* 152 ## */ + HAK_CODE_STORE_INTO_TEMPVAR_X = 0xA0, /* 160 ## */ + HAK_CODE_POP_INTO_TEMPVAR_X = 0xA8, /* 168 ## */ + + HAK_CODE_PUSH_LITERAL_X = 0xB0, /* 176 ## */ + HAK_CODE_PUSH_LITERAL_X2 = 0xB1, /* 177 */ + + HAK_CODE_PUSH_INTLIT = 0xB2, /* 178 */ + HAK_CODE_PUSH_NEGINTLIT = 0xB3, /* 179 */ + HAK_CODE_PUSH_CHARLIT = 0xB4, /* 180 */ + + HAK_CODE_PLUS = 0xB5, /* 181 TOOD: move it to a lower code number later after killing OBJVAR instructions */ + /* UNUSED - 0xB6 - 0xB7 */ + + HAK_CODE_STORE_INTO_OBJECT_X = 0xB8, /* 184 ## */ + HAK_CODE_POP_INTO_OBJECT_X = 0xBC, /* 188 ## */ + HAK_CODE_PUSH_OBJECT_X = 0xC0, /* 192 ## */ + + /* UNUSED - 0xC1 - 0xC3 */ + + HAK_CODE_JUMP_FORWARD_X = 0xC4, /* 196 ## */ + HAK_CODE_JUMP2_FORWARD = 0xC5, /* 197 */ + + /* UNUSED - 0xC6 - 0xC7 */ + + HAK_CODE_JUMP_BACKWARD_X = 0xC8, /* 200 ## */ + HAK_CODE_JUMP2_BACKWARD = 0xC9, /* 201 */ + + /* UNUSED - 0xCA - 0xCB */ + + HAK_CODE_JUMP_FORWARD_IF_TRUE = 0xCC, /* 204 ## */ + HAK_CODE_JUMP2_FORWARD_IF_TRUE = 0xCD, /* 205 */ + HAK_CODE_JUMP_BACKWARD_IF_TRUE = 0xCE, /* 206 ## */ + HAK_CODE_JUMP2_BACKWARD_IF_TRUE = 0xCF, /* 207 */ + + HAK_CODE_JUMP_FORWARD_IF_FALSE = 0xD0, /* 208 ## */ + HAK_CODE_JUMP2_FORWARD_IF_FALSE = 0xD1, /* 209 */ + HAK_CODE_JUMP_BACKWARD_IF_FALSE = 0xD2, /* 210 ## */ + HAK_CODE_JUMP2_BACKWARD_IF_FALSE = 0xD3, /* 211 */ + + HAK_CODE_CALL_X = 0xD4, /* 212 ## */ + HAK_CODE_CALL_R = 0xD5, /* 213 ## ##*/ + HAK_CODE_PUSH_RETURN_R = 0xD6, /* 214 */ + HAK_CODE_TRY_ENTER = 0xD7, /* 215 ## */ + + HAK_CODE_STORE_INTO_CTXTEMPVAR_X = 0xD8, /* 216 ## */ + HAK_CODE_TRY_ENTER2 = 0xD9, /* 217 ## */ + HAK_CODE_TRY_EXIT = 0xDA, /* 218 */ + HAK_CODE_THROW = 0xDB, /* 219 */ + + HAK_CODE_POP_INTO_CTXTEMPVAR_X = 0xDC, /* 220 ## */ + HAK_CODE_CLASS_LOAD = 0xDD, /* 221 ## */ + HAK_CODE_MAKE_CHARARRAY = 0xDE, /* 222 ## */ + HAK_CODE_POP_INTO_CHARARRAY = 0xDF, /* 223 ## */ + + HAK_CODE_PUSH_CTXTEMPVAR_X = 0xE0, /* 224 ## */ + HAK_CODE_CLASS_ENTER = 0xE1, /* 225 ## */ + HAK_CODE_CLASS_EXIT = 0xE2, /* 226 */ + HAK_CODE_CLASS_PEXIT = 0xE3, /* 227 */ + + HAK_CODE_PUSH_OBJVAR_X = 0xE4, /* 228 ## */ + HAK_CODE_CLASS_CMSTORE = 0xE5, /* 229 */ + HAK_CODE_CLASS_IMSTORE = 0xE6, /* 230 */ + HAK_CODE_CLASS_CIMSTORE = 0xE7, /* 231 */ + + HAK_CODE_STORE_INTO_OBJVAR_X = 0xE8, /* 232 ## */ + HAK_CODE_MAKE_ARRAY = 0xE9, /* 233 ## */ + HAK_CODE_MAKE_BYTEARRAY = 0xEA, /* 234 ## */ + HAK_CODE_MAKE_DIC = 0xEB, /* 235 ## */ + + HAK_CODE_POP_INTO_OBJVAR_X = 0xEC, /* 236 ## */ + HAK_CODE_POP_INTO_ARRAY = 0xED, /* 237 ## */ + HAK_CODE_POP_INTO_BYTEARRAY = 0xEE, /* 238 ## */ + HAK_CODE_POP_INTO_DIC = 0xEF, /* 239 */ + + HAK_CODE_SEND_X = 0xF0, /* 240 ## */ + HAK_CODE_SEND_R = 0xF1, /* 241 ## ## - [NOTE] ((code >> 2) & 1) must be 0 */ + + HAK_CODE_MAKE_CONS = 0xF2, /* 242 */ + HAK_CODE_POP_INTO_CONS = 0xF3, /* 243 */ + + HAK_CODE_SEND_TO_SUPER_X = 0xF4, /* 244 ## */ + HAK_CODE_SEND_TO_SUPER_R = 0xF5, /* 245 ## ## - [NOTE] ((code >> 2) & 1) must be 0 */ + + HAK_CODE_POP_INTO_CONS_END = 0xF6, /* 246 */ + HAK_CODE_POP_INTO_CONS_CDR = 0xF7, /* 247 */ + /* -------------------------------------- */ + + HAK_CODE_DUP_STACKTOP = 0xF8, /* 248 */ + HAK_CODE_POP_STACKTOP = 0xF9, /* 249 */ + HAK_CODE_RETURN_STACKTOP = 0xFA, /* 250 */ + HAK_CODE_RETURN_RECEIVER = 0xFB, /* 251 */ + HAK_CODE_RETURN_FROM_BLOCK = 0xFC, /* 252, return the stack top from a block */ + + HAK_CODE_MAKE_FUNCTION = 0xFD, /* 253 */ + HAK_CODE_MAKE_BLOCK = 0xFE, /* 254 */ + HAK_CODE_NOOP = 0xFF /* 255 */ +}; + +typedef hak_ooi_t (*hak_outbfmt_t) ( + hak_t* hak, + hak_bitmask_t mask, + const hak_bch_t* fmt, + ... +); + +/* i don't want an error raised inside the callback to override + * the existing error number and message. */ +#define HAK_VMPRIM_LOG_WRITE(hak,mask,ptr,len) do { \ + int shuterr = (hak)->shuterr; \ + (hak)->shuterr = 1; \ + (hak)->vmprim.log_write (hak, mask, ptr, len); \ + (hak)->shuterr = shuterr; \ + } while(0) + + +#define HAK_CHAR_TO_NUM(c,base) \ + ((c >= '0' && c <= '9')? ((c - '0' < base)? (c - '0'): base): \ + (c >= 'A' && c <= 'Z')? ((c - 'A' + 10 < base)? (c - 'A' + 10): base): \ + (c >= 'a' && c <= 'z')? ((c - 'a' + 10 < base)? (c - 'a' + 10): base): base) + + +/* receiver check failure leads to hard failure. + * RATIONAL: the primitive handler should be used by relevant classes and + * objects only. if the receiver check fails, you must review + * your class library */ +#define HAK_PF_CHECK_RCV(hak,cond) do { \ + if (!(cond)) { hak_seterrnum((hak), HAK_EMSGRCV); return HAK_PF_HARD_FAILURE; } \ +} while(0) + +/* argument check failure causes the wrapping method to return an error. + * RATIONAL: Being a typeless language, it's hard to control the kinds of + * arguments. + */ +#define HAK_PF_CHECK_ARGS(hak,nargs,cond) do { \ + if (!(cond)) { hak_seterrnum (hak, HAK_EINVAL); return HAK_PF_FAILURE; } \ +} while(0) + +#if defined(__cplusplus) +extern "C" { +#endif + +/* ========================================================================= */ +/* heap.c */ +/* ========================================================================= */ + +/** + * The hak_makeheap() function creates a new heap of the \a size bytes. + * + * \return heap pointer on success and #HAK_NULL on failure. + */ +hak_heap_t* hak_makeheap ( + hak_t* hak, + hak_oow_t size +); + +/** + * The hak_killheap() function destroys the heap pointed to by \a heap. + */ +void hak_killheap ( + hak_t* hak, + hak_heap_t* heap +); + +/** + * The hak_allocheapmem() function allocates \a size bytes from the given heap + * and clears it with zeros. + */ +void* hak_callocheapmem ( + hak_t* hak, + hak_heap_t* heap, + hak_oow_t size +); + +void* hak_callocheapmem_noseterr ( + hak_t* hak, + hak_heap_t* heap, + hak_oow_t size +); + +void hak_freeheapmem ( + hak_t* hak, + hak_heap_t* heap, + void* ptr +); + +/* ========================================================================= */ +/* obj.c */ +/* ========================================================================= */ +void* hak_allocbytes ( + hak_t* hak, + hak_oow_t size +); + +/** + * The hak_allocoopobj() function allocates a raw object composed of \a size + * pointer fields excluding the header. + */ +hak_oop_t hak_allocoopobj ( + hak_t* hak, + hak_oow_t size +); + +hak_oop_t hak_allocoopobjwithtrailer ( + hak_t* hak, + hak_oow_t size, + const hak_oob_t* tptr, + hak_oow_t tlen +); + +hak_oop_t hak_alloccharobj ( + hak_t* hak, + const hak_ooch_t* ptr, + hak_oow_t len +); + +hak_oop_t hak_allocbyteobj ( + hak_t* hak, + const hak_oob_t* ptr, + hak_oow_t len +); + +hak_oop_t hak_allochalfwordobj ( + hak_t* hak, + const hak_oohw_t* ptr, + hak_oow_t len +); + +hak_oop_t hak_allocwordobj ( + hak_t* hak, + const hak_oow_t* ptr, + hak_oow_t len +); + +hak_oop_t hak_instantiatewithtrailer ( + hak_t* hak, + hak_oop_class_t _class, + hak_oow_t vlen, + const hak_oob_t* trptr, + hak_oow_t trlen +); + +/* ========================================================================= */ +/* sym.c */ +/* ========================================================================= */ +hak_oop_t hak_makesymbol ( + hak_t* hak, + const hak_ooch_t* ptr, + hak_oow_t len +); + +hak_oop_t hak_makesymbolwithbcstr ( + hak_t* hak, + const hak_bch_t* ptr +); + +hak_oop_t hak_makesymbolwithucstr ( + hak_t* hak, + const hak_uch_t* ptr +); + +hak_oop_t hak_findsymbol ( + hak_t* hak, + const hak_ooch_t* ptr, + hak_oow_t len +); + + +/* ========================================================================= */ +/* dic.c */ +/* ========================================================================= */ +hak_oop_cons_t hak_putatdic_method ( + hak_t* hak, + hak_oop_dic_t dic, + hak_oop_t key, + hak_oop_t value, + int mtype /* 1 for class method, 2 for instance method */ +); + +/* ========================================================================= */ +/* gc.c */ +/* ========================================================================= */ + +hak_oow_t hak_getobjpayloadbytes ( + hak_t* hak, + hak_oop_t oop +); + +void hak_gc_ms_sweep_lazy ( + hak_t* hak, + hak_oow_t allocsize +); + +/* ========================================================================= */ +/* utf8.c */ +/* ========================================================================= */ +hak_oow_t hak_uc_to_utf8 ( + hak_uch_t uc, + hak_bch_t* utf8, + hak_oow_t size +); + +hak_oow_t hak_utf8_to_uc ( + const hak_bch_t* utf8, + hak_oow_t size, + hak_uch_t* uc +); + +int hak_ucstoutf8 ( + const hak_uch_t* ucs, + hak_oow_t* ucslen, + hak_bch_t* bcs, + hak_oow_t* bcslen +); + +/** + * The hak_utf8_to_ucs() function converts a UTF8 string to a uncide string. + * + * It never returns -2 if \a ucs is #HAK_NULL. + * + * \code + * const hak_bch_t* bcs = "test string"; + * hak_uch_t ucs[100]; + * hak_oow_t ucslen = HAK_COUNTOF(buf), n; + * hak_oow_t bcslen = 11; + * int n; + * n = hak_utf8_to_ucs (bcs, &bcslen, ucs, &ucslen); + * if (n <= -1) { invalid/incomplenete sequence or buffer to small } + * \endcode + * + * For a null-terminated string, you can specify ~(hak_oow_t)0 in + * \a bcslen. The destination buffer \a ucs also must be large enough to + * store a terminating null. Otherwise, -2 is returned. + * + * The resulting \a ucslen can still be greater than 0 even if the return + * value is negative. The value indiates the number of characters converted + * before the error has occurred. + * + * \return 0 on success. + * -1 if \a bcs contains an illegal character. + * -2 if the wide-character string buffer is too small. + * -3 if \a bcs is not a complete sequence. + */ +int hak_utf8_to_ucs ( + const hak_bch_t* bcs, + hak_oow_t* bcslen, + hak_uch_t* ucs, + hak_oow_t* ucslen +); + +/* ========================================================================= */ +/* bigint.c */ +/* ========================================================================= */ +static HAK_INLINE int hak_isbigint (hak_t* hak, hak_oop_t x) +{ + return HAK_IS_BIGINT(hak, x); +} + +static HAK_INLINE int hak_isint (hak_t* hak, hak_oop_t x) +{ + return HAK_OOP_IS_SMOOI(x) || HAK_IS_BIGINT(hak, x); +} + +hak_oop_t hak_addints ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_subints ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_mulints ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_divints ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y, + int modulo, + hak_oop_t* rem +); + +hak_oop_t hak_negateint ( + hak_t* hak, + hak_oop_t x +); + +hak_oop_t hak_bitatint ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_bitandints ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_bitorints ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_bitxorints ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_bitinvint ( + hak_t* hak, + hak_oop_t x +); + +hak_oop_t hak_bitshiftint ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_eqints ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_neints ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_gtints ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_geints ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_ltints ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_leints ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_sqrtint ( + hak_t* hak, + hak_oop_t x +); + +hak_oop_t hak_absint ( + hak_t* hak, + hak_oop_t x +); + +hak_oop_t hak_strtoint ( + hak_t* hak, + const hak_ooch_t* str, + hak_oow_t len, + int radix +); + + +#define HAK_INTTOSTR_RADIXMASK (0xFF) +#define HAK_INTTOSTR_LOWERCASE (1 << 8) +#define HAK_INTTOSTR_NONEWOBJ (1 << 9) +/** + * The hak_inttostr() function converts an integer object to a string object + * printed in the given radix. If HAK_INTTOSTR_NONEWOBJ is set in flags_radix, + * it returns hak->_nil but keeps the result in the buffer pointed to by + * hak->inttostr.xbuf.ptr with the length stored in hak->inttostr.xbuf.len. + * If the function fails, it returns #HAK_NULL. + */ +hak_oop_t hak_inttostr ( + hak_t* hak, + hak_oop_t num, + int flagged_radix /* radix between 2 and 36 inclusive, optionally bitwise ORed of HAK_INTTOSTR_XXX bits */ +); + +/* ========================================================================= */ +/* number.c */ +/* ========================================================================= */ +hak_oop_t hak_addnums ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_subnums ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_mulnums ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_mltnums ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_divnums ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_truncfpdecval ( + hak_t* hak, + hak_oop_t iv, /* integer */ + hak_ooi_t cs, /* current scale */ + hak_ooi_t ns /* new scale */ +); + +hak_oop_t hak_gtnums ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_genums ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_ltnums ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_lenums ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_eqnums ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_nenums ( + hak_t* hak, + hak_oop_t x, + hak_oop_t y +); + +hak_oop_t hak_sqrtnum ( + hak_t* hak, + hak_oop_t x +); + +hak_oop_t hak_absnum ( + hak_t* hak, + hak_oop_t x +); + +/* ========================================================================= */ +/* hak.c */ +/* ========================================================================= */ + +hak_mod_data_t* hak_openmod ( + hak_t* hak, + const hak_ooch_t* name, + hak_oow_t namelen +); + +void hak_closemod ( + hak_t* hak, + hak_mod_data_t* mdp +); + +/* + * The hak_querymod() function finds a primitive function in modules + * with a full primitive identifier. + */ +hak_pfbase_t* hak_querymod ( + hak_t* hak, + const hak_ooch_t* pfid, + hak_oow_t pfidlen, + hak_mod_t** mod +); + +/* ========================================================================= */ +/* fmt.c */ +/* ========================================================================= */ +int hak_fmt_object ( + hak_t* hak, + hak_fmtout_t* fmtout, + hak_oop_t oop +); + +int hak_prfmtcallstack ( + hak_t* hak, + hak_ooi_t nargs +); + +int hak_logfmtcallstack ( + hak_t* hak, + hak_ooi_t nargs +); + +int hak_strfmtcallstack ( + hak_t* hak, + hak_ooi_t nargs +); + +int hak_scfmtcallstack ( + hak_t* hak, + hak_ooi_t nargs +); + +/* ========================================================================= */ +/* comp.c */ +/* ========================================================================= */ +int hak_emitbyteinstruction ( + hak_t* hak, + hak_oob_t bc +); + +int hak_copy_string_to ( + hak_t* hak, + const hak_oocs_t* src, + hak_oocs_t* dst, + hak_oow_t* dstcapa, + int append, + hak_ooch_t delim_char +); + +/* ========================================================================= */ +/* cnode.c */ +/* ========================================================================= */ +hak_cnode_t* hak_makecnode (hak_t* hak, hak_cnode_type_t type, int flags, const hak_loc_t* loc, const hak_oocs_t* tok); +hak_cnode_t* hak_makecnodenil (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok); +hak_cnode_t* hak_makecnodetrue (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok); +hak_cnode_t* hak_makecnodefalse (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok); +hak_cnode_t* hak_makecnodeself (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok); +hak_cnode_t* hak_makecnodesuper (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok); +hak_cnode_t* hak_makecnodeellipsis (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok); +hak_cnode_t* hak_makecnodetrpcolons (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok); +hak_cnode_t* hak_makecnodedblcolons (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok); +hak_cnode_t* hak_makecnodecolon (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok); +hak_cnode_t* hak_makecnodecolongt (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok); +hak_cnode_t* hak_makecnodecolonlt (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok); +hak_cnode_t* hak_makecnodecharlit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok, hak_ooch_t v); +hak_cnode_t* hak_makecnodebchrlit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok, hak_oob_t v); +hak_cnode_t* hak_makecnodesymbol (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok); +hak_cnode_t* hak_makecnodedsymbol (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok, int is_cla); +hak_cnode_t* hak_makecnodestrlit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok); +hak_cnode_t* hak_makecnodebstrlit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok); +hak_cnode_t* hak_makecnodesymlit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok); +hak_cnode_t* hak_makecnodenumlit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok); +hak_cnode_t* hak_makecnoderadnumlit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok); +hak_cnode_t* hak_makecnodefpdeclit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok); +hak_cnode_t* hak_makecnodesmptrlit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok, hak_oow_t v); +hak_cnode_t* hak_makecnodeerrlit (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok, hak_ooi_t v); +hak_cnode_t* hak_makecnodecons (hak_t* hak, int flags, const hak_loc_t* loc, const hak_oocs_t* tok, hak_cnode_t* car, hak_cnode_t* cdr); +hak_cnode_t* hak_makecnodeelist (hak_t* hak, int flags, const hak_loc_t* loc, hak_concode_t type); +hak_cnode_t* hak_makecnodeshell (hak_t* hak, int flags, const hak_loc_t* loc, hak_cnode_t* obj); +void hak_freesinglecnode (hak_t* hak, hak_cnode_t* c); +hak_oow_t hak_countcnodecons (hak_t* hak, hak_cnode_t* cons); +void hak_dumpcnode (hak_t* hak, hak_cnode_t* c, int newline); + + +/* ========================================================================= */ +/* read.c */ +/* ========================================================================= */ +int hak_is_binop_char (hak_ooci_t c); + +/* ========================================================================= */ +/* exec.c */ +/* ========================================================================= */ +int hak_class_responds_to (hak_t* hak, hak_oop_t rcv, hak_oop_t msg); +int hak_inst_responds_to (hak_t* hak, hak_oop_t rcv, hak_oop_t msg); + +hak_pfrc_t hak_pf_process_current (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs); +hak_pfrc_t hak_pf_process_fork (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs); +hak_pfrc_t hak_pf_process_resume (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs); +hak_pfrc_t hak_pf_process_suspend (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs); +hak_pfrc_t hak_pf_process_terminate (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs); +hak_pfrc_t hak_pf_process_terminate_all (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs); +hak_pfrc_t hak_pf_process_yield (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs); + +hak_pfrc_t hak_pf_semaphore_new (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs); +hak_pfrc_t hak_pf_semaphore_wait (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs); +hak_pfrc_t hak_pf_semaphore_signal (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs); +hak_pfrc_t hak_pf_semaphore_signal_timed (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs); +hak_pfrc_t hak_pf_semaphore_signal_on_input (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs); +hak_pfrc_t hak_pf_semaphore_signal_on_output (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs); +/*hak_pfrc_t hak_pf_semaphore_signal_on_gcfin (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs);*/ +hak_pfrc_t hak_pf_semaphore_unsignal (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs); + +hak_pfrc_t hak_pf_semaphore_group_new (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs); +hak_pfrc_t hak_pf_semaphore_group_add_semaphore (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs); +hak_pfrc_t hak_pf_semaphore_group_remove_semaphore (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs); +hak_pfrc_t hak_pf_semaphore_group_wait (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs); + +/* ========================================================================= */ +/* std.c */ +/* ========================================================================= */ +hak_errnum_t hak_syserrstrb (hak_t* hak, int syserr_type, int syserr_code, hak_bch_t* buf, hak_oow_t len); + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/lib/hak-rbt.h b/lib/hak-rbt.h new file mode 100644 index 0000000..088bb36 --- /dev/null +++ b/lib/hak-rbt.h @@ -0,0 +1,603 @@ +/* + Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _HAK_RBT_H_ +#define _HAK_RBT_H_ + +#include + +/** \file + * This file provides a red-black tree encapsulated in the #hak_rbt_t type that + * implements a self-balancing binary search tree.Its interface is very close + * to #hak_htb_t. + * + * This sample code adds a series of keys and values and print them + * in descending key order. + * \code + * #include + * + * static hak_rbt_walk_t walk (hak_rbt_t* rbt, hak_rbt_pair_t* pair, void* ctx) + * { + * hak_printf (HAK_T("key = %d, value = %d\n"), + * *(int*)HAK_RBT_KPTR(pair), *(int*)HAK_RBT_VPTR(pair)); + * return HAK_RBT_WALK_FORWARD; + * } + * + * int main () + * { + * hak_rbt_t* s1; + * int i; + * + * s1 = hak_rbt_open(HAK_MMGR_GETDFL(), 0, 1, 1); // error handling skipped + * hak_rbt_setstyle(s1, hak_get_rbt_style(HAK_RBT_STYLE_INLINE_COPIERS)); + * + * for (i = 0; i < 20; i++) + * { + * int x = i * 20; + * hak_rbt_insert (s1, &i, HAK_SIZEOF(i), &x, HAK_SIZEOF(x)); // eror handling skipped + * } + * + * hak_rbt_rwalk (s1, walk, HAK_NULL); + * + * hak_rbt_close (s1); + * return 0; + * } + * \endcode + */ + +typedef struct hak_rbt_t hak_rbt_t; +typedef struct hak_rbt_pair_t hak_rbt_pair_t; + +/** + * The hak_rbt_walk_t type defines values that the callback function can + * return to control hak_rbt_walk() and hak_rbt_rwalk(). + */ +enum hak_rbt_walk_t +{ + HAK_RBT_WALK_STOP = 0, + HAK_RBT_WALK_FORWARD = 1 +}; +typedef enum hak_rbt_walk_t hak_rbt_walk_t; + +/** + * The hak_rbt_id_t type defines IDs to indicate a key or a value in various + * functions + */ +enum hak_rbt_id_t +{ + HAK_RBT_KEY = 0, /**< indicate a key */ + HAK_RBT_VAL = 1 /**< indicate a value */ +}; +typedef enum hak_rbt_id_t hak_rbt_id_t; + +/** + * The hak_rbt_copier_t type defines a pair contruction callback. + */ +typedef void* (*hak_rbt_copier_t) ( + hak_rbt_t* rbt /**< red-black tree */, + void* dptr /**< pointer to a key or a value */, + hak_oow_t dlen /**< length of a key or a value */ +); + +/** + * The hak_rbt_freeer_t defines a key/value destruction callback. + */ +typedef void (*hak_rbt_freeer_t) ( + hak_rbt_t* rbt, /**< red-black tree */ + void* dptr, /**< pointer to a key or a value */ + hak_oow_t dlen /**< length of a key or a value */ +); + +/** + * The hak_rbt_comper_t type defines a key comparator that is called when + * the rbt needs to compare keys. A red-black tree is created with a default + * comparator which performs bitwise comparison of two keys. + * The comparator should return 0 if the keys are the same, 1 if the first + * key is greater than the second key, -1 otherwise. + */ +typedef int (*hak_rbt_comper_t) ( + const hak_rbt_t* rbt, /**< red-black tree */ + const void* kptr1, /**< key pointer */ + hak_oow_t klen1, /**< key length */ + const void* kptr2, /**< key pointer */ + hak_oow_t klen2 /**< key length */ +); + +/** + * The hak_rbt_keeper_t type defines a value keeper that is called when + * a value is retained in the context that it should be destroyed because + * it is identical to a new value. Two values are identical if their + * pointers and lengths are equal. + */ +typedef void (*hak_rbt_keeper_t) ( + hak_rbt_t* rbt, /**< red-black tree */ + void* vptr, /**< value pointer */ + hak_oow_t vlen /**< value length */ +); + +/** + * The hak_rbt_walker_t defines a pair visitor. + */ +typedef hak_rbt_walk_t (*hak_rbt_walker_t) ( + hak_rbt_t* rbt, /**< red-black tree */ + hak_rbt_pair_t* pair, /**< pointer to a key/value pair */ + void* ctx /**< pointer to user-defined data */ +); + +/** + * The hak_rbt_cbserter_t type defines a callback function for hak_rbt_cbsert(). + * The hak_rbt_cbserter() function calls it to allocate a new pair for the + * key pointed to by \a kptr of the length \a klen and the callback context + * \a ctx. The second parameter \a pair is passed the pointer to the existing + * pair for the key or #HAK_NULL in case of no existing key. The callback + * must return a pointer to a new or a reallocated pair. When reallocating the + * existing pair, this callback must destroy the existing pair and return the + * newly reallocated pair. It must return #HAK_NULL for failure. + */ +typedef hak_rbt_pair_t* (*hak_rbt_cbserter_t) ( + hak_rbt_t* rbt, /**< red-black tree */ + hak_rbt_pair_t* pair, /**< pair pointer */ + void* kptr, /**< key pointer */ + hak_oow_t klen, /**< key length */ + void* ctx /**< callback context */ +); + + +enum hak_rbt_pair_color_t +{ + HAK_RBT_RED, + HAK_RBT_BLACK +}; +typedef enum hak_rbt_pair_color_t hak_rbt_pair_color_t; + +/** + * The hak_rbt_pair_t type defines red-black tree pair. A pair is composed + * of a key and a value. It maintains pointers to the beginning of a key and + * a value plus their length. The length is scaled down with the scale factor + * specified in an owning tree. Use macros defined in the + */ +struct hak_rbt_pair_t +{ + struct + { + void* ptr; + hak_oow_t len; + } key; + + struct + { + void* ptr; + hak_oow_t len; + } val; + + /* management information below */ + hak_rbt_pair_color_t color; + hak_rbt_pair_t* parent; + hak_rbt_pair_t* child[2]; /* left and right */ +}; + +typedef struct hak_rbt_style_t hak_rbt_style_t; + +/** + * The hak_rbt_style_t type defines callback function sets for key/value + * pair manipulation. + */ +struct hak_rbt_style_t +{ + hak_rbt_copier_t copier[2]; /**< key and value copier */ + hak_rbt_freeer_t freeer[2]; /**< key and value freeer */ + hak_rbt_comper_t comper; /**< key comparator */ + hak_rbt_keeper_t keeper; /**< value keeper */ +}; + +/** + * The hak_rbt_style_kind_t type defines the type of predefined + * callback set for pair manipulation. + */ +enum hak_rbt_style_kind_t +{ + /** store the key and the value pointer */ + HAK_RBT_STYLE_DEFAULT, + /** copy both key and value into the pair */ + HAK_RBT_STYLE_INLINE_COPIERS, + /** copy the key into the pair but store the value pointer */ + HAK_RBT_STYLE_INLINE_KEY_COPIER, + /** copy the value into the pair but store the key pointer */ + HAK_RBT_STYLE_INLINE_VALUE_COPIER +}; + +typedef enum hak_rbt_style_kind_t hak_rbt_style_kind_t; + +/** + * The hak_rbt_t type defines a red-black tree. + */ +struct hak_rbt_t +{ + hak_t* hak; + const hak_rbt_style_t* style; + hak_oob_t scale[2]; /**< length scale */ + hak_rbt_pair_t xnil; /**< internal nil node */ + hak_oow_t size; /**< number of pairs */ + hak_rbt_pair_t* root; /**< root pair */ +}; + +/** + * The HAK_RBT_COPIER_SIMPLE macros defines a copier that remembers the + * pointer and length of data in a pair. + */ +#define HAK_RBT_COPIER_SIMPLE ((hak_rbt_copier_t)1) + +/** + * The HAK_RBT_COPIER_INLINE macros defines a copier that copies data into + * a pair. + */ +#define HAK_RBT_COPIER_INLINE ((hak_rbt_copier_t)2) + +#define HAK_RBT_COPIER_DEFAULT (HAK_RBT_COPIER_SIMPLE) +#define HAK_RBT_FREEER_DEFAULT (HAK_NULL) +#define HAK_RBT_COMPER_DEFAULT (hak_rbt_dflcomp) +#define HAK_RBT_KEEPER_DEFAULT (HAK_NULL) + +/** + * The HAK_RBT_SIZE() macro returns the number of pairs in red-black tree. + */ +#define HAK_RBT_SIZE(m) ((const hak_oow_t)(m)->size) +#define HAK_RBT_KSCALE(m) ((const int)(m)->scale[HAK_RBT_KEY]) +#define HAK_RBT_VSCALE(m) ((const int)(m)->scale[HAK_RBT_VAL]) + +#define HAK_RBT_KPTL(p) (&(p)->key) +#define HAK_RBT_VPTL(p) (&(p)->val) + +#define HAK_RBT_KPTR(p) ((p)->key.ptr) +#define HAK_RBT_KLEN(p) ((p)->key.len) +#define HAK_RBT_VPTR(p) ((p)->val.ptr) +#define HAK_RBT_VLEN(p) ((p)->val.len) + +#define HAK_RBT_NEXT(p) ((p)->next) + +#if defined(__cplusplus) +extern "C" { +#endif + +/** + * The hak_get_rbt_style() functions returns a predefined callback set for + * pair manipulation. + */ +HAK_EXPORT const hak_rbt_style_t* hak_get_rbt_style ( + hak_rbt_style_kind_t kind +); + +/** + * The hak_rbt_open() function creates a red-black tree. + * \return hak_rbt_t pointer on success, HAK_NULL on failure. + */ +HAK_EXPORT hak_rbt_t* hak_rbt_open ( + hak_t* hak, + hak_oow_t xtnsize, /**< extension size in bytes */ + int kscale, /**< key scale */ + int vscale /**< value scale */ +); + +/** + * The hak_rbt_close() function destroys a red-black tree. + */ +HAK_EXPORT void hak_rbt_close ( + hak_rbt_t* rbt /**< red-black tree */ +); + +/** + * The hak_rbt_init() function initializes a red-black tree + */ +HAK_EXPORT int hak_rbt_init ( + hak_rbt_t* rbt, /**< red-black tree */ + hak_t* hak, + int kscale, /**< key scale */ + int vscale /**< value scale */ +); + +/** + * The hak_rbt_fini() funtion finalizes a red-black tree + */ +HAK_EXPORT void hak_rbt_fini ( + hak_rbt_t* rbt /**< red-black tree */ +); + +HAK_EXPORT void* hak_rbt_getxtn ( + hak_rbt_t* rbt +); + +/** + * The hak_rbt_getstyle() function gets manipulation callback function set. + */ +HAK_EXPORT const hak_rbt_style_t* hak_rbt_getstyle ( + const hak_rbt_t* rbt /**< red-black tree */ +); + +/** + * The hak_rbt_setstyle() function sets internal manipulation callback + * functions for data construction, destruction, comparison, etc. + * The callback structure pointed to by \a style must outlive the tree + * pointed to by \a htb as the tree doesn't copy the contents of the + * structure. + */ +HAK_EXPORT void hak_rbt_setstyle ( + hak_rbt_t* rbt, /**< red-black tree */ + const hak_rbt_style_t* style /**< callback function set */ +); + +/** + * The hak_rbt_getsize() function gets the number of pairs in red-black tree. + */ +HAK_EXPORT hak_oow_t hak_rbt_getsize ( + const hak_rbt_t* rbt /**< red-black tree */ +); + +/** + * The hak_rbt_search() function searches red-black tree to find a pair with a + * matching key. It returns the pointer to the pair found. If it fails + * to find one, it returns HAK_NULL. + * \return pointer to the pair with a maching key, + * or HAK_NULL if no match is found. + */ +HAK_EXPORT hak_rbt_pair_t* hak_rbt_search ( + const hak_rbt_t* rbt, /**< red-black tree */ + const void* kptr, /**< key pointer */ + hak_oow_t klen /**< the size of the key */ +); + +/** + * The hak_rbt_upsert() function searches red-black tree for the pair with a + * matching key. If one is found, it updates the pair. Otherwise, it inserts + * a new pair with the key and the value given. It returns the pointer to the + * pair updated or inserted. + * \return a pointer to the updated or inserted pair on success, + * HAK_NULL on failure. + */ +HAK_EXPORT hak_rbt_pair_t* hak_rbt_upsert ( + hak_rbt_t* rbt, /**< red-black tree */ + void* kptr, /**< key pointer */ + hak_oow_t klen, /**< key length */ + void* vptr, /**< value pointer */ + hak_oow_t vlen /**< value length */ +); + +/** + * The hak_rbt_ensert() function inserts a new pair with the key and the value + * given. If there exists a pair with the key given, the function returns + * the pair containing the key. + * \return pointer to a pair on success, HAK_NULL on failure. + */ +HAK_EXPORT hak_rbt_pair_t* hak_rbt_ensert ( + hak_rbt_t* rbt, /**< red-black tree */ + void* kptr, /**< key pointer */ + hak_oow_t klen, /**< key length */ + void* vptr, /**< value pointer */ + hak_oow_t vlen /**< value length */ +); + +/** + * The hak_rbt_insert() function inserts a new pair with the key and the value + * given. If there exists a pair with the key given, the function returns + * HAK_NULL without channging the value. + * \return pointer to the pair created on success, HAK_NULL on failure. + */ +HAK_EXPORT hak_rbt_pair_t* hak_rbt_insert ( + hak_rbt_t* rbt, /**< red-black tree */ + void* kptr, /**< key pointer */ + hak_oow_t klen, /**< key length */ + void* vptr, /**< value pointer */ + hak_oow_t vlen /**< value length */ +); + +/** + * The hak_rbt_update() function updates the value of an existing pair + * with a matching key. + * \return pointer to the pair on success, HAK_NULL on no matching pair + */ +HAK_EXPORT hak_rbt_pair_t* hak_rbt_update ( + hak_rbt_t* rbt, /**< red-black tree */ + void* kptr, /**< key pointer */ + hak_oow_t klen, /**< key length */ + void* vptr, /**< value pointer */ + hak_oow_t vlen /**< value length */ +); + +/** + * The hak_rbt_cbsert() function inserts a key/value pair by delegating pair + * allocation to a callback function. Depending on the callback function, + * it may behave like hak_rbt_insert(), hak_rbt_upsert(), hak_rbt_update(), + * hak_rbt_ensert(), or totally differently. The sample code below inserts + * a new pair if the key is not found and appends the new value to the + * existing value delimited by a comma if the key is found. + * + * \code + * hak_rbt_walk_t print_map_pair (hak_rbt_t* map, hak_rbt_pair_t* pair, void* ctx) + * { + * hak_printf (HAK_T("%.*s[%d] => %.*s[%d]\n"), + * (int)HAK_RBT_KLEN(pair), HAK_RBT_KPTR(pair), (int)HAK_RBT_KLEN(pair), + * (int)HAK_RBT_VLEN(pair), HAK_RBT_VPTR(pair), (int)HAK_RBT_VLEN(pair)); + * return HAK_RBT_WALK_FORWARD; + * } + * + * hak_rbt_pair_t* cbserter ( + * hak_rbt_t* rbt, hak_rbt_pair_t* pair, + * void* kptr, hak_oow_t klen, void* ctx) + * { + * hak_cstr_t* v = (hak_cstr_t*)ctx; + * if (pair == HAK_NULL) + * { + * // no existing key for the key + * return hak_rbt_allocpair (rbt, kptr, klen, v->ptr, v->len); + * } + * else + * { + * // a pair with the key exists. + * // in this sample, i will append the new value to the old value + * // separated by a comma + * hak_rbt_pair_t* new_pair; + * hak_ooch_t comma = HAK_T(','); + * hak_oob_t* vptr; + * + * // allocate a new pair, but without filling the actual value. + * // note vptr is given HAK_NULL for that purpose + * new_pair = hak_rbt_allocpair ( + * rbt, kptr, klen, HAK_NULL, pair->vlen + 1 + v->len); + * if (new_pair == HAK_NULL) return HAK_NULL; + * + * // fill in the value space + * vptr = new_pair->vptr; + * hak_memcpy (vptr, pair->vptr, pair->vlen*HAK_SIZEOF(hak_ooch_t)); + * vptr += pair->vlen*HAK_SIZEOF(hak_ooch_t); + * hak_memcpy (vptr, &comma, HAK_SIZEOF(hak_ooch_t)); + * vptr += HAK_SIZEOF(hak_ooch_t); + * hak_memcpy (vptr, v->ptr, v->len*HAK_SIZEOF(hak_ooch_t)); + * + * // this callback requires the old pair to be destroyed + * hak_rbt_freepair (rbt, pair); + * + * // return the new pair + * return new_pair; + * } + * } + * + * int main () + * { + * hak_rbt_t* s1; + * int i; + * hak_ooch_t* keys[] = { HAK_T("one"), HAK_T("two"), HAK_T("three") }; + * hak_ooch_t* vals[] = { HAK_T("1"), HAK_T("2"), HAK_T("3"), HAK_T("4"), HAK_T("5") }; + * + * s1 = hak_rbt_open ( + * HAK_MMGR_GETDFL(), 0, + * HAK_SIZEOF(hak_ooch_t), HAK_SIZEOF(hak_ooch_t) + * ); // note error check is skipped + * hak_rbt_setstyle (s1, &style1); + * + * for (i = 0; i < HAK_COUNTOF(vals); i++) + * { + * hak_cstr_t ctx; + * ctx.ptr = vals[i]; ctx.len = hak_strlen(vals[i]); + * hak_rbt_cbsert (s1, + * keys[i%HAK_COUNTOF(keys)], hak_strlen(keys[i%HAK_COUNTOF(keys)]), + * cbserter, &ctx + * ); // note error check is skipped + * } + * hak_rbt_walk (s1, print_map_pair, HAK_NULL); + * + * hak_rbt_close (s1); + * return 0; + * } + * \endcode + */ +HAK_EXPORT hak_rbt_pair_t* hak_rbt_cbsert ( + hak_rbt_t* rbt, /**< red-black tree */ + void* kptr, /**< key pointer */ + hak_oow_t klen, /**< key length */ + hak_rbt_cbserter_t cbserter, /**< callback function */ + void* ctx /**< callback context */ +); + +/** + * The hak_rbt_delete() function deletes a pair with a matching key + * \return 0 on success, -1 on failure + */ +HAK_EXPORT int hak_rbt_delete ( + hak_rbt_t* rbt, /**< red-black tree */ + const void* kptr, /**< key pointer */ + hak_oow_t klen /**< key size */ +); + +/** + * The hak_rbt_clear() function empties a red-black tree. + */ +HAK_EXPORT void hak_rbt_clear ( + hak_rbt_t* rbt /**< red-black tree */ +); + +/** + * The hak_rbt_walk() function traverses a red-black tree in preorder + * from the leftmost child. + */ +HAK_EXPORT void hak_rbt_walk ( + hak_rbt_t* rbt, /**< red-black tree */ + hak_rbt_walker_t walker, /**< callback function for each pair */ + void* ctx /**< pointer to user-specific data */ +); + +/** + * The hak_rbt_walk() function traverses a red-black tree in preorder + * from the rightmost child. + */ +HAK_EXPORT void hak_rbt_rwalk ( + hak_rbt_t* rbt, /**< red-black tree */ + hak_rbt_walker_t walker, /**< callback function for each pair */ + void* ctx /**< pointer to user-specific data */ +); + +/** + * The hak_rbt_allocpair() function allocates a pair for a key and a value + * given. But it does not chain the pair allocated into the red-black tree \a rbt. + * Use this function at your own risk. + * + * Take note of he following special behavior when the copier is + * #HAK_RBT_COPIER_INLINE. + * - If \a kptr is #HAK_NULL, the key space of the size \a klen is reserved but + * not propagated with any data. + * - If \a vptr is #HAK_NULL, the value space of the size \a vlen is reserved + * but not propagated with any data. + */ +HAK_EXPORT hak_rbt_pair_t* hak_rbt_allocpair ( + hak_rbt_t* rbt, + void* kptr, + hak_oow_t klen, + void* vptr, + hak_oow_t vlen +); + +/** + * The hak_rbt_freepair() function destroys a pair. But it does not detach + * the pair destroyed from the red-black tree \a rbt. Use this function at your + * own risk. + */ +HAK_EXPORT void hak_rbt_freepair ( + hak_rbt_t* rbt, + hak_rbt_pair_t* pair +); + +/** + * The hak_rbt_dflcomp() function defines the default key comparator. + */ +HAK_EXPORT int hak_rbt_dflcomp ( + const hak_rbt_t* rbt, + const void* kptr1, + hak_oow_t klen1, + const void* kptr2, + hak_oow_t klen2 +); + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/lib/hak-str.h b/lib/hak-str.h new file mode 100644 index 0000000..afcc4da --- /dev/null +++ b/lib/hak-str.h @@ -0,0 +1,373 @@ +/* + Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _HAK_STR_H_ +#define _HAK_STR_H_ + +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +/** + * The hak_equal_uchars() function determines equality of two strings + * of the same length \a len. + */ +HAK_EXPORT int hak_equal_uchars ( + const hak_uch_t* str1, + const hak_uch_t* str2, + hak_oow_t len +); + +HAK_EXPORT int hak_equal_bchars ( + const hak_bch_t* str1, + const hak_bch_t* str2, + hak_oow_t len +); + +/* ------------------------------ */ + +HAK_EXPORT int hak_comp_uchars ( + const hak_uch_t* str1, + hak_oow_t len1, + const hak_uch_t* str2, + hak_oow_t len2 +); + +HAK_EXPORT int hak_comp_bchars ( + const hak_bch_t* str1, + hak_oow_t len1, + const hak_bch_t* str2, + hak_oow_t len2 +); + +HAK_EXPORT int hak_comp_ucstr ( + const hak_uch_t* str1, + const hak_uch_t* str2 +); + +HAK_EXPORT int hak_comp_bcstr ( + const hak_bch_t* str1, + const hak_bch_t* str2 +); + +HAK_EXPORT int hak_comp_ucstr_bcstr ( + const hak_uch_t* str1, + const hak_bch_t* str2 +); + +HAK_EXPORT int hak_comp_uchars_ucstr ( + const hak_uch_t* str1, + hak_oow_t len, + const hak_uch_t* str2 +); + +HAK_EXPORT int hak_comp_uchars_bcstr ( + const hak_uch_t* str1, + hak_oow_t len, + const hak_bch_t* str2 +); + +HAK_EXPORT int hak_comp_bchars_bcstr ( + const hak_bch_t* str1, + hak_oow_t len, + const hak_bch_t* str2 +); + +HAK_EXPORT int hak_comp_bchars_ucstr ( + const hak_bch_t* str1, + hak_oow_t len, + const hak_uch_t* str2 +); + +/* ------------------------------ */ + +HAK_EXPORT void hak_copy_uchars ( + hak_uch_t* dst, + const hak_uch_t* src, + hak_oow_t len +); + +HAK_EXPORT void hak_copy_bchars ( + hak_bch_t* dst, + const hak_bch_t* src, + hak_oow_t len +); + +HAK_EXPORT void hak_copy_bchars_to_uchars ( + hak_uch_t* dst, + const hak_bch_t* src, + hak_oow_t len +); + +HAK_EXPORT void hak_copy_uchars_to_bchars ( + hak_bch_t* dst, + const hak_uch_t* src, + hak_oow_t len +); + +HAK_EXPORT hak_oow_t hak_copy_bcstr_to_ucstr ( + hak_uch_t* dst, + hak_oow_t len, + const hak_bch_t* src +); + +HAK_EXPORT hak_oow_t hak_copy_ucstr_to_bcstr ( + hak_bch_t* dst, + hak_oow_t len, + const hak_uch_t* src +); + +HAK_EXPORT hak_oow_t hak_copy_uchars_to_ucstr_unlimited ( + hak_uch_t* dst, + const hak_uch_t* src, + hak_oow_t len +); + +HAK_EXPORT hak_oow_t hak_copy_bchars_to_bcstr_unlimited ( + hak_bch_t* dst, + const hak_bch_t* src, + hak_oow_t len +); + +HAK_EXPORT hak_oow_t hak_copy_ucstr ( + hak_uch_t* dst, + hak_oow_t len, + const hak_uch_t* src +); + +HAK_EXPORT hak_oow_t hak_copy_bcstr ( + hak_bch_t* dst, + hak_oow_t len, + const hak_bch_t* src +); + +HAK_EXPORT hak_oow_t hak_copy_uchars_to_ucstr ( + hak_uch_t* dst, + hak_oow_t dlen, + const hak_uch_t* src, + hak_oow_t slen +); + +HAK_EXPORT hak_oow_t hak_copy_bchars_to_bcstr ( + hak_bch_t* dst, + hak_oow_t dlen, + const hak_bch_t* src, + hak_oow_t slen +); + +HAK_EXPORT hak_oow_t hak_copy_ucstr_unlimited ( + hak_uch_t* dst, + const hak_uch_t* src +); + +HAK_EXPORT hak_oow_t hak_copy_bcstr_unlimited ( + hak_bch_t* dst, + const hak_bch_t* src +); + +/* ------------------------------ */ + +HAK_EXPORT void hak_fill_uchars ( + hak_uch_t* dst, + hak_uch_t ch, + hak_oow_t len +); + +HAK_EXPORT void hak_fill_bchars ( + hak_bch_t* dst, + hak_bch_t ch, + hak_oow_t len +); + +HAK_EXPORT hak_uch_t* hak_find_uchar ( + const hak_uch_t* ptr, + hak_oow_t len, + hak_uch_t c +); + +HAK_EXPORT hak_bch_t* hak_find_bchar ( + const hak_bch_t* ptr, + hak_oow_t len, + hak_bch_t c +); + +HAK_EXPORT hak_uch_t* hak_rfind_uchar ( + const hak_uch_t* ptr, + hak_oow_t len, + hak_uch_t c +); + +HAK_EXPORT hak_bch_t* hak_rfind_bchar ( + const hak_bch_t* ptr, + hak_oow_t len, + hak_bch_t c +); + +HAK_EXPORT hak_uch_t* hak_find_uchar_in_ucstr ( + const hak_uch_t* ptr, + hak_uch_t c +); + +HAK_EXPORT hak_bch_t* hak_find_bchar_in_bcstr ( + const hak_bch_t* ptr, + hak_bch_t c +); + +HAK_EXPORT hak_oow_t hak_rotate_uchars ( + hak_uch_t* str, + hak_oow_t len, + int dir, + hak_oow_t n +); + +HAK_EXPORT hak_oow_t hak_rotate_bchars ( + hak_bch_t* str, + hak_oow_t len, + int dir, + hak_oow_t n +); + +HAK_EXPORT hak_oow_t hak_count_ucstr ( + const hak_uch_t* str +); + +HAK_EXPORT hak_oow_t hak_count_bcstr ( + const hak_bch_t* str +); + +#if defined(HAK_OOCH_IS_UCH) +# define hak_equal_oochars(str1,str2,len) hak_equal_uchars(str1,str2,len) +# define hak_comp_oochars(str1,len1,str2,len2) hak_comp_uchars(str1,len1,str2,len2) +# define hak_comp_oocstr_bcstr(str1,str2) hak_comp_ucstr_bcstr(str1,str2) +# define hak_comp_oochars_bcstr(str1,len1,str2) hak_comp_uchars_bcstr(str1,len1,str2) +# define hak_comp_oochars_ucstr(str1,len1,str2) hak_comp_uchars_ucstr(str1,len1,str2) +# define hak_comp_oochars_oocstr(str1,len1,str2) hak_comp_uchars_ucstr(str1,len1,str2) +# define hak_comp_oocstr(str1,str2) hak_comp_ucstr(str1,str2) + +# define hak_copy_oochars(dst,src,len) hak_copy_uchars(dst,src,len) +# define hak_copy_bchars_to_oochars(dst,src,len) hak_copy_bchars_to_uchars(dst,src,len) +# define hak_copy_oochars_to_bchars(dst,src,len) hak_copy_uchars_to_bchars(dst,src,len) +# define hak_copy_uchars_to_oochars(dst,src,len) hak_copy_uchars(dst,src,len) +# define hak_copy_oochars_to_uchars(dst,src,len) hak_copy_uchars(dst,src,len) + +# define hak_copy_oochars_to_oocstr(dst,dlen,src,slen) hak_copy_uchars_to_ucstr(dst,dlen,src,slen) +# define hak_copy_oochars_to_oocstr_unlimited(dst,src,len) hak_copy_uchars_to_ucstr_unlimited(dst,src,len) +# define hak_copy_oocstr(dst,len,src) hak_copy_ucstr(dst,len,src) +# define hak_copy_oocstr_unlimited(dst,src) hak_copy_ucstr_unlimited(dst,src) + +# define hak_fill_oochars hak_fill_uchars +# define hak_find_oochar hak_find_uchar +# define hak_rfind_oochar hak_rfind_uchar +# define hak_find_oochar_in_oocstr hak_find_uchar_in_ucstr +# define hak_rotate_oochars hak_rotate_uchars +# define hak_count_oocstr hak_count_ucstr +#else +# define hak_equal_oochars(str1,str2,len) hak_equal_bchars(str1,str2,len) +# define hak_comp_oochars(str1,len1,str2,len2) hak_comp_bchars(str1,len1,str2,len2) +# define hak_comp_oocstr_bcstr(str1,str2) hak_comp_bcstr(str1,str2) +# define hak_comp_oochars_bcstr(str1,len1,str2) hak_comp_bchars_bcstr(str1,len1,str2) +# define hak_comp_oochars_ucstr(str1,len1,str2) hak_comp_bchars_ucstr(str1,len1,str2) +# define hak_comp_oochars_oocstr(str1,len1,str2) hak_comp_bchars_bcstr(str1,len1,str2) +# define hak_comp_oocstr(str1,str2) hak_comp_bcstr(str1,str2) + +# define hak_copy_oochars(dst,src,len) hak_copy_bchars(dst,src,len) +# define hak_copy_bchars_to_oochars(dst,src,len) hak_copy_bchars(dst,src,len) +# define hak_copy_oochars_to_bchars(dst,src,len) hak_copy_bchars(dst,src,len) +# define hak_copy_uchars_to_oochars(dst,src,len) hak_copy_uchars_to_bchars(dst,src,len) +# define hak_copy_oochars_to_uchars(dst,src,len) hak_copy_bchars_to_uchars(dst,src,len) + +# define hak_copy_oochars_to_oocstr(dst,dlen,src,slen) hak_copy_bchars_to_bcstr(dst,dlen,src,slen) +# define hak_copy_oochars_to_oocstr_unlimited(dst,src,len) hak_copy_bchars_to_bcstr_unlimited(dst,src,len) +# define hak_copy_oocstr(dst,len,src) hak_copy_bcstr(dst,len,src) +# define hak_copy_oocstr_unlimited(dst,src) hak_copy_bcstr_unlimited(dst,src) + +# define hak_fill_oochars hak_fill_bchars +# define hak_find_oochar hak_find_bchar +# define hak_rfind_oochar hak_rfind_bchar +# define hak_find_oochar_in_oocstr hak_find_bchar_in_bcstr +# define hak_rotate_oochars hak_rotate_bchars +# define hak_count_oocstr hak_count_bcstr +#endif + +#define HAK_BYTE_TO_BCSTR_RADIXMASK (0xFF) +#define HAK_BYTE_TO_BCSTR_LOWERCASE (1 << 8) + +hak_oow_t hak_byte_to_bcstr ( + hak_uint8_t byte, + hak_bch_t* buf, + hak_oow_t size, + int flagged_radix, + hak_bch_t fill +); + + +HAK_EXPORT int hak_conv_bcstr_to_ucstr_with_cmgr ( + const hak_bch_t* bcs, + hak_oow_t* bcslen, + hak_uch_t* ucs, + hak_oow_t* ucslen, + hak_cmgr_t* cmgr, + int all +); + +HAK_EXPORT int hak_conv_bchars_to_uchars_with_cmgr ( + const hak_bch_t* bcs, + hak_oow_t* bcslen, + hak_uch_t* ucs, + hak_oow_t* ucslen, + hak_cmgr_t* cmgr, + int all +); + +HAK_EXPORT int hak_conv_ucstr_to_bcstr_with_cmgr ( + const hak_uch_t* ucs, + hak_oow_t* ucslen, + hak_bch_t* bcs, + hak_oow_t* bcslen, + hak_cmgr_t* cmgr +); + +HAK_EXPORT int hak_conv_uchars_to_bchars_with_cmgr ( + const hak_uch_t* ucs, + hak_oow_t* ucslen, + hak_bch_t* bcs, + hak_oow_t* bcslen, + hak_cmgr_t* cmgr +); + +#if defined(HAK_OOCH_IS_UCH) +# define hak_conv_oocstr_to_bcstr_with_cmgr(oocs,oocslen,bcs,bcslen,cmgr) hak_conv_ucstr_to_bcstr_with_cmgr(oocs,oocslen,bcs,bcslen,cmgr) +# define hak_conv_oochars_to_bchars_with_cmgr(oocs,oocslen,bcs,bcslen,cmgr) hak_conv_uchars_to_bchars_with_cmgr(oocs,oocslen,bcs,bcslen,cmgr) +#else +# define hak_conv_oocstr_to_ucstr_with_cmgr(oocs,oocslen,ucs,ucslen,cmgr) hak_conv_bcstr_to_ucstr_with_cmgr(oocs,oocslen,ucs,ucslen,cmgr,0) +# define hak_conv_oochars_to_uchars_with_cmgr(oocs,oocslen,ucs,ucslen,cmgr) hak_conv_bchars_to_uchars_with_cmgr(oocs,oocslen,ucs,ucslen,cmgr,0) +#endif + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/lib/hak-tmr.h b/lib/hak-tmr.h new file mode 100644 index 0000000..7cde419 --- /dev/null +++ b/lib/hak-tmr.h @@ -0,0 +1,152 @@ +/* + Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _HAK_TMR_H_ +#define _HAK_TMR_H_ + +#include + +typedef struct hak_tmr_t hak_tmr_t; +typedef struct hak_tmr_event_t hak_tmr_event_t; +typedef hak_oow_t hak_tmr_index_t; + +typedef void (*hak_tmr_handler_t) ( + hak_tmr_t* tmr, + const hak_ntime_t* now, + hak_tmr_event_t* evt +); + +typedef void (*hak_tmr_updater_t) ( + hak_tmr_t* tmr, + hak_tmr_index_t old_index, + hak_tmr_index_t new_index, + hak_tmr_event_t* evt +); + +struct hak_tmr_t +{ + hak_t* hak; + hak_oow_t capa; + hak_oow_t size; + hak_tmr_event_t* event; +}; + +struct hak_tmr_event_t +{ + void* ctx; /* primary context pointer */ + hak_ntime_t when; + hak_tmr_handler_t handler; + hak_tmr_updater_t updater; +}; + +#define HAK_TMR_INVALID_INDEX ((hak_tmr_index_t)-1) + +#define HAK_TMR_SIZE(tmr) ((tmr)->size) +#define HAK_TMR_CAPA(tmr) ((tmr)->capa); + +#if defined(__cplusplus) +extern "C" { +#endif + +HAK_EXPORT hak_tmr_t* hak_tmr_open ( + hak_t* mmgr, + hak_oow_t xtnsize, + hak_oow_t capa +); + +HAK_EXPORT void hak_tmr_close ( + hak_tmr_t* tmr +); + +HAK_EXPORT int hak_tmr_init ( + hak_tmr_t* tmr, + hak_t* mmgr, + hak_oow_t capa +); + +HAK_EXPORT void hak_tmr_fini ( + hak_tmr_t* tmr +); + +/* +HAK_EXPORT hak_mmgr_t* hak_tmr_getmmgr ( + hak_tmr_t* tmr +);*/ + +HAK_EXPORT void* hak_tmr_getxtn ( + hak_tmr_t* tmr +); + +HAK_EXPORT void hak_tmr_clear ( + hak_tmr_t* tmr +); + +/** + * The hak_tmr_insert() function schedules a new event. + * + * \return #HAK_TMR_INVALID_INDEX on failure, valid index on success. + */ + +HAK_EXPORT hak_tmr_index_t hak_tmr_insert ( + hak_tmr_t* tmr, + const hak_tmr_event_t* event +); + +HAK_EXPORT hak_tmr_index_t hak_tmr_update ( + hak_tmr_t* tmr, + hak_tmr_index_t index, + const hak_tmr_event_t* event +); + +HAK_EXPORT void hak_tmr_delete ( + hak_tmr_t* tmr, + hak_tmr_index_t index +); + +HAK_EXPORT int hak_tmr_fire ( + hak_tmr_t* tmr, + const hak_ntime_t* tm, + hak_oow_t* firecnt +); + +HAK_EXPORT int hak_tmr_gettmout ( + hak_tmr_t* tmr, + const hak_ntime_t* tm, + hak_ntime_t* tmout +); + +/** + * The hak_tmr_getevent() function returns the + * pointer to the registered event at the given index. + */ +HAK_EXPORT hak_tmr_event_t* hak_tmr_getevent ( + hak_tmr_t* tmr, + hak_tmr_index_t index +); + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/lib/hcl-upac.h b/lib/hak-upac.h similarity index 100% rename from lib/hcl-upac.h rename to lib/hak-upac.h diff --git a/lib/hak-utl.h b/lib/hak-utl.h new file mode 100644 index 0000000..615e046 --- /dev/null +++ b/lib/hak-utl.h @@ -0,0 +1,901 @@ +/* + Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _HAK_UTL_H_ +#define _HAK_UTL_H_ + +#include +#include + +/* ========================================================================= + * DOUBLY LINKED LIST + * ========================================================================= */ +#define HAK_APPEND_TO_LIST(list, node) do { \ + (node)->next = HAK_NULL; \ + (node)->prev = (list)->last; \ + if ((list)->first) (list)->last->next = (node); \ + else (list)->first = (node); \ + (list)->last = (node); \ +} while(0) + +#define HAK_PREPPEND_TO_LIST(list, node) do { \ + (node)->prev = HAK_NULL; \ + (node)->next = (list)->first; \ + if ((list)->last) (list)->first->prev = (node); \ + else (list)->last = (node); \ + (list)->first = (node); \ +} while(0) + +#define HAK_DELETE_FROM_LIST(list, node) do { \ + if ((node)->prev) (node)->prev->next = (node)->next; \ + else (list)->first = (node)->next; \ + if ((node)->next) (node)->next->prev = (node)->prev; \ + else (list)->last = (node)->prev; \ +} while(0) + + + +#define HAK_APPEND_TO_OOP_LIST(hak, list, node_type, node, _link) do { \ + (node)->_link.next = (node_type)(hak)->_nil; \ + (node)->_link.prev = (list)->last; \ + if ((hak_oop_t)(list)->last != (hak)->_nil) (list)->last->_link.next = (node); \ + else (list)->first = (node); \ + (list)->last = (node); \ +} while(0) + +#define HAK_PREPPEND_TO_OOP_LIST(hak, list, node_type, node, _link) do { \ + (node)->_link.prev = (node_type)(hak)->_nil; \ + (node)->_link.next = (list)->first; \ + if ((hak_oop_t)(list)->first != (hak)->_nil) (list)->first->_link.prev = (node); \ + else (list)->last = (node); \ + (list)->first = (node); \ +} while(0) + +#define HAK_DELETE_FROM_OOP_LIST(hak, list, node, _link) do { \ + if ((hak_oop_t)(node)->_link.prev != (hak)->_nil) (node)->_link.prev->_link.next = (node)->_link.next; \ + else (list)->first = (node)->_link.next; \ + if ((hak_oop_t)(node)->_link.next != (hak)->_nil) (node)->_link.next->_link.prev = (node)->_link.prev; \ + else (list)->last = (node)->_link.prev; \ +} while(0) + +/* +#define HAK_CLEANUP_FROM_OOP_LIST(hak, list, node, _link) do { \ + HAK_DELETE_FROM_OOP_LIST (hak, list, node, _link); \ + (node)->_link.prev = (node_type)(hak)->_nil; \ + (node)->_link.next = (node_type)(hak)->_nil; \ +} while(0); +*/ + +/* ========================================================================= + * ENDIAN CHANGE OF A CONSTANT + * ========================================================================= */ +#define HAK_CONST_BSWAP16(x) \ + ((hak_uint16_t)((((hak_uint16_t)(x) & ((hak_uint16_t)0xff << 0)) << 8) | \ + (((hak_uint16_t)(x) & ((hak_uint16_t)0xff << 8)) >> 8))) + +#define HAK_CONST_BSWAP32(x) \ + ((hak_uint32_t)((((hak_uint32_t)(x) & ((hak_uint32_t)0xff << 0)) << 24) | \ + (((hak_uint32_t)(x) & ((hak_uint32_t)0xff << 8)) << 8) | \ + (((hak_uint32_t)(x) & ((hak_uint32_t)0xff << 16)) >> 8) | \ + (((hak_uint32_t)(x) & ((hak_uint32_t)0xff << 24)) >> 24))) + +#if defined(HAK_HAVE_UINT64_T) +#define HAK_CONST_BSWAP64(x) \ + ((hak_uint64_t)((((hak_uint64_t)(x) & ((hak_uint64_t)0xff << 0)) << 56) | \ + (((hak_uint64_t)(x) & ((hak_uint64_t)0xff << 8)) << 40) | \ + (((hak_uint64_t)(x) & ((hak_uint64_t)0xff << 16)) << 24) | \ + (((hak_uint64_t)(x) & ((hak_uint64_t)0xff << 24)) << 8) | \ + (((hak_uint64_t)(x) & ((hak_uint64_t)0xff << 32)) >> 8) | \ + (((hak_uint64_t)(x) & ((hak_uint64_t)0xff << 40)) >> 24) | \ + (((hak_uint64_t)(x) & ((hak_uint64_t)0xff << 48)) >> 40) | \ + (((hak_uint64_t)(x) & ((hak_uint64_t)0xff << 56)) >> 56))) +#endif + +#if defined(HAK_HAVE_UINT128_T) +#define HAK_CONST_BSWAP128(x) \ + ((hak_uint128_t)((((hak_uint128_t)(x) & ((hak_uint128_t)0xff << 0)) << 120) | \ + (((hak_uint128_t)(x) & ((hak_uint128_t)0xff << 8)) << 104) | \ + (((hak_uint128_t)(x) & ((hak_uint128_t)0xff << 16)) << 88) | \ + (((hak_uint128_t)(x) & ((hak_uint128_t)0xff << 24)) << 72) | \ + (((hak_uint128_t)(x) & ((hak_uint128_t)0xff << 32)) << 56) | \ + (((hak_uint128_t)(x) & ((hak_uint128_t)0xff << 40)) << 40) | \ + (((hak_uint128_t)(x) & ((hak_uint128_t)0xff << 48)) << 24) | \ + (((hak_uint128_t)(x) & ((hak_uint128_t)0xff << 56)) << 8) | \ + (((hak_uint128_t)(x) & ((hak_uint128_t)0xff << 64)) >> 8) | \ + (((hak_uint128_t)(x) & ((hak_uint128_t)0xff << 72)) >> 24) | \ + (((hak_uint128_t)(x) & ((hak_uint128_t)0xff << 80)) >> 40) | \ + (((hak_uint128_t)(x) & ((hak_uint128_t)0xff << 88)) >> 56) | \ + (((hak_uint128_t)(x) & ((hak_uint128_t)0xff << 96)) >> 72) | \ + (((hak_uint128_t)(x) & ((hak_uint128_t)0xff << 104)) >> 88) | \ + (((hak_uint128_t)(x) & ((hak_uint128_t)0xff << 112)) >> 104) | \ + (((hak_uint128_t)(x) & ((hak_uint128_t)0xff << 120)) >> 120))) +#endif + +#if defined(HAK_ENDIAN_LITTLE) + +# if defined(HAK_HAVE_UINT16_T) +# define HAK_CONST_NTOH16(x) HAK_CONST_BSWAP16(x) +# define HAK_CONST_HTON16(x) HAK_CONST_BSWAP16(x) +# define HAK_CONST_HTOBE16(x) HAK_CONST_BSWAP16(x) +# define HAK_CONST_HTOLE16(x) (x) +# define HAK_CONST_BE16TOH(x) HAK_CONST_BSWAP16(x) +# define HAK_CONST_LE16TOH(x) (x) +# endif + +# if defined(HAK_HAVE_UINT32_T) +# define HAK_CONST_NTOH32(x) HAK_CONST_BSWAP32(x) +# define HAK_CONST_HTON32(x) HAK_CONST_BSWAP32(x) +# define HAK_CONST_HTOBE32(x) HAK_CONST_BSWAP32(x) +# define HAK_CONST_HTOLE32(x) (x) +# define HAK_CONST_BE32TOH(x) HAK_CONST_BSWAP32(x) +# define HAK_CONST_LE32TOH(x) (x) +# endif + +# if defined(HAK_HAVE_UINT64_T) +# define HAK_CONST_NTOH64(x) HAK_CONST_BSWAP64(x) +# define HAK_CONST_HTON64(x) HAK_CONST_BSWAP64(x) +# define HAK_CONST_HTOBE64(x) HAK_CONST_BSWAP64(x) +# define HAK_CONST_HTOLE64(x) (x) +# define HAK_CONST_BE64TOH(x) HAK_CONST_BSWAP64(x) +# define HAK_CONST_LE64TOH(x) (x) +# endif + +# if defined(HAK_HAVE_UINT128_T) +# define HAK_CONST_NTOH128(x) HAK_CONST_BSWAP128(x) +# define HAK_CONST_HTON128(x) HAK_CONST_BSWAP128(x) +# define HAK_CONST_HTOBE128(x) HAK_CONST_BSWAP128(x) +# define HAK_CONST_HTOLE128(x) (x) +# define HAK_CONST_BE128TOH(x) HAK_CONST_BSWAP128(x) +# define HAK_CONST_LE128TOH(x) (x) +#endif + +#elif defined(HAK_ENDIAN_BIG) + +# if defined(HAK_HAVE_UINT16_T) +# define HAK_CONST_NTOH16(x) (x) +# define HAK_CONST_HTON16(x) (x) +# define HAK_CONST_HTOBE16(x) (x) +# define HAK_CONST_HTOLE16(x) HAK_CONST_BSWAP16(x) +# define HAK_CONST_BE16TOH(x) (x) +# define HAK_CONST_LE16TOH(x) HAK_CONST_BSWAP16(x) +# endif + +# if defined(HAK_HAVE_UINT32_T) +# define HAK_CONST_NTOH32(x) (x) +# define HAK_CONST_HTON32(x) (x) +# define HAK_CONST_HTOBE32(x) (x) +# define HAK_CONST_HTOLE32(x) HAK_CONST_BSWAP32(x) +# define HAK_CONST_BE32TOH(x) (x) +# define HAK_CONST_LE32TOH(x) HAK_CONST_BSWAP32(x) +# endif + +# if defined(HAK_HAVE_UINT64_T) +# define HAK_CONST_NTOH64(x) (x) +# define HAK_CONST_HTON64(x) (x) +# define HAK_CONST_HTOBE64(x) (x) +# define HAK_CONST_HTOLE64(x) HAK_CONST_BSWAP64(x) +# define HAK_CONST_BE64TOH(x) (x) +# define HAK_CONST_LE64TOH(x) HAK_CONST_BSWAP64(x) +# endif + +# if defined(HAK_HAVE_UINT128_T) +# define HAK_CONST_NTOH128(x) (x) +# define HAK_CONST_HTON128(x) (x) +# define HAK_CONST_HTOBE128(x) (x) +# define HAK_CONST_HTOLE128(x) HAK_CONST_BSWAP128(x) +# define HAK_CONST_BE128TOH(x) (x) +# define HAK_CONST_LE128TOH(x) HAK_CONST_BSWAP128(x) +# endif + +#else +# error UNKNOWN ENDIAN +#endif + + +#if defined(HAK_HAVE_UINT16_T) && (HAK_SIZEOF_UINT16_T == HAK_SIZEOF_OOW_T) +# define HAK_CONST_NTOHOOW(x) HAK_CONST_NTOH16(x) +# define HAK_CONST_HTONOOW(x) HAK_CONST_HTON16(x) +# define HAK_CONST_HTOBEOOW(x) HAK_CONST_HTOBE16(x) +# define HAK_CONST_HTOLEOOW(x) HAK_CONST_HTOLE16(x) +# define HAK_CONST_BEOOWTOH(x) HAK_CONST_BE16TOH(x) +# define HAK_CONST_LEOOWTOH(x) HAK_CONST_LE16TOH(x) +#elif defined(HAK_HAVE_UINT32_T) && (HAK_SIZEOF_UINT32_T == HAK_SIZEOF_OOW_T) +# define HAK_CONST_NTOHOOW(x) HAK_CONST_NTOH32(x) +# define HAK_CONST_HTONOOW(x) HAK_CONST_HTON32(x) +# define HAK_CONST_HTOBEOOW(x) HAK_CONST_HTOBE32(x) +# define HAK_CONST_HTOLEOOW(x) HAK_CONST_HTOLE32(x) +# define HAK_CONST_BEOOWTOH(x) HAK_CONST_BE32TOH(x) +# define HAK_CONST_LEOOWTOH(x) HAK_CONST_LE32TOH(x) +#elif defined(HAK_HAVE_UINT64_T) && (HAK_SIZEOF_UINT64_T == HAK_SIZEOF_OOW_T) +# define HAK_CONST_NTOHOOW(x) HAK_CONST_NTOH64(x) +# define HAK_CONST_HTONOOW(x) HAK_CONST_HTON64(x) +# define HAK_CONST_HTOBEOOW(x) HAK_CONST_HTOBE64(x) +# define HAK_CONST_HTOLEOOW(x) HAK_CONST_HTOLE64(x) +# define HAK_CONST_BEOOWTOH(x) HAK_CONST_BE64TOH(x) +# define HAK_CONST_LEOOWTOH(x) HAK_CONST_LE64TOH(x) +#elif defined(HAK_HAVE_UINT128_T) && (HAK_SIZEOF_UINT128_T == HAK_SIZEOF_OOW_T) +# define HAK_CONST_NTOHOOW(x) HAK_CONST_NTOH128(x) +# define HAK_CONST_HTONOOW(x) HAK_CONST_HTON128(x) +# define HAK_CONST_HTOBEOOW(x) HAK_CONST_HTOBE128(x) +# define HAK_CONST_HTOLEOOW(x) HAK_CONST_HTOLE128(x) +# define HAK_CONST_BEOOWTOH(x) HAK_CONST_BE128TOH(x) +# define HAK_CONST_LEOOWTOH(x) HAK_CONST_LE128TOH(x) +#endif + +#if defined(HAK_HAVE_UINT16_T) && (HAK_SIZEOF_UINT16_T == HAK_SIZEOF_OOHW_T) +# define HAK_CONST_NTOHOOHW(x) HAK_CONST_NTOH16(x) +# define HAK_CONST_HTONOOHW(x) HAK_CONST_HTON16(x) +# define HAK_CONST_HTOBEOOHW(x) HAK_CONST_HTOBE16(x) +# define HAK_CONST_HTOLEOOHW(x) HAK_CONST_HTOLE16(x) +# define HAK_CONST_BEOOHWTOH(x) HAK_CONST_BE16TOH(x) +# define HAK_CONST_LEOOHWTOH(x) HAK_CONST_LE16TOH(x) +#elif defined(HAK_HAVE_UINT32_T) && (HAK_SIZEOF_UINT32_T == HAK_SIZEOF_OOHW_T) +# define HAK_CONST_NTOHOOHW(x) HAK_CONST_NTOH32(x) +# define HAK_CONST_HTONOOHW(x) HAK_CONST_HTON32(x) +# define HAK_CONST_HTOBEOOHW(x) HAK_CONST_HTOBE32(x) +# define HAK_CONST_HTOLEOOHW(x) HAK_CONST_HTOLE32(x) +# define HAK_CONST_BEOOHWTOH(x) HAK_CONST_BE32TOH(x) +# define HAK_CONST_LEOOHWTOH(x) HAK_CONST_LE32TOH(x) +#elif defined(HAK_HAVE_UINT64_T) && (HAK_SIZEOF_UINT64_T == HAK_SIZEOF_OOHW_T) +# define HAK_CONST_NTOHOOHW(x) HAK_CONST_NTOH64(x) +# define HAK_CONST_HTONOOHW(x) HAK_CONST_HTON64(x) +# define HAK_CONST_HTOBEOOHW(x) HAK_CONST_HTOBE64(x) +# define HAK_CONST_HTOLEOOHW(x) HAK_CONST_HTOLE64(x) +# define HAK_CONST_BEOOHWTOH(x) HAK_CONST_BE64TOH(x) +# define HAK_CONST_LEOOHWTOH(x) HAK_CONST_LE64TOH(x) +#elif defined(HAK_HAVE_UINT128_T) && (HAK_SIZEOF_UINT128_T == HAK_SIZEOF_OOHW_T) +# define HAK_CONST_NTOHOOHW(x) HAK_CONST_NTOH128(x) +# define HAK_CONST_HTONOOHW(x) HAK_CONST_HTON128(x) +# define HAK_CONST_HTOBEOOHW(x) HAK_CONST_HTOBE128(x) +# define HAK_CONST_HTOLEOOHW(x) HAK_CONST_HTOLE128(x) +# define HAK_CONST_BEOOHWTOH(x) HAK_CONST_BE128TOH(x) +# define HAK_CONST_LEOOHWTOH(x) HAK_CONST_LE128TOH(x) +#endif + +#if defined(HAK_USE_OOW_FOR_LIW) +# define HAK_CONST_NTOHLIW(x) HAK_CONST_NTOHOOW(x) +# define HAK_CONST_HTONLIW(x) HAK_CONST_HTONOOW(x) +# define HAK_CONST_HTOBELIW(x) HAK_CONST_HTOBEOOW(x) +# define HAK_CONST_HTOLELIW(x) HAK_CONST_HTOLEOOW(x) +# define HAK_CONST_BELIWTOH(x) HAK_CONST_BEOOWTOH(x) +# define HAK_CONST_LELIWTOH(x) HAK_CONST_LEOOWTOH(x) +#else +# define HAK_CONST_NTOHLIW(x) HAK_CONST_NTOHOOHW(x) +# define HAK_CONST_HTONLIW(x) HAK_CONST_HTONOOHW(x) +# define HAK_CONST_HTOBELIW(x) HAK_CONST_HTOBEOOHW(x) +# define HAK_CONST_HTOLELIW(x) HAK_CONST_HTOLEOOHW(x) +# define HAK_CONST_BELIWTOH(x) HAK_CONST_BEOOHWTOH(x) +# define HAK_CONST_LELIWTOH(x) HAK_CONST_LEOOHWTOH(x) +#endif + +/* ========================================================================= + * HASH + * ========================================================================= */ + +#if (HAK_SIZEOF_OOW_T == 4) +# define HAK_HASH_FNV_MAGIC_INIT (0x811c9dc5) +# define HAK_HASH_FNV_MAGIC_PRIME (0x01000193) +#elif (HAK_SIZEOF_OOW_T == 8) + +# define HAK_HASH_FNV_MAGIC_INIT (0xCBF29CE484222325) +# define HAK_HASH_FNV_MAGIC_PRIME (0x100000001B3l) + +#elif (HAK_SIZEOF_OOW_T == 16) +# define HAK_HASH_FNV_MAGIC_INIT (0x6C62272E07BB014262B821756295C58D) +# define HAK_HASH_FNV_MAGIC_PRIME (0x1000000000000000000013B) +#endif + +#if defined(HAK_HASH_FNV_MAGIC_INIT) + /* FNV-1 hash */ +# define HAK_HASH_INIT HAK_HASH_FNV_MAGIC_INIT +# define HAK_HASH_VALUE(hv,v) (((hv) ^ (v)) * HAK_HASH_FNV_MAGIC_PRIME) + +#else + /* SDBM hash */ +# define HAK_HASH_INIT 0 +# define HAK_HASH_VALUE(hv,v) (((hv) << 6) + ((hv) << 16) - (hv) + (v)) +#endif + +#define HAK_HASH_VPTL(hv, ptr, len, type) do { \ + hv = HAK_HASH_INIT; \ + HAK_HASH_MORE_VPTL (hv, ptr, len, type); \ +} while(0) + +#define HAK_HASH_MORE_VPTL(hv, ptr, len, type) do { \ + type* __hak_hash_more_vptl_p = (type*)(ptr); \ + type* __hak_hash_more_vptl_q = (type*)__hak_hash_more_vptl_p + (len); \ + while (__hak_hash_more_vptl_p < __hak_hash_more_vptl_q) \ + { \ + hv = HAK_HASH_VALUE(hv, *__hak_hash_more_vptl_p); \ + __hak_hash_more_vptl_p++; \ + } \ +} while(0) + +#define HAK_HASH_VPTR(hv, ptr, type) do { \ + hv = HAK_HASH_INIT; \ + HAK_HASH_MORE_VPTR (hv, ptr, type); \ +} while(0) + +#define HAK_HASH_MORE_VPTR(hv, ptr, type) do { \ + type* __hak_hash_more_vptr_p = (type*)(ptr); \ + while (*__hak_hash_more_vptr_p) \ + { \ + hv = HAK_HASH_VALUE(hv, *__hak_hash_more_vptr_p); \ + __hak_hash_more_vptr_p++; \ + } \ +} while(0) + +#define HAK_HASH_BYTES(hv, ptr, len) HAK_HASH_VPTL(hv, ptr, len, const hak_uint8_t) +#define HAK_HASH_MORE_BYTES(hv, ptr, len) HAK_HASH_MORE_VPTL(hv, ptr, len, const hak_uint8_t) + +#define HAK_HASH_BCHARS(hv, ptr, len) HAK_HASH_VPTL(hv, ptr, len, const hak_bch_t) +#define HAK_HASH_MORE_BCHARS(hv, ptr, len) HAK_HASH_MORE_VPTL(hv, ptr, len, const hak_bch_t) + +#define HAK_HASH_UCHARS(hv, ptr, len) HAK_HASH_VPTL(hv, ptr, len, const hak_uch_t) +#define HAK_HASH_MORE_UCHARS(hv, ptr, len) HAK_HASH_MORE_VPTL(hv, ptr, len, const hak_uch_t) + +#define HAK_HASH_BCSTR(hv, ptr) HAK_HASH_VPTR(hv, ptr, const hak_bch_t) +#define HAK_HASH_MORE_BCSTR(hv, ptr) HAK_HASH_MORE_VPTR(hv, ptr, const hak_bch_t) + +#define HAK_HASH_UCSTR(hv, ptr) HAK_HASH_VPTR(hv, ptr, const hak_uch_t) +#define HAK_HASH_MORE_UCSTR(hv, ptr) HAK_HASH_MORE_VPTR(hv, ptr, const hak_uch_t) + +/* ========================================================================= + * PATH-RELATED MACROS + * ========================================================================= */ +#if defined(_WIN32) || defined(__OS2__) || defined(__DOS__) +# define HAK_DFL_PATH_SEP ('\\') +# define HAK_ALT_PATH_SEP ('/') +# define HAK_IS_PATH_SEP(c) ((c) == HAK_DFL_PATH_SEP || (c) == HAK_ALT_PATH_SEP) +# define HAK_HAVE_ALT_PATH_SEP 1 +#else +# define HAK_DFL_PATH_SEP ('/') +# define HAK_ALT_PATH_SEP ('/') +# define HAK_IS_PATH_SEP(c) ((c) == HAK_DFL_PATH_SEP) +# undef HAK_HAVE_ALT_PATH_SEP +#endif + + +/* TODO: handle path with a drive letter or in the UNC notation */ +#define HAK_IS_PATH_ABSOLUTE(x) HAK_IS_PATH_SEP(x[0]) + + +#if defined(__cplusplus) +extern "C" { +#endif + +HAK_EXPORT hak_oow_t hak_hash_bytes_ ( + const hak_oob_t* ptr, + hak_oow_t len +); + +#if defined(HAK_HAVE_INLINE) +static HAK_INLINE hak_oow_t hak_hash_bytes (const hak_oob_t* ptr, hak_oow_t len) +{ + hak_oow_t hv; + HAK_HASH_BYTES (hv, ptr, len); + /* constrain the hash value to be representable in a small integer + * for convenience sake */ + return hv % ((hak_oow_t)HAK_SMOOI_MAX + 1); +} + +static HAK_INLINE hak_oow_t hak_hash_bchars (const hak_bch_t* ptr, hak_oow_t len) +{ + return hak_hash_bytes((const hak_oob_t*)ptr, len * HAK_SIZEOF(hak_bch_t)); +} + +static HAK_INLINE hak_oow_t hak_hash_uchars (const hak_uch_t* ptr, hak_oow_t len) +{ + return hak_hash_bytes((const hak_oob_t*)ptr, len * HAK_SIZEOF(hak_uch_t)); +} + +static HAK_INLINE hak_oow_t hak_hash_words (const hak_oow_t* ptr, hak_oow_t len) +{ + return hak_hash_bytes((const hak_oob_t*)ptr, len * HAK_SIZEOF(hak_oow_t)); +} + +static HAK_INLINE hak_oow_t hak_hash_halfwords (const hak_oohw_t* ptr, hak_oow_t len) +{ + return hak_hash_bytes((const hak_oob_t*)ptr, len * HAK_SIZEOF(hak_oohw_t)); +} + +static HAK_INLINE hak_oow_t hak_hash_liwords(const hak_liw_t* ptr, hak_oow_t len) +{ + return hak_hash_bytes((const hak_oob_t*)ptr, len * HAK_SIZEOF(hak_liw_t)); +} + +#else +# define hak_hash_bytes(ptr,len) hak_hash_bytes_(ptr, len) +# define hak_hash_bchars(ptr,len) hak_hash_bytes((const hak_oob_t*)ptr, len * HAK_SIZEOF(hak_bch_t)) +# define hak_hash_uchars(ptr,len) hak_hash_bytes((const hak_oob_t*)ptr, len * HAK_SIZEOF(hak_uch_t)) +# define hak_hash_words(ptr,len) hak_hash_bytes((const hak_oob_t*)ptr, len * HAK_SIZEOF(hak_oow_t)) +# define hak_hash_halfwords(ptr,len) hak_hash_bytes((const hak_oob_t*)ptr, len * HAK_SIZEOF(hak_oohw_t)) +# define hak_hash_liwords(ptr,len) hak_hash_bytes((const hak_oob_t*)ptr, len * HAK_SIZEOF(hak_liw_t)) +#endif + +#if defined(HAK_OOCH_IS_UCH) +# define hak_hash_oochars(ptr,len) hak_hash_uchars(ptr,len) +#else +# define hak_hash_oochars(ptr,len) hak_hash_bchars(ptr,len) +#endif + +/* ========================================================================= + * TIME CALCULATION WITH OVERFLOW/UNDERFLOW DETECTION + * ========================================================================= */ + +/** + * The hak_add_ntime() function adds two time structures pointed to by \a x and \a y + * and stores the result in the structure pointed to by \a z. If it detects overflow/ + * underflow, it stores the largest/least possible value respectively. + * You may use the HAK_ADD_NTIME() macro if overflow/underflow check isn't needed. + */ +HAK_EXPORT void hak_add_ntime ( + hak_ntime_t* z, + const hak_ntime_t* x, + const hak_ntime_t* y +); + +/** + * The hak_sub_ntime() function subtracts the time value \a y from the time value \a x + * and stores the result in the structure pointed to by \a z. If it detects overflow/ + * underflow, it stores the largest/least possible value respectively. + * You may use the HAK_SUB_NTIME() macro if overflow/underflow check isn't needed. + */ +HAK_EXPORT void hak_sub_ntime ( + hak_ntime_t* z, + const hak_ntime_t* x, + const hak_ntime_t* y +); + +/* ========================================================================= + * PATH NAME + * ========================================================================= */ + +const hak_bch_t* hak_get_base_name_from_bcstr_path ( + const hak_bch_t* path +); + +const hak_uch_t* hak_get_base_name_from_ucstr_path ( + const hak_uch_t* path +); + +#if defined(HAK_OOCH_IS_UCH) +#define hak_get_base_name_from_path(x) hak_get_base_name_from_ucstr_path(x) +#else +#define hak_get_base_name_from_path(x) hak_get_base_name_from_bcstr_path(x) +#endif + +/* ========================================================================= + * BIT SWAP + * ========================================================================= */ +#if defined(HAK_HAVE_INLINE) + +#if defined(HAK_HAVE_UINT16_T) +static HAK_INLINE hak_uint16_t hak_bswap16 (hak_uint16_t x) +{ +#if defined(HAK_HAVE_BUILTIN_BSWAP16) + return __builtin_bswap16(x); +#elif defined(__GNUC__) && (defined(__x86_64) || defined(__amd64) || defined(__i386) || defined(i386)) + __asm__ /*volatile*/ ("xchgb %b0, %h0" : "=Q"(x): "0"(x)); + return x; +#elif defined(__GNUC__) && defined(__arm__) && (defined(__ARM_ARCH) && (__ARM_ARCH >= 6)) + __asm__ /*volatile*/ ("rev16 %0, %0" : "+r"(x)); + return x; +#else + return (x << 8) | (x >> 8); +#endif +} +#endif + +#if defined(HAK_HAVE_UINT32_T) +static HAK_INLINE hak_uint32_t hak_bswap32 (hak_uint32_t x) +{ +#if defined(HAK_HAVE_BUILTIN_BSWAP32) + return __builtin_bswap32(x); +#elif defined(__GNUC__) && (defined(__x86_64) || defined(__amd64) || defined(__i386) || defined(i386)) + __asm__ /*volatile*/ ("bswapl %0" : "=r"(x) : "0"(x)); + return x; +#elif defined(__GNUC__) && defined(__aarch64__) + __asm__ /*volatile*/ ("rev32 %0, %0" : "+r"(x)); + return x; +#elif defined(__GNUC__) && defined(__arm__) && (defined(__ARM_ARCH) && (__ARM_ARCH >= 6)) + __asm__ /*volatile*/ ("rev %0, %0" : "+r"(x)); + return x; +#elif defined(__GNUC__) && defined(__ARM_ARCH) + hak_uint32_t tmp; + __asm__ /*volatile*/ ( + "eor %1, %0, %0, ror #16\n\t" + "bic %1, %1, #0x00ff0000\n\t" + "mov %0, %0, ror #8\n\t" + "eor %0, %0, %1, lsr #8\n\t" + :"+r"(x), "=&r"(tmp) + ); + return x; +#else + return ((x >> 24)) | + ((x >> 8) & ((hak_uint32_t)0xff << 8)) | + ((x << 8) & ((hak_uint32_t)0xff << 16)) | + ((x << 24)); +#endif +} +#endif + +#if defined(HAK_HAVE_UINT64_T) +static HAK_INLINE hak_uint64_t hak_bswap64 (hak_uint64_t x) +{ +#if defined(HAK_HAVE_BUILTIN_BSWAP64) + return __builtin_bswap64(x); +#elif defined(__GNUC__) && (defined(__x86_64) || defined(__amd64)) + __asm__ /*volatile*/ ("bswapq %0" : "=r"(x) : "0"(x)); + return x; +#elif defined(__GNUC__) && defined(__aarch64__) + __asm__ /*volatile*/ ("rev %0, %0" : "+r"(x)); + return x; +#else + return ((x >> 56)) | + ((x >> 40) & ((hak_uint64_t)0xff << 8)) | + ((x >> 24) & ((hak_uint64_t)0xff << 16)) | + ((x >> 8) & ((hak_uint64_t)0xff << 24)) | + ((x << 8) & ((hak_uint64_t)0xff << 32)) | + ((x << 24) & ((hak_uint64_t)0xff << 40)) | + ((x << 40) & ((hak_uint64_t)0xff << 48)) | + ((x << 56)); +#endif +} +#endif + +#if defined(HAK_HAVE_UINT128_T) +static HAK_INLINE hak_uint128_t hak_bswap128 (hak_uint128_t x) +{ +#if defined(HAK_HAVE_BUILTIN_BSWAP128) + return __builtin_bswap128(x); +#else + return ((x >> 120)) | + ((x >> 104) & ((hak_uint128_t)0xff << 8)) | + ((x >> 88) & ((hak_uint128_t)0xff << 16)) | + ((x >> 72) & ((hak_uint128_t)0xff << 24)) | + ((x >> 56) & ((hak_uint128_t)0xff << 32)) | + ((x >> 40) & ((hak_uint128_t)0xff << 40)) | + ((x >> 24) & ((hak_uint128_t)0xff << 48)) | + ((x >> 8) & ((hak_uint128_t)0xff << 56)) | + ((x << 8) & ((hak_uint128_t)0xff << 64)) | + ((x << 24) & ((hak_uint128_t)0xff << 72)) | + ((x << 40) & ((hak_uint128_t)0xff << 80)) | + ((x << 56) & ((hak_uint128_t)0xff << 88)) | + ((x << 72) & ((hak_uint128_t)0xff << 96)) | + ((x << 88) & ((hak_uint128_t)0xff << 104)) | + ((x << 104) & ((hak_uint128_t)0xff << 112)) | + ((x << 120)); +#endif +} +#endif + +#else + +#if defined(HAK_HAVE_UINT16_T) +# if defined(HAK_HAVE_BUILTIN_BSWAP16) +# define hak_bswap16(x) ((hak_uint16_t)__builtin_bswap16((hak_uint16_t)(x))) +# else +# define hak_bswap16(x) ((hak_uint16_t)(((hak_uint16_t)(x)) << 8) | (((hak_uint16_t)(x)) >> 8)) +# endif +#endif + +#if defined(HAK_HAVE_UINT32_T) +# if defined(HAK_HAVE_BUILTIN_BSWAP32) +# define hak_bswap32(x) ((hak_uint32_t)__builtin_bswap32((hak_uint32_t)(x))) +# else +# define hak_bswap32(x) ((hak_uint32_t)(((((hak_uint32_t)(x)) >> 24)) | \ + ((((hak_uint32_t)(x)) >> 8) & ((hak_uint32_t)0xff << 8)) | \ + ((((hak_uint32_t)(x)) << 8) & ((hak_uint32_t)0xff << 16)) | \ + ((((hak_uint32_t)(x)) << 24)))) +# endif +#endif + +#if defined(HAK_HAVE_UINT64_T) +# if defined(HAK_HAVE_BUILTIN_BSWAP64) +# define hak_bswap64(x) ((hak_uint64_t)__builtin_bswap64((hak_uint64_t)(x))) +# else +# define hak_bswap64(x) ((hak_uint64_t)(((((hak_uint64_t)(x)) >> 56)) | \ + ((((hak_uint64_t)(x)) >> 40) & ((hak_uint64_t)0xff << 8)) | \ + ((((hak_uint64_t)(x)) >> 24) & ((hak_uint64_t)0xff << 16)) | \ + ((((hak_uint64_t)(x)) >> 8) & ((hak_uint64_t)0xff << 24)) | \ + ((((hak_uint64_t)(x)) << 8) & ((hak_uint64_t)0xff << 32)) | \ + ((((hak_uint64_t)(x)) << 24) & ((hak_uint64_t)0xff << 40)) | \ + ((((hak_uint64_t)(x)) << 40) & ((hak_uint64_t)0xff << 48)) | \ + ((((hak_uint64_t)(x)) << 56)))) +# endif +#endif + +#if defined(HAK_HAVE_UINT128_T) +# if defined(HAK_HAVE_BUILTIN_BSWAP128) +# define hak_bswap128(x) ((hak_uint128_t)__builtin_bswap128((hak_uint128_t)(x))) +# else +# define hak_bswap128(x) ((hak_uint128_t)(((((hak_uint128_t)(x)) >> 120)) | \ + ((((hak_uint128_t)(x)) >> 104) & ((hak_uint128_t)0xff << 8)) | \ + ((((hak_uint128_t)(x)) >> 88) & ((hak_uint128_t)0xff << 16)) | \ + ((((hak_uint128_t)(x)) >> 72) & ((hak_uint128_t)0xff << 24)) | \ + ((((hak_uint128_t)(x)) >> 56) & ((hak_uint128_t)0xff << 32)) | \ + ((((hak_uint128_t)(x)) >> 40) & ((hak_uint128_t)0xff << 40)) | \ + ((((hak_uint128_t)(x)) >> 24) & ((hak_uint128_t)0xff << 48)) | \ + ((((hak_uint128_t)(x)) >> 8) & ((hak_uint128_t)0xff << 56)) | \ + ((((hak_uint128_t)(x)) << 8) & ((hak_uint128_t)0xff << 64)) | \ + ((((hak_uint128_t)(x)) << 24) & ((hak_uint128_t)0xff << 72)) | \ + ((((hak_uint128_t)(x)) << 40) & ((hak_uint128_t)0xff << 80)) | \ + ((((hak_uint128_t)(x)) << 56) & ((hak_uint128_t)0xff << 88)) | \ + ((((hak_uint128_t)(x)) << 72) & ((hak_uint128_t)0xff << 96)) | \ + ((((hak_uint128_t)(x)) << 88) & ((hak_uint128_t)0xff << 104)) | \ + ((((hak_uint128_t)(x)) << 104) & ((hak_uint128_t)0xff << 112)) | \ + ((((hak_uint128_t)(x)) << 120)))) +# endif +#endif + +#endif /* HAK_HAVE_INLINE */ + + +#if defined(HAK_ENDIAN_LITTLE) + +# if defined(HAK_HAVE_UINT16_T) +# define hak_hton16(x) hak_bswap16(x) +# define hak_ntoh16(x) hak_bswap16(x) +# define hak_htobe16(x) hak_bswap16(x) +# define hak_be16toh(x) hak_bswap16(x) +# define hak_htole16(x) ((hak_uint16_t)(x)) +# define hak_le16toh(x) ((hak_uint16_t)(x)) +# endif + +# if defined(HAK_HAVE_UINT32_T) +# define hak_hton32(x) hak_bswap32(x) +# define hak_ntoh32(x) hak_bswap32(x) +# define hak_htobe32(x) hak_bswap32(x) +# define hak_be32toh(x) hak_bswap32(x) +# define hak_htole32(x) ((hak_uint32_t)(x)) +# define hak_le32toh(x) ((hak_uint32_t)(x)) +# endif + +# if defined(HAK_HAVE_UINT64_T) +# define hak_hton64(x) hak_bswap64(x) +# define hak_ntoh64(x) hak_bswap64(x) +# define hak_htobe64(x) hak_bswap64(x) +# define hak_be64toh(x) hak_bswap64(x) +# define hak_htole64(x) ((hak_uint64_t)(x)) +# define hak_le64toh(x) ((hak_uint64_t)(x)) +# endif + +# if defined(HAK_HAVE_UINT128_T) +# define hak_hton128(x) hak_bswap128(x) +# define hak_ntoh128(x) hak_bswap128(x) +# define hak_htobe128(x) hak_bswap128(x) +# define hak_be128toh(x) hak_bswap128(x) +# define hak_htole128(x) ((hak_uint128_t)(x)) +# define hak_le128toh(x) ((hak_uint128_t)(x)) +# endif + +#elif defined(HAK_ENDIAN_BIG) + +# if defined(HAK_HAVE_UINT16_T) +# define hak_hton16(x) ((hak_uint16_t)(x)) +# define hak_ntoh16(x) ((hak_uint16_t)(x)) +# define hak_htobe16(x) ((hak_uint16_t)(x)) +# define hak_be16toh(x) ((hak_uint16_t)(x)) +# define hak_htole16(x) hak_bswap16(x) +# define hak_le16toh(x) hak_bswap16(x) +# endif + +# if defined(HAK_HAVE_UINT32_T) +# define hak_hton32(x) ((hak_uint32_t)(x)) +# define hak_ntoh32(x) ((hak_uint32_t)(x)) +# define hak_htobe32(x) ((hak_uint32_t)(x)) +# define hak_be32toh(x) ((hak_uint32_t)(x)) +# define hak_htole32(x) hak_bswap32(x) +# define hak_le32toh(x) hak_bswap32(x) +# endif + +# if defined(HAK_HAVE_UINT64_T) +# define hak_hton64(x) ((hak_uint64_t)(x)) +# define hak_ntoh64(x) ((hak_uint64_t)(x)) +# define hak_htobe64(x) ((hak_uint64_t)(x)) +# define hak_be64toh(x) ((hak_uint64_t)(x)) +# define hak_htole64(x) hak_bswap64(x) +# define hak_le64toh(x) hak_bswap64(x) +# endif + +# if defined(HAK_HAVE_UINT128_T) +# define hak_hton128(x) ((hak_uint128_t)(x)) +# define hak_ntoh128(x) ((hak_uint128_t)(x)) +# define hak_htobe128(x) ((hak_uint128_t)(x)) +# define hak_be128toh(x) ((hak_uint128_t)(x)) +# define hak_htole128(x) hak_bswap128(x) +# define hak_le128toh(x) hak_bswap128(x) +# endif + +#else +# error UNKNOWN ENDIAN +#endif + +#if defined(HAK_HAVE_UINT16_T) && (HAK_SIZEOF_UINT16_T == HAK_SIZEOF_OOW_T) +# define hak_ntohoow(x) hak_ntoh16(x) +# define hak_htonoow(x) hak_hton16(x) +# define hak_htobeoow(x) hak_htobe116(x) +# define hak_beoowtoh(x) hak_be16toh(x) +# define hak_htoleoow(x) hak_htole16(x) +# define hak_leoowtoh(x) hak_le16toh(x) +#elif defined(HAK_HAVE_UINT32_T) && (HAK_SIZEOF_UINT32_T == HAK_SIZEOF_OOW_T) +# define hak_ntohoow(x) hak_ntoh32(x) +# define hak_htonoow(x) hak_hton32(x) +# define hak_htobeoow(x) hak_htobe32(x) +# define hak_beoowtoh(x) hak_be32toh(x) +# define hak_htoleoow(x) hak_htole32(x) +# define hak_leoowtoh(x) hak_le32toh(x) +#elif defined(HAK_HAVE_UINT64_T) && (HAK_SIZEOF_UINT64_T == HAK_SIZEOF_OOW_T) +# define hak_ntohoow(x) hak_ntoh64(x) +# define hak_htonoow(x) hak_hton64(x) +# define hak_htobeoow(x) hak_htobe64(x) +# define hak_beoowtoh(x) hak_be64toh(x) +# define hak_htoleoow(x) hak_htole64(x) +# define hak_leoowtoh(x) hak_le64toh(x) +#elif defined(HAK_HAVE_UINT128_T) && (HAK_SIZEOF_UINT128_T == HAK_SIZEOF_OOW_T) +# define hak_ntohoow(x) hak_ntoh128(x) +# define hak_htonoow(x) hak_hton128(x) +# define hak_htobeoow(x) hak_htobe128(x) +# define hak_beoowtoh(x) hak_be128toh(x) +# define hak_htoleoow(x) hak_htole128(x) +# define hak_leoowtoh(x) hak_le128toh(x) +#endif + + +#if defined(HAK_HAVE_UINT16_T) && (HAK_SIZEOF_UINT16_T == HAK_SIZEOF_OOHW_T) +# define hak_ntohoohw(x) hak_ntoh16(x) +# define hak_htonoohw(x) hak_hton16(x) +# define hak_htobeoohw(x) hak_htobe116(x) +# define hak_beoohwtoh(x) hak_be16toh(x) +# define hak_htoleoohw(x) hak_htole16(x) +# define hak_leoohwtoh(x) hak_le16toh(x) +#elif defined(HAK_HAVE_UINT32_T) && (HAK_SIZEOF_UINT32_T == HAK_SIZEOF_OOHW_T) +# define hak_ntohoohw(x) hak_ntoh32(x) +# define hak_htonoohw(x) hak_hton32(x) +# define hak_htobeoohw(x) hak_htobe32(x) +# define hak_beoohwtoh(x) hak_be32toh(x) +# define hak_htoleoohw(x) hak_htole32(x) +# define hak_leoohwtoh(x) hak_le32toh(x) +#elif defined(HAK_HAVE_UINT64_T) && (HAK_SIZEOF_UINT64_T == HAK_SIZEOF_OOHW_T) +# define hak_ntohoohw(x) hak_ntoh64(x) +# define hak_htonoohw(x) hak_hton64(x) +# define hak_htobeoohw(x) hak_htobe64(x) +# define hak_beoohwtoh(x) hak_be64toh(x) +# define hak_htoleoohw(x) hak_htole64(x) +# define hak_leoohwtoh(x) hak_le64toh(x) +#elif defined(HAK_HAVE_UINT128_T) && (HAK_SIZEOF_UINT128_T == HAK_SIZEOF_OOHW_T) +# define hak_ntohoohw(x) hak_ntoh128(x) +# define hak_htonoohw(x) hak_hton128(x) +# define hak_htobeoohw(x) hak_htobe128(x) +# define hak_beoohwtoh(x) hak_be128toh(x) +# define hak_htoleoohw(x) hak_htole128(x) +# define hak_leoohwtoh(x) hak_le128toh(x) +#endif + +#if defined(HAK_USE_OOW_FOR_LIW) +# define hak_ntohliw(x) hak_ntohoow(x) +# define hak_htonliw(x) hak_htonoow(x) +# define hak_htobeliw(x) hak_htobeoow(x) +# define hak_beliwtoh(x) hak_beoowtoh(x) +# define hak_htoleliw(x) hak_htoleoow(x) +# define hak_leliwtoh(x) hak_leoowtoh(x) +#else +# define hak_ntohliw(x) hak_ntohoohw(x) +# define hak_htonliw(x) hak_htonoohw(x) +# define hak_htobeliw(x) hak_htobeoohw(x) +# define hak_beliwtoh(x) hak_beoohwtoh(x) +# define hak_htoleliw(x) hak_htoleoohw(x) +# define hak_leliwtoh(x) hak_leoohwtoh(x) +#endif + +/* ========================================================================= + * BIT POSITION + * ========================================================================= */ +static HAK_INLINE int hak_get_pos_of_msb_set_pow2 (hak_oow_t x) +{ + /* the caller must ensure that x is power of 2. if x happens to be zero, + * the return value is undefined as each method used may give different result. */ +#if defined(HAK_HAVE_BUILTIN_CTZLL) && (HAK_SIZEOF_OOW_T == HAK_SIZEOF_LONG_LONG) + return __builtin_ctzll(x); /* count the number of trailing zeros */ +#elif defined(HAK_HAVE_BUILTIN_CTZL) && (HAK_SIZEOF_OOW_T == HAK_SIZEOF_LONG) + return __builtin_ctzl(x); /* count the number of trailing zeros */ +#elif defined(HAK_HAVE_BUILTIN_CTZ) && (HAK_SIZEOF_OOW_T == HAK_SIZEOF_INT) + return __builtin_ctz(x); /* count the number of trailing zeros */ +#elif defined(__GNUC__) && (defined(__x86_64) || defined(__amd64) || defined(__i386) || defined(i386)) + hak_oow_t pos; + /* use the Bit Scan Forward instruction */ +#if 1 + __asm__ volatile ( + "bsf %1,%0\n\t" + : "=r"(pos) /* output */ + : "r"(x) /* input */ + ); +#else + __asm__ volatile ( + "bsf %[X],%[EXP]\n\t" + : [EXP]"=r"(pos) /* output */ + : [X]"r"(x) /* input */ + ); +#endif + return (int)pos; +#elif defined(__GNUC__) && defined(__aarch64__) || (defined(__arm__) && (defined(__ARM_ARCH) && (__ARM_ARCH >= 5))) + hak_oow_t n; + /* CLZ is available in ARMv5T and above. there is no instruction to + * count trailing zeros or something similar. using RBIT with CLZ + * would be good in ARMv6T2 and above to avoid further calculation + * afte CLZ */ + __asm__ volatile ( + "clz %0,%1\n\t" + : "=r"(n) /* output */ + : "r"(x) /* input */ + ); + return (int)(HAK_OOW_BITS - n - 1); + /* TODO: PPC - use cntlz, cntlzw, cntlzd, SPARC - use lzcnt, MIPS clz */ +#else + int pos = 0; + while (x >>= 1) pos++; + return pos; +#endif +} + +static HAK_INLINE int hak_get_pos_of_msb_set (hak_oow_t x) +{ + /* x doesn't have to be power of 2. if x is zero, the result is undefined */ +#if defined(HAK_HAVE_BUILTIN_CLZLL) && (HAK_SIZEOF_OOW_T == HAK_SIZEOF_LONG_LONG) + return HAK_OOW_BITS - __builtin_clzll(x) - 1; /* count the number of leading zeros */ +#elif defined(HAK_HAVE_BUILTIN_CLZL) && (HAK_SIZEOF_OOW_T == HAK_SIZEOF_LONG) + return HAK_OOW_BITS - __builtin_clzl(x) - 1; /* count the number of leading zeros */ +#elif defined(HAK_HAVE_BUILTIN_CLZ) && (HAK_SIZEOF_OOW_T == HAK_SIZEOF_INT) + return HAK_OOW_BITS - __builtin_clz(x) - 1; /* count the number of leading zeros */ +#elif defined(__GNUC__) && (defined(__x86_64) || defined(__amd64) || defined(__i386) || defined(i386)) + /* bit scan reverse. not all x86 CPUs have LZCNT. */ + hak_oow_t pos; + __asm__ volatile ( + "bsr %1,%0\n\t" + : "=r"(pos) /* output */ + : "r"(x) /* input */ + ); + return (int)pos; +#elif defined(__GNUC__) && defined(__aarch64__) || (defined(__arm__) && (defined(__ARM_ARCH) && (__ARM_ARCH >= 5))) + hak_oow_t n; + __asm__ volatile ( + "clz %0,%1\n\t" + : "=r"(n) /* output */ + : "r"(x) /* input */ + ); + return (int)(HAK_OOW_BITS - n - 1); + /* TODO: PPC - use cntlz, cntlzw, cntlzd, SPARC - use lzcnt, MIPS clz */ +#else + int pos = 0; + while (x >>= 1) pos++; + return pos; +#endif +} +#if defined(__cplusplus) +} +#endif + + +#endif diff --git a/lib/hak-x.h b/lib/hak-x.h new file mode 100644 index 0000000..8da7bb3 --- /dev/null +++ b/lib/hak-x.h @@ -0,0 +1,634 @@ +/* + Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _HAK_X_T_ +#define _HAK_X_T_ + +#include +#include + +enum hak_xpkt_type_t +{ + /* the actual type field is 4 bits long. up to 16 types are possible */ + + HAK_XPKT_CODE, /* [C]->[S] input code */ + HAK_XPKT_EXECUTE, /* [C]->[S] command to execute the code input */ + + HAK_XPKT_ERROR, /* [S]->[C] error indicator */ + HAK_XPKT_RETVAL, /* [S]->[C] return value */ + + HAK_XPKT_STDIN, /* [C]->[S] */ + HAK_XPKT_STDOUT, /* [S]->[C] output to stdout */ + HAK_XPKT_STDERR, /* [S]->[C] output to stderr or output data related to error */ + + HAK_XPKT_INFORM, /* [S]->[C], [C]->[S] */ + + /*TODO: define HAK_XPKT_CONTROL and make LIST_WORKS AND KILL_WORKER sub-commands of CONTORL */ + HAK_XPKT_LIST_WORKERS, /* [C]->[S] */ + HAK_XPKT_KILL_WORKER, /* [C]->[S] */ + + HAK_XPKT_DISCONNECT /* [C]->[S], [S]->[C] */ +}; +typedef enum hak_xpkt_type_t hak_xpkt_type_t; + +#include "hak-pac1.h" +struct hak_xpkt_hdr_t +{ + hak_uint8_t id; + hak_uint8_t type; /* lower 4 bits represent the actual type. + the upper 4 bits are part of the length extending the length to 12 bits */ + hak_uint8_t len; +}; +typedef struct hak_xpkt_hdr_t hak_xpkt_hdr_t; +#include "hak-upac.h" + +#define HAK_XPKT_HDR_LEN (HAK_SIZEOF(hak_xpkt_hdr_t)) + +/* the actual length field is 12 bits long. so the maximum payload length allowed per packet is 2^12 - 1 */ +#define HAK_XPKT_MAX_PLD_LEN (4095) + +/* ---------------------------------------------------------------------- */ + +typedef struct hak_xproto_t hak_xproto_t; + +typedef int (*hak_xproto_cb_on_packet) ( + hak_xproto_t* proto, + hak_xpkt_type_t type, + const void* data, + hak_oow_t len +); + +struct hak_xproto_cb_t +{ + hak_xproto_cb_on_packet on_packet; +}; +typedef struct hak_xproto_cb_t hak_xproto_cb_t; + +/* ---------------------------------------------------------------------- */ + +/* forward declaration to skip including just for struct iovec */ +typedef struct iovec hak_iovec_t; + +/* ---------------------------------------------------------------------- */ + +typedef struct hak_server_proto_t hak_server_proto_t; +typedef struct hak_server_worker_t hak_server_worker_t; +typedef struct hak_server_t hak_server_t; + +enum hak_server_option_t +{ + HAK_SERVER_TRAIT, + HAK_SERVER_LOG_MASK, + HAK_SERVER_WORKER_MAX_COUNT, + HAK_SERVER_WORKER_STACK_SIZE, + HAK_SERVER_WORKER_IDLE_TIMEOUT, + HAK_SERVER_ACTOR_HEAP_SIZE, + HAK_SERVER_ACTOR_MAX_RUNTIME, + HAK_SERVER_SCRIPT_INCLUDE_PATH, + HAK_SERVER_MODULE_INCTX +}; +typedef enum hak_server_option_t hak_server_option_t; + +enum hak_server_trait_t +{ +#if defined(HAK_BUILD_DEBUG) + HAK_SERVER_TRAIT_DEBUG_GC = (1 << 0), + HAK_SERVER_TRAIT_DEBUG_BIGINT = (1 << 1) +#endif +}; +typedef enum hak_server_trait_t hak_server_trait_t; + +#define HAK_SERVER_WID_INVALID ((hak_oow_t)-1) +#define HAK_SERVER_WID_MAX (HAK_SERVER_WID_INVALID - 1) + +typedef void (*hak_server_log_write_t) ( + hak_server_t* server, + hak_oow_t wid, + hak_bitmask_t mask, + const hak_ooch_t* msg, + hak_oow_t len +); + +struct hak_server_prim_t +{ + hak_server_log_write_t log_write; +}; +typedef struct hak_server_prim_t hak_server_prim_t; + + +/* ---------------------------------------------------------------------- */ + + +typedef struct hak_client_t hak_client_t; + +enum hak_client_option_t +{ + HAK_CLIENT_TRAIT, + HAK_CLIENT_LOG_MASK, +}; +typedef enum hak_client_option_t hak_client_option_t; + +enum hak_client_trait_t +{ + /* no trait defined at this moment. XXXX is just a placeholder */ + HAK_CLIENT_XXXX = (1 << 0) +}; +typedef enum hak_client_trait_t hak_client_trait_t; + + +typedef void (*hak_client_log_write_t) ( + hak_client_t* client, + hak_bitmask_t mask, + const hak_ooch_t* msg, + hak_oow_t len +); + +typedef int (*hak_client_on_packet_t) ( + hak_client_t* client, + hak_xpkt_type_t type, + const void* data, + hak_oow_t len +); + +struct hak_client_prim_t +{ + hak_client_log_write_t log_write; + hak_client_on_packet_t on_packet; +}; +typedef struct hak_client_prim_t hak_client_prim_t; + + +/* ---------------------------------------------------------------------- */ + +#if (HAK_SIZEOF_SOCKLEN_T == 1) + #if defined(HAK_SOCKLEN_T_IS_SIGNED) + typedef hak_int8_t hak_scklen_t; + #else + typedef hak_uint8_t hak_scklen_t; + #endif +#elif (HAK_SIZEOF_SOCKLEN_T == 2) + #if defined(HAK_SOCKLEN_T_IS_SIGNED) + typedef hak_int16_t hak_scklen_t; + #else + typedef hak_uint16_t hak_scklen_t; + #endif +#elif (HAK_SIZEOF_SOCKLEN_T == 4) + #if defined(HAK_SOCKLEN_T_IS_SIGNED) + typedef hak_int32_t hak_scklen_t; + #else + typedef hak_uint32_t hak_scklen_t; + #endif +#elif (HAK_SIZEOF_SOCKLEN_T == 8) + #if defined(HAK_SOCKLEN_T_IS_SIGNED) + typedef hak_int64_t hak_scklen_t; + #else + typedef hak_uint64_t hak_scklen_t; + #endif +#else + #undef HAK_SIZEOF_SOCKLEN_T + #define HAK_SIZEOF_SOCKLEN_T HAK_SIZEOF_INT + #define HAK_SOCKLEN_T_IS_SIGNED + typedef int hak_scklen_t; +#endif + +struct hak_sckaddr_t +{ +#define HAK_SCKADDR_DATA_SIZE 0 + +#if (HAK_SIZEOF_STRUCT_SOCKADDR_IN > HAK_SCKADDR_DATA_SIZE) + #undef HAK_SCKADDR_DATA_SIZE + #define HAK_SCKADDR_DATA_SIZE HAK_SIZEOF_STRUCT_SOCKADDR_IN +#endif +#if (HAK_SIZEOF_STRUCT_SOCKADDR_IN6 > HAK_SCKADDR_DATA_SIZE) + #undef HAK_SCKADDR_DATA_SIZE + #define HAK_SCKADDR_DATA_SIZE HAK_SIZEOF_STRUCT_SOCKADDR_IN6 +#endif +#if (HAK_SIZEOF_STRUCT_SOCKADDR_UN > HAK_SCKADDR_DATA_SIZE) + #undef HAK_SCKADDR_DATA_SIZE + #define HAK_SCKADDR_DATA_SIZE HAK_SIZEOF_STRUCT_SOCKADDR_UN +#endif +#if (HAK_SIZEOF_STRUCT_SOCKADDR_LL > HAK_SCKADDR_DATA_SIZE) + #undef HAK_SCKADDR_DATA_SIZE + #define HAK_SCKADDR_DATA_SIZE HAK_SIZEOF_STRUCT_SOCKADDR_LL +#endif + +#if (HAK_SCKADDR_DATA_SIZE == 0) + #undef HAK_SCKADDR_DATA_SIZE + #define HAK_SCKADDR_DATA_SIZE 64 +#endif + hak_uint8_t storage[HAK_SCKADDR_DATA_SIZE]; +}; +typedef struct hak_sckaddr_t hak_sckaddr_t; + +/* ---------------------------------------------------------------------- */ + +#if defined(__cplusplus) +extern "C" { +#endif + +HAK_EXPORT hak_server_t* hak_server_open ( + hak_mmgr_t* mmgr, + hak_oow_t xtnsize, + hak_server_prim_t* prim, + hak_errnum_t* errnum +); + +HAK_EXPORT void hak_server_close ( + hak_server_t* server +); + +HAK_EXPORT int hak_server_start ( + hak_server_t* server, + const hak_bch_t* addrs +); + +HAK_EXPORT void hak_server_stop ( + hak_server_t* server +); + +HAK_EXPORT int hak_server_setoption ( + hak_server_t* server, + hak_server_option_t id, + const void* value +); + +HAK_EXPORT int hak_server_getoption ( + hak_server_t* server, + hak_server_option_t id, + void* value +); + +HAK_EXPORT void* hak_server_getxtn ( + hak_server_t* server +); + +HAK_EXPORT hak_mmgr_t* hak_server_getmmgr ( + hak_server_t* server +); + + +HAK_EXPORT hak_cmgr_t* hak_server_getcmgr ( + hak_server_t* server +); + +HAK_EXPORT void hak_server_setcmgr ( + hak_server_t* server, + hak_cmgr_t* cmgr +); + +HAK_EXPORT hak_errnum_t hak_server_geterrnum ( + hak_server_t* server +); + +HAK_EXPORT const hak_ooch_t* hak_server_geterrstr ( + hak_server_t* server +); + +HAK_EXPORT const hak_ooch_t* hak_server_geterrmsg ( + hak_server_t* server +); + +HAK_EXPORT void hak_server_seterrnum ( + hak_server_t* server, + hak_errnum_t errnum +); + +HAK_EXPORT void hak_server_seterrbfmt ( + hak_server_t* server, + hak_errnum_t errnum, + const hak_bch_t* fmt, + ... +); + +HAK_EXPORT void hak_server_seterrufmt ( + hak_server_t* server, + hak_errnum_t errnum, + const hak_uch_t* fmt, + ... +); + +HAK_EXPORT void hak_server_logbfmt ( + hak_server_t* server, + hak_bitmask_t mask, + const hak_bch_t* fmt, + ... +); + +HAK_EXPORT void hak_server_logufmt ( + hak_server_t* server, + hak_bitmask_t mask, + const hak_uch_t* fmt, + ... +); + + +HAK_EXPORT void* hak_server_allocmem ( + hak_server_t* server, + hak_oow_t size +); + +HAK_EXPORT void* hak_server_callocmem ( + hak_server_t* server, + hak_oow_t size +); + +HAK_EXPORT void* hak_server_reallocmem ( + hak_server_t* server, + void* ptr, + hak_oow_t size +); + + +HAK_EXPORT void hak_server_freemem ( + hak_server_t* server, + void* ptr +); + + +/* ---------------------------------------------------------------------- */ + +HAK_EXPORT hak_client_t* hak_client_open ( + hak_mmgr_t* mmgr, + hak_oow_t xtnsize, + hak_client_prim_t* prim, + hak_errnum_t* errnum +); + +HAK_EXPORT void hak_client_close ( + hak_client_t* client +); + +HAK_EXPORT int hak_client_start ( + hak_client_t* client, + const char* ipaddr, + int shut_wr_after_req +); + +HAK_EXPORT void hak_client_stop ( + hak_client_t* client +); + +HAK_EXPORT int hak_client_setoption ( + hak_client_t* client, + hak_client_option_t id, + const void* value +); + +HAK_EXPORT int hak_client_getoption ( + hak_client_t* client, + hak_client_option_t id, + void* value +); + + +HAK_EXPORT void* hak_client_getxtn ( + hak_client_t* client +); + +HAK_EXPORT hak_mmgr_t* hak_client_getmmgr ( + hak_client_t* client +); + +HAK_EXPORT hak_cmgr_t* hak_client_getcmgr ( + hak_client_t* client +); + +HAK_EXPORT void hak_client_setcmgr ( + hak_client_t* client, + hak_cmgr_t* cmgr +); + + +HAK_EXPORT hak_errnum_t hak_client_geterrnum ( + hak_client_t* client +); + +HAK_EXPORT const hak_ooch_t* hak_client_geterrstr ( + hak_client_t* client +); + +HAK_EXPORT const hak_ooch_t* hak_client_geterrmsg ( + hak_client_t* client +); + +HAK_EXPORT const hak_bch_t* hak_client_geterrbmsg ( + hak_client_t* client +); + +HAK_EXPORT const hak_uch_t* hak_client_geterrumsg ( + hak_client_t* client +); + + +HAK_EXPORT void hak_client_seterrnum ( + hak_client_t* client, + hak_errnum_t errnum +); + +HAK_EXPORT void hak_client_seterrbfmt ( + hak_client_t* client, + hak_errnum_t errnum, + const hak_bch_t* fmt, + ... +); + +HAK_EXPORT void hak_client_seterrufmt ( + hak_client_t* client, + hak_errnum_t errnum, + const hak_uch_t* fmt, + ... +); + +HAK_EXPORT void hak_client_logbfmt ( + hak_client_t* client, + hak_bitmask_t mask, + const hak_bch_t* fmt, + ... +); + +HAK_EXPORT void hak_client_logufmt ( + hak_client_t* client, + hak_bitmask_t mask, + const hak_uch_t* fmt, + ... +); + +HAK_EXPORT void* hak_client_allocmem ( + hak_client_t* client, + hak_oow_t size +); + +HAK_EXPORT void* hak_client_callocmem ( + hak_client_t* client, + hak_oow_t size +); + +HAK_EXPORT void* hak_client_reallocmem ( + hak_client_t* client, + void* ptr, + hak_oow_t size +); + + +HAK_EXPORT void hak_client_freemem ( + hak_client_t* client, + void* ptr +); + + +/* ---------------------------------------------------------------------- */ + +HAK_EXPORT hak_xproto_t* hak_xproto_open ( + hak_mmgr_t* mmgr, + hak_xproto_cb_t* cb, + hak_oow_t xtnsize +); + +HAK_EXPORT void hak_xproto_close ( + hak_xproto_t* proto +); + +HAK_EXPORT void* hak_xproto_getxtn ( + hak_xproto_t* proto +); + +HAK_EXPORT hak_uint8_t* hak_xproto_getbuf ( + hak_xproto_t* proto, + hak_oow_t* capa +); + +HAK_EXPORT int hak_xproto_geteof ( + hak_xproto_t* proto +); + +HAK_EXPORT void hak_xproto_seteof ( + hak_xproto_t* proto, + int v +); + +HAK_EXPORT void hak_xproto_advbuf ( + hak_xproto_t* proto, + hak_oow_t inc +); + +HAK_EXPORT int hak_xproto_ready ( + hak_xproto_t* proto +); + +HAK_EXPORT int hak_xproto_process ( + hak_xproto_t* proto +); + +/* ---------------------------------------------------------------------- */ + +HAK_EXPORT int hak_sys_send ( + int sck, + const void* data, + hak_oow_t* size +); + +HAK_EXPORT int hak_sys_send_iov ( + int sck, + hak_iovec_t* iov, /* note this is not read-only and can change */ + int count +); + +HAK_EXPORT int hak_sys_open_pipes ( + int pfd[2], + int nonblock +); + +HAK_EXPORT void hak_sys_close_pipes ( + int pfd[2] +); + +HAK_EXPORT int hak_sys_set_nonblock ( + int fd, + int v +); + +HAK_EXPORT int hak_sys_set_cloexec ( + int fd, + int v +); + +HAK_EXPORT int hak_sys_is_errno_wb ( + int no +); + +/* ---------------------------------------------------------------------- */ + +HAK_EXPORT int hak_ucharstosckaddr ( + hak_t* hak, + const hak_uch_t* str, + hak_oow_t len, + hak_sckaddr_t* sckaddr, + hak_scklen_t* scklen +); + +HAK_EXPORT int hak_bcharstosckaddr ( + hak_t* hak, + const hak_bch_t* str, + hak_oow_t len, + hak_sckaddr_t* sckaddr, + hak_scklen_t* scklen +); + +#if defined(HAK_HAVE_INLINE) +static HAK_INLINE int hak_uchars_to_sckaddr (const hak_uch_t* str, hak_oow_t len, hak_sckaddr_t* sckaddr, hak_scklen_t* scklen) +{ + return hak_ucharstosckaddr(HAK_NULL, str, len, sckaddr, scklen); +} +static HAK_INLINE int hak_bchars_to_sckaddr (const hak_bch_t* str, hak_oow_t len, hak_sckaddr_t* sckaddr, hak_scklen_t* scklen) +{ + return hak_bcharstosckaddr(HAK_NULL, str, len, sckaddr, scklen); +} +#else +#define hak_uchars_to_sckaddr(str,len,sckaddr,scklen) hak_ucharstosckaddr(HAK_NULL,str,len,sckaddr,scklen) +#define hak_bchars_to_sckaddr(str,len,sckaddr,scklen) hak_bcharstosckaddr(HAK_NULL,str,len,sckaddr,scklen) +#endif + +#if defined(HAK_OOCH_IS_UCH) +# define hak_oocharstosckaddr hak_ucharstosckaddr +# define hak_oochars_to_sckaddr hak_uchars_to_sckaddr +#else +# define hak_oocharstosckaddr hak_bcharstosckaddr +# define hak_oochars_to_sckaddr hak_bchars_to_sckaddr +#endif + +/** + * The hak_get_sckaddr_info() function returns the socket family. + * if \a scklen is not #HAK_NULL, it also sets the actual address length + * in the memory pointed to by it. + */ +HAK_EXPORT int hak_get_sckaddr_info ( + const hak_sckaddr_t* sckaddr, + hak_scklen_t* scklen +); + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/lib/hak-xma.h b/lib/hak-xma.h new file mode 100644 index 0000000..e344d65 --- /dev/null +++ b/lib/hak-xma.h @@ -0,0 +1,247 @@ +/* + Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _HAK_XMA_H_ +#define _HAK_XMA_H_ + +/** @file + * This file defines an extravagant memory allocator. Why? It may be so. + * The memory allocator allows you to maintain memory blocks from a + * larger memory chunk allocated with an outer memory allocator. + * Typically, an outer memory allocator is a standard memory allocator + * like malloc(). You can isolate memory blocks into a particular chunk. + * + * See the example below. Note it omits error handling. + * + * @code + * #include + * #include + * #include + * void dumper (void* ctx, const char* fmt, ...) + * { + * va_list ap; + * va_start (ap, fmt); + * vfprintf (fmt, ap); + * va_end (ap); + * } + * int main () + * { + * hak_xma_t* xma; + * void* ptr1, * ptr2; + * + * // create a new memory allocator obtaining a 100K byte zone + * // with the default memory allocator + * xma = hak_xma_open(HAK_NULL, 0, 100000L); + * + * ptr1 = hak_xma_alloc(xma, 5000); // allocate a 5K block from the zone + * ptr2 = hak_xma_alloc(xma, 1000); // allocate a 1K block from the zone + * ptr1 = hak_xma_realloc(xma, ptr1, 6000); // resize the 5K block to 6K. + * + * hak_xma_dump (xma, dumper, HAK_NULL); // dump memory blocks + * + * // the following two lines are not actually needed as the allocator + * // is closed after them. + * hak_xma_free (xma, ptr2); // dispose of the 1K block + * hak_xma_free (xma, ptr1); // dispose of the 6K block + * + * hak_xma_close (xma); // destroy the memory allocator + * return 0; + * } + * @endcode + */ +#include + +#define HAK_XMA_ENABLE_STAT + +/** @struct hak_xma_t + * The hak_xma_t type defines a simple memory allocator over a memory zone. + * It can obtain a relatively large zone of memory and manage it. + */ +typedef struct hak_xma_t hak_xma_t; + +/** + * The hak_xma_fblk_t type defines a memory block allocated. + */ +typedef struct hak_xma_fblk_t hak_xma_fblk_t; +typedef struct hak_xma_mblk_t hak_xma_mblk_t; + +#define HAK_XMA_FIXED (32) +#define HAK_XMA_SIZE_BITS ((HAK_SIZEOF_OOW_T*8)-1) + +struct hak_xma_t +{ + hak_mmgr_t* _mmgr; + + hak_uint8_t* start; /* zone beginning */ + hak_uint8_t* end; /* zone end */ + int internal; + + /** pointer array to free memory blocks */ + hak_xma_fblk_t* xfree[HAK_XMA_FIXED + HAK_XMA_SIZE_BITS + 1]; + + /** pre-computed value for fast xfree index calculation */ + hak_oow_t bdec; + +#if defined(HAK_XMA_ENABLE_STAT) + struct + { + hak_oow_t total; + hak_oow_t alloc; /* allocated size */ + hak_oow_t avail; /* available size */ + hak_oow_t nused; /* nubmer of used blocks */ + hak_oow_t nfree; /* number of free blocks */ + hak_oow_t alloc_hwmark; /* high watermark - highest total memory ever allocated */ + hak_oow_t nallocops; /* number of alloc operations */ + hak_oow_t nallocgoodops; /* number of successful alloc operations */ + hak_oow_t nallocbadops; /* number of failed alloc operations */ + hak_oow_t nreallocops; /* number of realloc operations */ + hak_oow_t nreallocgoodops; /* number of good realloc operations */ + hak_oow_t nreallocbadops; /* number of failed realloc operations - could fall back to normal alloc*/ + hak_oow_t nfreeops; /* number of free operations */ + } stat; +#endif +}; + +/** + * The hak_xma_dumper_t type defines a printf-like output function + * for hak_xma_dump(). + */ +typedef void (*hak_xma_dumper_t) ( + void* ctx, + const hak_bch_t* fmt, + ... +); + +#if defined(__cplusplus) +extern "C" { +#endif + +/** + * The hak_xma_open() function creates a memory allocator. It obtains a memory + * zone of the @a zonesize bytes with the memory manager @a mmgr. It also makes + * available the extension area of the @a xtnsize bytes that you can get the + * pointer to with hak_xma_getxtn(). + * + * @return pointer to a memory allocator on success, #HAK_NULL on failure + */ +HAK_EXPORT hak_xma_t* hak_xma_open ( + hak_mmgr_t* mmgr, /**< memory manager */ + hak_oow_t xtnsize, /**< extension size in bytes */ + void* zoneptr, + hak_oow_t zonesize /**< zone size in bytes */ +); + +/** + * The hak_xma_close() function destroys a memory allocator. It also frees + * the memory zone obtained, which invalidates the memory blocks within + * the zone. Call this function to destroy a memory allocator created with + * hak_xma_open(). + */ +HAK_EXPORT void hak_xma_close ( + hak_xma_t* xma /**< memory allocator */ +); + +#if defined(HAK_HAVE_INLINE) +static HAK_INLINE hak_mmgr_t* hak_xma_getmmgr (hak_xma_t* xma) { return xma->_mmgr; } +#else +# define hak_xma_getmmgr(xma) (((hak_xma_t*)(xma))->_mmgr) +#endif + +#if defined(HAK_HAVE_INLINE) +static HAK_INLINE void* hak_xma_getxtn (hak_xma_t* xma) { return (void*)(xma + 1); } +#else +#define hak_xma_getxtn(xma) ((void*)((hak_xma_t*)(xma) + 1)) +#endif + +/** + * The hak_xma_init() initializes a memory allocator. If you have the hak_xma_t + * structure statically declared or already allocated, you may pass the pointer + * to this function instead of calling hak_xma_open(). It obtains a memory zone + * of @a zonesize bytes with the memory manager @a mmgr. Unlike hak_xma_open(), + * it does not accept the extension size, thus not creating an extention area. + * @return 0 on success, -1 on failure + */ +HAK_EXPORT int hak_xma_init ( + hak_xma_t* xma, /**< memory allocator */ + hak_mmgr_t* mmgr, /**< memory manager */ + void* zoneptr, /**< pointer to memory zone. if #HAK_NULL, a zone is auto-created */ + hak_oow_t zonesize /**< zone size in bytes */ +); + +/** + * The hak_xma_fini() function finalizes a memory allocator. Call this + * function to finalize a memory allocator initialized with hak_xma_init(). + */ +HAK_EXPORT void hak_xma_fini ( + hak_xma_t* xma /**< memory allocator */ +); + +/** + * The hak_xma_alloc() function allocates @a size bytes. + * @return pointer to a memory block on success, #HAK_NULL on failure + */ +HAK_EXPORT void* hak_xma_alloc ( + hak_xma_t* xma, /**< memory allocator */ + hak_oow_t size /**< size in bytes */ +); + +HAK_EXPORT void* hak_xma_calloc ( + hak_xma_t* xma, + hak_oow_t size +); + +/** + * The hak_xma_alloc() function resizes the memory block @a b to @a size bytes. + * @return pointer to a resized memory block on success, #HAK_NULL on failure + */ +HAK_EXPORT void* hak_xma_realloc ( + hak_xma_t* xma, /**< memory allocator */ + void* b, /**< memory block */ + hak_oow_t size /**< new size in bytes */ +); + +/** + * The hak_xma_alloc() function frees the memory block @a b. + */ +HAK_EXPORT void hak_xma_free ( + hak_xma_t* xma, /**< memory allocator */ + void* b /**< memory block */ +); + +/** + * The hak_xma_dump() function dumps the contents of the memory zone + * with the output function @a dumper provided. The debug build shows + * more statistical counters. + */ +HAK_EXPORT void hak_xma_dump ( + hak_xma_t* xma, /**< memory allocator */ + hak_xma_dumper_t dumper, /**< output function */ + void* ctx /**< first parameter to output function */ +); + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/lib/hak.c b/lib/hak.c new file mode 100644 index 0000000..73a1100 --- /dev/null +++ b/lib/hak.c @@ -0,0 +1,1019 @@ +/* + Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "hak-prv.h" + +hak_t* hak_open (hak_mmgr_t* mmgr, hak_oow_t xtnsize, const hak_vmprim_t* vmprim, hak_errnum_t* errnum) +{ + hak_t* hak; + + /* if this assertion fails, correct the type definition in hak.h */ + HAK_ASSERT(hak, HAK_SIZEOF(hak_oow_t) == HAK_SIZEOF(hak_oop_t)); + + hak = (hak_t*)HAK_MMGR_ALLOC(mmgr, HAK_SIZEOF(*hak) + xtnsize); + if (hak) + { + if (hak_init(hak, mmgr, vmprim) <= -1) + { + if (errnum) *errnum = hak->errnum; + HAK_MMGR_FREE (mmgr, hak); + hak = HAK_NULL; + } + else HAK_MEMSET (hak + 1, 0, xtnsize); + } + else if (errnum) *errnum = HAK_ESYSMEM; + + return hak; +} + +void hak_close (hak_t* hak) +{ + hak_fini (hak); + HAK_MMGR_FREE (HAK_MMGR(hak), hak); +} + +void* hak_getxtn (hak_t* hak) +{ + return (void*)((hak_uint8_t*)hak + hak->_instsize); +} + +hak_mmgr_t* hak_getmmgr (hak_t* hak) +{ + return hak->_mmgr; +} + +hak_cmgr_t* hak_getcmgr (hak_t* hak) +{ + return hak->_cmgr; +} +void hak_setcmgr (hak_t* hak, hak_cmgr_t* cmgr) +{ + hak->_cmgr = cmgr; +} + +static void fill_bigint_tables (hak_t* hak) +{ + int radix, safe_ndigits; + hak_oow_t ub, w; + hak_oow_t multiplier; + + for (radix = 2; radix <= 36; radix++) + { + w = 0; + ub = (hak_oow_t)HAK_TYPE_MAX(hak_liw_t) / radix - (radix - 1); + multiplier = 1; + safe_ndigits = 0; + + while (w <= ub) + { + w = w * radix + (radix - 1); + multiplier *= radix; + safe_ndigits++; + } + + /* safe_ndigits contains the number of digits that never + * cause overflow when computed normally with a native type. */ + hak->bigint[radix].safe_ndigits = safe_ndigits; + hak->bigint[radix].multiplier = multiplier; + } +} + +static void* alloc_heap (hak_t* hak, hak_oow_t* size) +{ + return hak_allocmem(hak, *size); +} + +static void free_heap (hak_t* hak, void* ptr) +{ + hak_freemem(hak, ptr); +} + +int hak_init (hak_t* hak, hak_mmgr_t* mmgr, const hak_vmprim_t* vmprim) +{ + int modtab_inited = 0; + int n; + + if (!vmprim->syserrstrb && !vmprim->syserrstru) + { + hak_seterrnum(hak, HAK_EINVAL); + return -1; + } + +#if !defined(HAK_BUILD_RELEASE) + if (!vmprim->assertfail) + { + hak_seterrnum(hak, HAK_EINVAL); + return -1; + } +#endif + + HAK_MEMSET(hak, 0, HAK_SIZEOF(*hak)); + hak->_instsize = HAK_SIZEOF(*hak); + hak->_mmgr = mmgr; + hak->_cmgr = hak_get_utf8_cmgr(); + hak->vmprim = *vmprim; + if (!hak->vmprim.alloc_heap) hak->vmprim.alloc_heap = alloc_heap; + if (!hak->vmprim.free_heap) hak->vmprim.free_heap = free_heap; + + /*hak->option.log_mask = HAK_LOG_ALL_LEVELS | HAK_LOG_ALL_TYPES;*/ + hak->option.log_mask = (hak_bitmask_t)0; /* log nothing by default */ + hak->option.log_maxcapa = HAK_DFL_LOG_MAXCAPA; + hak->option.dfl_symtab_size = HAK_DFL_SYMTAB_SIZE; + hak->option.dfl_sysdic_size = HAK_DFL_SYSDIC_SIZE; + hak->option.dfl_procstk_size = HAK_DFL_PROCSTK_SIZE; +#if defined(HAK_BUILD_DEBUG) + hak->option.karatsuba_cutoff = HAK_KARATSUBA_CUTOFF; /* this won't be used when NDEBUG is set */ +#endif + + hak->log.capa = HAK_ALIGN_POW2(1, HAK_LOG_CAPA_ALIGN); /* TODO: is this a good initial size? */ + /* alloate the log buffer in advance though it may get reallocated + * in put_oocs and put_ooch in logfmt.c. this is to let the logging + * routine still function despite some side-effects when + * reallocation fails */ + /* +1 required for consistency with put_oocs and put_ooch in logfmt.c */ + hak->log.ptr = (hak_ooch_t*)hak_allocmem(hak, (hak->log.capa + 1) * HAK_SIZEOF(*hak->log.ptr)); + if (HAK_UNLIKELY(!hak->log.ptr)) goto oops; + + hak->gci.stack.capa = HAK_ALIGN_POW2(1, 1024); /* TODO: is this a good initial size? */ + hak->gci.stack.ptr = (hak_oop_t*)hak_allocmem(hak, (hak->gci.stack.capa + 1) * HAK_SIZEOF(*hak->gci.stack.ptr)); + if (HAK_UNLIKELY(!hak->gci.stack.ptr)) goto oops; + + n = hak_rbt_init(&hak->modtab, hak, HAK_SIZEOF(hak_ooch_t), 1); + if (HAK_UNLIKELY(n <= -1)) goto oops; + modtab_inited = 1; + hak_rbt_setstyle(&hak->modtab, hak_get_rbt_style(HAK_RBT_STYLE_INLINE_COPIERS)); + + fill_bigint_tables (hak); + + hak->tagged_brands[HAK_OOP_TAG_SMOOI] = HAK_BRAND_SMOOI; + hak->tagged_brands[HAK_OOP_TAG_SMPTR] = HAK_BRAND_SMPTR; + hak->tagged_brands[HAK_OOP_TAG_CHAR] = HAK_BRAND_CHARACTER; + hak->tagged_brands[HAK_OOP_TAG_ERROR] = HAK_BRAND_ERROR; + + hak->tagged_classes[HAK_OOP_TAG_SMOOI] = &hak->c_small_integer; + hak->tagged_classes[HAK_OOP_TAG_SMPTR] = &hak->c_small_pointer; + hak->tagged_classes[HAK_OOP_TAG_CHAR] = &hak->c_character; + hak->tagged_classes[HAK_OOP_TAG_ERROR] = &hak->c_error; + + hak->proc_map_free_first = -1; + hak->proc_map_free_last = -1; + + /* hak_execute() resets 'sp' to -1 when it initializes the initial context. + * set it to -1 here in case hak_gc() is called before a call to hak_execute() */ + hak->sp = -1; + hak->ip = 0; + + if (hak->vmprim.dl_startup) hak->vmprim.dl_startup (hak); + return 0; + +oops: + if (modtab_inited) hak_rbt_fini(&hak->modtab); + if (hak->gci.stack.ptr) + { + hak_freemem(hak, hak->gci.stack.ptr); + hak->gci.stack.capa = 0; + } + if (hak->log.ptr) hak_freemem(hak, hak->log.ptr); + hak->log.capa = 0; + return -1; +} + +static hak_rbt_walk_t unload_module (hak_rbt_t* rbt, hak_rbt_pair_t* pair, void* ctx) +{ + hak_t* hak = (hak_t*)ctx; + hak_mod_data_t* mdp; + + mdp = (hak_mod_data_t*)HAK_RBT_VPTR(pair); + HAK_ASSERT(hak, mdp != HAK_NULL); + + mdp->pair = HAK_NULL; /* to prevent hak_closemod() from calling hak_rbt_delete() */ + hak_closemod(hak, mdp); + + return HAK_RBT_WALK_FORWARD; +} + +void hak_fini (hak_t* hak) +{ + hak_cb_t* cb; + hak_oow_t i; + + hak_rbt_walk(&hak->modtab, unload_module, hak); + hak_rbt_fini(&hak->modtab); + + if (hak->log.len > 0) + { + /* flush pending log messages just in case. */ + HAK_ASSERT(hak, hak->log.ptr != HAK_NULL); + HAK_VMPRIM_LOG_WRITE(hak, hak->log.last_mask, hak->log.ptr, hak->log.len); + } + + for (cb = hak->cblist; cb; cb = cb->next) + { + if (cb->on_fini) cb->on_fini (hak); + } + + if (hak->log.len > 0) + { + /* flush pending log message that could be generated by the fini + * callbacks. however, the actual logging might not be produced at + * this point because one of the callbacks could arrange to stop + * logging */ + HAK_ASSERT(hak, hak->log.ptr != HAK_NULL); + HAK_VMPRIM_LOG_WRITE(hak, hak->log.last_mask, hak->log.ptr, hak->log.len); + } + + /* deregister all callbacks */ + while (hak->cblist) hak_deregcb(hak, hak->cblist); + + /* detach the user data io handlers just in case */ + hak_detachudio (hak); + + if (hak->sem_list) + { + hak_freemem(hak, hak->sem_list); + hak->sem_list_capa = 0; + hak->sem_list_count = 0; + } + + if (hak->sem_heap) + { + hak_freemem(hak, hak->sem_heap); + hak->sem_heap_capa = 0; + hak->sem_heap_count = 0; + } + + if (hak->sem_io_tuple) + { + hak_freemem(hak, hak->sem_io_tuple); + hak->sem_io_tuple_capa = 0; + hak->sem_io_tuple_count = 0; + } + + if (hak->sem_io_map) + { + hak_freemem(hak, hak->sem_io_map); + hak->sem_io_map_capa = 0; + } + + if (hak->proc_map) + { + hak_freemem(hak, hak->proc_map); + hak->proc_map_capa = 0; + hak->proc_map_used = 0; + hak->proc_map_free_first = -1; + hak->proc_map_free_last = -1; + } + + hak_purgecode(hak, &hak->code); + + if (hak->p.s.ptr) + { + hak_freemem(hak, hak->p.s.ptr); + hak->p.s.ptr= HAK_NULL; + hak->p.s.capa = 0; + hak->p.s.size = 0; + } + + if (hak->gci.b) + { + hak_gchdr_t* next; + do + { + next = hak->gci.b->next; + hak->gci.bsz -= HAK_SIZEOF(hak_obj_t) + hak_getobjpayloadbytes(hak, (hak_oop_t)(hak->gci.b + 1)); + hak_freeheapmem(hak, hak->heap, hak->gci.b); + hak->gci.b = next; + } + while (hak->gci.b); + + HAK_ASSERT(hak, hak->gci.bsz == 0); + } + + if (hak->gci.stack.ptr) + { + hak_freemem(hak, hak->gci.stack.ptr); + hak->gci.stack.ptr = 0; + hak->gci.stack.capa = 0; + hak->gci.stack.len = 0; + } + + if (hak->heap) hak_killheap(hak, hak->heap); + + if (hak->log.ptr) + { + hak_freemem(hak, hak->log.ptr); + hak->log.capa = 0; + hak->log.len = 0; + } + + if (hak->option.log_target_u) + { + hak_freemem(hak, hak->option.log_target_u); + hak->option.log_target_u = HAK_NULL; + } + + if (hak->option.log_target_b) + { + hak_freemem(hak, hak->option.log_target_b); + hak->option.log_target_b = HAK_NULL; + } + + for (i = 0; i < HAK_COUNTOF(hak->option.mod); i++) + { + if (hak->option.mod[i].ptr) hak_freemem(hak, hak->option.mod[i].ptr); + } + + if (hak->inttostr.xbuf.ptr) + { + hak_freemem(hak, hak->inttostr.xbuf.ptr); + hak->inttostr.xbuf.ptr = HAK_NULL; + hak->inttostr.xbuf.capa = 0; + hak->inttostr.xbuf.len = 0; + } + + if (hak->inttostr.t.ptr) + { + hak_freemem(hak, hak->inttostr.t.ptr); + hak->inttostr.t.ptr = HAK_NULL; + hak->inttostr.t.capa = 0; + } + + if (hak->sprintf.xbuf.ptr) + { + hak_freemem(hak, hak->sprintf.xbuf.ptr); + hak->sprintf.xbuf.ptr = HAK_NULL; + hak->sprintf.xbuf.capa = 0; + hak->sprintf.xbuf.len = 0; + } + + if (hak->vmprim.dl_cleanup) hak->vmprim.dl_cleanup (hak); +} + +void hak_resetcode (hak_t* hak) +{ + hak_oop_t v; + hak_oow_t i; + + /* delete all literals shown in the literal frame from the system dictionary + * excluding special kernel symbols. */ + for (i = 0; i < hak->code.lit.len; i++) + { + v = ((hak_oop_oop_t)hak->code.lit.arr)->slot[i]; + if (HAK_IS_CONS(hak, v)) + { + hak_oop_t key = HAK_CONS_CAR(v); + if (!HAK_IS_SYMBOL(hak,key) || !HAK_OBJ_GET_FLAGS_KERNEL(key)) + hak_zapatsysdic(hak, HAK_CONS_CAR(v)); + } + } + + /* zap the byte code buffer and the literal frame */ + hak->code.bc.len = 0; + hak->code.lit.len = 0; + + /* clean up object memory */ + hak_gc(hak, 1); +} + +void hak_clearcode (hak_t* hak) +{ + /* clear the code buffer and the literal frame only */ + hak->code.bc.len = 0; + hak->code.lit.len = 0; +} + +static int dup_str_opt (hak_t* hak, const hak_ooch_t* value, hak_oocs_t* tmp) +{ + if (value) + { + tmp->ptr = hak_dupoocstr(hak, value, &tmp->len); + if (HAK_UNLIKELY(!tmp->ptr)) return -1; + } + else + { + tmp->ptr = HAK_NULL; + tmp->len = 0; + } + + return 0; +} + +int hak_setoption (hak_t* hak, hak_option_t id, const void* value) +{ + hak_cb_t* cb; + + switch (id) + { + case HAK_TRAIT: + hak->option.trait = *(const hak_bitmask_t*)value; + #if defined(HAK_BUILD_DEBUG) + hak->option.karatsuba_cutoff = ((hak->option.trait & HAK_TRAIT_DEBUG_BIGINT)? HAK_KARATSUBA_CUTOFF_DEBUG: HAK_KARATSUBA_CUTOFF); + #endif + break; + + case HAK_LOG_MASK: + hak->option.log_mask = *(const hak_bitmask_t*)value; + break; + + case HAK_LOG_MAXCAPA: + hak->option.log_maxcapa = *(hak_oow_t*)value; + break; + + + case HAK_LOG_TARGET_BCSTR: + { + hak_bch_t* v1; + hak_uch_t* v2; + + v1 = hak_dupbcstr(hak, (const hak_bch_t*)value, HAK_NULL); + if (HAK_UNLIKELY(!v1)) return -1; + + v2 = hak_dupbtoucstr(hak, (const hak_bch_t*)value, HAK_NULL); + if (HAK_UNLIKELY(!v2)) + { + hak_freemem(hak, v1); + return -1; + } + + hak->option.log_target_u = v2; + hak->option.log_target_b = v1; + break; + } + + case HAK_LOG_TARGET_UCSTR: + { + hak_uch_t* v1; + hak_bch_t* v2; + + v1 = hak_dupucstr(hak, (const hak_uch_t*)value, HAK_NULL); + if (HAK_UNLIKELY(!v1)) return -1; + + v2 = hak_duputobcstr(hak, (const hak_uch_t*)value, HAK_NULL); + if (HAK_UNLIKELY(!v2)) + { + hak_freemem(hak, v1); + return -1; + } + + hak->option.log_target_u = v1; + hak->option.log_target_b = v2; + break; + } + + case HAK_LOG_TARGET_BCS: + { + hak_bch_t* v1; + hak_uch_t* v2; + hak_bcs_t* v = (hak_bcs_t*)value; + + v1 = hak_dupbchars(hak, v->ptr, v->len); + if (HAK_UNLIKELY(!v1)) return -1; + + v2 = hak_dupbtouchars(hak, v->ptr, v->len, HAK_NULL); + if (HAK_UNLIKELY(!v2)) + { + hak_freemem(hak, v1); + return -1; + } + + hak->option.log_target_u = v2; + hak->option.log_target_b = v1; + break; + } + + case HAK_LOG_TARGET_UCS: + { + hak_uch_t* v1; + hak_bch_t* v2; + hak_ucs_t* v = (hak_ucs_t*)value; + + v1 = hak_dupuchars(hak, v->ptr, v->len); + if (HAK_UNLIKELY(!v1)) return -1; + + v2 = hak_duputobchars(hak, v->ptr, v->len, HAK_NULL); + if (HAK_UNLIKELY(!v2)) + { + hak_freemem(hak, v1); + return -1; + } + + hak->option.log_target_u = v1; + hak->option.log_target_b = v2; + break; + } + + case HAK_SYMTAB_SIZE: + { + hak_oow_t w; + + w = *(hak_oow_t*)value; + if (w <= 0 || w > HAK_SMOOI_MAX) goto einval; + + hak->option.dfl_symtab_size = *(hak_oow_t*)value; + break; + } + + case HAK_SYSDIC_SIZE: + { + hak_oow_t w; + + w = *(hak_oow_t*)value; + if (w <= 0 || w > HAK_SMOOI_MAX) goto einval; + + hak->option.dfl_sysdic_size = *(hak_oow_t*)value; + break; + } + + case HAK_PROCSTK_SIZE: + { + hak_oow_t w; + + w = *(hak_oow_t*)value; + if (w <= 0 || w > HAK_SMOOI_MAX) goto einval; + + hak->option.dfl_procstk_size = *(hak_oow_t*)value; + break; + } + + case HAK_MOD_LIBDIRS: + case HAK_MOD_PREFIX: + case HAK_MOD_POSTFIX: + { + hak_oocs_t tmp; + int idx; + + if (dup_str_opt(hak, (const hak_ooch_t*)value, &tmp) <= -1) return -1; + + idx = id - HAK_MOD_LIBDIRS; + if (hak->option.mod[idx].ptr) hak_freemem(hak, hak->option.mod[idx].ptr); + + hak->option.mod[idx] = tmp; + return 0; + } + + case HAK_MOD_INCTX: + hak->option.mod_inctx = *(void**)value; + break; + + default: + goto einval; + } + + for (cb = hak->cblist; cb; cb = cb->next) + { + if (cb->on_option) cb->on_option(hak, id, value); + } + + return 0; + +einval: + hak_seterrnum(hak, HAK_EINVAL); + return -1; +} + +int hak_getoption (hak_t* hak, hak_option_t id, void* value) +{ + switch (id) + { + case HAK_TRAIT: + *(hak_bitmask_t*)value = hak->option.trait; + return 0; + + case HAK_LOG_MASK: + *(hak_bitmask_t*)value = hak->option.log_mask; + return 0; + + case HAK_LOG_MAXCAPA: + *(hak_oow_t*)value = hak->option.log_maxcapa; + return 0; + + case HAK_LOG_TARGET_BCSTR: + *(hak_bch_t**)value = hak->option.log_target_b; + return 0; + + case HAK_LOG_TARGET_UCSTR: + *(hak_uch_t**)value = hak->option.log_target_u; + return 0; + + case HAK_LOG_TARGET_BCS: + ((hak_bcs_t*)value)->ptr = hak->option.log_target_b; + ((hak_bcs_t*)value)->len = hak_count_bcstr(hak->option.log_target_b); + return 0; + + case HAK_LOG_TARGET_UCS: + ((hak_ucs_t*)value)->ptr = hak->option.log_target_u; + ((hak_ucs_t*)value)->len = hak_count_ucstr(hak->option.log_target_u); + return 0; + + case HAK_SYMTAB_SIZE: + *(hak_oow_t*)value = hak->option.dfl_symtab_size; + return 0; + + case HAK_SYSDIC_SIZE: + *(hak_oow_t*)value = hak->option.dfl_sysdic_size; + return 0; + + case HAK_PROCSTK_SIZE: + *(hak_oow_t*)value = hak->option.dfl_procstk_size; + return 0; + + case HAK_MOD_LIBDIRS: + case HAK_MOD_PREFIX: + case HAK_MOD_POSTFIX: + *(const hak_ooch_t**)value = hak->option.mod[id - HAK_MOD_LIBDIRS].ptr; + return 0; + + case HAK_MOD_INCTX: + *(void**)value = hak->option.mod_inctx; + return 0; + }; + + hak_seterrnum(hak, HAK_EINVAL); + return -1; +} + + +hak_cb_t* hak_regcb (hak_t* hak, hak_cb_t* tmpl) +{ + hak_cb_t* actual; + + actual = (hak_cb_t*)hak_allocmem(hak, HAK_SIZEOF(*actual)); + if (!actual) return HAK_NULL; + + *actual = *tmpl; + actual->next = hak->cblist; + actual->prev = HAK_NULL; + hak->cblist = actual; + + /* vm_checkbc is invoked very frequently. + * and there might be multiple vm_checkbc callbacks registered. + * keeping the count of vm_checkbc callbacks registered + * speeds up the check */ + if (actual->vm_checkbc) hak->vm_checkbc_cb_count++; + + return actual; +} + +void hak_deregcb (hak_t* hak, hak_cb_t* cb) +{ + if (cb == hak->cblist) + { + hak->cblist = hak->cblist->next; + if (hak->cblist) hak->cblist->prev = HAK_NULL; + } + else + { + if (cb->next) cb->next->prev = cb->prev; + if (cb->prev) cb->prev->next = cb->next; + } + + if (cb->vm_checkbc) + { + HAK_ASSERT(hak, hak->vm_checkbc_cb_count > 0); + hak->vm_checkbc_cb_count--; + } + hak_freemem(hak, cb); +} + +void* hak_allocmem (hak_t* hak, hak_oow_t size) +{ + void* ptr; + + ptr = HAK_MMGR_ALLOC(HAK_MMGR(hak), size); + if (!ptr) hak_seterrnum(hak, HAK_ESYSMEM); + return ptr; +} + +void* hak_callocmem (hak_t* hak, hak_oow_t size) +{ + void* ptr; + + ptr = HAK_MMGR_ALLOC(HAK_MMGR(hak), size); + if (!ptr) hak_seterrnum(hak, HAK_ESYSMEM); + else HAK_MEMSET (ptr, 0, size); + return ptr; +} + +void* hak_reallocmem (hak_t* hak, void* ptr, hak_oow_t size) +{ + ptr = HAK_MMGR_REALLOC(HAK_MMGR(hak), ptr, size); + if (!ptr) hak_seterrnum(hak, HAK_ESYSMEM); + return ptr; +} + +void hak_freemem (hak_t* hak, void* ptr) +{ + HAK_MMGR_FREE (HAK_MMGR(hak), ptr); +} + + +/* -------------------------------------------------------------------------- */ + +#define MOD_PREFIX "hak_mod_" +#define MOD_PREFIX_LEN 8 + +#if defined(HAK_ENABLE_STATIC_MODULE) + +#include "../mod/_core.h" +#include "../mod/_dic.h" +#include "../mod/_sys.h" + +static struct +{ + const hak_bch_t* modname; + int (*modload) (hak_t* hak, hak_mod_t* mod); +} +static_modtab[] = +{ + { "core", hak_mod_core }, + { "dic", hak_mod_dic }, + { "sys", hak_mod_sys } +}; +#endif + +hak_mod_data_t* hak_openmod (hak_t* hak, const hak_ooch_t* name, hak_oow_t namelen) +{ + hak_rbt_pair_t* pair; + hak_mod_data_t* mdp; + hak_mod_data_t md; + hak_mod_load_t load = HAK_NULL; +#if defined(HAK_ENABLE_STATIC_MODULE) + int n; +#endif + + /* maximum module name length is HAK_MOD_NAME_LEN_MAX. + * MOD_PREFIX_LEN for MOD_PREFIX + * 1 for _ at the end when hak_mod_xxx_ is attempted. + * 1 for the terminating '\0'. + */ + hak_ooch_t buf[MOD_PREFIX_LEN + HAK_MOD_NAME_LEN_MAX + 1 + 1]; + + /* copy instead of encoding conversion. MOD_PREFIX must not + * include a character that requires encoding conversion. + * note the terminating null isn't needed in buf here. */ + hak_copy_bchars_to_oochars (buf, MOD_PREFIX, MOD_PREFIX_LEN); + + if (namelen > HAK_COUNTOF(buf) - (MOD_PREFIX_LEN + 1 + 1)) + { + /* module name too long */ + hak_seterrnum(hak, HAK_EINVAL); /* TODO: change the error number to something more specific */ + return HAK_NULL; + } + + hak_copy_oochars(&buf[MOD_PREFIX_LEN], name, namelen); + buf[MOD_PREFIX_LEN + namelen] = '\0'; + +#if defined(HAK_ENABLE_STATIC_MODULE) + /* attempt to find a statically linked module */ + + /* TODO: binary search ... */ + for (n = 0; n < HAK_COUNTOF(static_modtab); n++) + { + if (hak_comp_oochars_bcstr(name, namelen, static_modtab[n].modname) == 0) + { + load = static_modtab[n].modload; + break; + } + } + + if (load) + { + /* found the module in the static module table */ + + HAK_MEMSET(&md, 0, HAK_SIZEOF(md)); + md.mod.inctx = hak->option.mod_inctx; + hak_copy_oochars ((hak_ooch_t*)md.mod.name, name, namelen); + /* Note md.handle is HAK_NULL for a static module */ + + /* i copy-insert 'md' into the table before calling 'load'. + * to pass the same address to load(), query(), etc */ + pair = hak_rbt_insert(&hak->modtab, (hak_ooch_t*)name, namelen, &md, HAK_SIZEOF(md)); + if (HAK_UNLIKELY(!pair)) + { + hak_seterrbfmt(hak, HAK_ESYSMEM, "insufficient system memory in storing static module handle"); + return HAK_NULL; + } + + mdp = (hak_mod_data_t*)HAK_RBT_VPTR(pair); + if (load(hak, &mdp->mod) <= -1) + { + hak_rbt_delete(&hak->modtab, (hak_ooch_t*)name, namelen); + return HAK_NULL; + } + + mdp->pair = pair; + + HAK_DEBUG1(hak, "Opened a static module [%js]\n", mdp->mod.name); + return mdp; + } + else + { + #if !defined(HAK_ENABLE_DYNAMIC_MODULE) + HAK_DEBUG2(hak, "Cannot find a static module [%.*js]\n", namelen, name); + hak_seterrbfmt(hak, HAK_ENOENT, "unable to find a static module [%.*js]", namelen, name); + return HAK_NULL; + #endif + } +#endif + +#if !defined(HAK_ENABLE_DYNAMIC_MODULE) + HAK_DEBUG2(hak, "Cannot open module [%.*js] - module loading disabled\n", namelen, name); + hak_seterrbfmt(hak, HAK_ENOIMPL, "unable to open module [%.*js] - module loading disabled", namelen, name); + return HAK_NULL; +#endif + + /* attempt to find a dynamic external module */ + HAK_MEMSET(&md, 0, HAK_SIZEOF(md)); + md.mod.inctx = hak->option.mod_inctx; + hak_copy_oochars((hak_ooch_t*)md.mod.name, name, namelen); + if (hak->vmprim.dl_open && hak->vmprim.dl_getsym && hak->vmprim.dl_close) + { + md.handle = hak->vmprim.dl_open(hak, &buf[MOD_PREFIX_LEN], HAK_VMPRIM_DLOPEN_PFMOD); + } + + if (md.handle == HAK_NULL) + { + HAK_DEBUG2(hak, "Cannot open a module [%.*js]\n", namelen, name); + hak_seterrbfmt(hak, HAK_ENOENT, "unable to open a module [%.*js]", namelen, name); + return HAK_NULL; + } + + /* attempt to get hak_mod_xxx where xxx is the module name*/ + load = (hak_mod_load_t)hak->vmprim.dl_getsym(hak, md.handle, buf); + if (!load) + { + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "unable to get module symbol [%js] in [%.*js]", buf, namelen, name); + HAK_DEBUG3(hak, "Cannot get a module symbol [%js] in [%.*js]\n", buf, namelen, name); + hak->vmprim.dl_close(hak, md.handle); + return HAK_NULL; + } + + /* i copy-insert 'md' into the table before calling 'load'. + * to pass the same address to load(), query(), etc */ + pair = hak_rbt_insert(&hak->modtab, (void*)name, namelen, &md, HAK_SIZEOF(md)); + if (pair == HAK_NULL) + { + HAK_DEBUG2(hak, "Cannot register a module [%.*js]\n", namelen, name); + hak_seterrbfmt(hak, HAK_ESYSMEM, "unable to register a module [%.*js] for memory shortage", namelen, name); + hak->vmprim.dl_close(hak, md.handle); + return HAK_NULL; + } + + mdp = (hak_mod_data_t*)HAK_RBT_VPTR(pair); + if (load(hak, &mdp->mod) <= -1) + { + const hak_ooch_t* oldmsg = hak_backuperrmsg (hak); + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "module initializer [%js] returned failure in [%.*js] - %js", buf, namelen, name, oldmsg); + HAK_DEBUG3(hak, "Module function [%js] returned failure in [%.*js]\n", buf, namelen, name); + hak_rbt_delete(&hak->modtab, name, namelen); + hak->vmprim.dl_close(hak, mdp->handle); + return HAK_NULL; + } + + mdp->pair = pair; + + HAK_DEBUG2(hak, "Opened a module [%js] - %p\n", mdp->mod.name, mdp->handle); + + /* the module loader must ensure to set a proper query handler */ + HAK_ASSERT(hak, mdp->mod.query != HAK_NULL); + + return mdp; +} + +void hak_closemod (hak_t* hak, hak_mod_data_t* mdp) +{ + if (mdp->mod.unload) mdp->mod.unload(hak, &mdp->mod); + + if (mdp->handle) + { + hak->vmprim.dl_close(hak, mdp->handle); + HAK_DEBUG2(hak, "Closed a module [%js] - %p\n", mdp->mod.name, mdp->handle); + mdp->handle = HAK_NULL; + } + else + { + HAK_DEBUG1(hak, "Closed a static module [%js]\n", mdp->mod.name); + } + + if (mdp->pair) + { + /*mdp->pair = HAK_NULL;*/ /* this reset isn't needed as the area will get freed by hak_rbt_delete()) */ + hak_rbt_delete(&hak->modtab, mdp->mod.name, hak_count_oocstr(mdp->mod.name)); + } +} + +hak_pfbase_t* hak_querymod (hak_t* hak, const hak_ooch_t* pfid, hak_oow_t pfidlen, hak_mod_t** mod) +{ + /* primitive function identifier + * _funcname + * modname_funcname + */ + hak_rbt_pair_t* pair; + hak_mod_data_t* mdp; + const hak_ooch_t* sep; + + hak_oow_t mod_name_len; + hak_pfbase_t* pfbase; + + sep = hak_rfind_oochar(pfid, pfidlen, '.'); + if (!sep) + { + /* i'm writing a conservative code here. the compiler should + * guarantee that a period is included in an primitive function identifer. + * what if the compiler is broken? imagine a buggy compiler rewritten + * in hak itself? */ + HAK_DEBUG2(hak, "Internal error - no period in a primitive function identifier [%.*js] - buggy compiler?\n", pfidlen, pfid); + hak_seterrbfmt(hak, HAK_EINTERN, "no period in a primitive function identifier [%.*js]", pfidlen, pfid); + return HAK_NULL; + } + + mod_name_len = sep - pfid; + + /* the first segment through the segment before the last compose a + * module id. the last segment is the primitive function name. + * for instance, in con.window.open, con.window is a module id and + * open is the primitive function name. */ + pair = hak_rbt_search(&hak->modtab, pfid, mod_name_len); + if (pair) + { + mdp = (hak_mod_data_t*)HAK_RBT_VPTR(pair); + HAK_ASSERT(hak, mdp != HAK_NULL); + } + else + { + /* open a module using the part before the last period */ + mdp = hak_openmod(hak, pfid, mod_name_len); + if (!mdp) return HAK_NULL; + } + + if ((pfbase = mdp->mod.query(hak, &mdp->mod, sep + 1, pfidlen - mod_name_len - 1)) == HAK_NULL) + { + /* the primitive function is not found. but keep the module open even if it's opened above */ + HAK_DEBUG3(hak, "Cannot find a primitive function [%.*js] in a module [%js]\n", pfidlen - mod_name_len - 1, sep + 1, mdp->mod.name); + hak_seterrbfmt(hak, HAK_ENOENT, "unable to find a primitive function [%.*js] in a module [%js]", pfidlen - mod_name_len - 1, sep + 1, mdp->mod.name); + return HAK_NULL; + } + + *mod = &mdp->mod; + + HAK_DEBUG4(hak, "Found a primitive function [%.*js] in a module [%js] - %p\n", pfidlen - mod_name_len - 1, sep + 1, mdp->mod.name, pfbase); + return pfbase; +} + +hak_pfbase_t* hak_findpfbase (hak_t* hak, hak_pfinfo_t* pfinfo, hak_oow_t pfcount, const hak_ooch_t* name, hak_oow_t namelen) +{ + int n; + + /* binary search */ +#if 0 + /* [NOTE] this algorithm is NOT underflow safe with hak_oow_t types */ + int left, right, mid; + + for (left = 0, right = pfcount - 1; left <= right; ) + { + /*mid = (left + right) / 2;*/ + mid = left + ((right - left) / 2); + + n = hak_comp_oochars_bcstr(name, namelen, pfinfo[mid].mthname); + if (n < 0) right = mid - 1; /* this substraction can make right negative. so i can't use hak_oow_t for the variable */ + else if (n > 0) left = mid + 1; + else return &pfinfo[mid].base; + } +#else + /* [NOTE] this algorithm is underflow safe with hak_oow_t types */ + hak_oow_t base, mid, lim; + + for (base = 0, lim = pfcount; lim > 0; lim >>= 1) + { + mid = base + (lim >> 1); + n = hak_comp_oochars_bcstr(name, namelen, pfinfo[mid].mthname); + if (n == 0) return &pfinfo[mid].base; + if (n > 0) { base = mid + 1; lim--; } + } +#endif + + hak_seterrnum(hak, HAK_ENOENT); + return HAK_NULL; +} + diff --git a/lib/hak.h b/lib/hak.h new file mode 100644 index 0000000..03c6f54 --- /dev/null +++ b/lib/hak.h @@ -0,0 +1,3351 @@ +/* + Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _HAK_H_ +#define _HAK_H_ + +#include +#include +#include +#include + +/* TODO: move this macro out to the build files.... */ +#define HAK_INCLUDE_COMPILER + +/* ========================================================================== */ + +typedef struct hak_mod_t hak_mod_t; + +/* ========================================================================== */ + +/** + * The hak_errnum_t type defines the error codes. + */ +enum hak_errnum_t +{ + HAK_ENOERR, /**< no error */ + HAK_EGENERIC, /**< generic error */ + HAK_ENOIMPL, /**< not implemented */ + HAK_ESYSERR, /**< subsystem error */ + HAK_EINTERN, /**< internal error */ + + HAK_ESYSMEM, /**< insufficient system memory */ + HAK_EOOMEM, /**< insufficient object memory */ + HAK_ETYPE, /**< invalid class/type */ + HAK_EINVAL, /**< invalid parameter or data */ + HAK_ENOENT, /**< data not found */ + + HAK_EEXIST, /**< existing/duplicate data */ + HAK_EBUSY, + HAK_EACCES, + HAK_EPERM, + HAK_ENOTDIR, + + HAK_EINTR, + HAK_EPIPE, + HAK_EAGAIN, + HAK_EBADHND, + HAK_EFRMFLOOD, /**< too many frames */ + + HAK_EMSGRCV, /**< mesasge receiver error */ + HAK_EMSGSND, /**< message sending error. even doesNotUnderstand: is not found */ + HAK_ENUMARGS, /**< wrong number of arguments */ + HAK_ERANGE, /**< range error. overflow and underflow */ + HAK_EBCFULL, /**< byte-code full */ + + HAK_EDFULL, /**< dictionary full */ + HAK_EPFULL, /**< processor full */ + HAK_EFINIS, /**< unexpected end of data/input/stream/etc */ + HAK_EFLOOD, /**< too many items/data */ + HAK_EDIVBY0, /**< divide by zero */ + + HAK_EIOERR, /**< I/O error */ + HAK_EECERR, /**< encoding conversion error */ + HAK_EBUFFULL, /**< buffer full */ + HAK_ESYNERR, /**< syntax error */ + HAK_ECALL, /**< runtime error - cannot call */ + HAK_ECALLARG, /**< runtime error - wrong number of arguments to call */ + HAK_ECALLRET, /**< runtime error - wrong number of return variables to call */ + HAK_ESEMFLOOD, /**< runtime error - too many semaphores */ + HAK_EEXCEPT, /**< runtime error - exception not handled */ + HAK_ESTKOVRFLW, /**< runtime error - stack overflow */ + HAK_ESTKUNDFLW, /**< runtime error - stack overflow */ + HAK_EUNDEFVAR /**< runtime error - undefined variable access */ +}; +typedef enum hak_errnum_t hak_errnum_t; + +enum hak_synerrnum_t +{ + HAK_SYNERR_NOERR, + HAK_SYNERR_INTERN, /* internal error */ + HAK_SYNERR_CNODE, /* unexpected compiler node */ + HAK_SYNERR_ILCHR, /* illegal character */ + HAK_SYNERR_ILTOK, /* invalid token */ + HAK_SYNERR_CMTNC, /* comment not closed */ + HAK_SYNERR_CHARLIT, /* wrong character literal */ + HAK_SYNERR_STRLIT, /* wrong string literal */ + HAK_SYNERR_SYMLIT, /* wrong symbol literal */ + HAK_SYNERR_NUMLIT , /* invalid numeric literal */ + HAK_SYNERR_NUMRANGE, /* number range error */ + HAK_SYNERR_ERRLIT, /* wrong error literal */ + HAK_SYNERR_SMPTRLIT, /* wrong smptr literal */ + HAK_SYNERR_RADIX, /* invalid radix for a numeric literal */ + + HAK_SYNERR_EOF, /* sudden end of input */ + HAK_SYNERR_LPAREN, /* ( expected */ + HAK_SYNERR_RPAREN, /* ) expected */ + HAK_SYNERR_RBRACK, /* ] expected */ + HAK_SYNERR_RBRACE, /* } expected */ + HAK_SYNERR_VBAR, /* | expected */ + + HAK_SYNERR_STRING, /* string expected */ + HAK_SYNERR_BYTERANGE, /* byte too small or too large */ + HAK_SYNERR_NESTING, /* nesting level too deep */ + + HAK_SYNERR_COMMA, /* , expected */ + HAK_SYNERR_VBARBANNED, /* | disallowed */ + HAK_SYNERR_DOTBANNED, /* . disallowed */ + HAK_SYNERR_COMMABANNED, /* , disallowed */ + HAK_SYNERR_COLONBANNED, /* : disallowed */ + HAK_SYNERR_COLONEQBANNED, /* := disallowed */ + HAK_SYNERR_COMMANOVALUE, /* no value after , */ + HAK_SYNERR_COLONNOVALUE, /* no value after : */ + HAK_SYNERR_NOVALUE, /* missing value */ + HAK_SYNERR_NOSEP, /* no separator between array/dictionary elements */ + HAK_SYNERR_INCLUDE, /* #include error */ + + HAK_SYNERR_ELLIPSISBANNED, /* ... disallowed */ + HAK_SYNERR_TRPCOLONSBANNED, /* ::: disallowed */ + HAK_SYNERR_LOOPFLOOD, /* loop body too big */ + HAK_SYNERR_IFFLOOD, /* if body too big */ + HAK_SYNERR_BLKFLOOD, /* block too big */ + HAK_SYNERR_BLKDEPTH, /* block too deep */ + HAK_SYNERR_ARGNAMELIST, /* argument name list expected */ + HAK_SYNERR_ARGNAME, /* argument name expected */ + HAK_SYNERR_ARGNAMEDUP, /* duplicate argument name */ + HAK_SYNERR_VARNAME, /* variable name expected */ + HAK_SYNERR_ARGCOUNT, /* wrong number of arguments */ + HAK_SYNERR_ARGFLOOD, /* too many arguments defined */ + HAK_SYNERR_VARFLOOD, /* too many variables defined */ + HAK_SYNERR_VARDCLBANNED, /* variable declaration disallowed */ + HAK_SYNERR_VARNAMEDUP, /* duplicate variable name */ + HAK_SYNERR_VARNAMEUNKNOWN, /* unknown variable name */ + + HAK_SYNERR_BANNEDVARNAME, /* disallowed varible name */ + HAK_SYNERR_BANNEDARGNAME, /* disallowed argument name */ + HAK_SYNERR_BANNED, /* prohibited */ + + HAK_SYNERR_CLASS, /* invalid class definition */ + HAK_SYNERR_FUN, /* invalid function definition */ + HAK_SYNERR_VAR, /* invalid variable declaration */ + HAK_SYNERR_ELIF, /* elif without if */ + HAK_SYNERR_ELSE, /* else without if */ + HAK_SYNERR_CATCH, /* catch outside try */ + HAK_SYNERR_BREAK, /* break outside loop */ + + HAK_SYNERR_CALLABLE, /* invalid callable */ + HAK_SYNERR_UNBALKV, /* unbalanced key/value pair */ + HAK_SYNERR_UNBALPBB, /* unbalanced parenthesis/brace/bracket */ + HAK_SYNERR_SEMICOLON, /* unexpected semicolon */ + HAK_SYNERR_BACKSLASH, /* stray backslash */ + HAK_SYNERR_BLOCK, /* block expression expected */ + HAK_SYNERR_BLOCKBANNED, /* block expression disallowed */ + HAK_SYNERR_LVALUE, /* invalid lvalue */ + HAK_SYNERR_RVALUE /* invalid rvalue */ +}; +typedef enum hak_synerrnum_t hak_synerrnum_t; + +enum hak_option_t +{ + HAK_TRAIT, + HAK_LOG_MASK, + HAK_LOG_MAXCAPA, + + HAK_LOG_TARGET_BCSTR, + HAK_LOG_TARGET_UCSTR, + HAK_LOG_TARGET_BCS, + HAK_LOG_TARGET_UCS, +#if defined(HAK_OOCH_IS_UCH) +# define HAK_LOG_TARGET HAK_LOG_TARGET_UCSTR +# define HAK_LOG_TARGET_OOCSTR HAK_LOG_TARGET_UCSTR +# define HAK_LOG_TARGET_OOCS HAK_LOG_TARGET_UCS +#else +# define HAK_LOG_TARGET HAK_LOG_TARGET_BCSTR +# define HAK_LOG_TARGET_OOCSTR HAK_LOG_TARGET_BCSTR +# define HAK_LOG_TARGET_OOCS HAK_LOG_TARGET_BCS +#endif + + HAK_SYMTAB_SIZE, /* default system table size */ + HAK_SYSDIC_SIZE, /* default system dictionary size */ + HAK_PROCSTK_SIZE, /* default process stack size */ + + HAK_MOD_LIBDIRS, + HAK_MOD_PREFIX, + HAK_MOD_POSTFIX, + + HAK_MOD_INCTX +}; +typedef enum hak_option_t hak_option_t; + +/* [NOTE] ensure that it is a power of 2 */ +#define HAK_LOG_CAPA_ALIGN 512 + +enum hak_option_dflval_t +{ + HAK_DFL_LOG_MAXCAPA = HAK_LOG_CAPA_ALIGN * 16, + HAK_DFL_SYMTAB_SIZE = 5000, + HAK_DFL_SYSDIC_SIZE = 5000, + HAK_DFL_PROCSTK_SIZE = 5000 +}; +typedef enum hak_option_dflval_t hak_option_dflval_t; + +enum hak_trait_t +{ +#if defined(HAK_BUILD_DEBUG) + HAK_TRAIT_DEBUG_GC = (((hak_bitmask_t)1) << 0), + HAK_TRAIT_DEBUG_BIGINT = (((hak_bitmask_t)1) << 1), +#endif + + HAK_TRAIT_INTERACTIVE = (((hak_bitmask_t)1) << 7), + + /* perform no garbage collection when the heap is full. + * you still can use hak_gc() explicitly. */ + HAK_TRAIT_NOGC = (((hak_bitmask_t)1) << 8), + + /* wait for running process when exiting from the main method */ + HAK_TRAIT_AWAIT_PROCS = (((hak_bitmask_t)1) << 9), + + /* return EOL as a token */ /* TODO: make this pragma controllable */ + HAK_TRAIT_LANG_ENABLE_EOL = (((hak_bitmask_t)1) << 14), +}; +typedef enum hak_trait_t hak_trait_t; + +/* ========================================================================= + * SPECIALIZED OOP TYPES + * ========================================================================= */ + +/* hak_oop_t defined in hak-cmn.h + * hak_obj_t defined further down */ + +/* these are more specialized types for hak_obj_t */ +typedef struct hak_obj_oop_t hak_obj_oop_t; +typedef struct hak_obj_char_t hak_obj_char_t; +typedef struct hak_obj_byte_t hak_obj_byte_t; +typedef struct hak_obj_halfword_t hak_obj_halfword_t; +typedef struct hak_obj_word_t hak_obj_word_t; + +/* these are more specialized types for hak_oop_t */ +typedef struct hak_obj_oop_t* hak_oop_oop_t; +typedef struct hak_obj_char_t* hak_oop_char_t; +typedef struct hak_obj_byte_t* hak_oop_byte_t; +typedef struct hak_obj_halfword_t* hak_oop_halfword_t; +typedef struct hak_obj_word_t* hak_oop_word_t; + +#define HAK_OOP_BITS (HAK_SIZEOF_OOP_T * HAK_BITS_PER_BYTE) + +#if defined(HAK_USE_OOW_FOR_LIW) + typedef hak_oop_word_t hak_oop_liword_t; +# define HAK_OBJ_TYPE_LIWORD HAK_OBJ_TYPE_WORD +#else + typedef hak_oop_halfword_t hak_oop_liword_t; +# define HAK_OBJ_TYPE_LIWORD HAK_OBJ_TYPE_HALFWORD +#endif + +/* ========================================================================= + * HEADER FOR GC IMPLEMENTATION + * ========================================================================= */ +typedef struct hak_gchdr_t hak_gchdr_t; +struct hak_gchdr_t +{ + hak_gchdr_t* next; +}; +/* The size of hak_gchdr_t must be aligned to HAK_SIZEOF_OOP_T */ + +/* ========================================================================= + * OBJECT STRUCTURE + * ========================================================================= */ +enum hak_obj_type_t +{ + HAK_OBJ_TYPE_OOP, + HAK_OBJ_TYPE_CHAR, + HAK_OBJ_TYPE_BYTE, + HAK_OBJ_TYPE_HALFWORD, + HAK_OBJ_TYPE_WORD + +/* + HAK_OBJ_TYPE_UINT8, + HAK_OBJ_TYPE_UINT16, + HAK_OBJ_TYPE_UINT32, +*/ + +/* NOTE: you can have HAK_OBJ_SHORT, HAK_OBJ_INT + * HAK_OBJ_LONG, HAK_OBJ_FLOAT, HAK_OBJ_DOUBLE, etc + * type field being 6 bits long, you can have up to 64 different types. + + HAK_OBJ_TYPE_SHORT, + HAK_OBJ_TYPE_INT, + HAK_OBJ_TYPE_LONG, + HAK_OBJ_TYPE_FLOAT, + HAK_OBJ_TYPE_DOUBLE */ +}; +typedef enum hak_obj_type_t hak_obj_type_t; + +/* ========================================================================= + * Object header structure + * + * _flags: + * type: the type of a payload item. + * one of HAK_OBJ_TYPE_OOP, HAK_OBJ_TYPE_CHAR, + * HAK_OBJ_TYPE_BYTE, HAK_OBJ_TYPE_HALFWORD, HAK_OBJ_TYPE_WORD + * unit: the size of a payload item in bytes. + * extra: 0 or 1. 1 indicates that the payload contains 1 more + * item than the value of the size field. used for a + * terminating null in a variable-char object. internel + * use only. + * kernel: 0 - ordinary object. + * 1 - kernel object. can survive hak_resetcode(). + * 2 - kernel object. can survive hak_resetcode(). + * a symbol object with 2 in the kernel bits cannot be assigned a + * value with the 'set' special form. + * moved: 0 or 1. used by GC. internal use only. + * ngc: 0 or 1, used by GC. internal use only. + * trailer: 0 or 1. indicates that there are trailing bytes + * after the object payload. internal use only. + * + * _size: the number of payload items in an object. + * it doesn't include the header size. + * + * The total number of bytes occupied by an object can be calculated + * with this fomula: + * sizeof(hak_obj_t) + ALIGN((size + extra) * unit), sizeof(hak_oop_t)) + * + * If the type is known to be not HAK_OBJ_TYPE_CHAR, you can assume that + * 'extra' is 0. So you can simplify the fomula in such a context. + * sizeof(hak_obj_t) + ALIGN(size * unit), sizeof(hak_oop_t)) + * + * The ALIGN() macro is used above since allocation adjusts the payload + * size to a multiple of sizeof(hak_oop_t). it assumes that sizeof(hak_obj_t) + * is a multiple of sizeof(hak_oop_t). See the HAK_BYTESOF() macro. + * + * Due to the header structure, an object can only contain items of + * homogeneous data types in the payload. + * + * It's actually possible to split the size field into 2. For example, + * the upper half contains the number of oops and the lower half contains + * the number of bytes/chars. This way, a variable-byte class or a variable-char + * class can have normal instance variables. On the contrary, the actual byte + * size calculation and the access to the payload fields become more complex. + * Therefore, i've dropped the idea. + * ========================================================================= */ +#define HAK_OBJ_FLAGS_TYPE_BITS (6) /* 6 */ +#define HAK_OBJ_FLAGS_UNIT_BITS (5) /* 11 */ +#define HAK_OBJ_FLAGS_EXTRA_BITS (1) /* 12 */ +#define HAK_OBJ_FLAGS_KERNEL_BITS (2) /* 14 */ +#define HAK_OBJ_FLAGS_MOVED_BITS (2) /* 16 */ +#define HAK_OBJ_FLAGS_NGC_BITS (1) /* 17 */ +#define HAK_OBJ_FLAGS_TRAILER_BITS (1) /* 18 */ +#define HAK_OBJ_FLAGS_CONCODE_BITS (4) /* 22 - concode for cons */ +#define HAK_OBJ_FLAGS_FLEXI_BITS (1) /* 23 */ +#define HAK_OBJ_FLAGS_RDONLY_BITS (1) /* 24 */ +#define HAK_OBJ_FLAGS_PROC_BITS (1) /* 25 */ + +/* +#define HAK_OBJ_FLAGS_PERM_BITS 1 +#define HAK_OBJ_FLAGS_MOVED_BITS 2 +#define HAK_OBJ_FLAGS_GCFIN_BITS 4 +#define HAK_OBJ_FLAGS_TRAILER_BITS 1 +#define HAK_OBJ_FLAGS_HASH_BITS 2 +#define HAK_OBJ_FLAGS_UNCOPYABLE_BITS 1 +*/ + +#define HAK_OBJ_FLAGS_TYPE_SHIFT (HAK_OBJ_FLAGS_UNIT_BITS + HAK_OBJ_FLAGS_UNIT_SHIFT) +#define HAK_OBJ_FLAGS_UNIT_SHIFT (HAK_OBJ_FLAGS_EXTRA_BITS + HAK_OBJ_FLAGS_EXTRA_SHIFT) +#define HAK_OBJ_FLAGS_EXTRA_SHIFT (HAK_OBJ_FLAGS_KERNEL_BITS + HAK_OBJ_FLAGS_KERNEL_SHIFT) +#define HAK_OBJ_FLAGS_KERNEL_SHIFT (HAK_OBJ_FLAGS_MOVED_BITS + HAK_OBJ_FLAGS_MOVED_SHIFT) +#define HAK_OBJ_FLAGS_MOVED_SHIFT (HAK_OBJ_FLAGS_NGC_BITS + HAK_OBJ_FLAGS_NGC_SHIFT) +#define HAK_OBJ_FLAGS_NGC_SHIFT (HAK_OBJ_FLAGS_TRAILER_BITS + HAK_OBJ_FLAGS_TRAILER_SHIFT) +#define HAK_OBJ_FLAGS_TRAILER_SHIFT (HAK_OBJ_FLAGS_CONCODE_BITS + HAK_OBJ_FLAGS_CONCODE_SHIFT) +#define HAK_OBJ_FLAGS_CONCODE_SHIFT (HAK_OBJ_FLAGS_FLEXI_BITS + HAK_OBJ_FLAGS_FLEXI_SHIFT) +#define HAK_OBJ_FLAGS_FLEXI_SHIFT (HAK_OBJ_FLAGS_RDONLY_BITS + HAK_OBJ_FLAGS_RDONLY_SHIFT) +#define HAK_OBJ_FLAGS_RDONLY_SHIFT (HAK_OBJ_FLAGS_PROC_BITS + HAK_OBJ_FLAGS_PROC_SHIFT) +#define HAK_OBJ_FLAGS_PROC_SHIFT (0) + +#define HAK_OBJ_GET_FLAGS_TYPE(oop) HAK_GETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_TYPE_SHIFT, HAK_OBJ_FLAGS_TYPE_BITS) +#define HAK_OBJ_GET_FLAGS_UNIT(oop) HAK_GETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_UNIT_SHIFT, HAK_OBJ_FLAGS_UNIT_BITS) +#define HAK_OBJ_GET_FLAGS_EXTRA(oop) HAK_GETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_EXTRA_SHIFT, HAK_OBJ_FLAGS_EXTRA_BITS) +#define HAK_OBJ_GET_FLAGS_KERNEL(oop) HAK_GETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_KERNEL_SHIFT, HAK_OBJ_FLAGS_KERNEL_BITS) +#define HAK_OBJ_GET_FLAGS_MOVED(oop) HAK_GETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_MOVED_SHIFT, HAK_OBJ_FLAGS_MOVED_BITS) +#define HAK_OBJ_GET_FLAGS_NGC(oop) HAK_GETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_NGC_SHIFT, HAK_OBJ_FLAGS_NGC_BITS) +#define HAK_OBJ_GET_FLAGS_TRAILER(oop) HAK_GETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_TRAILER_SHIFT, HAK_OBJ_FLAGS_TRAILER_BITS) +#define HAK_OBJ_GET_FLAGS_CONCODE(oop) HAK_GETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_CONCODE_SHIFT, HAK_OBJ_FLAGS_CONCODE_BITS) +#define HAK_OBJ_GET_FLAGS_FLEXI(oop) HAK_GETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_FLEXI_SHIFT, HAK_OBJ_FLAGS_FLEXI_BITS) +#define HAK_OBJ_GET_FLAGS_RDONLY(oop) HAK_GETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_RDONLY_SHIFT, HAK_OBJ_FLAGS_RDONLY_BITS) +#define HAK_OBJ_GET_FLAGS_PROC(oop) HAK_GETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_PROC_SHIFT, HAK_OBJ_FLAGS_PROC_BITS) + +#define HAK_OBJ_SET_FLAGS_TYPE(oop,v) HAK_SETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_TYPE_SHIFT, HAK_OBJ_FLAGS_TYPE_BITS, v) +#define HAK_OBJ_SET_FLAGS_UNIT(oop,v) HAK_SETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_UNIT_SHIFT, HAK_OBJ_FLAGS_UNIT_BITS, v) +#define HAK_OBJ_SET_FLAGS_EXTRA(oop,v) HAK_SETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_EXTRA_SHIFT, HAK_OBJ_FLAGS_EXTRA_BITS, v) +#define HAK_OBJ_SET_FLAGS_KERNEL(oop,v) HAK_SETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_KERNEL_SHIFT, HAK_OBJ_FLAGS_KERNEL_BITS, v) +#define HAK_OBJ_SET_FLAGS_MOVED(oop,v) HAK_SETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_MOVED_SHIFT, HAK_OBJ_FLAGS_MOVED_BITS, v) +#define HAK_OBJ_SET_FLAGS_NGC(oop,v) HAK_SETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_NGC_SHIFT, HAK_OBJ_FLAGS_NGC_BITS, v) +#define HAK_OBJ_SET_FLAGS_TRAILER(oop,v) HAK_SETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_TRAILER_SHIFT, HAK_OBJ_FLAGS_TRAILER_BITS, v) +#define HAK_OBJ_SET_FLAGS_CONCODE(oop,v) HAK_SETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_CONCODE_SHIFT, HAK_OBJ_FLAGS_CONCODE_BITS, v) +#define HAK_OBJ_SET_FLAGS_FLEXI(oop,v) HAK_SETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_FLEXI_SHIFT, HAK_OBJ_FLAGS_FLEXI_BITS, v) +#define HAK_OBJ_SET_FLAGS_RDONLY(oop,v) HAK_SETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_RDONLY_SHIFT, HAK_OBJ_FLAGS_RDONLY_BITS, v) +#define HAK_OBJ_SET_FLAGS_PROC(oop,v) HAK_SETBITS(hak_oow_t, (oop)->_flags, HAK_OBJ_FLAGS_PROC_SHIFT, HAK_OBJ_FLAGS_PROC_BITS, v) + +/* [NOTE] this macro doesn't check the range of the actual value. + * make sure that the value of each bit fields given falls within the + * possible range of the defined bits */ +#define HAK_OBJ_MAKE_FLAGS(t,u,e,k,m,g,r) ( \ + (((hak_oow_t)(t)) << HAK_OBJ_FLAGS_TYPE_SHIFT) | \ + (((hak_oow_t)(u)) << HAK_OBJ_FLAGS_UNIT_SHIFT) | \ + (((hak_oow_t)(e)) << HAK_OBJ_FLAGS_EXTRA_SHIFT) | \ + (((hak_oow_t)(k)) << HAK_OBJ_FLAGS_KERNEL_SHIFT) | \ + (((hak_oow_t)(m)) << HAK_OBJ_FLAGS_MOVED_SHIFT) | \ + (((hak_oow_t)(g)) << HAK_OBJ_FLAGS_NGC_SHIFT) | \ + (((hak_oow_t)(r)) << HAK_OBJ_FLAGS_TRAILER_SHIFT) \ +) + +#define HAK_OBJ_FLAGS_KERNEL_USER 0 /* not a kernel object */ +#define HAK_OBJ_FLAGS_KERNEL_IMMATURE 1 /* incomplete kernel object. defined in gc.c for bootstrapping. but no complete class definition has been read */ +#define HAK_OBJ_FLAGS_KERNEL_MATURE 2 /* kernel object with its full class defintion read in */ + +#define HAK_OBJ_GET_SIZE(oop) ((oop)->_size) +#define HAK_OBJ_GET_CLASS(oop) ((oop)->_class) + +#define HAK_OBJ_SET_SIZE(oop,v) ((oop)->_size = (v)) +#define HAK_OBJ_SET_CLASS(oop,c) ((oop)->_class = (c)) + +/* [NOTE] this macro doesn't include the size of the trailer */ +#define HAK_OBJ_BYTESOF(oop) ((HAK_OBJ_GET_SIZE(oop) + HAK_OBJ_GET_FLAGS_EXTRA(oop)) * HAK_OBJ_GET_FLAGS_UNIT(oop)) + +#define HAK_OBJ_IS_OOP_POINTER(oop) (HAK_OOP_IS_POINTER(oop) && (HAK_OBJ_GET_FLAGS_TYPE(oop) == HAK_OBJ_TYPE_OOP)) +#define HAK_OBJ_IS_CHAR_POINTER(oop) (HAK_OOP_IS_POINTER(oop) && (HAK_OBJ_GET_FLAGS_TYPE(oop) == HAK_OBJ_TYPE_CHAR)) +#define HAK_OBJ_IS_BYTE_POINTER(oop) (HAK_OOP_IS_POINTER(oop) && (HAK_OBJ_GET_FLAGS_TYPE(oop) == HAK_OBJ_TYPE_BYTE)) +#define HAK_OBJ_IS_HALFWORD_POINTER(oop) (HAK_OOP_IS_POINTER(oop) && (HAK_OBJ_GET_FLAGS_TYPE(oop) == HAK_OBJ_TYPE_HALFWORD)) +#define HAK_OBJ_IS_WORD_POINTER(oop) (HAK_OOP_IS_POINTER(oop) && (HAK_OBJ_GET_FLAGS_TYPE(oop) == HAK_OBJ_TYPE_WORD)) + +#define HAK_STORE_OOP(hak,var,val) (*(var) = val) + +#define HAK_OBJ_HEADER \ + hak_oow_t _flags; \ + hak_oow_t _size; \ + hak_oop_t _class + +struct hak_obj_t +{ + HAK_OBJ_HEADER; +}; + +struct hak_obj_oop_t +{ + HAK_OBJ_HEADER; + hak_oop_t slot[1]; +}; + +struct hak_obj_char_t +{ + HAK_OBJ_HEADER; + hak_ooch_t slot[1]; +}; + +struct hak_obj_byte_t +{ + HAK_OBJ_HEADER; + hak_oob_t slot[1]; +}; + +struct hak_obj_halfword_t +{ + HAK_OBJ_HEADER; + hak_oohw_t slot[1]; +}; + +struct hak_obj_word_t +{ + HAK_OBJ_HEADER; + hak_oow_t slot[1]; +}; + +#define HAK_OBJ_GET_OOP_SLOT(oop) (((hak_oop_oop_t)(oop))->slot) +#define HAK_OBJ_GET_CHAR_SLOT(oop) (((hak_oop_char_t)(oop))->slot) +#define HAK_OBJ_GET_BYTE_SLOT(oop) (((hak_oop_byte_t)(oop))->slot) +#define HAK_OBJ_GET_HALFWORD_SLOT(oop) (((hak_oop_halfword_t)(oop))->slot) +#define HAK_OBJ_GET_WORD_SLOT(oop) (((hak_oop_word_t)(oop))->slot) +#define HAK_OBJ_GET_LIWORD_SLOT(oop) (((hak_oop_liword_t)(oop))->slot) + +#define HAK_OBJ_GET_OOP_PTR(oop,idx) (&(((hak_oop_oop_t)(oop))->slot)[idx]) +#define HAK_OBJ_GET_CHAR_PTR(oop,idx) (&(((hak_oop_char_t)(oop))->slot)[idx]) +#define HAK_OBJ_GET_BYTE_PTR(oop,idx) (&(((hak_oop_byte_t)(oop))->slot)[idx]) +#define HAK_OBJ_GET_HALFWORD_PTR(oop,idx) (&(((hak_oop_halfword_t)(oop))->slot)[idx]) +#define HAK_OBJ_GET_WORD_PTR(oop,idx) (&(((hak_oop_word_t)(oop))->slot)[idx]) +#define HAK_OBJ_GET_LIWORD_PTR(oop,idx) (&(((hak_oop_liword_t)(oop))->slot)[idx]) + +#define HAK_OBJ_GET_OOP_VAL(oop,idx) ((((hak_oop_oop_t)(oop))->slot)[idx]) +#define HAK_OBJ_GET_CHAR_VAL(oop,idx) ((((hak_oop_char_t)(oop))->slot)[idx]) +#define HAK_OBJ_GET_BYTE_VAL(oop,idx) ((((hak_oop_byte_t)(oop))->slot)[idx]) +#define HAK_OBJ_GET_HALFWORD_VAL(oop,idx) ((((hak_oop_halfword_t)(oop))->slot)[idx]) +#define HAK_OBJ_GET_WORD_VAL(oop,idx) ((((hak_oop_word_t)(oop))->slot)[idx]) +#define HAK_OBJ_GET_LIWORD_VAL(oop,idx) ((((hak_oop_liword_t)(oop))->slot)[idx]) + +#define HAK_OBJ_SET_OOP_VAL(oop,idx,val) ((((hak_oop_oop_t)(oop))->slot)[idx] = (val)) +#define HAK_OBJ_SET_CHAR_VAL(oop,idx,val) ((((hak_oop_char_t)(oop))->slot)[idx] = (val)) +#define HAK_OBJ_SET_BYTE_VAL(oop,idx,val) ((((hak_oop_byte_t)(oop))->slot)[idx] = (val)) +#define HAK_OBJ_SET_HALFWORD_VAL(oop,idx,val) ((((hak_oop_halfword_t)(oop))->slot)[idx] = (val)) +#define HAK_OBJ_SET_WORD_VAL(oop,idx,val) ((((hak_oop_word_t)(oop))->slot)[idx] = (val)) +#define HAK_OBJ_SET_LIWORD_VAL(oop,idx,val) ((((hak_oop_liword_t)(oop))->slot)[idx] = (val)) + +typedef struct hak_trailer_t hak_trailer_t; +struct hak_trailer_t +{ + hak_oow_t size; + hak_oob_t slot[1]; +}; + +#define HAK_OBJ_GET_TRAILER_BYTE(oop) ((hak_oob_t*)&((hak_oop_oop_t)oop)->slot[HAK_OBJ_GET_SIZE(oop) + 1]) +#define HAK_OBJ_GET_TRAILER_SIZE(oop) ((hak_oow_t)((hak_oop_oop_t)oop)->slot[HAK_OBJ_GET_SIZE(oop)]) + +#define HAK_PRIM_NAMED_INSTVARS 4 +typedef struct hak_prim_t hak_prim_t; +typedef struct hak_prim_t* hak_oop_prim_t; +struct hak_prim_t +{ + HAK_OBJ_HEADER; + hak_oow_t impl; + hak_oow_t min_nargs; + hak_oow_t max_nargs; + hak_oow_t mod; +}; + +#define HAK_CONS_NAMED_INSTVARS 2 +typedef struct hak_cons_t hak_cons_t; +typedef struct hak_cons_t* hak_oop_cons_t; +struct hak_cons_t +{ + HAK_OBJ_HEADER; + hak_oop_t car; + hak_oop_t cdr; +}; + +#define HAK_DIC_NAMED_INSTVARS 2 +typedef struct hak_dic_t hak_dic_t; +typedef struct hak_dic_t* hak_oop_dic_t; +struct hak_dic_t +{ + HAK_OBJ_HEADER; + hak_oop_t tally; /* SmallInteger */ + hak_oop_oop_t bucket; /* Array */ +}; + +#define HAK_FPDEC_NAMED_INSTVARS 2 +typedef struct hak_fpdec_t hak_fpdec_t; +typedef struct hak_fpdec_t* hak_oop_fpdec_t; +struct hak_fpdec_t +{ + HAK_OBJ_HEADER; + hak_oop_t value; /* smooi or bigint */ + hak_oop_t scale; /* smooi, positive */ +}; + +/* the first byte after the main payload is the trailer size + * the code bytes are placed after the trailer size. + * + * code bytes -> ((hak_oob_t*)&((hak_oop_oop_t)m)->slot[HAK_OBJ_GET_SIZE(m) + 1]) or + * ((hak_oob_t*)&((hak_oop_function_t)m)->literal_frame[HAK_OBJ_GET_SIZE(m) + 1 - HAK_METHOD_NAMED_INSTVARS]) + * size -> ((hak_oow_t)((hak_oop_oop_t)m)->slot[HAK_OBJ_GET_SIZE(m)])*/ +#define HAK_FUNCTION_GET_CODE_BYTE(m) HAK_OBJ_GET_TRAILER_BYTE(m) +#define HAK_FUNCTION_GET_CODE_SIZE(m) HAK_OBJ_GET_TRAILER_SIZE(m) + +#define HAK_FUNCTION_NAMED_INSTVARS 3 /* this excludes literal frames and byte codes */ +typedef struct hak_function_t hak_function_t; +typedef struct hak_function_t* hak_oop_function_t; + +#define HAK_BLOCK_NAMED_INSTVARS 3 +typedef struct hak_block_t hak_block_t; +typedef struct hak_block_t* hak_oop_block_t; + +#define HAK_CONTEXT_NAMED_INSTVARS 10 +typedef struct hak_context_t hak_context_t; +typedef struct hak_context_t* hak_oop_context_t; + +struct hak_function_t +{ + HAK_OBJ_HEADER; + + hak_oop_t attr_mask; /* smooi */ + hak_oop_context_t home; /* home context. nil for the initial function */ + + hak_oop_t dbgi; /* byte array containing debug information. nil if not available */ + + /* == variable indexed part == */ + hak_oop_t literal_frame[1]; /* it stores literals. it may not exist */ + + /* after the literal frame comes the actual byte code */ +}; + +/* hak_function_t copies the byte codes and literal frames into itself + * hak_block_t contains minimal information(ip) for referening byte codes + * and literal frames available in home->origin. it represents the compiled block. + */ +struct hak_block_t +{ + HAK_OBJ_HEADER; + + hak_oop_t attr_mask; /* smooi */ + hak_oop_context_t home; /* home context */ + hak_oop_t ip; /* smooi. instruction pointer where the byte code begins in home->base */ +}; + +struct hak_context_t +{ + HAK_OBJ_HEADER; + + /* SmallInteger */ + hak_oop_t req_nrets; + + /* SmallInteger. */ + hak_oop_t attr_mask; + + /* SmallInteger, instruction pointer */ + hak_oop_t ip; + + /* the initial context is created with the initial function object in this field. + * a function-based context is created with the activating function object. + * a block-based context is created with the function object that the base field of + * the home context of the activating block context points to. */ + hak_oop_function_t base; /* function */ + + /* it points to the active context at the moment when + * this context object has been activated. a new method context + * is activated as a result of normal message sending and a block + * context is activated when it is sent 'value'. it's set to + * nil if a block context created hasn't received 'value'. */ + hak_oop_context_t sender; /* context or nil */ + + /* it points to the receiver of the message for a method context. + * a block context points to a block object and a function context + * points to a function object */ + hak_oop_t receiver; + + /* for a block context, it points to the active context at the + * moment the block context was created. that is, it points to + * a method context where the base block has been defined. + * an activated block context copies this field from the base block context. */ + hak_oop_context_t home; /* context or nil */ + + /* it is set to itself for a method context, nil for other contexts. + * TODO: this field may not be needed.. mthhome access has been commented out.. so remove this field */ + hak_oop_context_t mthhome; + + /* instance variable access instructions hold the index to a variable within + * the the containing class. If the class inherits from a superclass and the + * superclass chain contains instance variables, the actual index must be + * added with the number of instance variables in the superclass chain. + * + * for example, the following instruction accesses the instance variable slot + * at index 3. if the class of the instance has 4 instance variables in the + * superclass side, the method context activated has 4 in thie field. + * therefore, the instruction accesses the instance variable slot at index 7. + * push_ivar 3 + * the debug output shows this instruction as "push_ivar 3; [4]" + */ + hak_oop_t ivaroff; + + /* method owner if this context is created of a message send. nil otherwise */ + hak_oop_t owner; /* class(hak_oop_class_t) or nil */ + + /* variable indexed part */ + hak_oop_t slot[1]; /* arguments, return variables, local variables, other arguments, etc */ +}; + +#define HAK_PROCESS_NAMED_INSTVARS (15) +typedef struct hak_process_t hak_process_t; +typedef struct hak_process_t* hak_oop_process_t; + +#define HAK_SEMAPHORE_NAMED_INSTVARS (11) +typedef struct hak_semaphore_t hak_semaphore_t; +typedef struct hak_semaphore_t* hak_oop_semaphore_t; + +#define HAK_SEMAPHORE_GROUP_NAMED_INSTVARS (8) +typedef struct hak_semaphore_group_t hak_semaphore_group_t; +typedef struct hak_semaphore_group_t* hak_oop_semaphore_group_t; + + +#define HAK_PROCESS_STATE_RUNNING (3) +#define HAK_PROCESS_STATE_WAITING (2) +#define HAK_PROCESS_STATE_RUNNABLE (1) +#define HAK_PROCESS_STATE_SUSPENDED (0) +#define HAK_PROCESS_STATE_TERMINATED (-1) + +struct hak_process_t +{ + HAK_OBJ_HEADER; + hak_oop_context_t initial_context; + hak_oop_context_t current_context; + + hak_oop_t id; /* SmallInteger */ + hak_oop_t state; /* SmallInteger */ + + hak_oop_t sp; /* stack pointer. SmallInteger */ + hak_oop_t st; /* stack top */ + + hak_oop_t exsp; /* exception stack pointer. SmallInteger */ + hak_oop_t exst; /* exception stack top */ + + hak_oop_t clsp; /* class stack pointer */ + hak_oop_t clst; /* class stack top */ + + struct + { + hak_oop_process_t prev; + hak_oop_process_t next; + } ps; /* links to use with the process scheduler */ + + struct + { + hak_oop_process_t prev; + hak_oop_process_t next; + } sem_wait; /* links to use with a semaphore */ + + hak_oop_t sem; /* nil, semaphore, or semaphore group */ + + /* == variable indexed part == */ + hak_oop_t slot[1]; /* process stack */ + + /* after the process stack comes the exception stack. + * the exception stack is composed of instruction pointers and some context values. + * the instruction pointers are OOPs of small integers. safe without GC. + * the context values must be referenced by the active call chain. GC doesn't need to scan this area. + * If this assumption is not correct, GC code must be modified. + * so the garbage collector is free to ignore the exception stack */ +}; + +enum hak_semaphore_subtype_t +{ + HAK_SEMAPHORE_SUBTYPE_TIMED = 0, + HAK_SEMAPHORE_SUBTYPE_IO = 1 +}; +typedef enum hak_semaphore_subtype_t hak_semaphore_subtype_t; + +enum hak_semaphore_io_type_t +{ + HAK_SEMAPHORE_IO_TYPE_INPUT = 0, + HAK_SEMAPHORE_IO_TYPE_OUTPUT = 1 +}; +typedef enum hak_semaphore_io_type_t hak_semaphore_io_type_t; + +enum hak_semaphore_io_mask_t +{ + HAK_SEMAPHORE_IO_MASK_INPUT = (1 << 0), + HAK_SEMAPHORE_IO_MASK_OUTPUT = (1 << 1), + HAK_SEMAPHORE_IO_MASK_HANGUP = (1 << 2), + HAK_SEMAPHORE_IO_MASK_ERROR = (1 << 3) +}; +typedef enum hak_semaphore_io_mask_t hak_semaphore_io_mask_t; + +struct hak_semaphore_t +{ + HAK_OBJ_HEADER; + + /* [IMPORTANT] make sure that the position of 'waiting' in hak_semaphore_t + * must be exactly the same as its position in hak_semaphore_group_t */ + struct + { + hak_oop_process_t first; + hak_oop_process_t last; + } waiting; /* list of processes waiting on this semaphore */ + /* [END IMPORTANT] */ + + hak_oop_t count; /* SmallInteger */ + + /* nil for normal. SmallInteger if associated with + * timer(HAK_SEMAPHORE_SUBTYPE_TIMED) or IO(HAK_SEMAPHORE_SUBTYPE_IO). */ + hak_oop_t subtype; + + union + { + struct + { + hak_oop_t index; /* index to the heap that stores timed semaphores */ + hak_oop_t ftime_sec; /* firing time */ + hak_oop_t ftime_nsec; /* firing time */ + } timed; + + struct + { + hak_oop_t index; /* index to sem_io_tuple */ + hak_oop_t handle; + hak_oop_t type; /* SmallInteger */ + } io; + } u; + + hak_oop_t signal_action; + + hak_oop_semaphore_group_t group; /* nil or belonging semaphore group */ + struct + { + hak_oop_semaphore_t prev; + hak_oop_semaphore_t next; + } grm; /* group membership chain */ +}; + +#define HAK_SEMAPHORE_GROUP_SEMS_UNSIG 0 +#define HAK_SEMAPHORE_GROUP_SEMS_SIG 1 + +struct hak_semaphore_group_t +{ + HAK_OBJ_HEADER; + + /* [IMPORTANT] make sure that the position of 'waiting' in hak_semaphore_group_t + * must be exactly the same as its position in hak_semaphore_t */ + struct + { + hak_oop_process_t first; + hak_oop_process_t last; + } waiting; /* list of processes waiting on this semaphore group */ + /* [END IMPORTANT] */ + + struct + { + hak_oop_semaphore_t first; + hak_oop_semaphore_t last; + } sems[2]; /* sems[0] - unsignaled semaphores, sems[1] - signaled semaphores */ + + hak_oop_t sem_io_count; /* the number of io semaphores in the group */ + hak_oop_t sem_count; /* the total number of semaphores in the group */ +}; + +#define HAK_PROCESS_SCHEDULER_NAMED_INSTVARS 8 +typedef struct hak_process_scheduler_t hak_process_scheduler_t; +typedef struct hak_process_scheduler_t* hak_oop_process_scheduler_t; +struct hak_process_scheduler_t +{ + HAK_OBJ_HEADER; + + hak_oop_process_t active; /* pointer to an active process in the runnable process list */ + hak_oop_t total_count; /* smooi, total number of processes - runnable/running/suspended */ + + struct + { + hak_oop_t count; /* smooi, the number of runnable/running processes */ + hak_oop_process_t first; /* runnable process list */ + hak_oop_process_t last; /* runnable process list */ + } runnable; + + struct + { + hak_oop_t count; /* smooi, the number of suspended processes */ + hak_oop_process_t first; /* suspended process list */ + hak_oop_process_t last; /* suspended process list */ + } suspended; +}; + + +#define HAK_CLASS_NAMED_INSTVARS 9 +typedef struct hak_class_t hak_class_t; +typedef struct hak_class_t* hak_oop_class_t; +struct hak_class_t +{ + HAK_OBJ_HEADER; + + hak_oop_t name; /* class name. nil for unnamed class */ + hak_oop_t mdic; /* method dictionary. nil or a dictionary object */ + + hak_oop_t spec; /* SmallInteger. instance specification */ + hak_oop_t selfspec; /* SmallInteger. specification of the class object itself */ + + hak_oop_t superclass; + hak_oop_t nivars_super; /* SmallInteger */ + hak_oop_t ibrand; /* SmallInteger */ + + hak_oop_char_t ivarnames; + hak_oop_char_t cvarnames; + + /* indexed part afterwards - not included in HAK_CLASS_NAMED_INSTVARS */ + hak_oop_t cvar[1]; /* class variables. */ +}; + +#if 0 +struct hak_class_t +{ + HAK_OBJ_HEADER; + + /* === the following five fields must be in sync with hak_methowner_t === */ + hak_oop_char_t name; /* Symbol */ + + /* [0] - instance methods, MethodDictionary + * [1] - class methods, MethodDictionary */ + hak_oop_dic_t mthdic[2]; + + hak_oop_nsdic_t nsup; /* pointer to the upper namespace */ + hak_oop_nsdic_t nsdic; /* dictionary used for namespacing - may be nil when there are no subitems underneath */ + /* ===================================================================== */ + + hak_oop_t spec; /* SmallInteger. instance specification */ + hak_oop_t selfspec; /* SmallInteger. specification of the class object itself */ + + hak_oop_t superclass; /* Another class */ + hak_oop_t subclasses; /* Array of subclasses */ + + hak_oop_t modname; /* Symbol if importing a module. nil if not. */ + + /* == NEVER CHANGE THIS ORDER OF 3 ITEMS BELOW == */ + hak_oop_char_t ivars; /* String */ + hak_oop_char_t civars; /* String */ + hak_oop_char_t cvars; /* String */ + /* == NEVER CHANGE THE ORDER OF 3 ITEMS ABOVE == */ + +#if 0 + hak_oop_char_t pooldics; /* String - pool dictionaries imported */ + + hak_oop_t trsize; /* trailer size for new instances */ + hak_oop_t trgc; /* trailer gc callback */ + + /* [0] - initial values for instance variables of new instances + * [1] - initial values for class instance variables */ + hak_oop_t initv[2]; +#endif + /* indexed part afterwards */ + hak_oop_t cvar[1]; /* class instance variables and class variables. */ +}; +#endif + +/** + * The HAK_CLASSOF() macro return the class of an object including a numeric + * object encoded into a pointer. + */ +#define HAK_CLASSOF(hak,oop) \ + (HAK_OOP_GET_TAG(oop)? ((hak_oop_t)(*(hak)->tagged_classes[HAK_OOP_GET_TAG(oop)])): HAK_OBJ_GET_CLASS(oop)) + + +/** + * The HAK_BYTESOF() macro returns the size of the payload of + * an object in bytes. If the pointer given encodes a numeric value, + * it returns the size of #hak_oow_t in bytes. + */ +#define HAK_BYTESOF(hak,oop) \ + (HAK_OOP_IS_NUMERIC(oop)? HAK_SIZEOF(hak_oow_t): HAK_OBJ_BYTESOF(oop)) + + +/** + * The HAK_ISTYPEOF() macro is a safe replacement for HAK_OBJ_GET_FLAGS_TYPE() + */ +#define HAK_ISTYPEOF(hak,oop,type) \ + (!HAK_OOP_IS_NUMERIC(oop) && HAK_OBJ_GET_FLAGS_TYPE(oop) == (type)) + +/* ========================================================================= + * HEAP + * ========================================================================= */ + +typedef struct hak_heap_t hak_heap_t; + +struct hak_heap_t +{ + hak_uint8_t* base; /* start of a heap */ + hak_oow_t size; + hak_xma_t* xma; + hak_mmgr_t xmmgr; +}; + +/* ========================================================================= + * VM LOGGING + * ========================================================================= */ + +enum hak_log_mask_t +{ + HAK_LOG_DEBUG = ((hak_bitmask_t)1 << 0), + HAK_LOG_INFO = ((hak_bitmask_t)1 << 1), + HAK_LOG_WARN = ((hak_bitmask_t)1 << 2), + HAK_LOG_ERROR = ((hak_bitmask_t)1 << 3), + HAK_LOG_FATAL = ((hak_bitmask_t)1 << 4), + + HAK_LOG_UNTYPED = ((hak_bitmask_t)1 << 6), /* only to be used by HAK_DEBUGx() and HAK_INFOx() */ + HAK_LOG_COMPILER = ((hak_bitmask_t)1 << 7), + HAK_LOG_VM = ((hak_bitmask_t)1 << 8), + HAK_LOG_MNEMONIC = ((hak_bitmask_t)1 << 9), /* bytecode mnemonic */ + HAK_LOG_GC = ((hak_bitmask_t)1 << 10), + HAK_LOG_IC = ((hak_bitmask_t)1 << 11), /* instruction cycle, fetch-decode-execute */ + HAK_LOG_PRIMITIVE = ((hak_bitmask_t)1 << 12), + + HAK_LOG_APP = ((hak_bitmask_t)1 << 13), /* hak applications, set by hak logging primitive */ + HAK_LOG_APP_X1 = ((hak_bitmask_t)1 << 14), /* more hak applications, you can choose to use one of APP_X? randomly */ + HAK_LOG_APP_X2 = ((hak_bitmask_t)1 << 15), + HAK_LOG_APP_X3 = ((hak_bitmask_t)1 << 16), + + HAK_LOG_ALL_LEVELS = (HAK_LOG_DEBUG | HAK_LOG_INFO | HAK_LOG_WARN | HAK_LOG_ERROR | HAK_LOG_FATAL), + HAK_LOG_ALL_TYPES = (HAK_LOG_UNTYPED | HAK_LOG_COMPILER | HAK_LOG_VM | HAK_LOG_MNEMONIC | HAK_LOG_GC | HAK_LOG_IC | HAK_LOG_PRIMITIVE | HAK_LOG_APP | HAK_LOG_APP_X1 | HAK_LOG_APP_X2 | HAK_LOG_APP_X3), + + + HAK_LOG_STDOUT = ((hak_bitmask_t)1 << 20), /* write log messages to stdout without timestamp. HAK_LOG_STDOUT wins over HAK_LOG_STDERR. */ + HAK_LOG_STDERR = ((hak_bitmask_t)1 << 21), /* write log messages to stderr without timestamp. */ + + HAK_LOG_PREFER_JSON = ((hak_bitmask_t)1 << 30) /* write a object in the json format. don't set this explicitly. use %J instead */ +}; +typedef enum hak_log_mask_t hak_log_mask_t; + +/* all bits must be set to get enabled */ +#define HAK_LOG_ENABLED(hak,mask) (((hak)->option.log_mask & (mask)) == (mask)) + +#define HAK_LOG0(hak,mask,fmt) do { if (HAK_LOG_ENABLED(hak,mask)) hak_logbfmt(hak, mask, fmt); } while(0) +#define HAK_LOG1(hak,mask,fmt,a1) do { if (HAK_LOG_ENABLED(hak,mask)) hak_logbfmt(hak, mask, fmt, a1); } while(0) +#define HAK_LOG2(hak,mask,fmt,a1,a2) do { if (HAK_LOG_ENABLED(hak,mask)) hak_logbfmt(hak, mask, fmt, a1, a2); } while(0) +#define HAK_LOG3(hak,mask,fmt,a1,a2,a3) do { if (HAK_LOG_ENABLED(hak,mask)) hak_logbfmt(hak, mask, fmt, a1, a2, a3); } while(0) +#define HAK_LOG4(hak,mask,fmt,a1,a2,a3,a4) do { if (HAK_LOG_ENABLED(hak,mask)) hak_logbfmt(hak, mask, fmt, a1, a2, a3, a4); } while(0) +#define HAK_LOG5(hak,mask,fmt,a1,a2,a3,a4,a5) do { if (HAK_LOG_ENABLED(hak,mask)) hak_logbfmt(hak, mask, fmt, a1, a2, a3, a4, a5); } while(0) +#define HAK_LOG6(hak,mask,fmt,a1,a2,a3,a4,a5,a6) do { if (HAK_LOG_ENABLED(hak,mask)) hak_logbfmt(hak, mask, fmt, a1, a2, a3, a4, a5, a6); } while(0) +#define HAK_LOG7(hak,mask,fmt,a1,a2,a3,a4,a5,a6,a7) do { if (HAK_LOG_ENABLED(hak,mask)) hak_logbfmt(hak, mask, fmt, a1, a2, a3, a4, a5, a6, a7); } while(0) +#define HAK_LOG8(hak,mask,fmt,a1,a2,a3,a4,a5,a6,a7,a8) do { if (HAK_LOG_ENABLED(hak,mask)) hak_logbfmt(hak, mask, fmt, a1, a2, a3, a4, a5, a6, a7, a8); } while(0) +#define HAK_LOG9(hak,mask,fmt,a1,a2,a3,a4,a5,a6,a7,a8,a9) do { if (HAK_LOG_ENABLED(hak,mask)) hak_logbfmt(hak, mask, fmt, a1, a2, a3, a4, a5, a6, a7, a8, a9); } while(0) + +#if defined(HAK_BUILD_RELEASE) + /* [NOTE] + * get rid of debugging message totally regardless of + * the log mask in the release build. + */ +# define HAK_DEBUG0(hak,fmt) +# define HAK_DEBUG1(hak,fmt,a1) +# define HAK_DEBUG2(hak,fmt,a1,a2) +# define HAK_DEBUG3(hak,fmt,a1,a2,a3) +# define HAK_DEBUG4(hak,fmt,a1,a2,a3,a4) +# define HAK_DEBUG5(hak,fmt,a1,a2,a3,a4,a5) +# define HAK_DEBUG6(hak,fmt,a1,a2,a3,a4,a5,a6) +# define HAK_DEBUG7(hak,fmt,a1,a2,a3,a4,a5,a6,a7) +# define HAK_DEBUG8(hak,fmt,a1,a2,a3,a4,a5,a6,a7,a8) +# define HAK_DEBUG9(hak,fmt,a1,a2,a3,a4,a5,a6,a7,a8,a9) +#else +# define HAK_DEBUG0(hak,fmt) HAK_LOG0(hak, HAK_LOG_DEBUG | HAK_LOG_UNTYPED, fmt) +# define HAK_DEBUG1(hak,fmt,a1) HAK_LOG1(hak, HAK_LOG_DEBUG | HAK_LOG_UNTYPED, fmt, a1) +# define HAK_DEBUG2(hak,fmt,a1,a2) HAK_LOG2(hak, HAK_LOG_DEBUG | HAK_LOG_UNTYPED, fmt, a1, a2) +# define HAK_DEBUG3(hak,fmt,a1,a2,a3) HAK_LOG3(hak, HAK_LOG_DEBUG | HAK_LOG_UNTYPED, fmt, a1, a2, a3) +# define HAK_DEBUG4(hak,fmt,a1,a2,a3,a4) HAK_LOG4(hak, HAK_LOG_DEBUG | HAK_LOG_UNTYPED, fmt, a1, a2, a3, a4) +# define HAK_DEBUG5(hak,fmt,a1,a2,a3,a4,a5) HAK_LOG5(hak, HAK_LOG_DEBUG | HAK_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5) +# define HAK_DEBUG6(hak,fmt,a1,a2,a3,a4,a5,a6) HAK_LOG6(hak, HAK_LOG_DEBUG | HAK_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5, a6) +# define HAK_DEBUG7(hak,fmt,a1,a2,a3,a4,a5,a6,a7) HAK_LOG7(hak, HAK_LOG_DEBUG | HAK_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5, a6, a7) +# define HAK_DEBUG8(hak,fmt,a1,a2,a3,a4,a5,a6,a7,a8) HAK_LOG8(hak, HAK_LOG_DEBUG | HAK_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5, a6, a7, a8) +# define HAK_DEBUG9(hak,fmt,a1,a2,a3,a4,a5,a6,a7,a8,a9) HAK_LOG9(hak, HAK_LOG_DEBUG | HAK_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5, a6, a7, a8, a9) +#endif + +#define HAK_INFO0(hak,fmt) HAK_LOG0(hak, HAK_LOG_INFO | HAK_LOG_UNTYPED, fmt) +#define HAK_INFO1(hak,fmt,a1) HAK_LOG1(hak, HAK_LOG_INFO | HAK_LOG_UNTYPED, fmt, a1) +#define HAK_INFO2(hak,fmt,a1,a2) HAK_LOG2(hak, HAK_LOG_INFO | HAK_LOG_UNTYPED, fmt, a1, a2) +#define HAK_INFO3(hak,fmt,a1,a2,a3) HAK_LOG3(hak, HAK_LOG_INFO | HAK_LOG_UNTYPED, fmt, a1, a2, a3) +#define HAK_INFO4(hak,fmt,a1,a2,a3,a4) HAK_LOG4(hak, HAK_LOG_INFO | HAK_LOG_UNTYPED, fmt, a1, a2, a3, a4) +#define HAK_INFO5(hak,fmt,a1,a2,a3,a4,a5) HAK_LOG5(hak, HAK_LOG_INFO | HAK_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5) +#define HAK_INFO6(hak,fmt,a1,a2,a3,a4,a5,a6) HAK_LOG6(hak, HAK_LOG_INFO | HAK_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5, a6) +#define HAK_INFO7(hak,fmt,a1,a2,a3,a4,a5,a6,a7) HAK_LOG7(hak, HAK_LOG_INFO | HAK_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5, a6, a7) +#define HAK_INFO8(hak,fmt,a1,a2,a3,a4,a5,a6,a7,a8) HAK_LOG8(hak, HAK_LOG_INFO | HAK_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5, a6, a7, a8) +#define HAK_INFO9(hak,fmt,a1,a2,a3,a4,a5,a6,a7,a8,a9) HAK_LOG9(hak, HAK_LOG_INFO | HAK_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5, a6, a7, a8, a9) + + +/* ========================================================================= + * VIRTUAL MACHINE PRIMITIVES + * ========================================================================= */ + +typedef void* (*hak_alloc_heap_t) ( + hak_t* hak, + hak_oow_t* size /* [IN] requested size, [OUT] allocated size */ +); + +typedef void (*hak_free_heap_t) ( + hak_t* hak, + void* ptr +); + +typedef void (*hak_log_write_t) ( + hak_t* hak, + hak_bitmask_t mask, + const hak_ooch_t* msg, + hak_oow_t len +); + +typedef hak_errnum_t (*hak_syserrstrb_t) ( + hak_t* hak, + int syserr_type, + int syserr_code, + hak_bch_t* buf, + hak_oow_t len +); + +typedef hak_errnum_t (*hak_syserrstru_t) ( + hak_t* hak, + int syserr_type, + int syserr_code, + hak_uch_t* buf, + hak_oow_t len +); + +typedef void (*hak_assertfail_t) ( + hak_t* hak, + const hak_bch_t* expr, + const hak_bch_t* file, + hak_oow_t line +); + +enum hak_vmprim_dlopen_flag_t +{ + HAK_VMPRIM_DLOPEN_PFMOD = (1 << 0) +}; +typedef enum hak_vmprim_dlopen_flag_t hak_vmprim_dlopen_flag_t; + +typedef void (*hak_vmprim_dlstartup_t) ( + hak_t* hak +); + +typedef void (*hak_vmprim_dlcleanup_t) ( + hak_t* hak +); + +typedef void* (*hak_vmprim_dlopen_t) ( + hak_t* hak, + const hak_ooch_t* name, + int flags +); + +typedef void (*hak_vmprim_dlclose_t) ( + hak_t* hak, + void* handle +); + +typedef void* (*hak_vmprim_dlgetsym_t) ( + hak_t* hak, + void* handle, + const hak_ooch_t* name +); + +typedef void (*hak_vmprim_gettime_t) ( + hak_t* hak, + hak_ntime_t* now +); + +typedef int (*hak_vmprim_muxadd_t) ( + hak_t* hak, + hak_ooi_t io_handle, + hak_ooi_t masks +); + +typedef int (*hak_vmprim_muxmod_t) ( + hak_t* hak, + hak_ooi_t io_handle, + hak_ooi_t masks +); + +typedef int (*hak_vmprim_muxdel_t) ( + hak_t* hak, + hak_ooi_t io_handle +); + +typedef void (*hak_vmprim_muxwait_cb_t) ( + hak_t* hak, + hak_ooi_t io_handle, + hak_ooi_t masks +); + +typedef void (*hak_vmprim_muxwait_t) ( + hak_t* hak, + const hak_ntime_t* duration, + hak_vmprim_muxwait_cb_t muxwcb +); + +typedef int (*hak_vmprim_sleep_t) ( + hak_t* hak, + const hak_ntime_t* duration +); + +typedef hak_ooi_t (*hak_vmprim_getsigfd_t) ( + hak_t* hak +); + +typedef int (*hak_vmprim_getsig_t) ( + hak_t* hak, + hak_uint8_t* sig +); + +typedef int (*hak_vmprim_setsig_t) ( + hak_t* hak, + hak_uint8_t sig +); + +struct hak_vmprim_t +{ + /* The alloc_heap callback function is called very earlier + * before hak is fully initialized. so few features are availble + * in this callback function. If it's not provided, the default + * implementation is used. */ + hak_alloc_heap_t alloc_heap; /* optional */ + + /* If you customize the heap allocator by providing the alloc_heap + * callback, you should implement the heap freer. otherwise the default + * implementation doesn't know how to free the heap allocated by + * the allocator callback. */ + hak_free_heap_t free_heap; /* optional */ + + hak_log_write_t log_write; /* required */ + hak_syserrstrb_t syserrstrb; /* one of syserrstrb or syserrstru required */ + hak_syserrstru_t syserrstru; + hak_assertfail_t assertfail; + + hak_vmprim_dlstartup_t dl_startup; /* optional */ + hak_vmprim_dlcleanup_t dl_cleanup; /* optional */ + hak_vmprim_dlopen_t dl_open; /* required */ + hak_vmprim_dlclose_t dl_close; /* required */ + hak_vmprim_dlgetsym_t dl_getsym; /* requried */ + + hak_vmprim_gettime_t vm_gettime; /* required */ + hak_vmprim_muxadd_t vm_muxadd; + hak_vmprim_muxdel_t vm_muxdel; + hak_vmprim_muxmod_t vm_muxmod; + hak_vmprim_muxwait_t vm_muxwait; + hak_vmprim_sleep_t vm_sleep; /* required */ + + hak_vmprim_getsigfd_t vm_getsigfd; + hak_vmprim_getsig_t vm_getsig; + hak_vmprim_setsig_t vm_setsig; +}; + +typedef struct hak_vmprim_t hak_vmprim_t; + +/* ========================================================================= + * IO MANIPULATION + * ========================================================================= */ + +enum hak_io_cmd_t +{ + HAK_IO_OPEN, + HAK_IO_CLOSE, + HAK_IO_READ, + HAK_IO_READ_BYTES, + HAK_IO_WRITE, + HAK_IO_WRITE_BYTES, + HAK_IO_FLUSH +}; +typedef enum hak_io_cmd_t hak_io_cmd_t; + +struct hak_loc_t +{ + hak_oow_t line; /**< line */ + hak_oow_t colm; /**< column */ + const hak_ooch_t* file; /**< file specified in #include */ +}; +typedef struct hak_loc_t hak_loc_t; + +struct hak_lxc_t +{ + hak_ooci_t c; /**< character */ + hak_loc_t l; /**< location */ +}; +typedef struct hak_lxc_t hak_lxc_t; + +#if !defined(HAK_CCI_BUF_LEN) +#define HAK_CCI_BUF_LEN (2048) +#endif + +typedef struct hak_io_cciarg_t hak_io_cciarg_t; +struct hak_io_cciarg_t +{ + /** + * [IN] I/O object name. + * It is #HAK_NULL for the main stream and points to a non-NULL string + * for an included stream. + */ + const hak_ooch_t* name; + + /** + * [OUT] I/O handle set by a handler. + * The source stream handler can set this field when it opens a stream. + * All subsequent operations on the stream see this field as set + * during opening. + */ + void* handle; + + /** + * [OUT] set this to non-zero in HAK_IO_OPEN if the handler fills the buffer with bytes. + * the caller issues HAK_IO_READ_BYTES if it's set to non-zero, expecting bytes. + * otherwise it issues HAK_IO_READ expecting characters. + */ + int byte_oriented; + + /** + * [OUT] place data here for #HAK_IO_READ or #HAK_IO_READ_BYTES + */ + union + { + hak_ooch_t c[HAK_CCI_BUF_LEN]; + hak_uint8_t b[HAK_CCI_BUF_LEN * HAK_SIZEOF(hak_ooch_t)]; + } buf; + + /** + * [OUT] place the number of characters read here for #HAK_IO_READ + */ + hak_oow_t xlen; + + /** + * [IN] points to the data of the includer. It is #HAK_NULL for the + * main stream. + */ + hak_io_cciarg_t* includer; + + /*-----------------------------------------------------------------*/ + /*----------- from here down, internal use only -------------------*/ + struct + { + hak_oow_t pos; + hak_oow_t len; + } b; /* buffer(buf.c or buf.b) usage status */ + + struct + { + hak_uint8_t buf[HAK_MBLEN_MAX]; + hak_oow_t len; + } rsd; /* residue bytes for HAK_IO_READ_BYTES */ + + hak_oow_t line; + hak_oow_t colm; + hak_ooci_t nl; + + hak_lxc_t lxc; + /*-----------------------------------------------------------------*/ +}; + +typedef struct hak_io_udiarg_t hak_io_udiarg_t; +struct hak_io_udiarg_t +{ + /** + * [OUT] I/O handle set by a handler. + * The stream handler can set this field when it opens a stream. + * All subsequent operations on the stream see this field as set + * during opening. + */ + void* handle; + + /** + * [OUT] indicates if HAK_IO_READ_BYTES is implemented + */ + int byte_oriented; + + /** + * [OUT] place data in c for #HAK_IO_READ and in d for #HAK_IO_READ_BYTES + */ + union { + hak_ooch_t c[2048]; /* TODO: resize this if necessary */ + hak_uint8_t b[2048 * HAK_SIZEOF(hak_ooch_t)]; /* TODO: resize this if necessary */ + } buf; + + /** + * [OUT] place the number of characters read here for + * #HAK_IO_READ or #HAK_IO_READ_BYTES + */ + hak_oow_t xlen; + + + /*-----------------------------------------------------------------*/ + /*----------- from here down, internal use only -------------------*/ + struct + { + hak_oow_t pos; + hak_oow_t len; + } b; /* buffer(buf.c or buf.b) usage status */ + + struct + { + hak_uint8_t buf[HAK_MBLEN_MAX]; + hak_oow_t len; + } rsd; /* residue bytes for HAK_IO_READ_BYTES */ + + int eof_reached; +}; + +typedef struct hak_io_udoarg_t hak_io_udoarg_t; +struct hak_io_udoarg_t +{ + /** + * [OUT] I/O handle set by a handler. + * The stream handler can set this field when it opens a stream. + * All subsequent operations on the stream see this field as set + * during opening. + */ + void* handle; + + /** + * [IN] the pointer to the beginning of the character/byte string + * to write. + * hak_ooch_t* for HAK_IO_WRITE + * hak_bch_t* or hak_uint8_t* for HAK_IO_WRITE_BYTES + */ + void* ptr; + + /** + * [IN] total number of characters/bytes to write + */ + hak_oow_t len; + + /** + * [OUT] place the number of characters/bytes written here for + * #HAK_IO_WRITE or #HAK_IO_WRITE_BYTES + */ + hak_oow_t xlen; +}; + +/** + * The hak_io_impl_t type defines a callback function prototype + * for I/O operations. + */ +typedef int (*hak_io_impl_t) ( + hak_t* hak, + hak_io_cmd_t cmd, + void* arg /* one of hak_io_cciarg_t*, hak_io_udiarg_t*, hak_io_udoarg_t* */ +); + +/* ========================================================================= + * CALLBACK MANIPULATION + * ========================================================================= */ + + +typedef void (*hak_cb_on_fini_t) (hak_t* hak); +typedef void (*hak_cb_on_halting_t) (hak_t* hak); +typedef void (*hak_cb_on_option_t) (hak_t* hak, hak_option_t id, const void* val); +typedef void (*hak_cb_on_gc_t) (hak_t* hak); +typedef int (*hak_cb_vm_startup_t) (hak_t* hak); +typedef void (*hak_cb_vm_cleanup_t) (hak_t* hak); +typedef void (*hak_cb_vm_checkbc_t) (hak_t* hak, hak_oob_t bcode); + +typedef struct hak_cb_t hak_cb_t; +struct hak_cb_t +{ + hak_cb_on_fini_t on_fini; /* called from hak_fini() */ + hak_cb_on_halting_t halting; + hak_cb_on_option_t on_option; /* called from hak_setoption() */ + hak_cb_on_gc_t on_gc; /* called from hak_gc() */ + + hak_cb_vm_startup_t vm_startup; + hak_cb_vm_cleanup_t vm_cleanup; + hak_cb_vm_checkbc_t vm_checkbc; + + /* private below */ + hak_cb_t* prev; + hak_cb_t* next; +}; + + +/* ========================================================================= + * PRIMITIVE FUNCTIONS + * ========================================================================= */ +enum hak_pfrc_t +{ + HAK_PF_FAILURE = -1, + HAK_PF_SUCCESS = 0 +}; +typedef enum hak_pfrc_t hak_pfrc_t; + +typedef hak_pfrc_t (*hak_pfimpl_t) ( + hak_t* hak, + hak_mod_t* mod, + hak_ooi_t nargs +); + +enum hak_pfbase_type_t +{ + HAK_PFBASE_FUNC = 0, + HAK_PFBASE_VAR = 1, + HAK_PFBASE_CONST = 2 +}; +typedef enum hak_pfbase_type_t hak_pfbase_type_t; + +typedef struct hak_pfbase_t hak_pfbase_t; +struct hak_pfbase_t +{ + hak_pfbase_type_t type; + hak_pfimpl_t handler; + hak_oow_t minargs; + hak_oow_t maxargs; +}; + +typedef struct hak_pfinfo_t hak_pfinfo_t; +struct hak_pfinfo_t +{ + const hak_bch_t* mthname; + hak_pfbase_t base; +}; +/* ========================================================================= + * PRIMITIVE MODULE MANIPULATION + * ========================================================================= */ +#define HAK_MOD_NAME_LEN_MAX 120 + +typedef int (*hak_mod_load_t) ( + hak_t* hak, + hak_mod_t* mod +); + +typedef hak_pfbase_t* (*hak_mod_query_t) ( + hak_t* hak, + hak_mod_t* mod, + const hak_ooch_t* name, + hak_oow_t namelen +); + +typedef void (*hak_mod_unload_t) ( + hak_t* hak, + hak_mod_t* mod +); + +typedef void (*hak_mod_gc_t) ( + hak_t* hak, + hak_mod_t* mod +); + +struct hak_mod_t +{ + /* input */ + hak_ooch_t name[HAK_MOD_NAME_LEN_MAX + 1]; + void* inctx; + + /* user-defined data - the module intializer shoudl fill in the following fields. */ + hak_mod_query_t query; + hak_mod_unload_t unload; + hak_mod_gc_t gc; + void* ctx; +}; + +struct hak_mod_data_t +{ + void* handle; + hak_rbt_pair_t* pair; /* internal backreference to hak->modtab */ + hak_mod_t mod; +}; +typedef struct hak_mod_data_t hak_mod_data_t; + + +struct hak_sem_tuple_t +{ + hak_oop_semaphore_t sem[2]; /* [0] input, [1] output */ + hak_ooi_t handle; /* io handle */ + hak_ooi_t mask; +}; +typedef struct hak_sem_tuple_t hak_sem_tuple_t; + +/* ========================================================================= + * HAK VM + * ========================================================================= */ +typedef struct hak_synerr_t hak_synerr_t; +struct hak_synerr_t +{ + hak_synerrnum_t num; + hak_loc_t loc; + struct + { + hak_ooch_t val[256]; + hak_oow_t len; + } tgt; +}; + +typedef struct hak_dbgi_t hak_dbgi_t; +struct hak_dbgi_t +{ + const hak_ooch_t* fname; /* file name */ + hak_oow_t sline; /* source line in the file */ +}; + +#if defined(HAK_INCLUDE_COMPILER) +typedef struct hak_compiler_t hak_compiler_t; +typedef struct hak_cnode_t hak_cnode_t; + +typedef int (*hak_on_cnode_t) (hak_t* hak, hak_cnode_t* obj); + +enum hak_compile_flag_t +{ + /* clear byte codes at the beginnign of hak_compile() */ + HAK_COMPILE_CLEAR_CODE = (1 << 0), + + /* clear the top-level function block at the end of hak_compile() */ + HAK_COMPILE_CLEAR_FUNBLK = (1 << 1) +}; +typedef enum hak_compile_flag_t hak_compile_flag_t; +#endif + +#define HAK_ERRMSG_CAPA (2048) + +struct hak_code_t +{ + struct + { + hak_oob_t* ptr; /* byte code array */ + hak_oow_t len; + hak_oow_t capa; + } bc; + + struct + { + hak_oop_oop_t arr; /* literal array - not part of object memory */ + hak_oow_t len; + } lit; + + /* the cumulative number of temporaries collected at the global(top-level) level */ + hak_oow_t ngtmprs; + + /* array that holds the location of the byte code emitted */ + hak_dbgi_t* dbgi; +}; +typedef struct hak_code_t hak_code_t; + +struct hak_t +{ + hak_oow_t _instsize; + hak_mmgr_t* _mmgr; + hak_cmgr_t* _cmgr; + + hak_errnum_t errnum; + struct + { + union + { + hak_ooch_t ooch[HAK_ERRMSG_CAPA]; + hak_bch_t bch[HAK_ERRMSG_CAPA]; + hak_uch_t uch[HAK_ERRMSG_CAPA]; + } tmpbuf; + #if defined(HAK_OOCH_IS_BCH) + hak_uch_t xerrmsg[HAK_ERRMSG_CAPA]; + #else + hak_bch_t xerrmsg[HAK_ERRMSG_CAPA * 2]; + #endif + hak_ooch_t buf[HAK_ERRMSG_CAPA]; + hak_oow_t len; + + } errmsg; + hak_loc_t errloc; + int shuterr; + + struct + { + hak_bitmask_t trait; + hak_bitmask_t log_mask; + hak_oow_t log_maxcapa; + hak_bch_t* log_target_b; + hak_uch_t* log_target_u; + hak_oow_t dfl_symtab_size; + hak_oow_t dfl_sysdic_size; + hak_oow_t dfl_procstk_size; + void* mod_inctx; + + hak_oocs_t mod[3]; + + #if defined(HAK_BUILD_DEBUG) + /* set automatically when trait is set */ + hak_oow_t karatsuba_cutoff; + #endif + } option; + + hak_vmprim_t vmprim; + + hak_oow_t vm_checkbc_cb_count; + hak_cb_t* cblist; + hak_rbt_t modtab; /* primitive module table */ + + struct + { + hak_ooch_t* ptr; + hak_oow_t len; + hak_oow_t capa; + hak_bitmask_t last_mask; + hak_bitmask_t default_type_mask; + } log; + /* ========================= */ + + hak_heap_t* heap; + + /* ========================= */ + hak_oop_t _undef; /* special internal value for uninitialized global variables */ + hak_oop_t _nil; /* pointer to the nil object */ + hak_oop_t _true; + hak_oop_t _false; + + hak_oop_dic_t symtab; /* system-wide symbol table. */ + hak_oop_dic_t sysdic; /* system dictionary. */ + hak_oop_process_scheduler_t processor; /* instance of ProcessScheduler */ + hak_oop_process_t nil_process; /* instance of Process */ + + /* ============================================================= + * KERNEL CLASSES + * Be sure to Keep these kernel class pointers registered in the + * kernel_classes table in gc.c + * ============================================================= */ + hak_oop_class_t c_apex; /* Apex */ + hak_oop_class_t c_class; /* Class */ + hak_oop_class_t c_undefobj; /* UndefinedObject */ + hak_oop_class_t c_nilobj; /* NilObject */ +#if 0 + hak_oop_class_t c_interface; /* Interface */ +#endif + hak_oop_class_t c_object; /* Object */ + + hak_oop_class_t c_collection; /* Collection */ + hak_oop_class_t c_indexed_collection; /* IndexedCollection */ + hak_oop_class_t c_fixed_sized_collection; /* FixedSizedCollection */ + hak_oop_class_t c_string; /* String */ + hak_oop_class_t c_byte_string; /* String */ + hak_oop_class_t c_symbol; /* Symbol */ + hak_oop_class_t c_array; /* Array */ + hak_oop_class_t c_character_array; /* CharacterArray */ + hak_oop_class_t c_byte_array; /* ByteArray */ + hak_oop_class_t c_symtab; /* SymbolTable */ + hak_oop_class_t c_dictionary; + hak_oop_class_t c_cons; /* Cons */ + +#if 0 + hak_oop_class_t c_namespace; /* Namespace */ + hak_oop_class_t c_pool_dictionary; /* PoolDictionary */ +#endif + hak_oop_class_t c_method_dictionary; /* MethodDictionary */ +#if 0 + hak_oop_class_t c_method; /* CompiledMethod */ + hak_oop_class_t c_methsig; /* MethodSignature */ +#endif + hak_oop_class_t c_function; /* Function */ + hak_oop_class_t c_primitive; /* Primitive */ + hak_oop_class_t c_compiled_block; /* CompiledBlock */ + + hak_oop_class_t c_block_context; /* BlockContext */ + hak_oop_class_t c_process; /* Process */ + hak_oop_class_t c_semaphore; /* Semaphore */ + hak_oop_class_t c_semaphore_group; /* SemaphoreGroup */ + hak_oop_class_t c_process_scheduler; /* ProcessScheduler */ + + hak_oop_class_t c_error; /* Error */ + hak_oop_class_t c_true; /* True */ + hak_oop_class_t c_false; /* False */ + hak_oop_class_t c_magnitude; /* Magnitude */ + hak_oop_class_t c_character; /* Character */ + hak_oop_class_t c_number; /* Number */ + hak_oop_class_t c_small_integer; /* SmallInteger */ + + hak_oop_class_t c_large_positive_integer; /* LargePositiveInteger */ + hak_oop_class_t c_large_negative_integer; /* LargeNegativeInteger */ + hak_oop_class_t c_fixed_point_decimal; /* FixedPointDecimal */ + + hak_oop_class_t c_small_pointer; + hak_oop_class_t c_large_pointer; + hak_oop_class_t c_system; + + /* ============================================================================= */ + + /* pending asynchronous semaphores */ + hak_oop_semaphore_t* sem_list; + hak_oow_t sem_list_count; + hak_oow_t sem_list_capa; + + /* semaphores sorted according to time-out. + * organize entries using heap as the earliest entry + * needs to be checked first */ + hak_oop_semaphore_t* sem_heap; + hak_oow_t sem_heap_count; + hak_oow_t sem_heap_capa; + + /* semaphores for I/O handling. plain array */ + /*hak_oop_semaphore_t* sem_io;*/ + hak_sem_tuple_t* sem_io_tuple; + hak_oow_t sem_io_tuple_count; + hak_oow_t sem_io_tuple_capa; + + hak_oow_t sem_io_count; + hak_oow_t sem_io_wait_count; /* number of processes waiting on an IO semaphore */ + + hak_ooi_t* sem_io_map; + hak_oow_t sem_io_map_capa; + /* ============================================================================= */ + + hak_oop_t* proc_map; + hak_oow_t proc_map_capa; + hak_oow_t proc_map_used; + hak_ooi_t proc_map_free_first; + hak_ooi_t proc_map_free_last; + + /* 2 tag bits(lo) + 2 extended tag bits(hi). not all slots are used + * because the 2 high extended bits are used only if the low tag bits + * are 3 */ + int tagged_brands[16]; + hak_oop_class_t* tagged_classes[16]; /* this is a pointer to hak_oop_class_t which is also a pointer */ + + + hak_oop_t* volat_stack[256]; /* stack for temporaries */ + hak_oow_t volat_count; + + /* == EXECUTION REGISTERS == */ + hak_oop_function_t initial_function; + hak_oop_context_t initial_context; /* fake initial context */ + hak_oop_context_t active_context; + hak_oop_function_t active_function; + hak_oob_t* active_code; + hak_ooi_t sp; + hak_ooi_t ip; + int no_proc_switch; /* process switching disabled */ + int proc_switched; /* TODO: this is temporary. implement something else to skip immediate context switching */ + int switch_proc; + int abort_req; + hak_ntime_t exec_start_time; + hak_ntime_t exec_end_time; + hak_oop_t last_retv; + /* == END EXECUTION REGISTERS == */ + + /* == BIGINT CONVERSION == */ + struct + { + int safe_ndigits; + hak_oow_t multiplier; + } bigint[37]; + + struct + { + struct + { + hak_ooch_t* ptr; + hak_oow_t capa; + hak_oow_t len; + } xbuf; + struct + { + hak_liw_t* ptr; + hak_oow_t capa; + } t; + } inttostr; + /* == END BIGINT CONVERSION == */ + + struct + { + struct + { + hak_ooch_t* ptr; + hak_oow_t capa; + hak_oow_t len; + } xbuf; /* buffer to support sprintf */ + } sprintf; + + + hak_code_t code; + + /* == PRINTER to udo stream == */ + struct + { + struct + { + void* ptr; + hak_oow_t capa; + hak_oow_t size; + } s; + hak_oop_t e; /* top entry being printed */ + } p; + /* == PRINTER to udo stream == */ + + struct + { + hak_gchdr_t* b; /* object blocks allocated */ + struct + { + hak_gchdr_t* curr; + hak_gchdr_t* prev; + } ls; + hak_oow_t bsz; /* total size of object blocks allocated */ + hak_oow_t threshold; + int lazy_sweep; + + struct + { + hak_oop_t* ptr; + hak_oow_t capa; + hak_oow_t len; + hak_oow_t max; + } stack; + + struct + { + hak_ntime_t alloc; + hak_ntime_t mark; + hak_ntime_t sweep; + } stat; + } gci; + + struct + { + /* input handler */ + hak_io_impl_t udi_rdr; + hak_io_udiarg_t udi_arg; + + /* output handler */ + hak_io_impl_t udo_wrtr; + hak_io_udoarg_t udo_arg; + } io; + +#if defined(HAK_INCLUDE_COMPILER) + hak_compiler_t* c; +#endif +}; + + +/* TODO: stack bound check when pushing */ +#define HAK_STACK_PUSH(hak,v) \ + do { \ + if (HAK_UNLIKELY((hak)->sp >= HAK_OOP_TO_SMOOI((hak)->processor->active->st))) \ + { \ + hak_seterrbfmt (hak, HAK_EOOMEM, "process stack overflow"); \ + (hak)->abort_req = -1; \ + } \ + (hak)->sp = (hak)->sp + 1; \ + (hak)->processor->active->slot[(hak)->sp] = v; \ + } while (0) + +#define HAK_STACK_GET(hak,sp_) ((hak)->processor->active->slot[sp_]) +#define HAK_STACK_SET(hak,sp_,obj_) ((hak)->processor->active->slot[sp_] = obj_) + +#define HAK_STACK_GETTOP(hak) HAK_STACK_GET(hak, (hak)->sp) +#define HAK_STACK_SETTOP(hak,obj_) HAK_STACK_SET(hak, (hak)->sp, obj_) + +/* [NOTE] + * the following macros don't commit the active stack pointer(hak->sp) + * to hak->processor->active->sp immediately. + */ +#define HAK_STACK_POP(hak) ((hak)->sp = (hak)->sp - 1) +#define HAK_STACK_POPS(hak,count) ((hak)->sp = (hak)->sp - (count)) +#define HAK_STACK_POP_TO(hak,v) \ + do { \ + v = HAK_STACK_GETTOP(hak); \ + HAK_STACK_POP (hak); \ + } while(0) + +#define HAK_STACK_GET_ST(hak) HAK_OOP_TO_SMOOI((hak)->processor->active->st) +#define HAK_STACK_GET_SP(hak) ((hak)->sp) +#define HAK_STACK_IS_EMPTY(hak) ((hak)->sp <= -1) + +/* get the stack pointer of the argument at the given index */ +#define HAK_STACK_GETARGSP(hak,nargs,idx) ((hak)->sp - ((nargs) - (idx) - 1)) +/* get the argument at the given index */ +#define HAK_STACK_GETARG(hak,nargs,idx) HAK_STACK_GET(hak, (hak)->sp - ((nargs) - (idx) - 1)) +/* get the receiver of a message */ +#define HAK_STACK_GETRCV(hak,nargs) HAK_STACK_GET(hak, (hak)->sp - nargs - 1) +/* get the operator such as the called function/block/method */ +#define HAK_STACK_GETOP(hak,nargs) HAK_STACK_GET(hak, (hak)->sp - nargs) + +/* change the receiver of a message */ +#define HAK_STACK_SETRCV(hak,nargs,newrcv) HAK_STACK_SET(hak, (hak)->sp - nargs - 1, newrcv) + +/* + * ..... + * argument 1 + * argument 0 + * operator + * receiver + */ + +/* you can't access arguments and receiver after this macro. + * also you must not call this macro more than once */ + +#define HAK_STACK_SETRET(hak,nargs,retv) \ + do { \ + HAK_STACK_POPS(hak, nargs + 1); \ + HAK_STACK_SETTOP(hak, (retv)); \ + } while(0) + +#define HAK_STACK_SETRETTOERRNUM(hak,nargs) HAK_STACK_SETRET(hak, nargs, HAK_ERROR_TO_OOP(hak->errnum)) +#define HAK_STACK_SETRETTOERROR(hak,nargs,ec) HAK_STACK_SETRET(hak, nargs, HAK_ERROR_TO_OOP(ec)) + +/* ========================================================================= + * HAK ASSERTION + * ========================================================================= */ +#if defined(HAK_BUILD_RELEASE) +# define HAK_ASSERT(hak,expr) ((void)0) +#else +# define HAK_ASSERT(hak,expr) ((void)((expr) || ((hak)->vmprim.assertfail (hak, #expr, __FILE__, __LINE__), 0))) +#endif + +/* ========================================================================= + * HAK COMMON OBJECTS + * ========================================================================= */ +enum hak_brand_t +{ + HAK_BRAND_SMOOI = 1, /* never used because a small integer is encoded in an object pointer */ + HAK_BRAND_SMPTR, + HAK_BRAND_ERROR, + HAK_BRAND_CHARACTER, + + HAK_BRAND_UNDEF, + HAK_BRAND_NIL, + HAK_BRAND_TRUE, + HAK_BRAND_FALSE, + + HAK_BRAND_PBIGINT, /* positive big integer */ + HAK_BRAND_NBIGINT, /* negative big integer */ + HAK_BRAND_CONS, + HAK_BRAND_ARRAY, + HAK_BRAND_BYTE_ARRAY, + HAK_BRAND_CHARACTER_ARRAY, + HAK_BRAND_SYMBOL, + HAK_BRAND_STRING, + HAK_BRAND_BYTE_STRING, + HAK_BRAND_DIC, + HAK_BRAND_FPDEC, /* fixed-point decimal */ + + HAK_BRAND_PRIM, + + HAK_BRAND_FUNCTION, + HAK_BRAND_BLOCK, + HAK_BRAND_CONTEXT, + HAK_BRAND_PROCESS, + HAK_BRAND_PROCESS_SCHEDULER, + HAK_BRAND_SEMAPHORE, + HAK_BRAND_SEMAPHORE_GROUP, + HAK_BRAND_CLASS, + HAK_BRAND_INSTANCE + + + /* [NOTE] each enumerator must not exceed the maximum value that can be + * represented with HAK_OBJ_FLAGS_BRAND_BITS bits */ +}; +typedef enum hak_brand_t hak_brand_t; + +/* TODO: this concode stuff has become mostly useless as the bits are never set as of now */ +enum hak_concode_t +{ + /* these can be set in the CONCODE flags for a cons cell */ + /* if you have more than 16 elements, increase HAK_OBJ_FLAGS_CONCODE_BITS */ + + HAK_CONCODE_XLIST = 0, /* ( ) - executable list */ + HAK_CONCODE_MLIST, /* (obj:message) - message send list */ + HAK_CONCODE_ALIST, /* (a := 20) assignment list */ + HAK_CONCODE_BLIST, /* (10 + 20) expression with binary operator */ + HAK_CONCODE_BLOCK, /* { } */ + HAK_CONCODE_ARRAY, /* #[ ] */ + HAK_CONCODE_BYTEARRAY, /* #b[ ] */ + HAK_CONCODE_CHARARRAY, /* #c[ ] */ + HAK_CONCODE_DIC, /* #{ } */ + HAK_CONCODE_QLIST, /* #( ) - data list */ + HAK_CONCODE_TUPLE, /* [ ] */ + HAK_CONCODE_VLIST /* | | - symbol list */ +}; +typedef enum hak_concode_t hak_concode_t; + +#define HAK_IS_UNDEF(hak,v) (v == (hak)->_undef) +#define HAK_IS_NIL(hak,v) (v == (hak)->_nil) +#define HAK_IS_TRUE(hak,v) (v == (hak)->_true) +#define HAK_IS_FALSE(hak,v) (v == (hak)->_false) + +#define HAK_IS_SYMBOL(hak,v) (HAK_CLASSOF(hak,v) == (hak_oop_t)(hak)->c_symbol) +#define HAK_IS_STRING(hak,v) (HAK_CLASSOF(hak,v) == (hak_oop_t)(hak)->c_string) +#define HAK_IS_CONTEXT(hak,v) (HAK_CLASSOF(hak,v) == (hak_oop_t)(hak)->c_block_context) +#define HAK_IS_FUNCTION(hak,v) (HAK_CLASSOF(hak,v) == (hak_oop_t)(hak)->c_function) +#define HAK_IS_COMPILED_BLOCK(hak,v) (HAK_CLASSOF(hak,v) == (hak_oop_t)(hak)->c_compiled_block) +#define HAK_IS_CLASS(hak,v) (HAK_CLASSOF(hak,v) == (hak_oop_t)(hak)->c_class) +#define HAK_IS_INSTANCE(hak,v) (HAK_OOP_IS_POINTER(v) && HAK_OBJ_GET_FLAGS_BRAND(v) == HAK_BRAND_INSTANCE) +#define HAK_IS_CONS(hak,v) (HAK_CLASSOF(hak,v) == (hak_oop_t)(hak)->c_cons) +#define HAK_IS_CONS_CONCODED(hak,v,concode) (HAK_IS_CONS(hak,v) && HAK_OBJ_GET_FLAGS_CONCODE(v) == (concode)) +#define HAK_IS_ARRAY(hak,v) (HAK_CLASSOF(hak,v) == (hak_oop_t)(hak)->c_array) +#define HAK_IS_BYTEARRAY(hak,v) (HAK_CLASSOF(hak,v) == (hak_oop_t)(hak)->c_byte_array) +#define HAK_IS_DIC(hak,v) (HAK_CLASSOF(hak,v) == (hak_oop_t)(hak)->c_dictionary) +#define HAK_IS_PRIM(hak,v) (HAK_CLASSOF(hak,v) == (hak_oop_t)(hak)->c_primitive) +#define HAK_IS_PBIGINT(hak,v) (HAK_CLASSOF(hak,v) == (hak_oop_t)(hak)->c_large_positive_integer) +#define HAK_IS_NBIGINT(hak,v) (HAK_CLASSOF(hak,v) == (hak_oop_t)(hak)->c_large_negative_integer) +#define HAK_IS_BIGINT(hak,v) (HAK_OOP_IS_POINTER(v) && (HAK_OBJ_GET_CLASS(v) == (hak_oop_t)(hak)->c_large_positive_integer || HAK_OBJ_GET_CLASS(v) == (hak_oop_t)(hak)->c_large_negative_integer)) +#define HAK_IS_FPDEC(hak,v) (HAK_CLASSOF(hak,v) == (hak_oop_t)(hak)->c_fixed_point_decimal) +#define HAK_IS_PROCESS(hak,v) (HAK_CLASSOF(hak,v) == (hak_oop_t)(hak)->c_process) +#define HAK_IS_SEMAPHORE(hak,v) (HAK_CLASSOF(hak,v) == (hak_oop_t)(hak)->c_semaphore) +#define HAK_IS_SEMAPHORE_GROUP(hak,v) (HAK_CLASSOF(hak,v) == (hak_oop_t)(hak)->c_semaphore_group) + +#define HAK_CONS_CAR(v) (((hak_cons_t*)(v))->car) +#define HAK_CONS_CDR(v) (((hak_cons_t*)(v))->cdr) + +typedef int (*hak_dic_walker_t) ( + hak_t* hak, + hak_oop_dic_t dic, + hak_oop_cons_t pair, + void* ctx +); + +typedef int (*hak_xchg_reader_t) ( + hak_t* hak, + void* buf, + hak_oow_t len, + void* ctx +); + +typedef int (*hak_xchg_writer_t) ( + hak_t* hak, + const void* ptr, + hak_oow_t len, + void* ctx +); + +#if defined(__cplusplus) +extern "C" { +#endif + +HAK_EXPORT hak_t* hak_open ( + hak_mmgr_t* mmgr, + hak_oow_t xtnsize, + const hak_vmprim_t* vmprim, + hak_errnum_t* errnum +); + +HAK_EXPORT hak_t* hak_openstdwithmmgr ( + hak_mmgr_t* mmgr, + hak_oow_t xtnsize, + hak_errnum_t* errnum +); + +HAK_EXPORT hak_t* hak_openstd ( + hak_oow_t xtnsize, + hak_errnum_t* errnum +); + +HAK_EXPORT void hak_close ( + hak_t* vm +); + +HAK_EXPORT int hak_init ( + hak_t* hak, + hak_mmgr_t* mmgr, + const hak_vmprim_t* vmprim +); + +HAK_EXPORT void hak_fini ( + hak_t* hak +); + +HAK_EXPORT hak_cmgr_t* hak_getcmgr ( + hak_t* hak +); + +HAK_EXPORT void hak_setcmgr ( + hak_t* hak, + hak_cmgr_t* cmgr +); + +HAK_EXPORT hak_errnum_t hak_geterrnum ( + hak_t* hak +); + +HAK_EXPORT void hak_seterrnum ( + hak_t* hak, + hak_errnum_t errnum +); + +HAK_EXPORT void hak_geterrloc ( + hak_t* hak, + hak_loc_t* loc +); + +HAK_EXPORT void hak_seterrbmsg ( + hak_t* hak, + hak_errnum_t errnum, + const hak_bch_t* errmsg +); + +HAK_EXPORT void hak_seterrumsg ( + hak_t* hak, + hak_errnum_t errnum, + const hak_uch_t* errmsg +); + +HAK_EXPORT void hak_seterrwithsyserr ( + hak_t* hak, + int syserr_type, + int syserr_code +); + +HAK_EXPORT void hak_seterrbfmtwithsyserr ( + hak_t* hak, + int syserr_type, + int syserr_code, + const hak_bch_t* fmt, + ... +); + +HAK_EXPORT void hak_seterrufmtwithsyserr ( + hak_t* hak, + int syserr_type, + int syserr_code, + const hak_uch_t* fmt, + ... +); + +HAK_EXPORT void hak_seterrbfmt ( + hak_t* hak, + hak_errnum_t errnum, + const hak_bch_t* fmt, + ... +); + +HAK_EXPORT void hak_seterrufmt ( + hak_t* hak, + hak_errnum_t errnum, + const hak_uch_t* fmt, + ... +); + +HAK_EXPORT void hak_seterrbfmtloc ( + hak_t* hak, + hak_errnum_t errnum, + const hak_loc_t* loc, + const hak_bch_t* fmt, + ... +); + +HAK_EXPORT void hak_seterrufmtloc ( + hak_t* hak, + hak_errnum_t errnum, + const hak_loc_t* loc, + const hak_uch_t* fmt, + ... +); + +HAK_EXPORT void hak_seterrbfmtv ( + hak_t* hak, + hak_errnum_t errnum, + const hak_bch_t* fmt, + va_list ap +); + +HAK_EXPORT void hak_seterrufmtv ( + hak_t* hak, + hak_errnum_t errnum, + const hak_uch_t* fmt, + va_list ap +); + + +HAK_EXPORT const hak_ooch_t* hak_geterrstr ( + hak_t* hak +); + +HAK_EXPORT const hak_uch_t* hak_geterrumsg ( + hak_t* hak +); + +HAK_EXPORT const hak_bch_t* hak_geterrbmsg ( + hak_t* hak +); + +HAK_EXPORT hak_oow_t hak_copyerrbmsg ( + hak_t* hak, + hak_bch_t* buf, + hak_oow_t len +); + +HAK_EXPORT hak_oow_t hak_copyerrumsg ( + hak_t* hak, + hak_uch_t* buf, + hak_oow_t len +); + +#if defined(HAK_OOCH_IS_UCH) +# define hak_geterrmsg hak_geterrumsg +# define hak_seterrmsg hak_seterrumsg +# define hak_copyerrmsg hak_copyerrumsg +#else +# define hak_geterrmsg hak_geterrbmsg +# define hak_seterrmsg hak_seterrbmsg +# define hak_copyerrmsg hak_copyerrbmsg +#endif + +HAK_EXPORT const hak_ooch_t* hak_backuperrmsg ( + hak_t* hak +); + +HAK_EXPORT int hak_errnum_is_synerr ( + hak_errnum_t errnum +); + +HAK_EXPORT const hak_ooch_t* hak_errnum_to_errstr ( + hak_errnum_t errnum +); + +HAK_EXPORT const hak_bch_t* hak_errnum_to_errbcstr ( + hak_errnum_t errnum, + hak_bch_t* buf, + hak_oow_t len +); + +HAK_EXPORT const hak_uch_t* hak_errnum_to_errucstr ( + hak_errnum_t errnum, + hak_uch_t* buf, + hak_oow_t len +); + +/** + * The hak_getoption() function gets the value of an option + * specified by \a id into the buffer pointed to by \a value. + * + * \return 0 on success, -1 on failure + */ +HAK_EXPORT int hak_getoption ( + hak_t* hak, + hak_option_t id, + void* value +); + +/** + * The hak_setoption() function sets the value of an option + * specified by \a id to the value pointed to by \a value. + * + * \return 0 on success, -1 on failure + */ +HAK_EXPORT int hak_setoption ( + hak_t* hak, + hak_option_t id, + const void* value +); + +HAK_EXPORT hak_cb_t* hak_regcb ( + hak_t* hak, + hak_cb_t* tmpl +); + +HAK_EXPORT void hak_deregcb ( + hak_t* hak, + hak_cb_t* cb +); + +/** + * The hak_gc() function performs garbage collection. + * It is not affected by #HAK_TRAIT_NOGC. + */ +HAK_EXPORT void hak_gc ( + hak_t* hak, + int full +); + + +/** + * The hak_moveoop() function is used to move a live object to a new + * location in hak_gc(). When hak_gc() invokes registered gc callbacks, + * you may call this function to protect extra objects you might have + * allocated manually. + */ +hak_oop_t hak_moveoop ( + hak_t* hak, + hak_oop_t oop +); + +HAK_EXPORT hak_oop_t hak_shallowcopy ( + hak_t* hak, + hak_oop_t oop +); + +/** + * The hak_ignite() function creates key initial objects. + */ +HAK_EXPORT int hak_ignite ( + hak_t* hak, + hak_oow_t heapsize +); + +HAK_EXPORT int hak_addbuiltinprims ( + hak_t* hak +); + +/** + * The hak_execute() function executes an activated context. + */ +HAK_EXPORT hak_oop_t hak_execute ( + hak_t* hak +); + +HAK_EXPORT void hak_abort ( + hak_t* hak +); + + +#if defined(HAK_HAVE_INLINE) + static HAK_INLINE void hak_switchprocess (hak_t* hak) { hak->switch_proc = 1; } +#else +# define hak_switchprocess(hak) ((hak)->switch_proc = 1) +#endif + +HAK_EXPORT void hak_setbasesrloc ( + hak_t* hak, + hak_oow_t line, + hak_oow_t colm +); + +/* if you should read charcters from the input stream before hak_read(), + * you can call hak_readbasesrchar() */ +HAK_EXPORT hak_lxc_t* hak_readbasesrchar ( + hak_t* hak +); + +HAK_EXPORT int hak_attachccio ( + hak_t* hak, + hak_io_impl_t cci_rdr +); + +HAK_EXPORT void hak_detachccio ( + hak_t* hak +); + +HAK_EXPORT int hak_attachudio ( + hak_t* hak, + hak_io_impl_t udi_rdr, + hak_io_impl_t udo_wrtr +); + +HAK_EXPORT void hak_detachudio ( + hak_t* hak +); + + +HAK_EXPORT int hak_attachcciostdwithucstr ( + hak_t* hak, + const hak_uch_t* cci_file +); + +HAK_EXPORT int hak_attachcciostdwithbcstr ( + hak_t* hak, + const hak_bch_t* cci_file +); + +HAK_EXPORT int hak_attachudiostdwithucstr ( + hak_t* hak, + const hak_uch_t* udi_file, + const hak_uch_t* udo_file +); + +HAK_EXPORT int hak_attachudiostdwithbcstr ( + hak_t* hak, + const hak_bch_t* udi_file, + const hak_bch_t* udo_file +); + +HAK_EXPORT void hak_detachio ( + hak_t* hak +); + +HAK_EXPORT void hak_flushudio ( + hak_t* hak +); + +HAK_EXPORT int hak_print ( + hak_t* hak, + hak_oop_t obj +); + +HAK_EXPORT hak_ooi_t hak_proutbfmt ( + hak_t* hak, + hak_bitmask_t mask, + const hak_bch_t* fmt, + ... +); + +HAK_EXPORT hak_ooi_t hak_proutufmt ( + hak_t* hak, + hak_bitmask_t mask, + const hak_uch_t* fmt, + ... +); + +#if defined(HAK_INCLUDE_COMPILER) + +HAK_EXPORT void hak_freecnode ( + hak_t* hak, + hak_cnode_t* cnode +); + +HAK_EXPORT int hak_beginfeed ( + hak_t* hak, + hak_on_cnode_t on_cnode +); + +HAK_EXPORT int hak_feed ( + hak_t* hak, + const hak_ooch_t* data, + hak_oow_t len +); + +HAK_EXPORT int hak_feeduchars ( + hak_t* hak, + const hak_uch_t* data, + hak_oow_t len +); + +HAK_EXPORT int hak_feedbchars ( + hak_t* hak, + const hak_bch_t* data, + hak_oow_t len +); + +HAK_EXPORT int hak_feedpending ( + hak_t* hak +); + +HAK_EXPORT void hak_resetfeed ( + hak_t* hak +); + +HAK_EXPORT void hak_resetfeedloc ( + hak_t* hak +); + +HAK_EXPORT void hak_getfeedloc ( + hak_t* hak, + hak_loc_t* loc +); + +HAK_EXPORT int hak_endfeed ( + hak_t* hak +); + +HAK_EXPORT int hak_compile ( + hak_t* hak, + hak_cnode_t* obj, + int flags +); +#endif + +HAK_EXPORT int hak_addliteraltocode ( + hak_t* hak, + hak_code_t* code, + hak_oop_t obj, + hak_oow_t lfbase, + hak_oow_t* index +); + +/** + * The hak_brewcode() initializes the structure pointed to by \a code partially or entirely. + * The part already initialized is not destroyed and/or reinitialized. + */ +HAK_EXPORT int hak_brewcode ( + hak_t* hak, + hak_code_t* code +); + +/** + * The hak_purgecode() function cleans up the data held in code space memory + * pointed to by \a code. + */ +HAK_EXPORT void hak_purgecode ( + hak_t* hak, + hak_code_t* code +); + +/** + * The hak_decode() function decodes instructions from the position + * \a start to the position \a end - 1, and prints the decoded instructions + * in the textual form. + */ +HAK_EXPORT int hak_decode ( + hak_t* hak, + const hak_code_t* code, + hak_oow_t start, + hak_oow_t end +); + +/** + * The hak_resetcode() function some internal states back to the initial state. + * The affected internal states include byte code buffer, literal frame, + * ordinary global variables. You should take extra precaution as it is + * a risky function. For instance, a global variable inserted manually + * with hak_putatsysdic() gets deleted if the kernel bit is not set on + * the variable symbol. + */ +HAK_EXPORT void hak_resetcode ( + hak_t* hak +); + +HAK_EXPORT void hak_clearcode ( + hak_t* hak +); + +#define HAK_XTN(hak) ((void*)((hak_uint8_t*)hak + ((hak_t*)hak)->_instsize)) +#define HAK_MMGR(hak) (((hak_t*)(hak))->_mmgr) +#define HAK_CMGR(hak) (((hak_t*)(hak))->_cmgr) +#define HAK_ERRNUM(hak) (((hak_t*)(hak))->errnum) + +void* hak_getxtn ( + hak_t* hak +); + + +#if defined(HAK_HAVE_INLINE) +static HAK_INLINE hak_code_t* hak_getcode (hak_t* hak) { return &hak->code; } +static HAK_INLINE hak_oob_t* hak_getbcptr (hak_t* hak) { return hak->code.bc.ptr; } +static HAK_INLINE hak_oow_t hak_getbclen (hak_t* hak) { return hak->code.bc.len; } +static HAK_INLINE hak_oow_t hak_getlflen (hak_t* hak) { return hak->code.lit.len; } +static HAK_INLINE hak_oow_t hak_getngtmprs (hak_t* hak) { return hak->code.ngtmprs; } +static HAK_INLINE hak_ooi_t hak_getip (hak_t* hak) { return hak->ip; } +#else +# define hak_getcode(hak) (&(hak)->code) +# define hak_getbcptr(hak) ((hak)->code.bc.ptr) +# define hak_getbclen(hak) ((hak)->code.bc.len) +# define hak_getlflen(hak) ((hak)->code.lit.len) +# define hak_getngtmprs(hak) ((hak)->code.ngtmprs) +# define hak_getip(hak) ((hak)->ip) +#endif + +/* ========================================================================= + * SYNTAX ERROR HANDLING + * ========================================================================= */ +HAK_EXPORT void hak_getsynerr ( + hak_t* hak, + hak_synerr_t* synerr +); + +HAK_EXPORT hak_synerrnum_t hak_getsynerrnum ( + hak_t* hak +); + +HAK_EXPORT void hak_setsynerrbfmt ( + hak_t* hak, + hak_synerrnum_t num, + const hak_loc_t* loc, + const hak_oocs_t* tgt, + const hak_bch_t* msgfmt, + ... +); + +HAK_EXPORT void hak_setsynerrufmt ( + hak_t* hak, + hak_synerrnum_t num, + const hak_loc_t* loc, + const hak_oocs_t* tgt, + const hak_uch_t* msgfmt, + ... +); + +#if defined(HAK_HAVE_INLINE) +static HAK_INLINE void hak_setsynerr (hak_t* hak, hak_synerrnum_t num, const hak_loc_t* loc, const hak_oocs_t* tgt) +{ + hak_setsynerrbfmt (hak, num, loc, tgt, HAK_NULL); +} +#else +# define hak_setsynerr(hak,num,loc,tgt) hak_setsynerrbfmt(hak,num,loc,tgt,HAK_NULL) +#endif + +/* ========================================================================= + * TEMPORARY OOP MANAGEMENT FUNCTIONS + * ========================================================================= */ +HAK_EXPORT void hak_pushvolat ( + hak_t* hak, + hak_oop_t* oop_ptr +); + +HAK_EXPORT void hak_popvolat ( + hak_t* hak +); + +HAK_EXPORT void hak_popvolats ( + hak_t* hak, + hak_oow_t count +); + +/* ========================================================================= + * SYSTEM MEMORY MANAGEMENT FUCNTIONS VIA MMGR + * ========================================================================= */ +HAK_EXPORT void* hak_allocmem ( + hak_t* hak, + hak_oow_t size +); + +HAK_EXPORT void* hak_callocmem ( + hak_t* hak, + hak_oow_t size +); + +HAK_EXPORT void* hak_reallocmem ( + hak_t* hak, + void* ptr, + hak_oow_t size +); + +HAK_EXPORT void hak_freemem ( + hak_t* hak, + void* ptr +); + + +/* ========================================================================= + * PRIMITIVE FUNCTION MANIPULATION + * ========================================================================= */ +HAK_EXPORT hak_pfbase_t* hak_findpfbase ( + hak_t* hak, + hak_pfinfo_t* pfinfo, + hak_oow_t pfcount, + const hak_ooch_t* name, + hak_oow_t namelen +); + + +/* ========================================================================= + * LOGGING + * ========================================================================= */ + +HAK_EXPORT hak_ooi_t hak_logbfmt ( + hak_t* hak, + hak_bitmask_t mask, + const hak_bch_t* fmt, + ... +); + +HAK_EXPORT hak_ooi_t hak_logbfmtv ( + hak_t* hak, + hak_bitmask_t mask, + const hak_bch_t* fmt, + va_list ap +); + +HAK_EXPORT hak_ooi_t hak_logufmt ( + hak_t* hak, + hak_bitmask_t mask, + const hak_uch_t* fmt, + ... +); + +HAK_EXPORT hak_ooi_t hak_logufmtv ( + hak_t* hak, + hak_bitmask_t mask, + const hak_uch_t* fmt, + va_list ap +); + +#if defined(HAK_OOCH_IS_UCH) +# define hak_logoofmt hak_logufmt +# define hak_logoofmtv hak_logufmtv +#else +# define hak_logoofmt hak_logbfmt +# define hak_logoofmtv hak_logbfmtv +#endif + +HAK_EXPORT hak_ooi_t hak_prbfmt ( + hak_t* hak, + const hak_bch_t* fmt, + ... +); + +HAK_EXPORT hak_ooi_t hak_prbfmtv ( + hak_t* hak, + const hak_bch_t* fmt, + va_list ap +); + +HAK_EXPORT hak_ooi_t hak_prufmt ( + hak_t* hak, + const hak_uch_t* fmt, + ... +); + +HAK_EXPORT hak_ooi_t hak_prufmtv ( + hak_t* hak, + const hak_uch_t* fmt, + va_list ap +); + +#if defined(HAK_OOCH_IS_UCH) +# define hak_proofmt hak_prufmt +# define hak_proofmtv hak_prufmtv +#else +# define hak_proofmt hak_prbfmt +# define hak_proofmtv hak_prbfmtv +#endif + + +/* ========================================================================= + * STRING FORMATTING + * ========================================================================= */ + +HAK_EXPORT hak_oow_t hak_vfmttoucstr ( + hak_t* hak, + hak_uch_t* buf, + hak_oow_t bufsz, + const hak_uch_t* fmt, + va_list ap +); + +HAK_EXPORT hak_oow_t hak_fmttoucstr ( + hak_t* hak, + hak_uch_t* buf, + hak_oow_t bufsz, + const hak_uch_t* fmt, + ... +); + +HAK_EXPORT hak_oow_t hak_vfmttobcstr ( + hak_t* hak, + hak_bch_t* buf, + hak_oow_t bufsz, + const hak_bch_t* fmt, + va_list ap +); + +HAK_EXPORT hak_oow_t hak_fmttobcstr ( + hak_t* hak, + hak_bch_t* buf, + hak_oow_t bufsz, + const hak_bch_t* fmt, + ... +); + +#if defined(HAK_OOCH_IS_UCH) +# define hak_vfmttooocstr hak_vfmttoucstr +# define hak_fmttooocstr hak_fmttoucstr +#else +# define hak_vfmttooocstr hak_vfmttobcstr +# define hak_fmttooocstr hak_fmttobcstr +#endif + + +/* ========================================================================= + * OBJECT MANAGEMENT + * ========================================================================= */ +HAK_EXPORT hak_oop_t hak_hatchundef ( + hak_t* hak +); + +HAK_EXPORT hak_oop_t hak_hatchnil ( + hak_t* hak +); + +HAK_EXPORT hak_oop_t hak_instantiate ( + hak_t* hak, + hak_oop_class_t _class, + const void* vptr, + hak_oow_t vlen +); + +HAK_EXPORT hak_oop_t hak_makecons ( + hak_t* hak, + hak_oop_t car, + hak_oop_t cdr +); + +HAK_EXPORT hak_oop_t hak_makearray ( + hak_t* hak, + hak_oow_t len +); + +HAK_EXPORT hak_oop_t hak_makechararray ( + hak_t* hak, + const hak_ooch_t* ptr, + hak_oow_t len +); + +HAK_EXPORT hak_oop_t hak_makebytearray ( + hak_t* hak, + const hak_oob_t* ptr, + hak_oow_t len +); + +HAK_EXPORT hak_oop_t hak_makebytestringwithbytes ( + hak_t* hak, + const hak_oob_t* ptr, + hak_oow_t len +); + +HAK_EXPORT hak_oop_t hak_makebytestring ( + hak_t* hak, + const hak_ooch_t* ptr, + hak_oow_t len +); + +HAK_EXPORT hak_oop_t hak_makestring ( + hak_t* hak, + const hak_ooch_t* ptr, + hak_oow_t len +); + +HAK_EXPORT hak_oop_t hak_makefpdec ( + hak_t* hak, + hak_oop_t value, + hak_ooi_t scale +); + +HAK_EXPORT hak_oop_t hak_makedic ( + hak_t* hak, + hak_oow_t inisize /* initial bucket size */ +); + +HAK_EXPORT hak_oop_t hak_makeclass ( + hak_t* hak, + hak_oop_t name, + hak_oop_t superclass, + hak_ooi_t spec, + hak_ooi_t selfspec, + hak_oop_t ivars_str, + hak_oop_t cvars_str +); + +HAK_EXPORT void hak_freengcobj ( + hak_t* hak, + hak_oop_t obj +); + +HAK_EXPORT hak_oop_t hak_makengcbytearray ( + hak_t* hak, + const hak_oob_t* ptr, + hak_oow_t len +); + +HAK_EXPORT hak_oop_t hak_remakengcbytearray ( + hak_t* hak, + hak_oop_t obj, + hak_oow_t newsz +); + +HAK_EXPORT hak_oop_t hak_makengcarray ( + hak_t* hak, + hak_oow_t len +); + +HAK_EXPORT hak_oop_t hak_remakengcarray ( + hak_t* hak, + hak_oop_t obj, + hak_oow_t newsz +); + +HAK_EXPORT hak_oop_t hak_makeprim ( + hak_t* hak, + hak_pfimpl_t primimpl, + hak_oow_t minargs, + hak_oow_t maxargs, + hak_mod_t* mod +); + +HAK_EXPORT hak_oop_t hak_oowtoint ( + hak_t* hak, + hak_oow_t w +); + +HAK_EXPORT hak_oop_t hak_ooitoint ( + hak_t* hak, + hak_ooi_t i +); + +HAK_EXPORT int hak_inttooow_noseterr ( + hak_t* hak, + hak_oop_t x, + hak_oow_t* w +); + +HAK_EXPORT int hak_inttooow ( + hak_t* hak, + hak_oop_t x, + hak_oow_t* w +); + +HAK_EXPORT int hak_inttoooi_noseterr ( + hak_t* hak, + hak_oop_t x, + hak_ooi_t* i +); + +HAK_EXPORT int hak_inttoooi ( + hak_t* hak, + hak_oop_t x, + hak_ooi_t* i +); + +#if (HAK_SIZEOF_UINTMAX_T == HAK_SIZEOF_OOW_T) +# define hak_inttouintmax_noseterr hak_inttooow_noseterr +# define hak_inttouintmax hak_inttooow +# define hak_inttointmax_noseterr hak_inttoooi_noseterr +# define hak_inttointmax hak_inttoooi +# define hak_uintmaxtoint hak_oowtoint +# define hak_intmaxtoint hak_ooitoint +#else + +HAK_EXPORT hak_oop_t hak_intmaxtoint ( + hak_t* hak, + hak_intmax_t i +); + +HAK_EXPORT hak_oop_t hak_uintmaxtoint ( + hak_t* hak, + hak_uintmax_t i +); + +HAK_EXPORT int hak_inttouintmax_noseterr ( + hak_t* hak, + hak_oop_t x, + hak_uintmax_t* w +); + +HAK_EXPORT int hak_inttouintmax ( + hak_t* hak, + hak_oop_t x, + hak_uintmax_t* w +); + +HAK_EXPORT int hak_inttointmax_noseterr ( + hak_t* hak, + hak_oop_t x, + hak_intmax_t* i +); + +HAK_EXPORT int hak_inttointmax ( + hak_t* hak, + hak_oop_t x, + hak_intmax_t* i +); +#endif + +/* ========================================================================= + * CONS OBJECT UTILITIES + * ========================================================================= */ +HAK_EXPORT hak_oow_t hak_countcons ( + hak_t* hak, + hak_oop_t cons +); + + +HAK_EXPORT hak_oop_t hak_getlastconscdr ( + hak_t* hak, + hak_oop_t cons +); + +HAK_EXPORT hak_oop_t hak_reversecons ( + hak_t* hak, + hak_oop_t cons +); + + +/* ========================================================================= + * CODE MARSHALING/UNMARSHALING + * ========================================================================= */ +HAK_EXPORT int hak_marshalcode ( + hak_t* hak, + const hak_code_t* code, + hak_xchg_writer_t wrtr, + void* ctx +); + +HAK_EXPORT int hak_unmarshalcode ( + hak_t* hak, + hak_code_t* code, + hak_xchg_reader_t rdr, + void* ctx +); + +HAK_EXPORT int hak_marshalcodetomem ( + hak_t* hak, + const hak_code_t* code, + hak_ptlc_t* dst +); + +HAK_EXPORT int hak_unmarshalcodefrommem ( + hak_t* hak, + hak_code_t* code, + const hak_ptl_t* src +); + +/* ========================================================================= + * DICTIONARY ACCESS FUNCTIONS + * ========================================================================= */ +HAK_EXPORT hak_oop_cons_t hak_putatsysdic ( + hak_t* hak, + hak_oop_t key, + hak_oop_t value +); + +HAK_EXPORT hak_oop_cons_t hak_getatsysdic ( + hak_t* hak, + hak_oop_t key +); + +HAK_EXPORT hak_oop_cons_t hak_lookupsysdicforsymbol ( + hak_t* hak, + const hak_oocs_t* name +); + +HAK_EXPORT hak_oop_cons_t hak_lookupsysdicforsymbol_noseterr ( + hak_t* hak, + const hak_oocs_t* name +); + +HAK_EXPORT int hak_zapatsysdic ( + hak_t* hak, + hak_oop_t key +); + +HAK_EXPORT hak_oop_cons_t hak_lookupdicforsymbol ( + hak_t* hak, + hak_oop_dic_t dic, + const hak_oocs_t* name +); + +HAK_EXPORT hak_oop_cons_t hak_lookupdicforsymbol_noseterr ( + hak_t* hak, + hak_oop_dic_t dic, + const hak_oocs_t* name +); + +HAK_EXPORT hak_oop_cons_t hak_putatdic ( + hak_t* hak, + hak_oop_dic_t dic, + hak_oop_t key, + hak_oop_t value +); + +HAK_EXPORT hak_oop_cons_t hak_getatdic ( + hak_t* hak, + hak_oop_dic_t dic, + hak_oop_t key +); + + +HAK_EXPORT int hak_zapatdic ( + hak_t* hak, + hak_oop_dic_t dic, + hak_oop_t key +); + +HAK_EXPORT int hak_walkdic ( + hak_t* hak, + hak_oop_dic_t dic, + hak_dic_walker_t walker, + void* ctx +); + + + +/* ========================================================================= + * OBJECT HASHING AND COMPARISION + * ========================================================================= */ + +HAK_EXPORT int hak_hashobj ( + hak_t* hak, + hak_oop_t obj, + hak_oow_t* xhv +); + +HAK_EXPORT int hak_equalobjs ( + hak_t* hak, + hak_oop_t rcv, + hak_oop_t arg +); + + +/* ========================================================================= + * STRING ENCODING CONVERSION + * ========================================================================= */ + +#if defined(HAK_OOCH_IS_UCH) +# define hak_convootobchars(hak,oocs,oocslen,bcs,bcslen) hak_convutobchars(hak,oocs,oocslen,bcs,bcslen) +# define hak_convbtooochars(hak,bcs,bcslen,oocs,oocslen) hak_convbtouchars(hak,bcs,bcslen,oocs,oocslen) +# define hak_convootobcstr(hak,oocs,oocslen,bcs,bcslen) hak_convutobcstr(hak,oocs,oocslen,bcs,bcslen) +# define hak_convbtooocstr(hak,bcs,bcslen,oocs,oocslen) hak_convbtoucstr(hak,bcs,bcslen,oocs,oocslen) +#else +# define hak_convootouchars(hak,oocs,oocslen,ucs,ucslen) hak_convbtouchars(hak,oocs,oocslen,ucs,ucslen) +# define hak_convutooochars(hak,ucs,ucslen,oocs,oocslen) hak_convutobchars(hak,ucs,ucslen,oocs,oocslen) +# define hak_convootoucstr(hak,oocs,oocslen,ucs,ucslen) hak_convbtoucstr(hak,oocs,oocslen,ucs,ucslen) +# define hak_convutooocstr(hak,ucs,ucslen,oocs,oocslen) hak_convutobcstr(hak,ucs,ucslen,oocs,oocslen) +#endif + +HAK_EXPORT int hak_convbtouchars ( + hak_t* hak, + const hak_bch_t* bcs, + hak_oow_t* bcslen, + hak_uch_t* ucs, + hak_oow_t* ucslen +); + +HAK_EXPORT int hak_convutobchars ( + hak_t* hak, + const hak_uch_t* ucs, + hak_oow_t* ucslen, + hak_bch_t* bcs, + hak_oow_t* bcslen +); + + +/** + * The hak_convbtoucstr() function converts a null-terminated byte string + * to a wide string. + */ +HAK_EXPORT int hak_convbtoucstr ( + hak_t* hak, + const hak_bch_t* bcs, + hak_oow_t* bcslen, + hak_uch_t* ucs, + hak_oow_t* ucslen +); + + +/** + * The hak_convutobcstr() function converts a null-terminated wide string + * to a byte string. + */ +HAK_EXPORT int hak_convutobcstr ( + hak_t* hak, + const hak_uch_t* ucs, + hak_oow_t* ucslen, + hak_bch_t* bcs, + hak_oow_t* bcslen +); + +#if defined(HAK_OOCH_IS_UCH) +# define hak_dupootobcharswithheadroom(hak,hrb,oocs,oocslen,bcslen) hak_duputobcharswithheadroom(hak,hrb,oocs,oocslen,bcslen) +# define hak_dupbtooocharswithheadroom(hak,hrb,bcs,bcslen,oocslen) hak_dupbtoucharswithheadroom(hak,hrb,bcs,bcslen,oocslen) +# define hak_dupootobchars(hak,oocs,oocslen,bcslen) hak_duputobchars(hak,oocs,oocslen,bcslen) +# define hak_dupbtooochars(hak,bcs,bcslen,oocslen) hak_dupbtouchars(hak,bcs,bcslen,oocslen) + +# define hak_dupootobcstrwithheadroom(hak,hrb,oocs,bcslen) hak_duputobcstrwithheadroom(hak,hrb,oocs,bcslen) +# define hak_dupbtooocstrwithheadroom(hak,hrb,bcs,oocslen) hak_dupbtoucstrwithheadroom(hak,hrb,bcs,oocslen) +# define hak_dupootobcstr(hak,oocs,bcslen) hak_duputobcstr(hak,oocs,bcslen) +# define hak_dupbtooocstr(hak,bcs,oocslen) hak_dupbtoucstr(hak,bcs,oocslen) + +# define hak_dupootoucstr(hak,oocs,ucslen) hak_dupucstr(hak,oocs,ucslen) +# define hak_duputooocstr(hak,ucs,oocslen) hak_dupucstr(hak,ucs,oocslen) +#else +# define hak_dupootoucharswithheadroom(hak,hrb,oocs,oocslen,ucslen) hak_dupbtoucharswithheadroom(hak,hrb,oocs,oocslen,ucslen) +# define hak_duputooocharswithheadroom(hak,hrb,ucs,ucslen,oocslen) hak_duputobcharswithheadroom(hak,hrb,ucs,ucslen,oocslen) +# define hak_dupootouchars(hak,oocs,oocslen,ucslen) hak_dupbtouchars(hak,oocs,oocslen,ucslen) +# define hak_duputooochars(hak,ucs,ucslen,oocslen) hak_duputobchars(hak,ucs,ucslen,oocslen) + +# define hak_dupootoucstrwithheadroom(hak,hrb,oocs,ucslen) hak_dupbtoucstrwithheadroom(hak,hrb,oocs,ucslen) +# define hak_duputooocstrwithheadroom(hak,hrb,ucs,oocslen) hak_duputobcstrwithheadroom(hak,hrb,ucs,oocslen) +# define hak_dupootoucstr(hak,oocs,ucslen) hak_dupbtoucstr(hak,oocs,ucslen) +# define hak_duputooocstr(hak,ucs,oocslen) hak_duputobcstr(hak,ucs,oocslen) + +# define hak_dupootobcstr(hak,oocs,bcslen) hak_dupbcstr(hak,oocs,bcslen) +# define hak_dupbtooocstr(hak,bcs,oocslen) hak_dupbcstr(hak,bcs,oocslen) +#endif + + +HAK_EXPORT hak_uch_t* hak_dupbtoucharswithheadroom ( + hak_t* hak, + hak_oow_t headroom_bytes, + const hak_bch_t* bcs, + hak_oow_t bcslen, + hak_oow_t* ucslen +); + +HAK_EXPORT hak_bch_t* hak_duputobcharswithheadroom ( + hak_t* hak, + hak_oow_t headroom_bytes, + const hak_uch_t* ucs, + hak_oow_t ucslen, + hak_oow_t* bcslen +); + +HAK_EXPORT hak_uch_t* hak_dupbtouchars ( + hak_t* hak, + const hak_bch_t* bcs, + hak_oow_t bcslen, + hak_oow_t* ucslen +); + +HAK_EXPORT hak_bch_t* hak_duputobchars ( + hak_t* hak, + const hak_uch_t* ucs, + hak_oow_t ucslen, + hak_oow_t* bcslen +); + + +HAK_EXPORT hak_uch_t* hak_dupbtoucstrwithheadroom ( + hak_t* hak, + hak_oow_t headroom_bytes, + const hak_bch_t* bcs, + hak_oow_t* ucslen +); + +HAK_EXPORT hak_bch_t* hak_duputobcstrwithheadroom ( + hak_t* hak, + hak_oow_t headroom_bytes, + const hak_uch_t* ucs, + hak_oow_t* bcslen +); + +HAK_EXPORT hak_uch_t* hak_dupbtoucstr ( + hak_t* hak, + const hak_bch_t* bcs, + hak_oow_t* ucslen /* optional: length of returned string */ +); + +HAK_EXPORT hak_bch_t* hak_duputobcstr ( + hak_t* hak, + const hak_uch_t* ucs, + hak_oow_t* bcslen /* optional: length of returned string */ +); + + +#if defined(HAK_OOCH_IS_UCH) +# define hak_dupoochars(hak,oocs,oocslen) hak_dupuchars(hak,oocs,oocslen) +# define hak_dupoocstr(hak,oocs,oocslen) hak_dupucstr(hak,oocs,oocslen) +#else +# define hak_dupoochars(hak,oocs,oocslen) hak_dupbchars(hak,oocs,oocslen) +# define hak_dupoocstr(hak,oocs,oocslen) hak_dupbcstr(hak,oocs,oocslen) +#endif + +HAK_EXPORT hak_uch_t* hak_dupuchars ( + hak_t* hak, + const hak_uch_t* ucs, + hak_oow_t ucslen +); + +HAK_EXPORT hak_bch_t* hak_dupbchars ( + hak_t* hak, + const hak_bch_t* bcs, + hak_oow_t bcslen +); + +HAK_EXPORT hak_uch_t* hak_dupucstr ( + hak_t* hak, + const hak_uch_t* ucs, + hak_oow_t* ucslen +); + +HAK_EXPORT hak_bch_t* hak_dupbcstr ( + hak_t* hak, + const hak_bch_t* bcs, + hak_oow_t* bcslen +); + +/* ========================================================================= + * ASSERTION SUPPORT + * ========================================================================= */ +HAK_EXPORT void hak_assertfailed ( + hak_t* hak, + const hak_bch_t* expr, + const hak_bch_t* file, + hak_oow_t line +); + + +/* ========================================================================= + * HELPERS + * ========================================================================= */ +HAK_EXPORT void hak_start_ticker ( + void +); + +HAK_EXPORT void hak_stop_ticker ( + void +); + +HAK_EXPORT void hak_catch_termreq ( + void +); + +HAK_EXPORT void hak_uncatch_termreq ( + void +); + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/lib/hcl-chr.h b/lib/hcl-chr.h deleted file mode 100644 index fd15e15..0000000 --- a/lib/hcl-chr.h +++ /dev/null @@ -1,334 +0,0 @@ -/* - Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _HCL_CHR_H_ -#define _HCL_CHR_H_ - -#include - -enum hcl_ooch_prop_t -{ - HCL_OOCH_PROP_UPPER = (1 << 0), -#define HCL_UCH_PROP_UPPER HCL_OOCH_PROP_UPPER -#define HCL_BCH_PROP_UPPER HCL_OOCH_PROP_UPPER - - HCL_OOCH_PROP_LOWER = (1 << 1), -#define HCL_UCH_PROP_LOWER HCL_OOCH_PROP_LOWER -#define HCL_BCH_PROP_LOWER HCL_OOCH_PROP_LOWER - - HCL_OOCH_PROP_ALPHA = (1 << 2), -#define HCL_UCH_PROP_ALPHA HCL_OOCH_PROP_ALPHA -#define HCL_BCH_PROP_ALPHA HCL_OOCH_PROP_ALPHA - - HCL_OOCH_PROP_DIGIT = (1 << 3), -#define HCL_UCH_PROP_DIGIT HCL_OOCH_PROP_DIGIT -#define HCL_BCH_PROP_DIGIT HCL_OOCH_PROP_DIGIT - - HCL_OOCH_PROP_XDIGIT = (1 << 4), -#define HCL_UCH_PROP_XDIGIT HCL_OOCH_PROP_XDIGIT -#define HCL_BCH_PROP_XDIGIT HCL_OOCH_PROP_XDIGIT - - HCL_OOCH_PROP_ALNUM = (1 << 5), -#define HCL_UCH_PROP_ALNUM HCL_OOCH_PROP_XDIGIT -#define HCL_BCH_PROP_ALNUM HCL_OOCH_PROP_XDIGIT - - HCL_OOCH_PROP_SPACE = (1 << 6), -#define HCL_UCH_PROP_SPACE HCL_OOCH_PROP_SPACE -#define HCL_BCH_PROP_SPACE HCL_OOCH_PROP_SPACE - - HCL_OOCH_PROP_PRINT = (1 << 8), -#define HCL_UCH_PROP_PRINT HCL_OOCH_PROP_PRINT -#define HCL_BCH_PROP_PRINT HCL_OOCH_PROP_PRINT - - HCL_OOCH_PROP_GRAPH = (1 << 9), -#define HCL_UCH_PROP_GRAPH HCL_OOCH_PROP_GRAPH -#define HCL_BCH_PROP_GRAPH HCL_OOCH_PROP_GRAPH - - HCL_OOCH_PROP_CNTRL = (1 << 10), -#define HCL_UCH_PROP_CNTRL HCL_OOCH_PROP_CNTRL -#define HCL_BCH_PROP_CNTRL HCL_OOCH_PROP_CNTRL - - HCL_OOCH_PROP_PUNCT = (1 << 11), -#define HCL_UCH_PROP_PUNCT HCL_OOCH_PROP_PUNCT -#define HCL_BCH_PROP_PUNCT HCL_OOCH_PROP_PUNCT - - HCL_OOCH_PROP_BLANK = (1 << 12) -#define HCL_UCH_PROP_BLANK HCL_OOCH_PROP_BLANK -#define HCL_BCH_PROP_BLANK HCL_OOCH_PROP_BLANK -}; - -typedef enum hcl_ooch_prop_t hcl_ooch_prop_t; -typedef enum hcl_ooch_prop_t hcl_uch_prop_t; -typedef enum hcl_ooch_prop_t hcl_bch_prop_t; - -#if defined(__cplusplus) -extern "C" { -#endif - -HCL_EXPORT int hcl_is_uch_type (hcl_uch_t c, hcl_uch_prop_t type); -HCL_EXPORT int hcl_is_uch_upper (hcl_uch_t c); -HCL_EXPORT int hcl_is_uch_lower (hcl_uch_t c); -HCL_EXPORT int hcl_is_uch_alpha (hcl_uch_t c); -HCL_EXPORT int hcl_is_uch_digit (hcl_uch_t c); -HCL_EXPORT int hcl_is_uch_xdigit (hcl_uch_t c); -HCL_EXPORT int hcl_is_uch_alnum (hcl_uch_t c); -HCL_EXPORT int hcl_is_uch_space (hcl_uch_t c); -HCL_EXPORT int hcl_is_uch_print (hcl_uch_t c); -HCL_EXPORT int hcl_is_uch_graph (hcl_uch_t c); -HCL_EXPORT int hcl_is_uch_cntrl (hcl_uch_t c); -HCL_EXPORT int hcl_is_uch_punct (hcl_uch_t c); -HCL_EXPORT int hcl_is_uch_blank (hcl_uch_t c); -HCL_EXPORT hcl_uch_t hcl_to_uch_upper (hcl_uch_t c); -HCL_EXPORT hcl_uch_t hcl_to_uch_lower (hcl_uch_t c); - - -/* ------------------------------------------------------------------------- */ - -HCL_EXPORT int hcl_is_bch_type (hcl_bch_t c, hcl_bch_prop_t type); - -#if defined(__has_builtin) -# if __has_builtin(__builtin_isupper) -# define hcl_is_bch_upper __builtin_isupper -# endif -# if __has_builtin(__builtin_islower) -# define hcl_is_bch_lower __builtin_islower -# endif -# if __has_builtin(__builtin_isalpha) -# define hcl_is_bch_alpha __builtin_isalpha -# endif -# if __has_builtin(__builtin_isdigit) -# define hcl_is_bch_digit __builtin_isdigit -# endif -# if __has_builtin(__builtin_isxdigit) -# define hcl_is_bch_xdigit __builtin_isxdigit -# endif -# if __has_builtin(__builtin_isalnum) -# define hcl_is_bch_alnum __builtin_isalnum -# endif -# if __has_builtin(__builtin_isspace) -# define hcl_is_bch_space __builtin_isspace -# endif -# if __has_builtin(__builtin_isprint) -# define hcl_is_bch_print __builtin_isprint -# endif -# if __has_builtin(__builtin_isgraph) -# define hcl_is_bch_graph __builtin_isgraph -# endif -# if __has_builtin(__builtin_iscntrl) -# define hcl_is_bch_cntrl __builtin_iscntrl -# endif -# if __has_builtin(__builtin_ispunct) -# define hcl_is_bch_punct __builtin_ispunct -# endif -# if __has_builtin(__builtin_isblank) -# define hcl_is_bch_blank __builtin_isblank -# endif -# if __has_builtin(__builtin_toupper) -# define hcl_to_bch_upper __builtin_toupper -# endif -# if __has_builtin(__builtin_tolower) -# define hcl_to_bch_lower __builtin_tolower -# endif -#elif (__GNUC__ >= 4) -# define hcl_is_bch_upper __builtin_isupper -# define hcl_is_bch_lower __builtin_islower -# define hcl_is_bch_alpha __builtin_isalpha -# define hcl_is_bch_digit __builtin_isdigit -# define hcl_is_bch_xdigit __builtin_isxdigit -# define hcl_is_bch_alnum __builtin_isalnum -# define hcl_is_bch_space __builtin_isspace -# define hcl_is_bch_print __builtin_isprint -# define hcl_is_bch_graph __builtin_isgraph -# define hcl_is_bch_cntrl __builtin_iscntrl -# define hcl_is_bch_punct __builtin_ispunct -# define hcl_is_bch_blank __builtin_isblank -# define hcl_to_bch_upper __builtin_toupper -# define hcl_to_bch_lower __builtin_tolower -#endif - -/* the bch class functions support no locale. - * these implemenent latin-1 only */ - -#if !defined(hcl_is_bch_upper) && defined(HCL_HAVE_INLINE) -static HCL_INLINE int hcl_is_bch_upper (hcl_bch_t c) { return (hcl_bcu_t)c - 'A' < 26; } -#elif !defined(hcl_is_bch_upper) -# define hcl_is_bch_upper(c) ((hcl_bcu_t)(c) - 'A' < 26) -#endif - -#if !defined(hcl_is_bch_lower) && defined(HCL_HAVE_INLINE) -static HCL_INLINE int hcl_is_bch_lower (hcl_bch_t c) { return (hcl_bcu_t)c - 'a' < 26; } -#elif !defined(hcl_is_bch_lower) -# define hcl_is_bch_lower(c) ((hcl_bcu_t)(c) - 'a' < 26) -#endif - -#if !defined(hcl_is_bch_alpha) && defined(HCL_HAVE_INLINE) -static HCL_INLINE int hcl_is_bch_alpha (hcl_bch_t c) { return ((hcl_bcu_t)c | 32) - 'a' < 26; } -#elif !defined(hcl_is_bch_alpha) -# define hcl_is_bch_alpha(c) (((hcl_bcu_t)(c) | 32) - 'a' < 26) -#endif - -#if !defined(hcl_is_bch_digit) && defined(HCL_HAVE_INLINE) -static HCL_INLINE int hcl_is_bch_digit (hcl_bch_t c) { return (hcl_bcu_t)c - '0' < 10; } -#elif !defined(hcl_is_bch_digit) -# define hcl_is_bch_digit(c) ((hcl_bcu_t)(c) - '0' < 10) -#endif - -#if !defined(hcl_is_bch_xdigit) && defined(HCL_HAVE_INLINE) -static HCL_INLINE int hcl_is_bch_xdigit (hcl_bch_t c) { return hcl_is_bch_digit(c) || ((hcl_bcu_t)c | 32) - 'a' < 6; } -#elif !defined(hcl_is_bch_xdigit) -# define hcl_is_bch_xdigit(c) (hcl_is_bch_digit(c) || ((hcl_bcu_t)(c) | 32) - 'a' < 6) -#endif - -#if !defined(hcl_is_bch_alnum) && defined(HCL_HAVE_INLINE) -static HCL_INLINE int hcl_is_bch_alnum (hcl_bch_t c) { return hcl_is_bch_alpha(c) || hcl_is_bch_digit(c); } -#elif !defined(hcl_is_bch_alnum) -# define hcl_is_bch_alnum(c) (hcl_is_bch_alpha(c) || hcl_is_bch_digit(c)) -#endif - -#if !defined(hcl_is_bch_space) && defined(HCL_HAVE_INLINE) -static HCL_INLINE int hcl_is_bch_space (hcl_bch_t c) { return c == ' ' || (hcl_bcu_t)c - '\t' < 5; } -#elif !defined(hcl_is_bch_space) -# define hcl_is_bch_space(c) ((c) == ' ' || (hcl_bcu_t)(c) - '\t' < 5) -#endif - -#if !defined(hcl_is_bch_print) && defined(HCL_HAVE_INLINE) -static HCL_INLINE int hcl_is_bch_print (hcl_bch_t c) { return (hcl_bcu_t)c - ' ' < 95; } -#elif !defined(hcl_is_bch_print) -# define hcl_is_bch_print(c) ((hcl_bcu_t)(c) - ' ' < 95) -#endif - -#if !defined(hcl_is_bch_graph) && defined(HCL_HAVE_INLINE) -static HCL_INLINE int hcl_is_bch_graph (hcl_bch_t c) { return (hcl_bcu_t)c - '!' < 94; } -#elif !defined(hcl_is_bch_graph) -# define hcl_is_bch_graph(c) ((hcl_bcu_t)(c) - '!' < 94) -#endif - -#if !defined(hcl_is_bch_cntrl) && defined(HCL_HAVE_INLINE) -static HCL_INLINE int hcl_is_bch_cntrl (hcl_bch_t c) { return (hcl_bcu_t)c < ' ' || (hcl_bcu_t)c == 127; } -#elif !defined(hcl_is_bch_cntrl) -# define hcl_is_bch_cntrl(c) ((hcl_bcu_t)(c) < ' ' || (hcl_bcu_t)(c) == 127) -#endif - -#if !defined(hcl_is_bch_punct) && defined(HCL_HAVE_INLINE) -static HCL_INLINE int hcl_is_bch_punct (hcl_bch_t c) { return hcl_is_bch_graph(c) && !hcl_is_bch_alnum(c); } -#elif !defined(hcl_is_bch_punct) -# define hcl_is_bch_punct(c) (hcl_is_bch_graph(c) && !hcl_is_bch_alnum(c)) -#endif - -#if !defined(hcl_is_bch_blank) && defined(HCL_HAVE_INLINE) -static HCL_INLINE int hcl_is_bch_blank (hcl_bch_t c) { return c == ' ' || c == '\t'; } -#elif !defined(hcl_is_bch_blank) -# define hcl_is_bch_blank(c) ((c) == ' ' || (c) == '\t') -#endif - -#if !defined(hcl_to_bch_upper) -HCL_EXPORT hcl_bch_t hcl_to_bch_upper (hcl_bch_t c); -#endif -#if !defined(hcl_to_bch_lower) -HCL_EXPORT hcl_bch_t hcl_to_bch_lower (hcl_bch_t c); -#endif - -#if defined(HCL_OOCH_IS_UCH) -# define hcl_is_ooch_type hcl_is_uch_type -# define hcl_is_ooch_upper hcl_is_uch_upper -# define hcl_is_ooch_lower hcl_is_uch_lower -# define hcl_is_ooch_alpha hcl_is_uch_alpha -# define hcl_is_ooch_digit hcl_is_uch_digit -# define hcl_is_ooch_xdigit hcl_is_uch_xdigit -# define hcl_is_ooch_alnum hcl_is_uch_alnum -# define hcl_is_ooch_space hcl_is_uch_space -# define hcl_is_ooch_print hcl_is_uch_print -# define hcl_is_ooch_graph hcl_is_uch_graph -# define hcl_is_ooch_cntrl hcl_is_uch_cntrl -# define hcl_is_ooch_punct hcl_is_uch_punct -# define hcl_is_ooch_blank hcl_is_uch_blank -# define hcl_to_ooch_upper hcl_to_uch_upper -# define hcl_to_ooch_lower hcl_to_uch_lower -#else -# define hcl_is_ooch_type hcl_is_bch_type -# define hcl_is_ooch_upper hcl_is_bch_upper -# define hcl_is_ooch_lower hcl_is_bch_lower -# define hcl_is_ooch_alpha hcl_is_bch_alpha -# define hcl_is_ooch_digit hcl_is_bch_digit -# define hcl_is_ooch_xdigit hcl_is_bch_xdigit -# define hcl_is_ooch_alnum hcl_is_bch_alnum -# define hcl_is_ooch_space hcl_is_bch_space -# define hcl_is_ooch_print hcl_is_bch_print -# define hcl_is_ooch_graph hcl_is_bch_graph -# define hcl_is_ooch_cntrl hcl_is_bch_cntrl -# define hcl_is_ooch_punct hcl_is_bch_punct -# define hcl_is_ooch_blank hcl_is_bch_blank -# define hcl_to_ooch_upper hcl_to_bch_upper -# define hcl_to_ooch_lower hcl_to_bch_lower -#endif - -/* ------------------------------------------------------------------------- */ - -HCL_EXPORT int hcl_get_ucwidth ( - hcl_uch_t uc -); - -/* ------------------------------------------------------------------------- */ - -HCL_EXPORT hcl_oow_t hcl_uc_to_utf8 ( - hcl_uch_t uc, - hcl_bch_t* utf8, - hcl_oow_t size -); - -HCL_EXPORT hcl_oow_t hcl_utf8_to_uc ( - const hcl_bch_t* utf8, - hcl_oow_t size, - hcl_uch_t* uc -); - - -HCL_EXPORT hcl_oow_t hcl_uc_to_utf16 ( - hcl_uch_t uc, - hcl_bch_t* utf16, - hcl_oow_t size -); - -HCL_EXPORT hcl_oow_t hcl_utf16_to_uc ( - const hcl_bch_t* utf16, - hcl_oow_t size, - hcl_uch_t* uc -); -HCL_EXPORT hcl_oow_t hcl_uc_to_mb8 ( - hcl_uch_t uc, - hcl_bch_t* mb8, - hcl_oow_t size -); - -HCL_EXPORT hcl_oow_t hcl_mb8_to_uc ( - const hcl_bch_t* mb8, - hcl_oow_t size, - hcl_uch_t* uc -); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/lib/hcl-cmn.h b/lib/hcl-cmn.h deleted file mode 100644 index eb25f89..0000000 --- a/lib/hcl-cmn.h +++ /dev/null @@ -1,1196 +0,0 @@ -/* - Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _HCL_CMN_H_ -#define _HCL_CMN_H_ - -/* WARNING: NEVER CHANGE/DELETE THE FOLLOWING HCL_HAVE_CFG_H DEFINITION. - * IT IS USED FOR DEPLOYMENT BY MAKEFILE.AM */ -/*#define HCL_HAVE_CFG_H*/ - -#if defined(HCL_HAVE_CFG_H) -# include -#elif defined(_WIN32) -# include -#elif defined(__OS2__) -# include -#elif defined(__DOS__) || defined(__MSDOS__) -# if defined(__MSDOS__) && !defined(__DOS__) -# define __DOS__ __MSDOS__ -# endif -# include -#elif defined(macintosh) -# include /* classic mac os */ -#else -# error UNSUPPORTED SYSTEM -#endif - -/* ========================================================================= - * ARCHITECTURE/COMPILER TWEAKS - * ========================================================================= */ - -#if defined(EMSCRIPTEN) -# if defined(HCL_SIZEOF___INT128) -# undef HCL_SIZEOF___INT128 -# define HCL_SIZEOF___INT128 0 -# endif -# if defined(HCL_SIZEOF_LONG) && defined(HCL_SIZEOF_INT) && (HCL_SIZEOF_LONG > HCL_SIZEOF_INT) - /* autoconf doesn't seem to match actual emscripten */ -# undef HCL_SIZEOF_LONG -# define HCL_SIZEOF_LONG HCL_SIZEOF_INT -# endif -#endif - -#if defined(__GNUC__) && defined(__arm__) && !defined(__ARM_ARCH) -# if defined(__ARM_ARCH_8__) -# define __ARM_ARCH 8 -# elif defined(__ARM_ARCH_7__) -# define __ARM_ARCH 7 -# elif defined(__ARM_ARCH_6__) -# define __ARM_ARCH 6 -# elif defined(__ARM_ARCH_5__) -# define __ARM_ARCH 5 -# elif defined(__ARM_ARCH_4__) -# define __ARM_ARCH 4 -# endif -#endif - -/* ========================================================================= - * PREPROCESSOR CAPABILITY CHECK - * ========================================================================= */ -#if !defined(__has_attribute) - #define __has_attribute(x) 0 -#endif - -#if !defined(__has_builtin) && defined(_INTELC32_) - /* intel c code builder 1.0 ended up with an error without this override */ - #define __has_builtin(x) 0 -#endif - -/* -#if !defined(__has_feature) - #define __has_feature(x) 0 -#endif -#if !defined(__is_identifier) - #define __is_identifier(x) 0 -#endif -*/ - -/* ========================================================================= - * PRIMITIVE TYPE DEFINTIONS - * ========================================================================= */ - -/* hcl_int8_t */ -#if defined(HCL_SIZEOF_CHAR) && (HCL_SIZEOF_CHAR == 1) -# define HCL_HAVE_UINT8_T -# define HCL_HAVE_INT8_T -# define HCL_SIZEOF_UINT8_T (HCL_SIZEOF_CHAR) -# define HCL_SIZEOF_INT8_T (HCL_SIZEOF_CHAR) - typedef unsigned char hcl_uint8_t; - typedef signed char hcl_int8_t; -#elif defined(HCL_SIZEOF___INT8) && (HCL_SIZEOF___INT8 == 1) -# define HCL_HAVE_UINT8_T -# define HCL_HAVE_INT8_T -# define HCL_SIZEOF_UINT8_T (HCL_SIZEOF___INT8) -# define HCL_SIZEOF_INT8_T (HCL_SIZEOF___INT8) - typedef unsigned __int8 hcl_uint8_t; - typedef signed __int8 hcl_int8_t; -#elif defined(HCL_SIZEOF___INT8_T) && (HCL_SIZEOF___INT8_T == 1) -# define HCL_HAVE_UINT8_T -# define HCL_HAVE_INT8_T -# define HCL_SIZEOF_UINT8_T (HCL_SIZEOF___INT8_T) -# define HCL_SIZEOF_INT8_T (HCL_SIZEOF___INT8_T) - typedef unsigned __int8_t hcl_uint8_t; - typedef signed __int8_t hcl_int8_t; -#else -# define HCL_HAVE_UINT8_T -# define HCL_HAVE_INT8_T -# define HCL_SIZEOF_UINT8_T (1) -# define HCL_SIZEOF_INT8_T (1) - typedef unsigned char hcl_uint8_t; - typedef signed char hcl_int8_t; -#endif - -/* hcl_int16_t */ -#if defined(HCL_SIZEOF_SHORT) && (HCL_SIZEOF_SHORT == 2) -# define HCL_HAVE_UINT16_T -# define HCL_HAVE_INT16_T -# define HCL_SIZEOF_UINT16_T (HCL_SIZEOF_SHORT) -# define HCL_SIZEOF_INT16_T (HCL_SIZEOF_SHORT) - typedef unsigned short int hcl_uint16_t; - typedef signed short int hcl_int16_t; -#elif defined(HCL_SIZEOF___INT16) && (HCL_SIZEOF___INT16 == 2) -# define HCL_HAVE_UINT16_T -# define HCL_HAVE_INT16_T -# define HCL_SIZEOF_UINT16_T (HCL_SIZEOF___INT16) -# define HCL_SIZEOF_INT16_T (HCL_SIZEOF___INT16) - typedef unsigned __int16 hcl_uint16_t; - typedef signed __int16 hcl_int16_t; -#elif defined(HCL_SIZEOF___INT16_T) && (HCL_SIZEOF___INT16_T == 2) -# define HCL_HAVE_UINT16_T -# define HCL_HAVE_INT16_T -# define HCL_SIZEOF_UINT16_T (HCL_SIZEOF___INT16_T) -# define HCL_SIZEOF_INT16_T (HCL_SIZEOF___INT16_T) - typedef unsigned __int16_t hcl_uint16_t; - typedef signed __int16_t hcl_int16_t; -#else -# define HCL_HAVE_UINT16_T -# define HCL_HAVE_INT16_T -# define HCL_SIZEOF_UINT16_T (2) -# define HCL_SIZEOF_INT16_T (2) - typedef unsigned short int hcl_uint16_t; - typedef signed short int hcl_int16_t; -#endif - - -/* hcl_int32_t */ -#if defined(HCL_SIZEOF_INT) && (HCL_SIZEOF_INT == 4) -# define HCL_HAVE_UINT32_T -# define HCL_HAVE_INT32_T -# define HCL_SIZEOF_UINT32_T (HCL_SIZEOF_INT) -# define HCL_SIZEOF_INT32_T (HCL_SIZEOF_INT) - typedef unsigned int hcl_uint32_t; - typedef signed int hcl_int32_t; -#elif defined(HCL_SIZEOF_LONG) && (HCL_SIZEOF_LONG == 4) -# define HCL_HAVE_UINT32_T -# define HCL_HAVE_INT32_T -# define HCL_SIZEOF_UINT32_T (HCL_SIZEOF_LONG) -# define HCL_SIZEOF_INT32_T (HCL_SIZEOF_LONG) - typedef unsigned long int hcl_uint32_t; - typedef signed long int hcl_int32_t; -#elif defined(HCL_SIZEOF___INT32) && (HCL_SIZEOF___INT32 == 4) -# define HCL_HAVE_UINT32_T -# define HCL_HAVE_INT32_T -# define HCL_SIZEOF_UINT32_T (HCL_SIZEOF___INT32) -# define HCL_SIZEOF_INT32_T (HCL_SIZEOF___INT32) - typedef unsigned __int32 hcl_uint32_t; - typedef signed __int32 hcl_int32_t; -#elif defined(HCL_SIZEOF___INT32_T) && (HCL_SIZEOF___INT32_T == 4) -# define HCL_HAVE_UINT32_T -# define HCL_HAVE_INT32_T -# define HCL_SIZEOF_UINT32_T (HCL_SIZEOF___INT32_T) -# define HCL_SIZEOF_INT32_T (HCL_SIZEOF___INT32_T) - typedef unsigned __int32_t hcl_uint32_t; - typedef signed __int32_t hcl_int32_t; -#elif defined(__DOS__) -# define HCL_HAVE_UINT32_T -# define HCL_HAVE_INT32_T -# define HCL_SIZEOF_UINT32_T (4) -# define HCL_SIZEOF_INT32_T (4) - typedef unsigned long int hcl_uint32_t; - typedef signed long int hcl_int32_t; -#else -# define HCL_HAVE_UINT32_T -# define HCL_HAVE_INT32_T -# define HCL_SIZEOF_UINT32_T (4) -# define HCL_SIZEOF_INT32_T (4) - typedef unsigned int hcl_uint32_t; - typedef signed int hcl_int32_t; -#endif - -/* hcl_int64_t */ -#if defined(HCL_SIZEOF_INT) && (HCL_SIZEOF_INT == 8) -# define HCL_HAVE_UINT64_T -# define HCL_HAVE_INT64_T -# define HCL_SIZEOF_UINT64_T (HCL_SIZEOF_INT) -# define HCL_SIZEOF_INT64_T (HCL_SIZEOF_INT) - typedef unsigned int hcl_uint64_t; - typedef signed int hcl_int64_t; -#elif defined(HCL_SIZEOF_LONG) && (HCL_SIZEOF_LONG == 8) -# define HCL_HAVE_UINT64_T -# define HCL_HAVE_INT64_T -# define HCL_SIZEOF_UINT64_T (HCL_SIZEOF_LONG) -# define HCL_SIZEOF_INT64_T (HCL_SIZEOF_LONG) - typedef unsigned long int hcl_uint64_t; - typedef signed long int hcl_int64_t; -#elif defined(HCL_SIZEOF_LONG_LONG) && (HCL_SIZEOF_LONG_LONG == 8) -# define HCL_HAVE_UINT64_T -# define HCL_HAVE_INT64_T -# define HCL_SIZEOF_UINT64_T (HCL_SIZEOF_LONG_LONG) -# define HCL_SIZEOF_INT64_T (HCL_SIZEOF_LONG_LONG) - typedef unsigned long long int hcl_uint64_t; - typedef signed long long int hcl_int64_t; -#elif defined(HCL_SIZEOF___INT64) && (HCL_SIZEOF___INT64 == 8) -# define HCL_HAVE_UINT64_T -# define HCL_HAVE_INT64_T -# define HCL_SIZEOF_UINT64_T (HCL_SIZEOF_LONG___INT64) -# define HCL_SIZEOF_INT64_T (HCL_SIZEOF_LONG___INT64) - typedef unsigned __int64 hcl_uint64_t; - typedef signed __int64 hcl_int64_t; -#elif defined(HCL_SIZEOF___INT64_T) && (HCL_SIZEOF___INT64_T == 8) -# define HCL_HAVE_UINT64_T -# define HCL_HAVE_INT64_T -# define HCL_SIZEOF_UINT64_T (HCL_SIZEOF_LONG___INT64_T) -# define HCL_SIZEOF_INT64_T (HCL_SIZEOF_LONG___INT64_T) - typedef unsigned __int64_t hcl_uint64_t; - typedef signed __int64_t hcl_int64_t; -#else - /* no 64-bit integer */ -#endif - -/* hcl_int128_t */ -#if defined(HCL_SIZEOF_INT) && (HCL_SIZEOF_INT == 16) -# define HCL_HAVE_UINT128_T -# define HCL_HAVE_INT128_T -# define HCL_SIZEOF_UINT128_T (HCL_SIZEOF_INT) -# define HCL_SIZEOF_INT128_T (HCL_SIZEOF_INT) - typedef unsigned int hcl_uint128_t; - typedef signed int hcl_int128_t; -#elif defined(HCL_SIZEOF_LONG) && (HCL_SIZEOF_LONG == 16) -# define HCL_HAVE_UINT128_T -# define HCL_HAVE_INT128_T -# define HCL_SIZEOF_UINT128_T (HCL_SIZEOF_LONG) -# define HCL_SIZEOF_INT128_T (HCL_SIZEOF_LONG) - typedef unsigned long int hcl_uint128_t; - typedef signed long int hcl_int128_t; -#elif defined(HCL_SIZEOF_LONG_LONG) && (HCL_SIZEOF_LONG_LONG == 16) -# define HCL_HAVE_UINT128_T -# define HCL_HAVE_INT128_T -# define HCL_SIZEOF_UINT128_T (HCL_SIZEOF_LONG_LONG) -# define HCL_SIZEOF_INT128_T (HCL_SIZEOF_LONG_LONG) - typedef unsigned long long int hcl_uint128_t; - typedef signed long long int hcl_int128_t; -#elif defined(HCL_SIZEOF___INT128) && (HCL_SIZEOF___INT128 == 16) -# define HCL_HAVE_UINT128_T -# define HCL_HAVE_INT128_T -# define HCL_SIZEOF_UINT128_T (HCL_SIZEOF___INT128) -# define HCL_SIZEOF_INT128_T (HCL_SIZEOF___INT128) - typedef unsigned __int128 hcl_uint128_t; - typedef signed __int128 hcl_int128_t; -#elif defined(HCL_SIZEOF___INT128_T) && (HCL_SIZEOF___INT128_T == 16) -# define HCL_HAVE_UINT128_T -# define HCL_HAVE_INT128_T -# define HCL_SIZEOF_UINT128_T (HCL_SIZEOF___INT128_T) -# define HCL_SIZEOF_INT128_T (HCL_SIZEOF___INT128_T) - #if defined(HCL_SIZEOF___UINT128_T) && (HCL_SIZEOF___UINT128_T == HCL_SIZEOF___INT128_T) - typedef __uint128_t hcl_uint128_t; - typedef __int128_t hcl_int128_t; - #elif defined(__clang__) - typedef __uint128_t hcl_uint128_t; - typedef __int128_t hcl_int128_t; - #else - typedef unsigned __int128_t hcl_uint128_t; - typedef signed __int128_t hcl_int128_t; - #endif -#else - /* no 128-bit integer */ -#endif - -#if defined(HCL_HAVE_UINT8_T) && (HCL_SIZEOF_VOID_P == 1) -# error UNSUPPORTED POINTER SIZE -#elif defined(HCL_HAVE_UINT16_T) && (HCL_SIZEOF_VOID_P == 2) - typedef hcl_uint16_t hcl_uintptr_t; - typedef hcl_int16_t hcl_intptr_t; - typedef hcl_uint8_t hcl_ushortptr_t; - typedef hcl_int8_t hcl_shortptr_t; -#elif defined(HCL_HAVE_UINT32_T) && (HCL_SIZEOF_VOID_P == 4) - typedef hcl_uint32_t hcl_uintptr_t; - typedef hcl_int32_t hcl_intptr_t; - typedef hcl_uint16_t hcl_ushortptr_t; - typedef hcl_int16_t hcl_shortptr_t; -#elif defined(HCL_HAVE_UINT64_T) && (HCL_SIZEOF_VOID_P == 8) - typedef hcl_uint64_t hcl_uintptr_t; - typedef hcl_int64_t hcl_intptr_t; - typedef hcl_uint32_t hcl_ushortptr_t; - typedef hcl_int32_t hcl_shortptr_t; -#elif defined(HCL_HAVE_UINT128_T) && (HCL_SIZEOF_VOID_P == 16) - typedef hcl_uint128_t hcl_uintptr_t; - typedef hcl_int128_t hcl_intptr_t; - typedef hcl_uint64_t hcl_ushortptr_t; - typedef hcl_int64_t hcl_shortptr_t; -#else -# error UNKNOWN POINTER SIZE -#endif - -#define HCL_SIZEOF_INTPTR_T HCL_SIZEOF_VOID_P -#define HCL_SIZEOF_UINTPTR_T HCL_SIZEOF_VOID_P -#define HCL_SIZEOF_SHORTPTR_T (HCL_SIZEOF_VOID_P / 2) -#define HCL_SIZEOF_USHORTPTR_T (HCL_SIZEOF_VOID_P / 2) - -#if defined(HCL_HAVE_INT128_T) -# define HCL_SIZEOF_INTMAX_T 16 -# define HCL_SIZEOF_UINTMAX_T 16 - typedef hcl_int128_t hcl_intmax_t; - typedef hcl_uint128_t hcl_uintmax_t; -#elif defined(HCL_HAVE_INT64_T) -# define HCL_SIZEOF_INTMAX_T 8 -# define HCL_SIZEOF_UINTMAX_T 8 - typedef hcl_int64_t hcl_intmax_t; - typedef hcl_uint64_t hcl_uintmax_t; -#elif defined(HCL_HAVE_INT32_T) -# define HCL_SIZEOF_INTMAX_T 4 -# define HCL_SIZEOF_UINTMAX_T 4 - typedef hcl_int32_t hcl_intmax_t; - typedef hcl_uint32_t hcl_uintmax_t; -#elif defined(HCL_HAVE_INT16_T) -# define HCL_SIZEOF_INTMAX_T 2 -# define HCL_SIZEOF_UINTMAX_T 2 - typedef hcl_int16_t hcl_intmax_t; - typedef hcl_uint16_t hcl_uintmax_t; -#elif defined(HCL_HAVE_INT8_T) -# define HCL_SIZEOF_INTMAX_T 1 -# define HCL_SIZEOF_UINTMAX_T 1 - typedef hcl_int8_t hcl_intmax_t; - typedef hcl_uint8_t hcl_uintmax_t; -#else -# error UNKNOWN INTMAX SIZE -#endif - -/* ========================================================================= - * FLOATING-POINT TYPE - * ========================================================================= */ -/** \typedef hcl_fltbas_t - * The hcl_fltbas_t type defines the largest floating-pointer number type - * naturally supported. - */ -#if defined(__FreeBSD__) || defined(__MINGW32__) - /* TODO: check if the support for long double is complete. - * if so, use long double for hcl_flt_t */ - typedef double hcl_fltbas_t; -# define HCL_SIZEOF_FLTBAS_T HCL_SIZEOF_DOUBLE -#elif HCL_SIZEOF_LONG_DOUBLE > HCL_SIZEOF_DOUBLE - typedef long double hcl_fltbas_t; -# define HCL_SIZEOF_FLTBAS_T HCL_SIZEOF_LONG_DOUBLE -#else - typedef double hcl_fltbas_t; -# define HCL_SIZEOF_FLTBAS_T HCL_SIZEOF_DOUBLE -#endif - -/** \typedef hcl_fltmax_t - * The hcl_fltmax_t type defines the largest floating-pointer number type - * ever supported. - */ -#if HCL_SIZEOF___FLOAT128 >= HCL_SIZEOF_FLTBAS_T - /* the size of long double may be equal to the size of __float128 - * for alignment on some platforms */ - typedef __float128 hcl_fltmax_t; -# define HCL_SIZEOF_FLTMAX_T HCL_SIZEOF___FLOAT128 -# define HCL_FLTMAX_REQUIRE_QUADMATH 1 -#else - typedef hcl_fltbas_t hcl_fltmax_t; -# define HCL_SIZEOF_FLTMAX_T HCL_SIZEOF_FLTBAS_T -# undef HCL_FLTMAX_REQUIRE_QUADMATH -#endif - -#if defined(HCL_USE_FLTMAX) -typedef hcl_fltmax_t hcl_flt_t; -#define HCL_SIZEOF_FLT_T HCL_SIZEOF_FLTMAX_T -#else -typedef hcl_fltbas_t hcl_flt_t; -#define HCL_SIZEOF_FLT_T HCL_SIZEOF_FLTBAS_T -#endif - -/* ========================================================================= - * BASIC HARD-CODED DEFINES - * ========================================================================= */ -#define HCL_BITS_PER_BYTE (8) -/* the maximum number of bch charaters to represent a single uch character */ -#define HCL_BCSIZE_MAX 6 - -/* ========================================================================= - * BASIC HCL TYPES - * ========================================================================= */ - -typedef char hcl_bch_t; -typedef int hcl_bci_t; -typedef unsigned int hcl_bcu_t; -typedef unsigned char hcl_bchu_t; /* unsigned version of hcl_bch_t for inner working */ -#define HCL_SIZEOF_BCH_T HCL_SIZEOF_CHAR -#define HCL_SIZEOF_BCI_T HCL_SIZEOF_INT - -#if defined(HCL_WIDE_CHAR_SIZE) && (HCL_WIDE_CHAR_SIZE >= 4) -# if defined(__GNUC__) && defined(__CHAR32_TYPE__) - typedef __CHAR32_TYPE__ hcl_uch_t; -# else - typedef hcl_uint32_t hcl_uch_t; -# endif - typedef hcl_uint32_t hcl_uchu_t; /* same as hcl_uch_t as it is already unsigned */ -# define HCL_SIZEOF_UCH_T 4 - -#elif defined(__GNUC__) && defined(__CHAR16_TYPE__) - typedef __CHAR16_TYPE__ hcl_uch_t; - typedef hcl_uint16_t hcl_uchu_t; /* same as hcl_uch_t as it is already unsigned */ -# define HCL_SIZEOF_UCH_T 2 -#else - typedef hcl_uint16_t hcl_uch_t; - typedef hcl_uint16_t hcl_uchu_t; /* same as hcl_uch_t as it is already unsigned */ -# define HCL_SIZEOF_UCH_T 2 -#endif - -typedef hcl_int32_t hcl_uci_t; -typedef hcl_uint32_t hcl_ucu_t; -#define HCL_SIZEOF_UCI_T 4 - -typedef hcl_uint8_t hcl_oob_t; - -/* NOTE: sizeof(hcl_oop_t) must be equal to sizeof(hcl_oow_t) */ -typedef hcl_uintptr_t hcl_oow_t; -typedef hcl_intptr_t hcl_ooi_t; -#define HCL_SIZEOF_OOW_T HCL_SIZEOF_UINTPTR_T -#define HCL_SIZEOF_OOI_T HCL_SIZEOF_INTPTR_T -#define HCL_OOW_BITS (HCL_SIZEOF_OOW_T * HCL_BITS_PER_BYTE) -#define HCL_OOI_BITS (HCL_SIZEOF_OOI_T * HCL_BITS_PER_BYTE) - -typedef hcl_ushortptr_t hcl_oohw_t; /* half word - half word */ -typedef hcl_shortptr_t hcl_oohi_t; /* signed half word */ -#define HCL_SIZEOF_OOHW_T HCL_SIZEOF_USHORTPTR_T -#define HCL_SIZEOF_OOHI_T HCL_SIZEOF_SHORTPTR_T -#define HCL_OOHW_BITS (HCL_SIZEOF_OOHW_T * HCL_BITS_PER_BYTE) -#define HCL_OOHI_BITS (HCL_SIZEOF_OOHI_T * HCL_BITS_PER_BYTE) - -struct hcl_ucs_t -{ - hcl_uch_t* ptr; - hcl_oow_t len; -}; -typedef struct hcl_ucs_t hcl_ucs_t; - -struct hcl_bcs_t -{ - hcl_bch_t* ptr; - hcl_oow_t len; -}; -typedef struct hcl_bcs_t hcl_bcs_t; - -struct hcl_ucsc_t -{ - /* the first two fields 'ptr' and 'len' must match those in hcl_ucs_t - * for easy downcasting to it. */ - hcl_uch_t* ptr; - hcl_oow_t len; /* length */ - hcl_oow_t capa; /* capacity */ -}; -typedef struct hcl_ucsc_t hcl_ucsc_t; - -struct hcl_bcsc_t -{ - /* the first two fields 'ptr' and 'len' must match those in hcl_bcs_t - * for easy downcasting to it. */ - hcl_bch_t* ptr; - hcl_oow_t len; /* length */ - hcl_oow_t capa; /* capacity */ -}; -typedef struct hcl_bcsc_t hcl_bcsc_t; - -#if defined(HCL_ENABLE_WIDE_CHAR) - typedef hcl_uch_t hcl_ooch_t; - typedef hcl_uchu_t hcl_oochu_t; - typedef hcl_uci_t hcl_ooci_t; - typedef hcl_ucu_t hcl_oocu_t; - typedef hcl_ucs_t hcl_oocs_t; - typedef hcl_ucsc_t hcl_oocsc_t; -# define HCL_OOCH_IS_UCH -# define HCL_SIZEOF_OOCH_T HCL_SIZEOF_UCH_T -#else - typedef hcl_bch_t hcl_ooch_t; - typedef hcl_bchu_t hcl_oochu_t; - typedef hcl_bci_t hcl_ooci_t; - typedef hcl_bcu_t hcl_oocu_t; - typedef hcl_bcs_t hcl_oocs_t; - typedef hcl_bcsc_t hcl_oocsc_t; -# define HCL_OOCH_IS_BCH -# define HCL_SIZEOF_OOCH_T HCL_SIZEOF_BCH_T -#endif - -typedef struct hcl_ptl_t hcl_ptl_t; -struct hcl_ptl_t -{ - void* ptr; - hcl_oow_t len; -}; - -typedef struct hcl_ptlc_t hcl_ptlc_t; -struct hcl_ptlc_t -{ - void* ptr; - hcl_oow_t len; - hcl_oow_t capa; -}; - -typedef unsigned int hcl_bitmask_t; - -/* ========================================================================= - * BIGINT TYPES AND MACROS - * ========================================================================= */ -#if defined(HCL_ENABLE_FULL_LIW) && (HCL_SIZEOF_UINTMAX_T > HCL_SIZEOF_OOW_T) -# define HCL_USE_OOW_FOR_LIW -#endif - -#if defined(HCL_USE_OOW_FOR_LIW) - typedef hcl_oow_t hcl_liw_t; /* large integer word */ - typedef hcl_ooi_t hcl_lii_t; - typedef hcl_uintmax_t hcl_lidw_t; /* large integer double word */ - typedef hcl_intmax_t hcl_lidi_t; -# define HCL_SIZEOF_LIW_T HCL_SIZEOF_OOW_T -# define HCL_SIZEOF_LIDW_T HCL_SIZEOF_UINTMAX_T -# define HCL_LIW_BITS HCL_OOW_BITS -# define HCL_LIDW_BITS (HCL_SIZEOF_UINTMAX_T * HCL_BITS_PER_BYTE) -#else - typedef hcl_oohw_t hcl_liw_t; - typedef hcl_oohi_t hcl_lii_t; - typedef hcl_oow_t hcl_lidw_t; - typedef hcl_ooi_t hcl_lidi_t; -# define HCL_SIZEOF_LIW_T HCL_SIZEOF_OOHW_T -# define HCL_SIZEOF_LIDW_T HCL_SIZEOF_OOW_T -# define HCL_LIW_BITS HCL_OOHW_BITS -# define HCL_LIDW_BITS HCL_OOW_BITS -#endif - -/* ========================================================================= - * BASIC OOP ENCODING - * ========================================================================= */ - -/* actual structure defined in hcl.h */ -typedef struct hcl_obj_t hcl_obj_t; -typedef struct hcl_obj_t* hcl_oop_t; - -/* - * An object pointer(OOP) is an ordinary pointer value to an object. - * but some simple numeric values are also encoded into OOP using a simple - * bit-shifting and masking. - * - * A real OOP is stored without any bit-shifting while a non-pointer value encoded - * in an OOP is bit-shifted to the left by 2 and the 2 least-significant bits - * are set to 1 or 2. - * - * This scheme works because the object allocators aligns the object size to - * a multiple of sizeof(hcl_oop_t). This way, the 2 least-significant bits - * of a real OOP are always 0s. - * - * With 2 bits, i can encode only 3 special types except object pointers. - * Since I need more than 3 special types, I extend the tag bits up to 4 bits - * to represent a special data type that doesn't require a range as wide - * as a small integer. A unicode character, for instance, only requires 21 - * bits at most. An error doesn't need to be as diverse as a small integer. - */ - -#define HCL_OOP_TAG_BITS_LO 2 -#define HCL_OOP_TAG_BITS_HI 2 - -#define HCL_OOP_TAG_SMOOI 1 /* 01 */ -#define HCL_OOP_TAG_SMPTR 2 /* 10 */ -#define HCL_OOP_TAG_EXTENDED 3 /* 11 - internal use only */ -#define HCL_OOP_TAG_CHAR 3 /* 0011 */ -#define HCL_OOP_TAG_ERROR 7 /* 0111 */ -#define HCL_OOP_TAG_RESERVED0 11 /* 1011 */ -#define HCL_OOP_TAG_RESERVED1 15 /* 1111 */ - -#define HCL_OOP_GET_TAG_LO(oop) (((hcl_oow_t)oop) & HCL_LBMASK(hcl_oow_t, HCL_OOP_TAG_BITS_LO)) -#define HCL_OOP_GET_TAG_LOHI(oop) (((hcl_oow_t)oop) & HCL_LBMASK(hcl_oow_t, HCL_OOP_TAG_BITS_LO + HCL_OOP_TAG_BITS_HI)) -#define HCL_OOP_GET_TAG(oop) (HCL_OOP_GET_TAG_LO(oop) == HCL_OOP_TAG_EXTENDED? HCL_OOP_GET_TAG_LOHI(oop): HCL_OOP_GET_TAG_LO(oop)) - -#define HCL_OOP_IS_NUMERIC(oop) (HCL_OOP_GET_TAG_LO(oop) != 0) -#define HCL_OOP_IS_POINTER(oop) (HCL_OOP_GET_TAG_LO(oop) == 0) - -#define HCL_OOP_IS_SMOOI(oop) (HCL_OOP_GET_TAG_LO(oop) == HCL_OOP_TAG_SMOOI) -#define HCL_OOP_IS_SMPTR(oop) (HCL_OOP_GET_TAG_LO(oop) == HCL_OOP_TAG_SMPTR) - -#define HCL_SMOOI_TO_OOP(num) ((hcl_oop_t)((((hcl_oow_t)(hcl_ooi_t)(num)) << HCL_OOP_TAG_BITS_LO) | HCL_OOP_TAG_SMOOI)) -#define HCL_OOP_TO_SMOOI(oop) (((hcl_ooi_t)oop) >> HCL_OOP_TAG_BITS_LO) -/* -#define HCL_SMPTR_TO_OOP(ptr) ((hcl_oop_t)((((hcl_oow_t)(ptr)) << HCL_OOP_TAG_BITS_LO) | HCL_OOP_TAG_SMPTR)) -#define HCL_OOP_TO_SMPTR(oop) (((hcl_ooi_t)oop) >> HCL_OOP_TAG_BITS_LO) -*/ -#define HCL_SMPTR_TO_OOP(ptr) ((hcl_oop_t)(((hcl_oow_t)ptr) | HCL_OOP_TAG_SMPTR)) -#define HCL_OOP_TO_SMPTR(oop) ((void*)(((hcl_oow_t)oop) & ~HCL_LBMASK(hcl_oow_t, HCL_OOP_TAG_BITS_LO))) - -#define HCL_OOP_IS_CHAR(oop) (HCL_OOP_GET_TAG(oop) == HCL_OOP_TAG_CHAR) -#define HCL_OOP_IS_ERROR(oop) (HCL_OOP_GET_TAG(oop) == HCL_OOP_TAG_ERROR) - -#define HCL_OOP_TO_CHAR(oop) (((hcl_oow_t)oop) >> (HCL_OOP_TAG_BITS_LO + HCL_OOP_TAG_BITS_LO)) -#define HCL_CHAR_TO_OOP(num) ((hcl_oop_t)((((hcl_oow_t)(num)) << (HCL_OOP_TAG_BITS_LO + HCL_OOP_TAG_BITS_LO)) | HCL_OOP_TAG_CHAR)) -#define HCL_OOP_TO_ERROR(oop) (((hcl_oow_t)oop) >> (HCL_OOP_TAG_BITS_LO + HCL_OOP_TAG_BITS_LO)) -#define HCL_ERROR_TO_OOP(num) ((hcl_oop_t)((((hcl_oow_t)(num)) << (HCL_OOP_TAG_BITS_LO + HCL_OOP_TAG_BITS_LO)) | HCL_OOP_TAG_ERROR)) - -/* SMOOI takes up 62 bit on a 64-bit architecture and 30 bits - * on a 32-bit architecture. The absolute value takes up 61 bits and 29 bits - * respectively for the 1 sign bit. */ -#define HCL_SMOOI_BITS (HCL_OOI_BITS - HCL_OOP_TAG_BITS_LO) -#define HCL_SMOOI_ABS_BITS (HCL_SMOOI_BITS - 1) -#define HCL_SMOOI_MAX ((hcl_ooi_t)(~((hcl_oow_t)0) >> (HCL_OOP_TAG_BITS_LO + 1))) -/* Sacrificing 1 bit pattern for a negative SMOOI makes - * implementation a lot eaisier in many respect. */ -/*#define HCL_SMOOI_MIN (-HCL_SMOOI_MAX - 1)*/ -#define HCL_SMOOI_MIN (-HCL_SMOOI_MAX) -#define HCL_IN_SMOOI_RANGE(ooi) ((ooi) >= HCL_SMOOI_MIN && (ooi) <= HCL_SMOOI_MAX) - - -/* SMPTR is a special value which has been devised to encode an address value - * whose low HCL_OOP_TAG_BITS_LO bits are 0. its class is SmallPointer. A pointer - * returned by most of system functions would be aligned to the pointer size. - * you can use the followings macros when converting such a pointer without loss. */ -#define HCL_IN_SMPTR_RANGE(ptr) ((((hcl_oow_t)ptr) & HCL_LBMASK(hcl_oow_t, HCL_OOP_TAG_BITS_LO)) == 0) - -#define HCL_CHAR_BITS (HCL_OOI_BITS - HCL_OOP_TAG_BITS_LO - HCL_OOP_TAG_BITS_HI) -#define HCL_CHAR_MIN 0 -#define HCL_CHAR_MAX (~((hcl_oow_t)0) >> (HCL_OOP_TAG_BITS_LO + HCL_OOP_TAG_BITS_HI)) - -#define HCL_ERROR_BITS (HCL_OOI_BITS - HCL_OOP_TAG_BITS_LO - HCL_OOP_TAG_BITS_HI) -#define HCL_ERROR_MIN 0 -#define HCL_ERROR_MAX (~((hcl_oow_t)0) >> (HCL_OOP_TAG_BITS_LO + HCL_OOP_TAG_BITS_HI)) - -/* TODO: There are untested code where smint is converted to hcl_oow_t. - * for example, the spec making macro treats the number as hcl_oow_t instead of hcl_ooi_t. - * as of this writing, i skip testing that part with the spec value exceeding HCL_SMOOI_MAX. - * later, please verify it works, probably by limiting the value ranges in such macros - */ - -/* ========================================================================= - * TIME-RELATED TYPES - * =========================================================================*/ -#define HCL_MSECS_PER_SEC (1000) -#define HCL_MSECS_PER_MIN (HCL_MSECS_PER_SEC * HCL_SECS_PER_MIN) -#define HCL_MSECS_PER_HOUR (HCL_MSECS_PER_SEC * HCL_SECS_PER_HOUR) -#define HCL_MSECS_PER_DAY (HCL_MSECS_PER_SEC * HCL_SECS_PER_DAY) - -#define HCL_USECS_PER_MSEC (1000) -#define HCL_NSECS_PER_USEC (1000) -#define HCL_NSECS_PER_MSEC (HCL_NSECS_PER_USEC * HCL_USECS_PER_MSEC) -#define HCL_USECS_PER_SEC (HCL_USECS_PER_MSEC * HCL_MSECS_PER_SEC) -#define HCL_NSECS_PER_SEC (HCL_NSECS_PER_USEC * HCL_USECS_PER_MSEC * HCL_MSECS_PER_SEC) - -#define HCL_SECNSEC_TO_MSEC(sec,nsec) \ - (((hcl_intptr_t)(sec) * HCL_MSECS_PER_SEC) + ((hcl_intptr_t)(nsec) / HCL_NSECS_PER_MSEC)) - -#define HCL_SECNSEC_TO_USEC(sec,nsec) \ - (((hcl_intptr_t)(sec) * HCL_USECS_PER_SEC) + ((hcl_intptr_t)(nsec) / HCL_NSECS_PER_USEC)) - -#define HCL_SECNSEC_TO_NSEC(sec,nsec) \ - (((hcl_intptr_t)(sec) * HCL_NSECS_PER_SEC) + (hcl_intptr_t)(nsec)) - -#define HCL_SEC_TO_MSEC(sec) ((sec) * HCL_MSECS_PER_SEC) -#define HCL_MSEC_TO_SEC(sec) ((sec) / HCL_MSECS_PER_SEC) - -#define HCL_USEC_TO_NSEC(usec) ((usec) * HCL_NSECS_PER_USEC) -#define HCL_NSEC_TO_USEC(nsec) ((nsec) / HCL_NSECS_PER_USEC) - -#define HCL_MSEC_TO_NSEC(msec) ((msec) * HCL_NSECS_PER_MSEC) -#define HCL_NSEC_TO_MSEC(nsec) ((nsec) / HCL_NSECS_PER_MSEC) - -#define HCL_SEC_TO_NSEC(sec) ((sec) * HCL_NSECS_PER_SEC) -#define HCL_NSEC_TO_SEC(nsec) ((nsec) / HCL_NSECS_PER_SEC) - -#define HCL_SEC_TO_USEC(sec) ((sec) * HCL_USECS_PER_SEC) -#define HCL_USEC_TO_SEC(usec) ((usec) / HCL_USECS_PER_SEC) - -#if defined(HCL_SIZEOF_INT64_T) && (HCL_SIZEOF_INT64_T > 0) -typedef hcl_int64_t hcl_ntime_sec_t; -#else -typedef hcl_int32_t hcl_ntime_sec_t; -#endif -typedef hcl_int32_t hcl_ntime_nsec_t; - -typedef struct hcl_ntime_t hcl_ntime_t; -struct hcl_ntime_t -{ - hcl_ntime_sec_t sec; - hcl_ntime_nsec_t nsec; /* nanoseconds */ -}; - -#define HCL_INIT_NTIME(c,s,ns) (((c)->sec = (s)), ((c)->nsec = (ns))) -#define HCL_CLEAR_NTIME(c) HCL_INIT_NTIME(c, 0, 0) - -#define HCL_ADD_NTIME(c,a,b) \ - do { \ - (c)->sec = (a)->sec + (b)->sec; \ - (c)->nsec = (a)->nsec + (b)->nsec; \ - while ((c)->nsec >= HCL_NSECS_PER_SEC) { (c)->sec++; (c)->nsec -= HCL_NSECS_PER_SEC; } \ - } while(0) - -#define HCL_ADD_NTIME_SNS(c,a,s,ns) \ - do { \ - (c)->sec = (a)->sec + (s); \ - (c)->nsec = (a)->nsec + (ns); \ - while ((c)->nsec >= HCL_NSECS_PER_SEC) { (c)->sec++; (c)->nsec -= HCL_NSECS_PER_SEC; } \ - } while(0) - -#define HCL_SUB_NTIME(c,a,b) \ - do { \ - (c)->sec = (a)->sec - (b)->sec; \ - (c)->nsec = (a)->nsec - (b)->nsec; \ - while ((c)->nsec < 0) { (c)->sec--; (c)->nsec += HCL_NSECS_PER_SEC; } \ - } while(0) - -#define HCL_SUB_NTIME_SNS(c,a,s,ns) \ - do { \ - (c)->sec = (a)->sec - s; \ - (c)->nsec = (a)->nsec - ns; \ - while ((c)->nsec < 0) { (c)->sec--; (c)->nsec += HCL_NSECS_PER_SEC; } \ - } while(0) - - -#define HCL_CMP_NTIME(a,b) (((a)->sec == (b)->sec)? ((a)->nsec - (b)->nsec): ((a)->sec - (b)->sec)) - -/* ========================================================================= - * PRIMITIVE MACROS - * ========================================================================= */ -#define HCL_UCI_EOF ((hcl_uci_t)-1) -#define HCL_BCI_EOF ((hcl_bci_t)-1) -#define HCL_OOCI_EOF ((hcl_ooci_t)-1) - -#define HCL_SIZEOF(x) (sizeof(x)) -#define HCL_COUNTOF(x) (sizeof(x) / sizeof((x)[0])) -#define HCL_BITSOF(x) (sizeof(x) * HCL_BITS_PER_BYTE) - -/** - * The HCL_OFFSETOF() macro returns the offset of a field from the beginning - * of a structure. - */ -#define HCL_OFFSETOF(type,member) ((hcl_uintptr_t)&((type*)0)->member) - -/** - * The HCL_ALIGNOF() macro returns the alignment size of a structure. - * Note that this macro may not work reliably depending on the type given. - */ -#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202311L) /* C23 */ -#define HCL_ALIGNOF(type) alignof(type) -#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) /* C11 */ -#define HCL_ALIGNOF(type) _Alignof(type) -#elif defined(__cplusplus) && (__cplusplus >= 201103L) /* C++11 */ -#define HCL_ALIGNOF(type) alignof(type) -#else -#define HCL_ALIGNOF(type) HCL_OFFSETOF(struct { hcl_uint8_t d1; type d2; }, d2) - /*(sizeof(struct { hcl_uint8_t d1; type d2; }) - sizeof(type))*/ -#endif - -#if defined(__cplusplus) -# if (__cplusplus >= 201103L) /* C++11 */ -# define HCL_NULL nullptr -# else -# define HCL_NULL (0) -# endif -#else -# define HCL_NULL ((void*)0) -#endif - -/* make a bit mask that can mask off low n bits */ -#define HCL_LBMASK(type,n) (~(~((type)0) << (n))) -#define HCL_LBMASK_SAFE(type,n) (((n) < HCL_BITSOF(type))? HCL_LBMASK(type,n): ~(type)0) - -/* make a bit mask that can mask off high n bits */ -#define HCL_HBMASK(type,n) (~(~((type)0) >> (n))) -#define HCL_HBMASK_SAFE(type,n) (((n) < HCL_BITSOF(type))? HCL_HBMASK(type,n): ~(type)0) - -/* get 'length' bits starting from the bit at the 'offset' */ -#define HCL_GETBITS(type,value,offset,length) \ - ((((type)(value)) >> (offset)) & HCL_LBMASK(type,length)) - -#define HCL_CLEARBITS(type,value,offset,length) \ - (((type)(value)) & ~(HCL_LBMASK(type,length) << (offset))) - -#define HCL_SETBITS(type,value,offset,length,bits) \ - (value = (HCL_CLEARBITS(type,value,offset,length) | (((bits) & HCL_LBMASK(type,length)) << (offset)))) - -#define HCL_FLIPBITS(type,value,offset,length) \ - (((type)(value)) ^ (HCL_LBMASK(type,length) << (offset))) - -#define HCL_ORBITS(type,value,offset,length,bits) \ - (value = (((type)(value)) | (((bits) & HCL_LBMASK(type,length)) << (offset)))) - - -/** - * The HCL_BITS_MAX() macros calculates the maximum value that the 'nbits' - * bits of an unsigned integer of the given 'type' can hold. - * \code - * printf ("%u", HCL_BITS_MAX(unsigned int, 5)); - * \endcode - */ -/*#define HCL_BITS_MAX(type,nbits) ((((type)1) << (nbits)) - 1)*/ -#define HCL_BITS_MAX(type,nbits) ((~(type)0) >> (HCL_BITSOF(type) - (nbits))) - -/* ========================================================================= - * MMGR - * ========================================================================= */ -typedef struct hcl_mmgr_t hcl_mmgr_t; - -/** - * allocate a memory chunk of the size \a n. - * \return pointer to a memory chunk on success, #HCL_NULL on failure. - */ -typedef void* (*hcl_mmgr_alloc_t) (hcl_mmgr_t* mmgr, hcl_oow_t n); -/** - * resize a memory chunk pointed to by \a ptr to the size \a n. - * \return pointer to a memory chunk on success, #HCL_NULL on failure. - */ -typedef void* (*hcl_mmgr_realloc_t) (hcl_mmgr_t* mmgr, void* ptr, hcl_oow_t n); -/** - * free a memory chunk pointed to by \a ptr. - */ -typedef void (*hcl_mmgr_free_t) (hcl_mmgr_t* mmgr, void* ptr); - -/** - * The hcl_mmgr_t type defines the memory management interface. - * As the type is merely a structure, it is just used as a single container - * for memory management functions with a pointer to user-defined data. - * The user-defined data pointer \a ctx is passed to each memory management - * function whenever it is called. You can allocate, reallocate, and free - * a memory chunk. - * - * For example, a hcl_xxx_open() function accepts a pointer of the hcl_mmgr_t - * type and the xxx object uses it to manage dynamic data within the object. - */ -struct hcl_mmgr_t -{ - hcl_mmgr_alloc_t allocmem; /**< allocation function */ - hcl_mmgr_realloc_t reallocmem; /**< resizing function */ - hcl_mmgr_free_t freemem; /**< disposal function */ - void* ctx; /**< user-defined data pointer */ -}; - -/** - * The HCL_MMGR_ALLOC() macro allocates a memory block of the \a size bytes - * using the \a mmgr memory manager. - */ -#define HCL_MMGR_ALLOC(mmgr,size) ((mmgr)->allocmem(mmgr,size)) - -/** - * The HCL_MMGR_REALLOC() macro resizes a memory block pointed to by \a ptr - * to the \a size bytes using the \a mmgr memory manager. - */ -#define HCL_MMGR_REALLOC(mmgr,ptr,size) ((mmgr)->reallocmem(mmgr,ptr,size)) - -/** - * The HCL_MMGR_FREE() macro deallocates the memory block pointed to by \a ptr. - */ -#define HCL_MMGR_FREE(mmgr,ptr) ((mmgr)->freemem(mmgr,ptr)) - - -/* ========================================================================= - * CMGR - * =========================================================================*/ - -typedef struct hcl_cmgr_t hcl_cmgr_t; - -typedef hcl_oow_t (*hcl_cmgr_bctouc_t) ( - const hcl_bch_t* mb, - hcl_oow_t size, - hcl_uch_t* wc -); - -typedef hcl_oow_t (*hcl_cmgr_uctobc_t) ( - hcl_uch_t wc, - hcl_bch_t* mb, - hcl_oow_t size -); - -/** - * The hcl_cmgr_t type defines the character-level interface to - * multibyte/wide-character conversion. This interface doesn't - * provide any facility to store conversion state in a context - * independent manner. This leads to the limitation that it can - * handle a stateless multibyte encoding only. - */ -struct hcl_cmgr_t -{ - hcl_cmgr_bctouc_t bctouc; - hcl_cmgr_uctobc_t uctobc; -}; - -/* ========================================================================= - * FORWARD DECLARATION FOR MAIN HCL STRUCTURE - * =========================================================================*/ -typedef struct hcl_t hcl_t; - -/* ========================================================================= - * MACROS THAT CHANGES THE BEHAVIORS OF THE C COMPILER/LINKER - * =========================================================================*/ - -#if defined(__BORLANDC__) && (__BORLANDC__ < 0x500) -# define HCL_IMPORT -# define HCL_EXPORT -# define HCL_PRIVATE -#elif defined(_WIN32) || (defined(__WATCOMC__) && (__WATCOMC__ >= 1000) && !defined(__WINDOWS_386__)) -# define HCL_IMPORT __declspec(dllimport) -# define HCL_EXPORT __declspec(dllexport) -# define HCL_PRIVATE -#elif defined(__GNUC__) && ((__GNUC__>= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) -# define HCL_IMPORT __attribute__((visibility("default"))) -# define HCL_EXPORT __attribute__((visibility("default"))) -# define HCL_PRIVATE __attribute__((visibility("hidden"))) -/*# define HCL_PRIVATE __attribute__((visibility("internal")))*/ -#else -# define HCL_IMPORT -# define HCL_EXPORT -# define HCL_PRIVATE -#endif - -#if defined(__cplusplus) || (defined(__STDC_VERSION__) && (__STDC_VERSION__>=199901L)) - /* C++/C99 has inline */ -# define HCL_INLINE inline -# define HCL_HAVE_INLINE -#elif defined(__GNUC__) && defined(__GNUC_GNU_INLINE__) - /* gcc disables inline when -std=c89 or -ansi is used. - * so use __inline__ supported by gcc regardless of the options */ -# define HCL_INLINE /*extern*/ __inline__ -# define HCL_HAVE_INLINE -#else -# define HCL_INLINE -# undef HCL_HAVE_INLINE -#endif - -#if __has_attribute(__sentinel__) || (defined(__GNUC__) && (__GNUC__ >= 4)) -# define HCL_SENTINEL(v) __attribute__((__sentinel__(x))) -#else -# define HCL_SENTINEL(v) -#endif - -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)) -# define HCL_UNUSED __attribute__((__unused__)) -#else -# define HCL_UNUSED -#endif - -#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202311L) -# define HCL_NORETURN noreturn -#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) -# define HCL_NORETURN _Noreturn -#else -# define HCL_NORETURN -#endif - -/** - * The HCL_TYPE_IS_SIGNED() macro determines if a type is signed. - * \code - * printf ("%d\n", (int)HCL_TYPE_IS_SIGNED(int)); - * printf ("%d\n", (int)HCL_TYPE_IS_SIGNED(unsigned int)); - * \endcode - */ -#define HCL_TYPE_IS_SIGNED(type) (((type)0) > ((type)-1)) - -/** - * The HCL_TYPE_IS_SIGNED() macro determines if a type is unsigned. - * \code - * printf ("%d\n", HCL_TYPE_IS_UNSIGNED(int)); - * printf ("%d\n", HCL_TYPE_IS_UNSIGNED(unsigned int)); - * \endcode - */ -#define HCL_TYPE_IS_UNSIGNED(type) (((type)0) < ((type)-1)) - -#define HCL_TYPE_SIGNED_MAX(type) \ - ((type)~((type)1 << ((type)HCL_BITSOF(type) - 1))) -#define HCL_TYPE_UNSIGNED_MAX(type) ((type)(~(type)0)) - -#define HCL_TYPE_SIGNED_MIN(type) \ - ((type)((type)1 << ((type)HCL_BITSOF(type) - 1))) -#define HCL_TYPE_UNSIGNED_MIN(type) ((type)0) - -#define HCL_TYPE_MAX(type) \ - ((HCL_TYPE_IS_SIGNED(type)? HCL_TYPE_SIGNED_MAX(type): HCL_TYPE_UNSIGNED_MAX(type))) -#define HCL_TYPE_MIN(type) \ - ((HCL_TYPE_IS_SIGNED(type)? HCL_TYPE_SIGNED_MIN(type): HCL_TYPE_UNSIGNED_MIN(type))) - -/* round up a positive integer x to the nearst multiple of y */ -#define HCL_ALIGN(x,y) ((((x) + (y) - 1) / (y)) * (y)) - -/* round up a positive integer x to the nearst multiple of y where - * y must be a multiple of a power of 2*/ -#define HCL_ALIGN_POW2(x,y) ((((x) + (y) - 1)) & ~((y) - 1)) - -#define HCL_IS_UNALIGNED_POW2(x,y) ((x) & ((y) - 1)) -#define HCL_IS_ALIGNED_POW2(x,y) (!HCL_IS_UNALIGNED_POW2(x,y)) - -#if defined(__cplusplus) || (defined(__STDC_VERSION__) && (__STDC_VERSION__>=199901L)) -/* array index */ -#define HCL_AID(x) [x]= -/* struct field name */ -#define HCL_SFN(x) .x= -#else -#define HCL_AID(x) -#define HCL_SFN(x) -#endif - -/* ========================================================================= - * COMPILER FEATURE TEST MACROS - * =========================================================================*/ -#if defined(__has_builtin) - #if __has_builtin(__builtin_ctz) - #define HCL_HAVE_BUILTIN_CTZ - #endif - #if __has_builtin(__builtin_ctzl) - #define HCL_HAVE_BUILTIN_CTZL - #endif - #if __has_builtin(__builtin_ctzll) - #define HCL_HAVE_BUILTIN_CTZLL - #endif - - #if __has_builtin(__builtin_clz) - #define HCL_HAVE_BUILTIN_CLZ - #endif - #if __has_builtin(__builtin_clzl) - #define HCL_HAVE_BUILTIN_CLZL - #endif - #if __has_builtin(__builtin_clzll) - #define HCL_HAVE_BUILTIN_CLZLL - #endif - - #if __has_builtin(__builtin_uadd_overflow) - #define HCL_HAVE_BUILTIN_UADD_OVERFLOW - #endif - #if __has_builtin(__builtin_uaddl_overflow) - #define HCL_HAVE_BUILTIN_UADDL_OVERFLOW - #endif - #if __has_builtin(__builtin_uaddll_overflow) - #define HCL_HAVE_BUILTIN_UADDLL_OVERFLOW - #endif - #if __has_builtin(__builtin_umul_overflow) - #define HCL_HAVE_BUILTIN_UMUL_OVERFLOW - #endif - #if __has_builtin(__builtin_umull_overflow) - #define HCL_HAVE_BUILTIN_UMULL_OVERFLOW - #endif - #if __has_builtin(__builtin_umulll_overflow) - #define HCL_HAVE_BUILTIN_UMULLL_OVERFLOW - #endif - - #if __has_builtin(__builtin_sadd_overflow) - #define HCL_HAVE_BUILTIN_SADD_OVERFLOW - #endif - #if __has_builtin(__builtin_saddl_overflow) - #define HCL_HAVE_BUILTIN_SADDL_OVERFLOW - #endif - #if __has_builtin(__builtin_saddll_overflow) - #define HCL_HAVE_BUILTIN_SADDLL_OVERFLOW - #endif - #if __has_builtin(__builtin_smul_overflow) - #define HCL_HAVE_BUILTIN_SMUL_OVERFLOW - #endif - #if __has_builtin(__builtin_smull_overflow) - #define HCL_HAVE_BUILTIN_SMULL_OVERFLOW - #endif - #if __has_builtin(__builtin_smulll_overflow) - #define HCL_HAVE_BUILTIN_SMULLL_OVERFLOW - #endif - - #if __has_builtin(__builtin_expect) - #define HCL_HAVE_BUILTIN_EXPECT - #endif - - - #if __has_builtin(__sync_lock_test_and_set) - #define HCL_HAVE_SYNC_LOCK_TEST_AND_SET - #endif - #if __has_builtin(__sync_lock_release) - #define HCL_HAVE_SYNC_LOCK_RELEASE - #endif - - #if __has_builtin(__sync_synchronize) - #define HCL_HAVE_SYNC_SYNCHRONIZE - #endif - #if __has_builtin(__sync_bool_compare_and_swap) - #define HCL_HAVE_SYNC_BOOL_COMPARE_AND_SWAP - #endif - #if __has_builtin(__sync_val_compare_and_swap) - #define HCL_HAVE_SYNC_VAL_COMPARE_AND_SWAP - #endif - - #if __has_builtin(__builtin_bswap16) - #define HCL_HAVE_BUILTIN_BSWAP16 - #endif - #if __has_builtin(__builtin_bswap32) - #define HCL_HAVE_BUILTIN_BSWAP32 - #endif - #if __has_builtin(__builtin_bswap64) - #define HCL_HAVE_BUILTIN_BSWAP64 - #endif - #if __has_builtin(__builtin_bswap128) - #define HCL_HAVE_BUILTIN_BSWAP128 - #endif - -#elif defined(__GNUC__) && defined(__GNUC_MINOR__) - - #if (__GNUC__ >= 4) - #define HCL_HAVE_SYNC_LOCK_TEST_AND_SET - #define HCL_HAVE_SYNC_LOCK_RELEASE - - #define HCL_HAVE_SYNC_SYNCHRONIZE - #define HCL_HAVE_SYNC_BOOL_COMPARE_AND_SWAP - #define HCL_HAVE_SYNC_VAL_COMPARE_AND_SWAP - #endif - - #if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) - #define HCL_HAVE_BUILTIN_CTZ - #define HCL_HAVE_BUILTIN_CTZL - #define HCL_HAVE_BUILTIN_CTZLL - #define HCL_HAVE_BUILTIN_CLZ - #define HCL_HAVE_BUILTIN_CLZL - #define HCL_HAVE_BUILTIN_CLZLL - #define HCL_HAVE_BUILTIN_EXPECT - #endif - - #if (__GNUC__ >= 5) - #define HCL_HAVE_BUILTIN_UADD_OVERFLOW - #define HCL_HAVE_BUILTIN_UADDL_OVERFLOW - #define HCL_HAVE_BUILTIN_UADDLL_OVERFLOW - #define HCL_HAVE_BUILTIN_UMUL_OVERFLOW - #define HCL_HAVE_BUILTIN_UMULL_OVERFLOW - #define HCL_HAVE_BUILTIN_UMULLL_OVERFLOW - - #define HCL_HAVE_BUILTIN_SADD_OVERFLOW - #define HCL_HAVE_BUILTIN_SADDL_OVERFLOW - #define HCL_HAVE_BUILTIN_SADDLL_OVERFLOW - #define HCL_HAVE_BUILTIN_SMUL_OVERFLOW - #define HCL_HAVE_BUILTIN_SMULL_OVERFLOW - #define HCL_HAVE_BUILTIN_SMULLL_OVERFLOW - #endif - - #if (__GNUC__ >= 5) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) - /* 4.8.0 or later */ - #define HCL_HAVE_BUILTIN_BSWAP16 - #endif - #if (__GNUC__ >= 5) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) - /* 4.3.0 or later */ - #define HCL_HAVE_BUILTIN_BSWAP32 - #define HCL_HAVE_BUILTIN_BSWAP64 - /*#define HCL_HAVE_BUILTIN_BSWAP128*/ - #endif - -#endif - -#if defined(HCL_HAVE_BUILTIN_EXPECT) -# define HCL_LIKELY(x) (__builtin_expect(!!(x),1)) -# define HCL_UNLIKELY(x) (__builtin_expect(!!(x),0)) -#else -# define HCL_LIKELY(x) (x) -# define HCL_UNLIKELY(x) (x) -#endif - -/* ========================================================================= - * STATIC ASSERTION - * =========================================================================*/ -#define HCL_STATIC_JOIN_INNER(x, y) x ## y -#define HCL_STATIC_JOIN(x, y) HCL_STATIC_JOIN_INNER(x, y) - -#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202311L) -# define HCL_STATIC_ASSERT(expr) static_assert (expr, "invalid assertion") -#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) -# define HCL_STATIC_ASSERT(expr) _Static_assert (expr, "invalid assertion") -#elif defined(__cplusplus) && (__cplusplus >= 201103L) -# define HCL_STATIC_ASSERT(expr) static_assert (expr, "invalid assertion") -#else -# define HCL_STATIC_ASSERT(expr) typedef char HCL_STATIC_JOIN(HCL_STATIC_ASSERT_T_, __LINE__)[(expr)? 1: -1] HCL_UNUSED -#endif - -#define HCL_STATIC_ASSERT_EXPR(expr) ((void)HCL_SIZEOF(char[(expr)? 1: -1])) - -#endif diff --git a/lib/hcl-dos.h b/lib/hcl-dos.h deleted file mode 100644 index cac7b94..0000000 --- a/lib/hcl-dos.h +++ /dev/null @@ -1,165 +0,0 @@ -/* - Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -/* DOS for other platforms than x86? - * If so, the endian should be defined selectively - */ -#define HCL_ENDIAN_LITTLE - -#if defined(__WATCOMC__) && defined(__386__) -# define HCL_SIZEOF_CHAR 1 -# define HCL_SIZEOF_SHORT 2 -# define HCL_SIZEOF_INT 4 -# define HCL_SIZEOF_LONG 4 -# if (__WATCOMC__ < 1200) -# define HCL_SIZEOF_LONG_LONG 0 -# else -# define HCL_SIZEOF_LONG_LONG 8 -# endif -# define HCL_SIZEOF_VOID_P 4 -# define HCL_SIZEOF_FLOAT 4 -# define HCL_SIZEOF_DOUBLE 8 -# define HCL_SIZEOF_LONG_DOUBLE 8 -# define HCL_SIZEOF_WCHAR_T 2 - -# define HCL_SIZEOF___INT8 1 -# define HCL_SIZEOF___INT16 2 -# define HCL_SIZEOF___INT32 4 -# define HCL_SIZEOF___INT64 8 -# define HCL_SIZEOF___INT128 0 - -# define HCL_SIZEOF_OFF64_T 0 -# define HCL_SIZEOF_OFF_T 4 - -# define HCL_SIZEOF_MBSTATE_T HCL_SIZEOF_LONG -# define HCL_MBLEN_MAX 8 - -#elif defined(__WATCOMC__) && !defined(__386__) -# define HCL_SIZEOF_CHAR 1 -# define HCL_SIZEOF_SHORT 2 -# define HCL_SIZEOF_INT 2 -# define HCL_SIZEOF_LONG 4 -# define HCL_SIZEOF_LONG_LONG 8 - -# define HCL_SIZEOF_VOID_P 4 -# define HCL_SIZEOF_FLOAT 4 -# define HCL_SIZEOF_DOUBLE 8 -# define HCL_SIZEOF_LONG_DOUBLE 8 -# define HCL_SIZEOF_WCHAR_T 2 - -# define HCL_SIZEOF___INT8 1 -# define HCL_SIZEOF___INT16 2 -# define HCL_SIZEOF___INT32 4 -# define HCL_SIZEOF___INT64 8 -# define HCL_SIZEOF___INT128 0 - -# define HCL_SIZEOF_OFF64_T 0 -# define HCL_SIZEOF_OFF_T 4 - -# define HCL_SIZEOF_MBSTATE_T HCL_SIZEOF_LONG -# define HCL_MBLEN_MAX 8 - -#elif defined(__TURBOC__) || defined(_MSC_VER) -/* TODO: be more version specific wchar_t may be available in newer BCC */ -# define HCL_SIZEOF_CHAR 1 -# define HCL_SIZEOF_SHORT 2 -# define HCL_SIZEOF_INT 2 -# define HCL_SIZEOF_LONG 4 -# define HCL_SIZEOF_LONG_LONG 0 - -# define HCL_SIZEOF_VOID_P 4 -# define HCL_SIZEOF_FLOAT 4 -# define HCL_SIZEOF_DOUBLE 8 -# define HCL_SIZEOF_LONG_DOUBLE 10 -# define HCL_SIZEOF_WCHAR_T 0 - -# define HCL_SIZEOF___INT8 0 -# define HCL_SIZEOF___INT16 0 -# define HCL_SIZEOF___INT32 0 -# define HCL_SIZEOF___INT64 0 -# define HCL_SIZEOF___INT128 0 - -# define HCL_SIZEOF_OFF64_T 0 -# define HCL_SIZEOF_OFF_T 4 - -# define HCL_SIZEOF_MBSTATE_T HCL_SIZEOF_LONG -# define HCL_MBLEN_MAX 8 - -#elif defined(__ZTC__) && defined(DOS386) - - /* Zortech in DOSX 386 mode (ztc -mx) */ -# define HCL_SIZEOF_CHAR 1 -# define HCL_SIZEOF_SHORT 2 -# define HCL_SIZEOF_INT 4 -# define HCL_SIZEOF_LONG 4 -# define HCL_SIZEOF_LONG_LONG 0 - -# define HCL_SIZEOF_VOID_P 4 -# define HCL_SIZEOF_FLOAT 4 -# define HCL_SIZEOF_DOUBLE 8 -# define HCL_SIZEOF_LONG_DOUBLE 8 -# define HCL_SIZEOF_WCHAR_T 1 - -# define HCL_SIZEOF___INT8 0 -# define HCL_SIZEOF___INT16 0 -# define HCL_SIZEOF___INT32 0 -# define HCL_SIZEOF___INT64 0 -# define HCL_SIZEOF___INT128 0 - -# define HCL_SIZEOF_OFF64_T 0 -# define HCL_SIZEOF_OFF_T 4 - -# define HCL_SIZEOF_MBSTATE_T HCL_SIZEOF_LONG -# define HCL_MBLEN_MAX 8 - -#elif defined(_INTELC32_) - - /* Intel C Code Builder 1.0 */ -# define HCL_SIZEOF_CHAR 1 -# define HCL_SIZEOF_SHORT 2 -# define HCL_SIZEOF_INT 4 -# define HCL_SIZEOF_LONG 4 -# define HCL_SIZEOF_LONG_LONG 0 - -# define HCL_SIZEOF_VOID_P 4 -# define HCL_SIZEOF_FLOAT 4 -# define HCL_SIZEOF_DOUBLE 8 -# define HCL_SIZEOF_LONG_DOUBLE 8 -# define HCL_SIZEOF_WCHAR_T 1 - -# define HCL_SIZEOF___INT8 0 -# define HCL_SIZEOF___INT16 0 -# define HCL_SIZEOF___INT32 0 -# define HCL_SIZEOF___INT64 0 -# define HCL_SIZEOF___INT128 0 - -# define HCL_SIZEOF_OFF64_T 0 -# define HCL_SIZEOF_OFF_T 4 - -# define HCL_SIZEOF_MBSTATE_T HCL_SIZEOF_LONG -# define HCL_MBLEN_MAX 8 - -#else -# error Define the size of various data types. -#endif - diff --git a/lib/hcl-fmt.h b/lib/hcl-fmt.h deleted file mode 100644 index eeaad21..0000000 --- a/lib/hcl-fmt.h +++ /dev/null @@ -1,407 +0,0 @@ -/* - Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _HCL_FMT_H_ -#define _HCL_FMT_H_ - -#include -#include - -/** \file - * This file defines various formatting functions. - */ - -/** - * The hcl_fmt_intmax_flag_t type defines enumerators to change the - * behavior of hcl_fmt_intmax() and hcl_fmt_uintmax(). - */ -enum hcl_fmt_intmax_flag_t -{ - /* Use lower 6 bits to represent base between 2 and 36 inclusive. - * Upper bits are used for these flag options */ - - /** Don't truncate if the buffer is not large enough */ - HCL_FMT_INTMAX_NOTRUNC = (0x40 << 0), -#define HCL_FMT_INTMAX_NOTRUNC HCL_FMT_INTMAX_NOTRUNC -#define HCL_FMT_UINTMAX_NOTRUNC HCL_FMT_INTMAX_NOTRUNC -#define HCL_FMT_INTMAX_TO_BCSTR_NOTRUNC HCL_FMT_INTMAX_NOTRUNC -#define HCL_FMT_UINTMAX_TO_BCSTR_NOTRUNC HCL_FMT_INTMAX_NOTRUNC -#define HCL_FMT_INTMAX_TO_UCSTR_NOTRUNC HCL_FMT_INTMAX_NOTRUNC -#define HCL_FMT_UINTMAX_TO_UCSTR_NOTRUNC HCL_FMT_INTMAX_NOTRUNC -#define HCL_FMT_INTMAX_TO_OOCSTR_NOTRUNC HCL_FMT_INTMAX_NOTRUNC -#define HCL_FMT_UINTMAX_TO_OOCSTR_NOTRUNC HCL_FMT_INTMAX_NOTRUNC - - /** Don't append a terminating null */ - HCL_FMT_INTMAX_NONULL = (0x40 << 1), -#define HCL_FMT_INTMAX_NONULL HCL_FMT_INTMAX_NONULL -#define HCL_FMT_UINTMAX_NONULL HCL_FMT_INTMAX_NONULL -#define HCL_FMT_INTMAX_TO_BCSTR_NONULL HCL_FMT_INTMAX_NONULL -#define HCL_FMT_UINTMAX_TO_BCSTR_NONULL HCL_FMT_INTMAX_NONULL -#define HCL_FMT_INTMAX_TO_UCSTR_NONULL HCL_FMT_INTMAX_NONULL -#define HCL_FMT_UINTMAX_TO_UCSTR_NONULL HCL_FMT_INTMAX_NONULL -#define HCL_FMT_INTMAX_TO_OOCSTR_NONULL HCL_FMT_INTMAX_NONULL -#define HCL_FMT_UINTMAX_TO_OOCSTR_NONULL HCL_FMT_INTMAX_NONULL - - /** Produce no digit for a value of zero */ - HCL_FMT_INTMAX_NOZERO = (0x40 << 2), -#define HCL_FMT_INTMAX_NOZERO HCL_FMT_INTMAX_NOZERO -#define HCL_FMT_UINTMAX_NOZERO HCL_FMT_INTMAX_NOZERO -#define HCL_FMT_INTMAX_TO_BCSTR_NOZERO HCL_FMT_INTMAX_NOZERO -#define HCL_FMT_UINTMAX_TO_BCSTR_NOZERO HCL_FMT_INTMAX_NOZERO -#define HCL_FMT_INTMAX_TO_UCSTR_NOZERO HCL_FMT_INTMAX_NOZERO -#define HCL_FMT_UINTMAX_TO_UCSTR_NOZERO HCL_FMT_INTMAX_NOZERO -#define HCL_FMT_INTMAX_TO_OOCSTR_NOZERO HCL_FMT_INTMAX_NOZERO -#define HCL_FMT_UINTMAX_TO_OOCSTR_NOZERO HCL_FMT_INTMAX_NOZERO - - /** Produce a leading zero for a non-zero value */ - HCL_FMT_INTMAX_ZEROLEAD = (0x40 << 3), -#define HCL_FMT_INTMAX_ZEROLEAD HCL_FMT_INTMAX_ZEROLEAD -#define HCL_FMT_UINTMAX_ZEROLEAD HCL_FMT_INTMAX_ZEROLEAD -#define HCL_FMT_INTMAX_TO_BCSTR_ZEROLEAD HCL_FMT_INTMAX_ZEROLEAD -#define HCL_FMT_UINTMAX_TO_BCSTR_ZEROLEAD HCL_FMT_INTMAX_ZEROLEAD -#define HCL_FMT_INTMAX_TO_UCSTR_ZEROLEAD HCL_FMT_INTMAX_ZEROLEAD -#define HCL_FMT_UINTMAX_TO_UCSTR_ZEROLEAD HCL_FMT_INTMAX_ZEROLEAD -#define HCL_FMT_INTMAX_TO_OOCSTR_ZEROLEAD HCL_FMT_INTMAX_ZEROLEAD -#define HCL_FMT_UINTMAX_TO_OOCSTR_ZEROLEAD HCL_FMT_INTMAX_ZEROLEAD - - /** Use uppercase letters for alphabetic digits */ - HCL_FMT_INTMAX_UPPERCASE = (0x40 << 4), -#define HCL_FMT_INTMAX_UPPERCASE HCL_FMT_INTMAX_UPPERCASE -#define HCL_FMT_UINTMAX_UPPERCASE HCL_FMT_INTMAX_UPPERCASE -#define HCL_FMT_INTMAX_TO_BCSTR_UPPERCASE HCL_FMT_INTMAX_UPPERCASE -#define HCL_FMT_UINTMAX_TO_BCSTR_UPPERCASE HCL_FMT_INTMAX_UPPERCASE -#define HCL_FMT_INTMAX_TO_UCSTR_UPPERCASE HCL_FMT_INTMAX_UPPERCASE -#define HCL_FMT_UINTMAX_TO_UCSTR_UPPERCASE HCL_FMT_INTMAX_UPPERCASE -#define HCL_FMT_INTMAX_TO_OOCSTR_UPPERCASE HCL_FMT_INTMAX_UPPERCASE -#define HCL_FMT_UINTMAX_TO_OOCSTR_UPPERCASE HCL_FMT_INTMAX_UPPERCASE - - /** Insert a plus sign for a positive integer including 0 */ - HCL_FMT_INTMAX_PLUSSIGN = (0x40 << 5), -#define HCL_FMT_INTMAX_PLUSSIGN HCL_FMT_INTMAX_PLUSSIGN -#define HCL_FMT_UINTMAX_PLUSSIGN HCL_FMT_INTMAX_PLUSSIGN -#define HCL_FMT_INTMAX_TO_BCSTR_PLUSSIGN HCL_FMT_INTMAX_PLUSSIGN -#define HCL_FMT_UINTMAX_TO_BCSTR_PLUSSIGN HCL_FMT_INTMAX_PLUSSIGN -#define HCL_FMT_INTMAX_TO_UCSTR_PLUSSIGN HCL_FMT_INTMAX_PLUSSIGN -#define HCL_FMT_UINTMAX_TO_UCSTR_PLUSSIGN HCL_FMT_INTMAX_PLUSSIGN -#define HCL_FMT_INTMAX_TO_OOCSTR_PLUSSIGN HCL_FMT_INTMAX_PLUSSIGN -#define HCL_FMT_UINTMAX_TO_OOCSTR_PLUSSIGN HCL_FMT_INTMAX_PLUSSIGN - - /** Insert a space for a positive integer including 0 */ - HCL_FMT_INTMAX_EMPTYSIGN = (0x40 << 6), -#define HCL_FMT_INTMAX_EMPTYSIGN HCL_FMT_INTMAX_EMPTYSIGN -#define HCL_FMT_UINTMAX_EMPTYSIGN HCL_FMT_INTMAX_EMPTYSIGN -#define HCL_FMT_INTMAX_TO_BCSTR_EMPTYSIGN HCL_FMT_INTMAX_EMPTYSIGN -#define HCL_FMT_UINTMAX_TO_BCSTR_EMPTYSIGN HCL_FMT_INTMAX_EMPTYSIGN -#define HCL_FMT_INTMAX_TO_UCSTR_EMPTYSIGN HCL_FMT_INTMAX_EMPTYSIGN -#define HCL_FMT_UINTMAX_TO_UCSTR_EMPTYSIGN HCL_FMT_INTMAX_EMPTYSIGN - - /** Fill the right part of the string */ - HCL_FMT_INTMAX_FILLRIGHT = (0x40 << 7), -#define HCL_FMT_INTMAX_FILLRIGHT HCL_FMT_INTMAX_FILLRIGHT -#define HCL_FMT_UINTMAX_FILLRIGHT HCL_FMT_INTMAX_FILLRIGHT -#define HCL_FMT_INTMAX_TO_BCSTR_FILLRIGHT HCL_FMT_INTMAX_FILLRIGHT -#define HCL_FMT_UINTMAX_TO_BCSTR_FILLRIGHT HCL_FMT_INTMAX_FILLRIGHT -#define HCL_FMT_INTMAX_TO_UCSTR_FILLRIGHT HCL_FMT_INTMAX_FILLRIGHT -#define HCL_FMT_UINTMAX_TO_UCSTR_FILLRIGHT HCL_FMT_INTMAX_FILLRIGHT -#define HCL_FMT_INTMAX_TO_OOCSTR_FILLRIGHT HCL_FMT_INTMAX_FILLRIGHT -#define HCL_FMT_UINTMAX_TO_OOCSTR_FILLRIGHT HCL_FMT_INTMAX_FILLRIGHT - - /** Fill between the sign chacter and the digit part */ - HCL_FMT_INTMAX_FILLCENTER = (0x40 << 8) -#define HCL_FMT_INTMAX_FILLCENTER HCL_FMT_INTMAX_FILLCENTER -#define HCL_FMT_UINTMAX_FILLCENTER HCL_FMT_INTMAX_FILLCENTER -#define HCL_FMT_INTMAX_TO_BCSTR_FILLCENTER HCL_FMT_INTMAX_FILLCENTER -#define HCL_FMT_UINTMAX_TO_BCSTR_FILLCENTER HCL_FMT_INTMAX_FILLCENTER -#define HCL_FMT_INTMAX_TO_UCSTR_FILLCENTER HCL_FMT_INTMAX_FILLCENTER -#define HCL_FMT_UINTMAX_TO_UCSTR_FILLCENTER HCL_FMT_INTMAX_FILLCENTER -#define HCL_FMT_INTMAX_TO_OOCSTR_FILLCENTER HCL_FMT_INTMAX_FILLCENTER -#define HCL_FMT_UINTMAX_TO_OOCSTR_FILLCENTER HCL_FMT_INTMAX_FILLCENTER -}; - -/* ========================================================================= - * FORMATTED OUTPUT - * ========================================================================= */ -typedef struct hcl_fmtout_t hcl_fmtout_t; - -typedef int (*hcl_fmtout_putbchars_t) ( - hcl_t* hcl, - hcl_fmtout_t* fmtout, - const hcl_bch_t* ptr, - hcl_oow_t len -); - -typedef int (*hcl_fmtout_putuchars_t) ( - hcl_t* hcl, - hcl_fmtout_t* fmtout, - const hcl_uch_t* ptr, - hcl_oow_t len -); - -typedef int (*hcl_fmtout_putobj_t) ( - hcl_t* hcl, - hcl_fmtout_t* fmtout, - hcl_oop_t obj -); - -enum hcl_fmtout_fmt_type_t -{ - HCL_FMTOUT_FMT_TYPE_BCH = 0, - HCL_FMTOUT_FMT_TYPE_UCH -}; -typedef enum hcl_fmtout_fmt_type_t hcl_fmtout_fmt_type_t; - -struct hcl_fmtout_t -{ - hcl_oow_t count; /* out */ - - hcl_mmgr_t* mmgr; /* in */ - hcl_fmtout_putbchars_t putbchars; /* in */ - hcl_fmtout_putuchars_t putuchars; /* in */ - hcl_fmtout_putobj_t putobj; /* in - %O is not handled if it's not set. */ - hcl_bitmask_t mask; /* in */ - void* ctx; /* in */ - - /* internally set as input */ - hcl_fmtout_fmt_type_t fmt_type; - const void* fmt_str; -}; - -/* ========================================================================= - * FORMATTED INPUT - * ========================================================================= */ - -typedef struct hcl_fmtin_t hcl_fmtin_t; - -struct hcl_fmtin_t -{ -#if 0 - hcl_fmtin_getbchars_t getbchars; /* in */ - hcl_fmtin_getuchars_t getuchars; /* in */ -#endif - void* ctx; /* in */ -}; - -#if defined(__cplusplus) -extern "C" { -#endif - -/** - * The hcl_fmt_intmax_to_bcstr() function formats an integer \a value to a - * multibyte string according to the given base and writes it to a buffer - * pointed to by \a buf. It writes to the buffer at most \a size characters - * including the terminating null. The base must be between 2 and 36 inclusive - * and can be ORed with zero or more #hcl_fmt_intmax_to_bcstr_flag_t enumerators. - * This ORed value is passed to the function via the \a base_and_flags - * parameter. If the formatted string is shorter than \a bufsize, the redundant - * slots are filled with the fill character \a fillchar if it is not a null - * character. The filling behavior is determined by the flags shown below: - * - * - If #HCL_FMT_INTMAX_TO_BCSTR_FILLRIGHT is set in \a base_and_flags, slots - * after the formatting string are filled. - * - If #HCL_FMT_INTMAX_TO_BCSTR_FILLCENTER is set in \a base_and_flags, slots - * before the formatting string are filled. However, if it contains the - * sign character, the slots between the sign character and the digit part - * are filled. - * - If neither #HCL_FMT_INTMAX_TO_BCSTR_FILLRIGHT nor #HCL_FMT_INTMAX_TO_BCSTR_FILLCENTER - * , slots before the formatting string are filled. - * - * The \a precision parameter specified the minimum number of digits to - * produce from the \a value. If \a value produces fewer digits than - * \a precision, the actual digits are padded with '0' to meet the precision - * requirement. You can pass a negative number if you don't wish to specify - * precision. - * - * The terminating null is not added if #HCL_FMT_INTMAX_TO_BCSTR_NONULL is set; - * The #HCL_FMT_INTMAX_TO_BCSTR_UPPERCASE flag indicates that the function should - * use the uppercase letter for a alphabetic digit; - * You can set #HCL_FMT_INTMAX_TO_BCSTR_NOTRUNC if you require lossless formatting. - * The #HCL_FMT_INTMAX_TO_BCSTR_PLUSSIGN flag and #HCL_FMT_INTMAX_TO_BCSTR_EMPTYSIGN - * ensures that the plus sign and a space is added for a positive integer - * including 0 respectively. - * The #HCL_FMT_INTMAX_TO_BCSTR_ZEROLEAD flag ensures that the numeric string - * begins with '0' before applying the prefix. - * You can set the #HCL_FMT_INTMAX_TO_BCSTR_NOZERO flag if you want the value of - * 0 to produce nothing. If both #HCL_FMT_INTMAX_TO_BCSTR_NOZERO and - * #HCL_FMT_INTMAX_TO_BCSTR_ZEROLEAD are specified, '0' is still produced. - * - * If \a prefix is not #HCL_NULL, it is inserted before the digits. - * - * \return - * - -1 if the base is not between 2 and 36 inclusive. - * - negated number of characters required for lossless formatting - * - if \a bufsize is 0. - * - if #HCL_FMT_INTMAX_TO_BCSTR_NOTRUNC is set and \a bufsize is less than - * the minimum required for lossless formatting. - * - number of characters written to the buffer excluding a terminating - * null in all other cases. - */ -HCL_EXPORT int hcl_fmt_intmax_to_bcstr ( - hcl_bch_t* buf, /**< buffer pointer */ - int bufsize, /**< buffer size */ - hcl_intmax_t value, /**< integer to format */ - int base_and_flags, /**< base ORed with flags */ - int precision, /**< precision */ - hcl_bch_t fillchar, /**< fill character */ - const hcl_bch_t* prefix /**< prefix */ -); - -/** - * The hcl_fmt_intmax_to_ucstr() function formats an integer \a value to a - * wide-character string according to the given base and writes it to a buffer - * pointed to by \a buf. It writes to the buffer at most \a size characters - * including the terminating null. The base must be between 2 and 36 inclusive - * and can be ORed with zero or more #hcl_fmt_intmax_to_ucstr_flag_t enumerators. - * This ORed value is passed to the function via the \a base_and_flags - * parameter. If the formatted string is shorter than \a bufsize, the redundant - * slots are filled with the fill character \a fillchar if it is not a null - * character. The filling behavior is determined by the flags shown below: - * - * - If #HCL_FMT_INTMAX_TO_UCSTR_FILLRIGHT is set in \a base_and_flags, slots - * after the formatting string are filled. - * - If #HCL_FMT_INTMAX_TO_UCSTR_FILLCENTER is set in \a base_and_flags, slots - * before the formatting string are filled. However, if it contains the - * sign character, the slots between the sign character and the digit part - * are filled. - * - If neither #HCL_FMT_INTMAX_TO_UCSTR_FILLRIGHT nor #HCL_FMT_INTMAX_TO_UCSTR_FILLCENTER - * , slots before the formatting string are filled. - * - * The \a precision parameter specified the minimum number of digits to - * produce from the \ value. If \a value produces fewer digits than - * \a precision, the actual digits are padded with '0' to meet the precision - * requirement. You can pass a negative number if don't wish to specify - * precision. - * - * The terminating null is not added if #HCL_FMT_INTMAX_TO_UCSTR_NONULL is set; - * The #HCL_FMT_INTMAX_TO_UCSTR_UPPERCASE flag indicates that the function should - * use the uppercase letter for a alphabetic digit; - * You can set #HCL_FMT_INTMAX_TO_UCSTR_NOTRUNC if you require lossless formatting. - * The #HCL_FMT_INTMAX_TO_UCSTR_PLUSSIGN flag and #HCL_FMT_INTMAX_TO_UCSTR_EMPTYSIGN - * ensures that the plus sign and a space is added for a positive integer - * including 0 respectively. - * The #HCL_FMT_INTMAX_TO_UCSTR_ZEROLEAD flag ensures that the numeric string - * begins with 0 before applying the prefix. - * You can set the #HCL_FMT_INTMAX_TO_UCSTR_NOZERO flag if you want the value of - * 0 to produce nothing. If both #HCL_FMT_INTMAX_TO_UCSTR_NOZERO and - * #HCL_FMT_INTMAX_TO_UCSTR_ZEROLEAD are specified, '0' is still produced. - * - * If \a prefix is not #HCL_NULL, it is inserted before the digits. - * - * \return - * - -1 if the base is not between 2 and 36 inclusive. - * - negated number of characters required for lossless formatting - * - if \a bufsize is 0. - * - if #HCL_FMT_INTMAX_TO_UCSTR_NOTRUNC is set and \a bufsize is less than - * the minimum required for lossless formatting. - * - number of characters written to the buffer excluding a terminating - * null in all other cases. - */ -HCL_EXPORT int hcl_fmt_intmax_to_ucstr ( - hcl_uch_t* buf, /**< buffer pointer */ - int bufsize, /**< buffer size */ - hcl_intmax_t value, /**< integer to format */ - int base_and_flags, /**< base ORed with flags */ - int precision, /**< precision */ - hcl_uch_t fillchar, /**< fill character */ - const hcl_uch_t* prefix /**< prefix */ -); - -/** - * The hcl_fmt_uintmax_to_bcstr() function formats an unsigned integer \a value - * to a multibyte string buffer. It behaves the same as hcl_fmt_intmax_to_bcstr() - * except that it handles an unsigned integer. - */ -HCL_EXPORT int hcl_fmt_uintmax_to_bcstr ( - hcl_bch_t* buf, /**< buffer pointer */ - int bufsize, /**< buffer size */ - hcl_uintmax_t value, /**< integer to format */ - int base_and_flags, /**< base ORed with flags */ - int precision, /**< precision */ - hcl_bch_t fillchar, /**< fill character */ - const hcl_bch_t* prefix /**< prefix */ -); - -/** - * The hcl_fmt_uintmax_to_ucstr() function formats an unsigned integer \a value - * to a multibyte string buffer. It behaves the same as hcl_fmt_intmax_to_ucstr() - * except that it handles an unsigned integer. - */ -HCL_EXPORT int hcl_fmt_uintmax_to_ucstr ( - hcl_uch_t* buf, /**< buffer pointer */ - int bufsize, /**< buffer size */ - hcl_uintmax_t value, /**< integer to format */ - int base_and_flags, /**< base ORed with flags */ - int precision, /**< precision */ - hcl_uch_t fillchar, /**< fill character */ - const hcl_uch_t* prefix /**< prefix */ -); - -#if defined(HCL_OOCH_IS_BCH) -# define hcl_fmt_intmax_to_oocstr hcl_fmt_intmax_to_bcstr -# define hcl_fmt_uintmax_to_oocstr hcl_fmt_uintmax_to_bcstr -#else -# define hcl_fmt_intmax_to_oocstr hcl_fmt_intmax_to_ucstr -# define hcl_fmt_uintmax_to_oocstr hcl_fmt_uintmax_to_ucstr -#endif - - -/* TODO: hcl_fmt_fltmax_to_bcstr()... hcl_fmt_fltmax_to_ucstr() */ - - -/* ========================================================================= - * FORMATTED OUTPUT - * ========================================================================= */ -HCL_EXPORT int hcl_bfmt_outv ( - hcl_t* hcl, - hcl_fmtout_t* fmtout, - const hcl_bch_t* fmt, - va_list ap -); - -HCL_EXPORT int hcl_ufmt_outv ( - hcl_t* hcl, - hcl_fmtout_t* fmtout, - const hcl_uch_t* fmt, - va_list ap -); - - -HCL_EXPORT int hcl_bfmt_out ( - hcl_t* hcl, - hcl_fmtout_t* fmtout, - const hcl_bch_t* fmt, - ... -); - -HCL_EXPORT int hcl_ufmt_out ( - hcl_t* hcl, - hcl_fmtout_t* fmtout, - const hcl_uch_t* fmt, - ... -); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/lib/hcl-json.h b/lib/hcl-json.h deleted file mode 100644 index 57ffaa4..0000000 --- a/lib/hcl-json.h +++ /dev/null @@ -1,252 +0,0 @@ -/* - Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _HCL_JSON_H_ -#define _HCL_JSON_H_ - -#include - -/** - * The hcl_json_t type defines a simple json parser. - */ -typedef struct hcl_json_t hcl_json_t; - -enum hcl_json_option_t -{ - HCL_JSON_TRAIT, - HCL_JSON_LOG_MASK, -}; -typedef enum hcl_json_option_t hcl_json_option_t; - -enum hcl_json_trait_t -{ - /* no trait defined at this moment. XXXX is just a placeholder */ - HCL_JSON_XXXX = (1 << 0) -}; -typedef enum hcl_json_trait_t hcl_json_trait_t; - -/* ========================================================================= */ - -enum hcl_json_state_t -{ - HCL_JSON_STATE_START, - HCL_JSON_STATE_IN_ARRAY, - HCL_JSON_STATE_IN_DIC, - - HCL_JSON_STATE_IN_WORD_VALUE, - HCL_JSON_STATE_IN_NUMERIC_VALUE, - HCL_JSON_STATE_IN_STRING_VALUE, - HCL_JSON_STATE_IN_CHARACTER_VALUE -}; -typedef enum hcl_json_state_t hcl_json_state_t; - - -/* ========================================================================= */ -enum hcl_json_inst_t -{ - HCL_JSON_INST_START_ARRAY, - HCL_JSON_INST_END_ARRAY, - HCL_JSON_INST_START_DIC, - HCL_JSON_INST_END_DIC, - - HCL_JSON_INST_KEY, - - HCL_JSON_INST_CHARACTER, /* there is no such element as character in real JSON */ - HCL_JSON_INST_STRING, - HCL_JSON_INST_NUMBER, - HCL_JSON_INST_NIL, - HCL_JSON_INST_TRUE, - HCL_JSON_INST_FALSE, -}; -typedef enum hcl_json_inst_t hcl_json_inst_t; - -typedef void (*hcl_json_log_write_t) ( - hcl_json_t* json, - hcl_bitmask_t mask, - const hcl_ooch_t* msg, - hcl_oow_t len -); - -typedef int (*hcl_json_instcb_t) ( - hcl_json_t* json, - hcl_json_inst_t inst, - const hcl_oocs_t* str -); - -struct hcl_json_prim_t -{ - hcl_json_log_write_t log_write; - hcl_json_instcb_t instcb; -}; -typedef struct hcl_json_prim_t hcl_json_prim_t; - -/* ========================================================================= */ - -#if defined(__cplusplus) -extern "C" { -#endif - -HCL_EXPORT hcl_json_t* hcl_json_open ( - hcl_mmgr_t* mmgr, - hcl_oow_t xtnsize, - hcl_json_prim_t* prim, - hcl_errnum_t* errnum -); - -HCL_EXPORT void hcl_json_close ( - hcl_json_t* json -); - -HCL_EXPORT void hcl_json_reset ( - hcl_json_t* json -); - -HCL_EXPORT int hcl_json_feedbchars ( - hcl_json_t* json, - const hcl_bch_t* ptr, - hcl_oow_t len, - hcl_oow_t* xlen -); - -HCL_EXPORT int hcl_json_feeduchars ( - hcl_json_t* json, - const hcl_uch_t* ptr, - hcl_oow_t len, - hcl_oow_t* xlen -); - - -#if defined(HCL_OOCH_IS_UCH) -# define hcl_json_feed hcl_json_feeduchars -#else -# define hcl_json_feed hcl_json_feedbchars -#endif - - -HCL_EXPORT hcl_json_state_t hcl_json_getstate ( - hcl_json_t* json -); - -HCL_EXPORT int hcl_json_setoption ( - hcl_json_t* json, - hcl_json_option_t id, - const void* value -); - -HCL_EXPORT int hcl_json_getoption ( - hcl_json_t* json, - hcl_json_option_t id, - void* value -); - - -HCL_EXPORT void* hcl_json_getxtn ( - hcl_json_t* json -); - -HCL_EXPORT hcl_mmgr_t* hcl_json_getmmgr ( - hcl_json_t* json -); - -HCL_EXPORT hcl_cmgr_t* hcl_json_getcmgr ( - hcl_json_t* json -); - -HCL_EXPORT void hcl_json_setcmgr ( - hcl_json_t* json, - hcl_cmgr_t* cmgr -); - - -HCL_EXPORT hcl_errnum_t hcl_json_geterrnum ( - hcl_json_t* json -); - -HCL_EXPORT const hcl_ooch_t* hcl_json_geterrstr ( - hcl_json_t* json -); - -HCL_EXPORT const hcl_ooch_t* hcl_json_geterrmsg ( - hcl_json_t* json -); - -HCL_EXPORT void hcl_json_seterrnum ( - hcl_json_t* json, - hcl_errnum_t errnum -); - -HCL_EXPORT void hcl_json_seterrbfmt ( - hcl_json_t* json, - hcl_errnum_t errnum, - const hcl_bch_t* fmt, - ... -); - -HCL_EXPORT void hcl_json_seterrufmt ( - hcl_json_t* json, - hcl_errnum_t errnum, - const hcl_uch_t* fmt, - ... -); - -HCL_EXPORT void hcl_json_logbfmt ( - hcl_json_t* json, - hcl_bitmask_t mask, - const hcl_bch_t* fmt, - ... -); - -HCL_EXPORT void hcl_json_logufmt ( - hcl_json_t* json, - hcl_bitmask_t mask, - const hcl_uch_t* fmt, - ... -); - -HCL_EXPORT void* hcl_json_allocmem ( - hcl_json_t* json, - hcl_oow_t size -); - -HCL_EXPORT void* hcl_json_callocmem ( - hcl_json_t* json, - hcl_oow_t size -); - -HCL_EXPORT void* hcl_json_reallocmem ( - hcl_json_t* json, - void* ptr, - hcl_oow_t size -); - -HCL_EXPORT void hcl_json_freemem ( - hcl_json_t* json, - void* ptr -); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/lib/hcl-msw.h b/lib/hcl-msw.h deleted file mode 100644 index 4bc9dcd..0000000 --- a/lib/hcl-msw.h +++ /dev/null @@ -1,196 +0,0 @@ -/* - Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* -Macro Meaning -_WIN64 A 64-bit platform. -_WIN32 A 32-bit platform. This value is also defined by the 64-bit - compiler for backward compatibility. -_WIN16 A 16-bit platform - -The following macros are specific to the architecture. - -Macro Meaning -_M_IA64 Intel Itanium Processor Family -_M_IX86 x86 platform -_M_X64 x64 platform -*/ - -/* windows for most of non-x86 platforms dropped. - * make it selective to support old non-x86 windows platforms. */ -#define HCL_ENDIAN_LITTLE -#define HCL_ENABLE_WIDE_CHAR - -#if defined(__WATCOMC__) -# define HCL_SIZEOF_CHAR 1 -# define HCL_SIZEOF_SHORT 2 -# define HCL_SIZEOF_INT 4 -# define HCL_SIZEOF_LONG 4 -# if (__WATCOMC__ < 1200) -# define HCL_SIZEOF_LONG_LONG 0 -# else -# define HCL_SIZEOF_LONG_LONG 8 -# endif - -# if defined(_WIN64) -# define HCL_SIZEOF_VOID_P 8 -# else -# define HCL_SIZEOF_VOID_P 4 -# endif -# define HCL_SIZEOF_FLOAT 4 -# define HCL_SIZEOF_DOUBLE 8 -# define HCL_SIZEOF_LONG_DOUBLE 8 -# define HCL_SIZEOF_WCHAR_T 2 - -# define HCL_SIZEOF___INT8 1 -# define HCL_SIZEOF___INT16 2 -# define HCL_SIZEOF___INT32 4 -# define HCL_SIZEOF___INT64 8 -# define HCL_SIZEOF___INT128 0 - -# define HCL_SIZEOF_OFF64_T 0 -# define HCL_SIZEOF_OFF_T 8 - -# define HCL_SIZEOF_MBSTATE_T HCL_SIZEOF_LONG -# define HCL_MBLEN_MAX 16 - - /* these two have only to be large enough */ -# define HCL_SIZEOF_STRUCT_SOCKADDR_IN 32 -# define HCL_SIZEOF_STRUCT_SOCKADDR_IN6 64 -# define HCL_SIZEOF_SOCKLEN_T 4 - -#elif defined(__GNUC__) || defined(__DMC__) || defined(__POCC__) -# define HCL_SIZEOF_CHAR 1 -# define HCL_SIZEOF_SHORT 2 -# define HCL_SIZEOF_INT 4 -# define HCL_SIZEOF_LONG 4 -# define HCL_SIZEOF_LONG_LONG 8 - -# if defined(_WIN64) -# define HCL_SIZEOF_VOID_P 8 -# else -# define HCL_SIZEOF_VOID_P 4 -# endif -# define HCL_SIZEOF_FLOAT 4 -# define HCL_SIZEOF_DOUBLE 8 -# define HCL_SIZEOF_LONG_DOUBLE 16 -# define HCL_SIZEOF_WCHAR_T 2 - -# define HCL_SIZEOF___INT8 0 -# define HCL_SIZEOF___INT16 0 -# define HCL_SIZEOF___INT32 0 -# define HCL_SIZEOF___INT64 0 -# define HCL_SIZEOF___INT128 0 - -# define HCL_SIZEOF_OFF64_T 0 -# define HCL_SIZEOF_OFF_T 8 - -# define HCL_SIZEOF_MBSTATE_T HCL_SIZEOF_LONG -# define HCL_MBLEN_MAX 16 - - /* these two have only to be large enough */ -# define HCL_SIZEOF_STRUCT_SOCKADDR_IN 32 -# define HCL_SIZEOF_STRUCT_SOCKADDR_IN6 64 - -#elif defined(_MSC_VER) -# define HCL_SIZEOF_CHAR 1 -# define HCL_SIZEOF_SHORT 2 -# define HCL_SIZEOF_INT 4 -# define HCL_SIZEOF_LONG 4 -# if (_MSC_VER>=1310) -# define HCL_SIZEOF_LONG_LONG 8 -# else -# define HCL_SIZEOF_LONG_LONG 0 -# endif - -# if defined(_WIN64) -# define HCL_SIZEOF_VOID_P 8 -# else -# define HCL_SIZEOF_VOID_P 4 -# endif -# define HCL_SIZEOF_FLOAT 4 -# define HCL_SIZEOF_DOUBLE 8 -# define HCL_SIZEOF_LONG_DOUBLE 8 -# define HCL_SIZEOF_WCHAR_T 2 - -# define HCL_SIZEOF___INT8 1 -# define HCL_SIZEOF___INT16 2 -# define HCL_SIZEOF___INT32 4 -# define HCL_SIZEOF___INT64 8 -# define HCL_SIZEOF___INT128 0 - -# define HCL_SIZEOF_OFF64_T 0 -# define HCL_SIZEOF_OFF_T 8 - -# define HCL_SIZEOF_MBSTATE_T HCL_SIZEOF_LONG -# define HCL_MBLEN_MAX 8 - - /* these two have only to be large enough */ -# define HCL_SIZEOF_STRUCT_SOCKADDR_IN 32 -# define HCL_SIZEOF_STRUCT_SOCKADDR_IN6 64 -# define HCL_SIZEOF_SOCKLEN_T 4 - -#elif defined(__BORLANDC__) - -# define HCL_SIZEOF_CHAR 1 -# define HCL_SIZEOF_SHORT 2 -# define HCL_SIZEOF_INT 4 -# define HCL_SIZEOF_LONG 4 -# define HCL_SIZEOF_LONG_LONG 0 - -# if defined(_WIN64) -# define HCL_SIZEOF_VOID_P 8 -# else -# define HCL_SIZEOF_VOID_P 4 -# endif -# define HCL_SIZEOF_FLOAT 4 -# define HCL_SIZEOF_DOUBLE 8 -# define HCL_SIZEOF_LONG_DOUBLE 8 -# define HCL_SIZEOF_WCHAR_T 2 - -# define HCL_SIZEOF___INT8 1 -# define HCL_SIZEOF___INT16 2 -# define HCL_SIZEOF___INT32 4 -# if (__BORLANDC__ >= 0x500) -# define HCL_SIZEOF___INT64 0 -# else -# define HCL_SIZEOF___INT64 0 -# endif -# define HCL_SIZEOF___INT128 0 - -# define HCL_SIZEOF_OFF64_T 0 -# define HCL_SIZEOF_OFF_T 8 - -# define HCL_SIZEOF_MBSTATE_T HCL_SIZEOF_LONG -# define HCL_MBLEN_MAX 8 - - /* these two have only to be large enough */ -# define HCL_SIZEOF_STRUCT_SOCKADDR_IN 32 -# define HCL_SIZEOF_STRUCT_SOCKADDR_IN6 64 -# define HCL_SIZEOF_SOCKLEN_T 4 - -#else -# error Define the size of various data types. -#endif - diff --git a/lib/hcl-os2.h b/lib/hcl-os2.h deleted file mode 100644 index 15cbb83..0000000 --- a/lib/hcl-os2.h +++ /dev/null @@ -1,125 +0,0 @@ -/* - Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -/* OS/2 for other platforms than x86? - * If so, the endian should be defined selectively - */ -#define HCL_ENDIAN_LITTLE - -#if defined(__WATCOMC__) -# define HCL_SIZEOF_CHAR 1 -# define HCL_SIZEOF_SHORT 2 -# define HCL_SIZEOF_INT 4 -# define HCL_SIZEOF_LONG 4 -# if (__WATCOMC__ < 1200) -# define HCL_SIZEOF_LONG_LONG 0 -# else -# define HCL_SIZEOF_LONG_LONG 8 -# endif -# define HCL_SIZEOF_VOID_P 4 -# define HCL_SIZEOF_FLOAT 4 -# define HCL_SIZEOF_DOUBLE 8 -# define HCL_SIZEOF_LONG_DOUBLE 8 -# define HCL_SIZEOF_WCHAR_T 2 - -# define HCL_SIZEOF___INT8 1 -# define HCL_SIZEOF___INT16 2 -# define HCL_SIZEOF___INT32 4 -# define HCL_SIZEOF___INT64 8 -# define HCL_SIZEOF___INT128 0 - -# define HCL_SIZEOF_OFF64_T 0 -# define HCL_SIZEOF_OFF_T 8 - -/* I don't know the exact mbstate size. - * but this should be large enough */ -# define HCL_SIZEOF_MBSTATE_T HCL_SIZEOF_LONG -/* TODO: check the exact value */ -# define HCL_MBLEN_MAX 8 - - /* these two have only to be large enough */ -# define HCL_SIZEOF_STRUCT_SOCKADDR_IN 32 -# define HCL_SIZEOF_STRUCT_SOCKADDR_IN6 64 -# define HCL_SIZEOF_SOCKLEN_T 4 - -#elif defined(__BORLANDC__) -# define HCL_SIZEOF_CHAR 1 -# define HCL_SIZEOF_SHORT 2 -# define HCL_SIZEOF_INT 4 -# define HCL_SIZEOF_LONG 4 -# define HCL_SIZEOF_LONG_LONG 0 -# define HCL_SIZEOF_VOID_P 4 -# define HCL_SIZEOF_FLOAT 4 -# define HCL_SIZEOF_DOUBLE 8 -# define HCL_SIZEOF_LONG_DOUBLE 10 -# define HCL_SIZEOF_WCHAR_T 2 - -# define HCL_SIZEOF___INT8 0 -# define HCL_SIZEOF___INT16 0 -# define HCL_SIZEOF___INT32 0 -# define HCL_SIZEOF___INT64 0 -# define HCL_SIZEOF___INT128 0 - -# define HCL_SIZEOF_OFF64_T 0 -# define HCL_SIZEOF_OFF_T 4 - -# define HCL_SIZEOF_MBSTATE_T HCL_SIZEOF_LONG -# define HCL_MBLEN_MAX 8 - -# define HCL_SIZEOF_STRUCT_SOCKADDR_IN 32 -# define HCL_SIZEOF_STRUCT_SOCKADDR_IN6 64 -# define HCL_SIZEOF_SOCKLEN_T 4 - -#elif defined(__IBMC__) || defined(__IBMCPP__) - - /* visualage c or c++ */ -# define HCL_SIZEOF_CHAR 1 -# define HCL_SIZEOF_SHORT 2 -# define HCL_SIZEOF_INT 4 -# define HCL_SIZEOF_LONG 4 -# define HCL_SIZEOF_LONG_LONG 0 -# define HCL_SIZEOF_VOID_P 4 -# define HCL_SIZEOF_FLOAT 4 -# define HCL_SIZEOF_DOUBLE 8 -# define HCL_SIZEOF_LONG_DOUBLE 16 -# define HCL_SIZEOF_WCHAR_T 2 - -# define HCL_SIZEOF___INT8 0 -# define HCL_SIZEOF___INT16 0 -# define HCL_SIZEOF___INT32 0 -# define HCL_SIZEOF___INT64 0 -# define HCL_SIZEOF___INT128 0 - -# define HCL_SIZEOF_OFF64_T 0 -# define HCL_SIZEOF_OFF_T 4 - -# define HCL_SIZEOF_MBSTATE_T HCL_SIZEOF_LONG -# define HCL_MBLEN_MAX 8 - -# define HCL_SIZEOF_STRUCT_SOCKADDR_IN 32 -# define HCL_SIZEOF_STRUCT_SOCKADDR_IN6 64 -# define HCL_SIZEOF_SOCKLEN_T 4 - -#else -# error Define the size of various data types. -#endif diff --git a/lib/hcl-prv.h b/lib/hcl-prv.h deleted file mode 100644 index 50ab5a7..0000000 --- a/lib/hcl-prv.h +++ /dev/null @@ -1,2080 +0,0 @@ -/* - Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _HCL_PRV_H_ -#define _HCL_PRV_H_ - -#include -#include -#include -#include -#include -#include - -/* you can define this to either 1 or 2 */ -#define HCL_CODE_LONG_PARAM_SIZE 2 - -/* this is useful for debugging. hcl_gc() can be called - * while hcl has not been fully initialized when this is defined*/ -#define HCL_SUPPORT_GC_DURING_IGNITION - -/* define this to enable karatsuba multiplication in bigint */ -#define HCL_ENABLE_KARATSUBA -#define HCL_KARATSUBA_CUTOFF 32 -#define HCL_KARATSUBA_CUTOFF_DEBUG 3 - -/* enable floating-pointer number support in the basic formatting functions */ -#define HCL_ENABLE_FLTFMT - -#if defined(HCL_BUILD_DEBUG) -/*#define HCL_DEBUG_LEXER 1*/ -#define HCL_DEBUG_VM_PROCESSOR 1 -#define HCL_DEBUG_VM_EXEC 1 -/*#define HCL_PROFILE_VM 1*/ -#endif - -/* allow the caller to drive process switching by calling - * stix_switchprocess(). */ -#define HCL_EXTERNAL_PROCESS_SWITCH - -/* limit the maximum object size such that: - * 1. an index to an object field can be represented in a small integer. - * 2. the maximum number of bits including bit-shifts can be represented - * in the hcl_oow_t type. - */ -#define HCL_LIMIT_OBJ_SIZE - - -#define HCL_BC_BUFFER_INIT 10240 -#define HCL_BC_BUFFER_ALIGN 10240 - -#define HCL_LIT_BUFFER_INIT 1024 -#define HCL_LIT_BUFFER_ALIGN 1024 - -#if defined(__has_builtin) - -# if (!__has_builtin(__builtin_memset) || !__has_builtin(__builtin_memcpy) || !__has_builtin(__builtin_memmove) || !__has_builtin(__builtin_memcmp)) -# include -# endif - -# if __has_builtin(__builtin_memset) -# define HCL_MEMSET(dst,src,size) __builtin_memset(dst,src,size) -# else -# define HCL_MEMSET(dst,src,size) memset(dst,src,size) -# endif -# if __has_builtin(__builtin_memcpy) -# define HCL_MEMCPY(dst,src,size) __builtin_memcpy(dst,src,size) -# else -# define HCL_MEMCPY(dst,src,size) memcpy(dst,src,size) -# endif -# if __has_builtin(__builtin_memmove) -# define HCL_MEMMOVE(dst,src,size) __builtin_memmove(dst,src,size) -# else -# define HCL_MEMMOVE(dst,src,size) memmove(dst,src,size) -# endif -# if __has_builtin(__builtin_memcmp) -# define HCL_MEMCMP(dst,src,size) __builtin_memcmp(dst,src,size) -# else -# define HCL_MEMCMP(dst,src,size) memcmp(dst,src,size) -# endif - -#else - - /* g++ 2.95 had a problem with __builtin_memxxx functions: - * implicit declaration of function `__builtin_memmove' */ -# if defined(__cplusplus) && defined(__GNUC__) && (__GNUC__ <= 2) -# undef HAVE___BUILTIN_MEMSET -# undef HAVE___BUILTIN_MEMCPY -# undef HAVE___BUILTIN_MEMMOVE -# undef HAVE___BUILTIN_MEMCMP -# endif - -# if !defined(HAVE___BUILTIN_MEMSET) || \ - !defined(HAVE___BUILTIN_MEMCPY) || \ - !defined(HAVE___BUILTIN_MEMMOVE) || \ - !defined(HAVE___BUILTIN_MEMCMP) -# include -# endif - -# if defined(HAVE___BUILTIN_MEMSET) -# define HCL_MEMSET(dst,src,size) __builtin_memset(dst,src,size) -# else -# define HCL_MEMSET(dst,src,size) memset(dst,src,size) -# endif -# if defined(HAVE___BUILTIN_MEMCPY) -# define HCL_MEMCPY(dst,src,size) __builtin_memcpy(dst,src,size) -# else -# define HCL_MEMCPY(dst,src,size) memcpy(dst,src,size) -# endif -# if defined(HAVE___BUILTIN_MEMMOVE) -# define HCL_MEMMOVE(dst,src,size) __builtin_memmove(dst,src,size) -# else -# define HCL_MEMMOVE(dst,src,size) memmove(dst,src,size) -# endif -# if defined(HAVE___BUILTIN_MEMCMP) -# define HCL_MEMCMP(dst,src,size) __builtin_memcmp(dst,src,size) -# else -# define HCL_MEMCMP(dst,src,size) memcmp(dst,src,size) -# endif - -#endif - -#if defined(HCL_LIMIT_OBJ_SIZE) -/* limit the maximum object size such that: - * 1. an index to an object field can be represented in a small integer. - * 2. the maximum number of bit shifts can be represented in the hcl_oow_t type. - */ -# define HCL_OBJ_SIZE_MAX ((hcl_oow_t)HCL_SMOOI_MAX) -# define HCL_OBJ_SIZE_BITS_MAX (HCL_OBJ_SIZE_MAX * HCL_BITS_PER_BYTE) -#else -# define HCL_OBJ_SIZE_MAX ((hcl_oow_t)HCL_TYPE_MAX(hcl_oow_t)) -# define HCL_OBJ_SIZE_BITS_MAX (HCL_OBJ_SIZE_MAX * HCL_BITS_PER_BYTE) -#endif - -/* ========================================================================= */ -/* CLASS SPEC ENCODING */ -/* ========================================================================= */ -/* - * The spec field of a class object encodes the number of the fixed part - * and the type of the indexed part. The fixed part is the number of - * named instance variables. If the spec of a class is indexed, the object - * of the class can be instantiated with the size of the indexed part. - * - * For example, on a platform where sizeof(hcl_oow_t) is 4, - * the layout of the spec field of a class as an OOP value looks like this: - * - * 31 12 11 10 9 8 7 6 5 4 3 2 1 0 - * |number of named instance variables|indexed-type|flags |oop-tag| - * - * the number of named instance variables is stored in high 21 bits. - * the indexed type takes up bit 5 to bit 10 (assuming HCL_OBJ_TYPE_BITS is 6. - * HCL_OBJ_TYPE_XXX enumerators are used to represent actual values). - * and the indexability is stored in the flag bits which span from bit 2 to 4. - * - * The maximum number of named(fixed) instance variables for a class is: - * 2 ^ ((BITS-IN-OOW - HCL_OOP_TAG_BITS_LO) - HCL_OBJ_TYPE_BITS - 1 - 2) - 1 - * - * HCL_OOP_TAG_BITS_LO are decremented from the number of bits in OOW because - * the spec field is always encoded as a small integer. - * - * The number of named instance variables can be greater than 0 if the - * class spec is not indexed or if it's a pointer indexed class - * (indexed_type == HCL_OBJ_TYPE_OOP) - * - * indexed_type is one of the #hcl_obj_type_t enumerators. - */ - -#define HCL_CLASS_SPEC_FLAG_BITS (3) - -/* - * The HCL_CLASS_SPEC_MAKE() macro creates a class spec value. - * _class->spec = HCL_SMOOI_TO_OOP(HCL_CLASS_SPEC_MAKE(0, 1, HCL_OBJ_TYPE_CHAR)); - */ -#define HCL_CLASS_SPEC_MAKE(named_instvar,flags,indexed_type) ( \ - (((hcl_oow_t)(named_instvar)) << (HCL_OBJ_FLAGS_TYPE_BITS + HCL_CLASS_SPEC_FLAG_BITS)) | \ - (((hcl_oow_t)(indexed_type)) << (HCL_CLASS_SPEC_FLAG_BITS)) | (((hcl_oow_t)flags) & HCL_LBMASK(hcl_oow_t,HCL_CLASS_SPEC_FLAG_BITS))) - -/* what is the number of named instance variables? - * HCL_CLASS_SPEC_NAMED_INSTVARS(HCL_OOP_TO_SMOOI(_class->spec)) - * ensure to update Class<> (HCL_OBJ_FLAGS_TYPE_BITS + HCL_CLASS_SPEC_FLAG_BITS)) - -/* is it a user-indexable class? - * all objects can be indexed with basicAt:. - * this indicates if an object can be instantiated with a dynamic size - * (new: size) and and can be indexed with at:. - */ -#define HCL_CLASS_SPEC_FLAGS(spec) (((hcl_oow_t)(spec)) & HCL_LBMASK(hcl_oow_t,HCL_CLASS_SPEC_FLAG_BITS)) - -/* if so, what is the indexing type? character? pointer? etc? */ -#define HCL_CLASS_SPEC_INDEXED_TYPE(spec) \ - ((((hcl_oow_t)(spec)) >> HCL_CLASS_SPEC_FLAG_BITS) & HCL_LBMASK(hcl_oow_t, HCL_OBJ_FLAGS_TYPE_BITS)) - -/* If you add more than 4 items, you must update code related to CLASS_ENTER instruction - * and class attributes as well as HCL_CLASS_SPEC_FLAG_BITS. */ -#define HCL_CLASS_SPEC_FLAG_INDEXED (1 << 0) -#define HCL_CLASS_SPEC_FLAG_IMMUTABLE (1 << 1) -#define HCL_CLASS_SPEC_FLAG_UNCOPYABLE (1 << 2) - -#define HCL_CLASS_SPEC_IS_INDEXED(spec) (HCL_CLASS_SPEC_FLAGS(spec) & HCL_CLASS_SPEC_FLAG_INDEXED) -#define HCL_CLASS_SPEC_IS_IMMUTABLE(spec) (HCL_CLASS_SPEC_FLAGS(spec) & HCL_CLASS_SPEC_FLAG_IMMUTABLE) -#define HCL_CLASS_SPEC_IS_UNCOPYABLE(spec) (HCL_CLASS_SPEC_FLAGS(spec) & HCL_CLASS_SPEC_FLAG_UNCOPYABLE) - -/* What is the maximum number of named instance variables? - * This limit is set this way because the number must be encoded into - * the spec field of the class with limited number of bits assigned to - * the number of named instance variables. - */ -#define HCL_CLASS_SPEC_INSTVAR_BITS (HCL_SMOOI_ABS_BITS - (HCL_OBJ_FLAGS_TYPE_BITS + HCL_CLASS_SPEC_FLAG_BITS)) -#define HCL_MAX_NAMED_INSTVARS HCL_BITS_MAX(hcl_oow_t, HCL_CLASS_SPEC_INSTVAR_BITS) - -/* Given the number of named instance variables, what is the maximum number - * of indexed instance variables? The number of indexed instance variables - * is not stored in the spec field of the class. It only affects the actual - * size of an object(obj->_size) selectively combined with the number of - * named instance variables. So it's the maximum value of obj->_size minus - * the number of named instance variables. - */ -#define HCL_MAX_INDEXED_INSTVARS(named_instvar) (HCL_OBJ_SIZE_MAX - named_instvar) - -/* - * self-specification of a class - * | classinstvars | classvars | flags | - * - * When converted to a small integer - * | sign-bit | classinstvars | classvars | flags | tag | - */ -#define HCL_CLASS_SELFSPEC_FLAG_BITS (3) -#define HCL_CLASS_SELFSPEC_CLASSINSTVAR_BITS ((HCL_SMOOI_ABS_BITS - HCL_CLASS_SELFSPEC_FLAG_BITS) / 2) -#define HCL_CLASS_SELFSPEC_CLASSVAR_BITS (HCL_SMOOI_ABS_BITS - (HCL_CLASS_SELFSPEC_CLASSINSTVAR_BITS + HCL_CLASS_SELFSPEC_FLAG_BITS)) - -#define HCL_CLASS_SELFSPEC_MAKE(class_var,classinst_var,flag) \ - ((((hcl_oow_t)class_var) << (HCL_CLASS_SELFSPEC_CLASSINSTVAR_BITS + HCL_CLASS_SELFSPEC_FLAG_BITS)) | \ - (((hcl_oow_t)classinst_var) << (HCL_CLASS_SELFSPEC_FLAG_BITS)) | \ - (((hcl_oow_t)flag) << (0))) - -#define HCL_CLASS_SELFSPEC_CLASSVARS(spec) \ - (((hcl_oow_t)spec) >> (HCL_CLASS_SELFSPEC_CLASSINSTVAR_BITS + HCL_CLASS_SELFSPEC_FLAG_BITS)) - -#define HCL_CLASS_SELFSPEC_CLASSINSTVARS(spec) \ - ((((hcl_oow_t)spec) >> HCL_CLASS_SELFSPEC_FLAG_BITS) & HCL_LBMASK(hcl_oow_t, HCL_CLASS_SELFSPEC_CLASSINSTVAR_BITS)) - -#define HCL_CLASS_SELFSPEC_FLAGS(spec) \ - (((hcl_oow_t)spec) & HCL_LBMASK(hcl_oow_t, HCL_CLASS_SELFSPEC_FLAG_BITS)) - -/* If you add more than 4 items, you must update code related to CLASS_ENTER instruction - * and class attributes as well as HCL_CLASS_SELFSPEC_FLAG_BITS. */ -#define HCL_CLASS_SELFSPEC_FLAG_FINAL (1 << 0) -#define HCL_CLASS_SELFSPEC_FLAG_LIMITED (1 << 1) /* not allowed to instantiate normally */ - - -#define HCL_MAX_CLASSVARS HCL_BITS_MAX(hcl_oow_t, HCL_CLASS_SELFSPEC_CLASSVAR_BITS) -#define HCL_MAX_CLASSINSTVARS HCL_BITS_MAX(hcl_oow_t, HCL_CLASS_SELFSPEC_CLASSINSTVAR_BITS) - -/* ========================================================================= */ -/* END OF CLASS SPEC ENCODING */ -/* ========================================================================= */ - - - -#if defined(HCL_INCLUDE_COMPILER) - -/* ========================================================================= */ -/* SOURCE CODE I/O FOR COMPILER */ -/* ========================================================================= */ -enum hcl_tok_type_t -{ - HCL_TOK_EOF, - - /* the following 5 items must be in this order for code - * in flx_quoted_token() in read.c */ - HCL_TOK_CHARLIT, - HCL_TOK_BCHRLIT, - HCL_TOK_STRLIT, - HCL_TOK_BSTRLIT, - HCL_TOK_SYMLIT, - - HCL_TOK_NUMLIT, - HCL_TOK_RADNUMLIT, - HCL_TOK_FPDECLIT, - HCL_TOK_SMPTRLIT, - HCL_TOK_ERRLIT, - - HCL_TOK_NIL, - HCL_TOK_TRUE, - HCL_TOK_FALSE, - HCL_TOK_SELF, - HCL_TOK_SUPER, - - HCL_TOK_CLASS, - HCL_TOK_FUN, - HCL_TOK_VAR, - HCL_TOK_DO, - HCL_TOK_IF, - HCL_TOK_ELIF, - HCL_TOK_ELSE, - HCL_TOK_THROW, - HCL_TOK_TRY, - HCL_TOK_CATCH, - HCL_TOK_BREAK, - HCL_TOK_CONTINUE, - HCL_TOK_UNTIL, - HCL_TOK_WHILE, - HCL_TOK_RETURN, - HCL_TOK_REVERT, - HCL_TOK_AND, - HCL_TOK_OR, - HCL_TOK_PLUS, - HCL_TOK_SET, - HCL_TOK_SET_R, - - HCL_TOK_BINOP, - HCL_TOK_IDENT, - HCL_TOK_IDENT_DOTTED, - HCL_TOK_IDENT_DOTTED_CLA, - HCL_TOK_DOT, /* . */ - HCL_TOK_DBLDOTS, /* .. */ - HCL_TOK_ELLIPSIS, /* ... */ - HCL_TOK_COLON, /* : */ - HCL_TOK_DBLCOLONS, /* :: */ - HCL_TOK_TRPCOLONS, /* ::: */ - HCL_TOK_COLONEQ, /* := */ - HCL_TOK_COLONGT, /* :+ */ - HCL_TOK_COLONLT, /* :+ */ - HCL_TOK_SEMICOLON, /* ; */ - HCL_TOK_COMMA, /* , */ - HCL_TOK_LPAREN, /* ( */ - HCL_TOK_RPAREN, /* ) */ - -#if 0 /* use the (obj:message ... ) syntax instad. no more mlist by (: */ - HCL_TOK_LPARCOLON, /* (: */ -#define HCL_TOK_LPARCOLON HCL_TOK_LPARCOLON -#endif - - HCL_TOK_APAREN, /* #[ - array parenthesis */ - HCL_TOK_BAPAREN, /* #b[ - byte array parenthesis */ - HCL_TOK_CAPAREN, /* #c[ - character array parenthesis */ -#if 0 - HCL_TOK_WAPAREN, /* #w[ - word array parenthesis */ - HCL_TOK_HWAPAREN, /* #hw[ - half-word array parenthesis */ -#endif - HCL_TOK_QLPAREN, /* #( - quoted-list parenthesis */ - HCL_TOK_DLPAREN, /* #{ - dictionary parenthese */ - HCL_TOK_LBRACK, /* [ - group */ - HCL_TOK_RBRACK, /* ] */ - HCL_TOK_LBRACE, /* { - block */ - HCL_TOK_RBRACE, /* } */ - HCL_TOK_VBAR, /* | */ - HCL_TOK_EOL, /* end of line */ - - HCL_TOK_INCLUDE, - HCL_TOK_PRAGMA -}; -typedef enum hcl_tok_type_t hcl_tok_type_t; - -typedef struct hcl_tok_t hcl_tok_t; -struct hcl_tok_t -{ - hcl_tok_type_t type; - hcl_oocs_t name; - hcl_oow_t name_capa; - hcl_loc_t loc; -}; - - -typedef struct hcl_link_t hcl_link_t; -struct hcl_link_t -{ - hcl_link_t* link; -}; - -enum hcl_cnode_type_t -{ - HCL_CNODE_CHARLIT, - HCL_CNODE_BCHRLIT, - HCL_CNODE_SYMBOL, - HCL_CNODE_DSYMBOL, /* dotted symbol */ - HCL_CNODE_STRLIT, - HCL_CNODE_BSTRLIT, - HCL_CNODE_SYMLIT, - HCL_CNODE_NUMLIT, - HCL_CNODE_RADNUMLIT, - HCL_CNODE_FPDECLIT, - HCL_CNODE_SMPTRLIT, - HCL_CNODE_ERRLIT, /* last item for HCL_CNODE_IS_FOR_DATA_LITERAL */ - - HCL_CNODE_NIL, - HCL_CNODE_TRUE, - HCL_CNODE_FALSE, - HCL_CNODE_SELF, - HCL_CNODE_SUPER, /* last item for HCL_CNODE_IS_FOR_DATA_SIMPLE */ - - HCL_CNODE_CONS, - HCL_CNODE_ELIST, /* empty list */ - HCL_CNODE_SHELL, /* pseudo-node to hold another actual node */ - - /* If HCL_CNODE_SHELL is not the last item before the horizontal line, - * HCL_CNDOE_IS_FOR_DATA(x) must be revised */ - /* ------------------------------------------------------------------ */ - - /* the cnode types from here don't represent actual data. - * these represent syntactical elements of the language only. */ - HCL_CNODE_CLASS, /* first item for HCL_CNODE_IS_FOR_LANG */ - HCL_CNODE_FUN, - HCL_CNODE_VAR, - HCL_CNODE_DO, - HCL_CNODE_IF, - HCL_CNODE_ELIF, - HCL_CNODE_ELSE, - HCL_CNODE_THROW, - HCL_CNODE_TRY, - HCL_CNODE_CATCH, - HCL_CNODE_BREAK, - HCL_CNODE_CONTINUE, - HCL_CNODE_UNTIL, - HCL_CNODE_WHILE, - HCL_CNODE_RETURN, - HCL_CNODE_REVERT, - HCL_CNODE_AND, - HCL_CNODE_OR, - HCL_CNODE_PLUS, - HCL_CNODE_SET, - HCL_CNODE_SET_R, /* language item for HCL_CODE_IS_FOR_LANG */ - - HCL_CNODE_ELLIPSIS, /* ... */ - HCL_CNODE_TRPCOLONS, /* ::: */ - HCL_CNODE_DBLCOLONS, /* :: */ - HCL_CNODE_COLON, /* : */ - HCL_CNODE_COLONGT, /* :> */ - HCL_CNODE_COLONLT /* :< */ -}; -typedef enum hcl_cnode_type_t hcl_cnode_type_t; - -enum hcl_cnode_flag_t -{ - HCL_CNODE_AUTO_FORGED = (1 << 0) -}; -typedef enum hcl_cnode_flag_t hcl_cnode_flag_t; - -#define HCL_CNODE_GET_TYPE(x) ((x)->cn_type) -#define HCL_CNODE_GET_FLAGS(x) ((x)->cn_flags) -#define HCL_CNODE_GET_LOC(x) (&(x)->cn_loc) -#define HCL_CNODE_GET_TOK(x) (&(x)->cn_tok) -#define HCL_CNODE_GET_TOKPTR(x) ((x)->cn_tok.ptr) -#define HCL_CNODE_GET_TOKLEN(x) ((x)->cn_tok.len) - -#define HCL_CNODE_IS_TYPED(x, _type) ((x)->cn_type == _type) -#define HCL_CNODE_IS_FOR_DATA(x) ((x)->cn_type <= HCL_CNODE_SHELL) -#define HCL_CNODE_IS_FOR_DATA_SIMPLE(x) ((x)->cn_type <= HCL_CNODE_SUPER) -#define HCL_CNODE_IS_FOR_DATA_LITERAL(x) ((x)->cn_type <= HCL_CNODE_ERRLIT) - -/* words to compose the language itself. - * the words pointing to data items(e.g. super, self, nil, true, false) are excluded */ -#define HCL_CNODE_IS_FOR_LANG(x)((x)->cn_type >= HCL_CNODE_CLASS && (x)->cn_type <= HCL_CNODE_SET_R) - -#define HCL_CNODE_IS_ELLIPSIS(x) ((x)->cn_type == HCL_CNODE_ELLIPSIS) -#define HCL_CNODE_IS_TRPCOLONS(x) ((x)->cn_type == HCL_CNODE_TRPCOLONS) -#define HCL_CNODE_IS_DBLCOLONS(x) ((x)->cn_type == HCL_CNODE_DBLCOLONS) -#define HCL_CNODE_IS_COLON(x) ((x)->cn_type == HCL_CNODE_COLON) -#define HCL_CNODE_IS_COLONGT(x) ((x)->cn_type == HCL_CNODE_COLONGT) -#define HCL_CNODE_IS_COLONLT(x) ((x)->cn_type == HCL_CNODE_COLONLT) - -#define HCL_CNODE_IS_SYMBOL(x) ((x)->cn_type == HCL_CNODE_SYMBOL) -#define HCL_CNODE_IS_SYMBOL_IDENT(x) (HCL_CNODE_IS_SYMBOL(x) && !hcl_is_binop_char((x)->cn_tok.ptr[0])) -#define HCL_CNODE_IS_SYMBOL_BINOP(x) (HCL_CNODE_IS_SYMBOL(x) && hcl_is_binop_char((x)->cn_tok.ptr[0])) - -#define HCL_CNODE_IS_DSYMBOL(x) ((x)->cn_type == HCL_CNODE_DSYMBOL) -#define HCL_CNODE_IS_DSYMBOL_CLA(x) ((x)->cn_type == HCL_CNODE_DSYMBOL && (x)->u.dsymbol.is_cla) - -#define HCL_CNODE_IS_CONS(x) ((x)->cn_type == HCL_CNODE_CONS) -#define HCL_CNODE_IS_CONS_CONCODED(x, code) ((x)->cn_type == HCL_CNODE_CONS && (x)->u.cons.concode == (code)) -#define HCL_CNODE_CONS_CONCODE(x) ((x)->u.cons.concode) -#define HCL_CNODE_CONS_CAR(x) ((x)->u.cons.car) -#define HCL_CNODE_CONS_CDR(x) ((x)->u.cons.cdr) - -#define HCL_CNODE_IS_ELIST(x) ((x)->cn_type == HCL_CNODE_ELIST) -#define HCL_CNODE_IS_ELIST_CONCODED(x, code) ((x)->cn_type == HCL_CNODE_ELIST && (x)->u.elist.concode == (code)) -#define HCL_CNODE_ELIST_CONCODE(x) ((x)->u.elist.concode) - -/* NOTE: hcl_cnode_t used by the built-in compiler is not an OOP object */ -struct hcl_cnode_t -{ - hcl_cnode_type_t cn_type; - int cn_flags; - hcl_loc_t cn_loc; - hcl_oocs_t cn_tok; - - union - { - struct - { - hcl_ooch_t v; - } charlit; - struct - { - hcl_oob_t v; - } bchrlit; - struct - { - int is_cla; /* class-level accessor. prefixed with self or super */ - } dsymbol; - struct - { - hcl_oow_t v; - } smptrlit; - struct - { - hcl_ooi_t v; - } errlit; - struct - { - hcl_concode_t concode; - hcl_cnode_t* car; - hcl_cnode_t* cdr; - } cons; - struct - { - hcl_concode_t concode; - } elist; - struct - { - hcl_cnode_t* obj; - } shell; - } u; -}; - -struct hcl_var_info_t -{ - int type; - /* ctx_offset 0 means the current context. - * 1 means current->home. - * 2 means current->home->home. - * index_in_ctx is a relative index within the context found. - */ - hcl_oow_t ctx_offset; /* context offset */ - hcl_oow_t index_in_ctx; /* index in the current scope */ -}; -typedef struct hcl_var_info_t hcl_var_info_t; - - -/* NOTE: hcl_cframe_t used by the built-in compiler is not an OOP object */ -struct hcl_cframe_t -{ - int opcode; - hcl_cnode_t* operand; - - union - { - /* COP_COMPILE_OBJECT_R */ - struct - { - hcl_ooi_t nrets; - } obj_r; - - /* COP_EMIT_CALL */ - struct - { - hcl_ooi_t index; - hcl_ooi_t nrets; - } call; - - /* COP_EMIT_SEND_MESSAGE */ - struct - { - hcl_ooi_t nargs; - hcl_ooi_t nrets; - int to_super; - } sendmsg; - - /* COP_EMIT_SET */ - struct - { - int mode; /* VAR_ACCESS_STORE or VAR_ACCESS_POP */ - hcl_var_info_t vi; - } set; - - struct - { - hcl_ooi_t cond_pos; - hcl_ooi_t body_pos; - hcl_ooi_t jump_inst_pos; - hcl_loc_t start_loc; - } post_while; - - struct - { - hcl_ooi_t body_pos; - hcl_ooi_t jump_inst_pos; - hcl_loc_t start_loc; - hcl_cnode_t* cmd_cnode; - } post_if; - - struct - { - hcl_ooi_t jump_inst_pos; - } post_and; - - struct - { - hcl_ooi_t jump_inst_pos; - } post_or; - - /* COP_POST_TRY */ - struct - { - hcl_oow_t jump_inst_pos; - } post_try; - - /* COP_POST_CATCH */ - struct - { - hcl_oow_t jump_inst_pos; - hcl_oow_t exarg_offset; - } post_catch; - - struct - { - hcl_oow_t lvar_start; - hcl_oow_t lvar_end; - } post_do; - - /* COP_COMPILE_ARRAY_LIST, COP_POP_INTO_ARRAY, COP_EMIT_MAKE_ARRAY */ - struct - { - hcl_ooi_t index; - } array_list; - - /* COP_COMPILE_PURE_ARRAY_LIST, COP_POP_INTO_PURE_ARRAY, COP_EMIT_MAKE_PURE_ARRAY */ - struct - { - int elem_type; - hcl_ooi_t index; - } pure_array_list; - - /* COP_EMIT_MAKE_DIC */ - struct - { - hcl_ooi_t index; - } dic_list; - - /* COP_POST_FUN, COP_EMIT_FUN */ - struct - { - unsigned int fun_type; - hcl_oow_t jump_inst_pos; - hcl_ooi_t lfbase_pos; - hcl_ooi_t lfsize_pos; - hcl_cnode_t* class_name; /* class name for out-of-class method definition */ - } fun; - - /* COP_EMIT_RETURN */ - struct - { - int from_home; - } _return; - - /* COP_POST_BREAK */ - struct - { - hcl_ooi_t jump_inst_pos; - } _break; - - /* COP_COMPILE_CLASS_P1, COP_COMPILE_CLASS_P2 */ - struct - { - hcl_ooi_t nsuperclasses; - unsigned int indexed_type; - hcl_loc_t start_loc; - hcl_cnode_t* cmd_cnode; - hcl_cnode_t* class_name_cnode; - } _class; - } u; -}; -typedef struct hcl_cframe_t hcl_cframe_t; - -enum hcl_ctlblk_type_t -{ - HCL_CTLBLK_TYPE_LOOP, - HCL_CTLBLK_TYPE_TRY, - HCL_CTLBLK_TYPE_CLASS -}; -typedef enum hcl_ctlblk_type_t hcl_ctlblk_type_t; - -/* control block information for the compiler */ -struct hcl_ctlblk_info_t -{ - hcl_ctlblk_type_t _type; -}; -typedef struct hcl_ctlblk_info_t hcl_ctlblk_info_t; - -/* function block information for the compiler */ -struct hcl_funblk_info_t -{ - unsigned int fun_type; - - hcl_oow_t tmprlen; /* accumulated length of the temporaries string including outer blocks */ - hcl_oow_t tmprcnt; /* accumulated number of temporaries including outer blocks */ - - hcl_oow_t tmpr_va; /* 0 or 1 */ - hcl_oow_t tmpr_nargs; /* number of fixed arguments */ - hcl_oow_t tmpr_nrvars; /* number of return variables */ - hcl_oow_t tmpr_nlvars; /* number of local variables */ - - hcl_oow_t make_inst_pos; - hcl_oow_t lfbase; - - hcl_ooi_t ctlblk_base; - - hcl_ooi_t clsblk_base; - hcl_ooi_t clsblk_top; - - unsigned int access_outer: 1; - unsigned int accessed_by_inner: 1; -}; -typedef struct hcl_funblk_info_t hcl_funblk_info_t; - -/* class block information for the compiler */ - -struct hcl_clsblk_info_t -{ - hcl_cnode_t* class_name; - - hcl_oocsc_t ivars; - hcl_oocsc_t cvars; - - hcl_oow_t nivars; - hcl_oow_t ncvars; - hcl_oow_t spec; /* TODO: byte indexed, word indexed? */ - - hcl_ooi_t funblk_base; - hcl_ooi_t class_start_inst_pos; /* the position of the first instruction in the class body after CLASS_ENTER */ - hcl_ooi_t class_enter_inst_pos; /* the position of the CLASS_ENTER instruction */ -}; -typedef struct hcl_clsblk_info_t hcl_clsblk_info_t; - - -/* reader stack for list reading */ -typedef struct hcl_rstl_t hcl_rstl_t; -struct hcl_rstl_t -{ - hcl_cnode_t* head; - hcl_cnode_t* tail; - hcl_loc_t loc; - int flagv; - hcl_oow_t count; - hcl_rstl_t* prev; -}; - -typedef struct hcl_flx_dt_t hcl_flx_dt_t; /* delemiter token */ -struct hcl_flx_dt_t -{ - int row_start; - int row_end; - int col_next; -}; - -typedef struct hcl_flx_di_t hcl_flx_di_t; /* dollared-signed identifier */ -struct hcl_flx_di_t -{ - /* state data */ - hcl_oow_t char_count; -}; - -typedef struct hcl_flx_hc_t hcl_flx_hc_t; /* hash-marked character like #\, #\newline */ -struct hcl_flx_hc_t -{ - /* state data */ - hcl_oow_t char_count; -}; - -typedef struct hcl_flx_hi_t hcl_flx_hi_t; /* hash-marked identifier */ -struct hcl_flx_hi_t -{ - /* state data */ - hcl_oow_t char_count; -}; - -typedef struct hcl_flx_hbc_t hcl_flx_hbc_t; /* intermediate state for #b */ -struct hcl_flx_hbc_t -{ - /* state data */ - hcl_ooch_t start_c; -}; - -typedef struct hcl_flx_pi_t hcl_flx_pi_t; -struct hcl_flx_pi_t -{ - /* state data */ - hcl_oow_t char_count; - hcl_oow_t seg_count; - hcl_oow_t seg_len; - hcl_oow_t non_ident_seg_count; - hcl_tok_type_t last_non_ident_type; - int is_cla; /* class-level accrssor. prefixed with self/super */ -}; - -typedef struct hcl_flx_binop_t hcl_flx_binop_t; -struct hcl_flx_binop_t -{ - hcl_oow_t _not_used; -}; - -typedef struct hcl_flx_pn_t hcl_flx_pn_t; -struct hcl_flx_pn_t -{ - /* state data */ - int fpdec; - int radix; - int radix_cand_overflown; - hcl_oow_t radix_cand; - hcl_tok_type_t tok_type; - hcl_oow_t digit_count[2]; - hcl_ooch_t start_digit; -}; - -typedef struct hcl_flx_qt_t hcl_flx_qt_t; /* quoted token */ -struct hcl_flx_qt_t -{ - /* input data */ - hcl_tok_type_t tok_type; - hcl_synerrnum_t synerr_code; - hcl_ooch_t end_char; - hcl_ooch_t esc_char; - hcl_oow_t min_len; - hcl_oow_t max_len; - unsigned int is_byte: 1; - unsigned int regex: 1; - - /* state data */ - unsigned int escaped: 4; /* must be large enough to hold 1, 2, 4, 8 */ - int digit_count; - hcl_ooci_t c_acc; -}; - -typedef struct hcl_flx_st_t hcl_flx_st_t; -struct hcl_flx_st_t -{ - /* input data */ - hcl_ooch_t sign_c; - - /* state data */ - hcl_oow_t char_count; - int hmarked; -}; - - -typedef struct hcl_flx_bcp_t hcl_flx_bcp_t; -struct hcl_flx_bcp_t -{ - hcl_ooch_t start_c; -}; - -enum hcl_flx_state_t -{ - HCL_FLX_START, - HCL_FLX_BACKSLASHED, - HCL_FLX_COMMENT, - HCL_FLX_DELIM_TOKEN, - HCL_FLX_DOLLARED_IDENT, - HCL_FLX_HMARKED_TOKEN, /* hash-marked token */ - HCL_FLX_HMARKED_BC, /* #b - intermediate state before #b[, #c[, or #b-radixed binary number */ - HCL_FLX_HMARKED_BINOP, /* #++ - binary operator symbol */ - HCL_FLX_HMARKED_CHAR, /* hash-marked character that begins with #\ */ - HCL_FLX_HMARKED_IDENT, /* literal symbol */ - HCL_FLX_PLAIN_IDENT, /* plain identifier */ - HCL_FLX_BINOP, /* binary operator */ - HCL_FLX_PLAIN_NUMBER, /* plain number */ - HCL_FLX_QUOTED_TOKEN, /* string, character */ - HCL_FLX_SIGNED_TOKEN, /* prefixed with + or - */ - HCL_FLX_BC_PREFIX /* b or C prefix before " or ' */ -}; -typedef enum hcl_flx_state_t hcl_flx_state_t; - -typedef struct hcl_frd_t hcl_frd_t; -struct hcl_frd_t -{ - int level; - int flagv; - int expect_include_file; - int expect_vlist_item; - int do_include_file; - hcl_cnode_t* obj; - hcl_loc_t list_loc; -}; - -struct hcl_compiler_t -{ - /* flags passed in via hcl_compile() */ - int flags; - - /* callback pointer registerd upon compiler creation */ - hcl_cb_t* cbp; - - /* input handler */ - hcl_io_impl_t cci_rdr; - - /* static input data buffer */ - hcl_io_cciarg_t cci_arg; - - /* pointer to the current input data. initially, it points to &inarg */ - hcl_io_cciarg_t* curinp; - - /* information about the last meaningful character read. - * this is a copy of curinp->lxc if no ungetting is performed. - * if there is something in the unget buffer, this is overwritten - * by a value from the buffer when the request to read a character - * is served */ - hcl_lxc_t lxc; - - /* unget buffer */ - hcl_lxc_t ungot[10]; - int nungots; - - /* the last token read */ - hcl_tok_t tok; - hcl_link_t* sr_names; - - hcl_synerr_t synerr; - - /* temporary space to handle an illegal character */ - hcl_ooch_t ilchr; - hcl_oocs_t ilchr_ucs; - - /* == READER == */ - struct - { - hcl_oop_t s; /* stack for reading */ - hcl_oop_t e; /* last object read */ - hcl_rstl_t* st; - } r; /* reading */ - /* == END READER == */ - - struct - { - #if defined(HCL_OOCH_IS_UCH) - struct - { - hcl_bch_t buf[HCL_BCSIZE_MAX]; - hcl_oow_t len; - int no_check; - } rsd; /* residue - incomplete sequence at the end of the last data fed by hcl_feedbchars() */ - #endif - - struct - { - hcl_flx_state_t state; - hcl_loc_t loc; - hcl_loc_t _oloc; - - union - { - hcl_flx_dt_t dt; /* delimiter token */ - hcl_flx_di_t di; /* dollar-signed identifier */ - hcl_flx_hc_t hc; /* hash-marked character */ - hcl_flx_hi_t hi; /* hash-marked identifier - literal symbol */ - hcl_flx_hbc_t hbc; /* #b #c ... */ - hcl_flx_pi_t pi; /* plain identifier */ - hcl_flx_binop_t binop; /* binary operator */ - hcl_flx_pn_t pn; /* plain number */ - hcl_flx_qt_t qt; /* quoted token */ - hcl_flx_st_t st; /* signed token */ - hcl_flx_bcp_t bcp; /* b or c prefix */ - } u; - } lx; - - struct hcl_frd_t rd; - hcl_on_cnode_t on_cnode; - } feed; - - /* == COMPILER STACK == */ - struct - { - hcl_cframe_t* ptr; - hcl_ooi_t top; - hcl_oow_t capa; - } cfs; - /* == END COMPILER STACK == */ - - struct - { - hcl_oocs_t s; /* buffer */ - hcl_oow_t capa; /* bufer capacity */ - hcl_oow_t wcount; /* word count */ - } tv; /* temporary variables including arguments */ - - struct - { - hcl_ooi_t depth; /* signed because it starts with -1 */ - hcl_ctlblk_info_t* info; - hcl_oow_t info_capa; - } ctlblk; /* control block - loop, try-catch */ - - struct - { - hcl_ooi_t depth; /* signed because it starts with -1 */ - hcl_funblk_info_t* info; - hcl_oow_t info_capa; - } funblk; /* function block */ - - struct - { - hcl_ooi_t depth; /* signed because it starts with -1 */ - hcl_clsblk_info_t* info; - hcl_oow_t info_capa; - } clsblk; /* class block */ - - - struct - { - hcl_cnode_t cons_to_nil; - hcl_cnode_t nil; - } fake_cnode; -}; -#endif - - - -/* hcl_context_t, hcl_block_t, hcl_function_t stores the local variable information - * - * Use up to 29 bits in a 32-bit hcl_ooi_t. Exclude the tag bit and the sign bit. - * | SIGN | INSTA | VA | NARGS | NRVARS | NLVARS | TAG | - * 1 1 8 8 11 2 <= 32 - * ----------------------------------------------------------- - * Parameters to the MAKE_BLOCK or MAKE_FUNCTION instructions - * | INSTA | VA | NARGS | NRVARS | NLVARS - * 1 1 4 4 6 <= 16 (HCL_CODE_LONG_PARAM_SIZE 1, two params) - * 1 1 8 8 11 <= 32 (HCL_CODE_LONG_PARAM_SIZE 2, two params, use 29 bits to avoid collection when converted to a smooi) - * - * INSTA indicates the class instantiation method. - * NARGS and NRVARS are also used for the CALL and CALL2 instructions. - * CALL encodes NARGS in one parameter. - * CALLR encodes NARGS in one parameter and NRVARS in another parameter. - * NARGS and NRVARS must not exceed a single parameter size. - */ - -#if defined(HCL_CODE_LONG_PARAM_SIZE) && (HCL_CODE_LONG_PARAM_SIZE == 1) - -# define MAX_CODE_NBLKARGS (0xFu) /* 15 - 4 bits*/ -# define MAX_CODE_NBLKRVARS (0xFu) /* 15 - 4 bits*/ -# define MAX_CODE_NBLKLVARS (0x3Fu) /* 63 - 6 bits */ - -# define ENCODE_BLK_MASK(insta,va,nargs,nrvars,nlvars) \ - ((((insta) & 0x1) << 15) | (((va) & 0x1) << 14) | (((nargs) & 0xF) << 10) | (((nrvars) & 0xF) << 6) | (((nlvars) & 0x3FF))) -# define GET_BLK_MASK_INSTA(x) (((x) >> 15) & 0x1) -# define GET_BLK_MASK_VA(x) (((x) >> 14) & 0x1) -# define GET_BLK_MASK_NARGS(x) (((x) >> 10) & 0xF) -# define GET_BLK_MASK_NRVARS(x) (((x) >> 6) & 0xF) -# define GET_BLK_MASK_NLVARS(x) ((x) & 0x3F) - -# define MAX_CODE_JUMP (0xFFu) -# define MAX_CODE_PARAM (0xFFu) -# define MAX_CODE_PARAM2 (0xFFFFu) /* 16 bits */ -#elif defined(HCL_CODE_LONG_PARAM_SIZE) && (HCL_CODE_LONG_PARAM_SIZE == 2) - -# define MAX_CODE_NBLKARGS (0xFFu) /* 255, 8 bits */ -# define MAX_CODE_NBLKRVARS (0xFFu) /* 255, 8 bits */ -# define MAX_CODE_NBLKLVARS (0x7FFu) /* 2047, 11 bits */ -# define ENCODE_BLK_MASK(insta,va,nargs,nrvars,nlvars) \ - ((((insta) & 0x1) << 28) | (((va) & 0x1) << 27) | (((nargs) & 0xFF) << 19) | (((nrvars) & 0xFF) << 11) | (((nlvars) & 0x7FF))) -# define GET_BLK_MASK_INSTA(x) (((x) >> 28) & 0x1) -# define GET_BLK_MASK_VA(x) (((x) >> 27) & 0x1) -# define GET_BLK_MASK_NARGS(x) (((x) >> 19) & 0xFF) -# define GET_BLK_MASK_NRVARS(x) (((x) >> 11) & 0xFF) -# define GET_BLK_MASK_NLVARS(x) ((x) & 0x7FF) - -# define MAX_CODE_JUMP (0xFFFFu) -# define MAX_CODE_PARAM (0xFFFFu) -# define MAX_CODE_PARAM2 (0xFFFFFFFFu) /* 32 bits */ -#else -# error Unsupported HCL_CODE_LONG_PARAM_SIZE -#endif - - - -/* ----------------------------------------------------------------------------------------------------------------- -SHORT INSTRUCTION CODE LONG INSTRUCTION CODE ----------------------------------------------------------------------------------------------------------------- - v v -0-3 0000 00XX STORE_INTO_INSTVAR 128 1000 0000 XXXXXXXX STORE_INTO_IVAR_X (bit 4 off, bit 3 off) -4-7 0000 01XX STORE_INTO_INSTVAR -8-11 0000 10XX POP_INTO_INSTVAR 136 1000 1000 XXXXXXXX POP_INTO_IVAR_X (bit 4 off, bit 3 on) -12-15 0000 11XX POP_INTO_INSTVAR -16-19 0001 00XX PUSH_INSTVAR 144 1001 0000 XXXXXXXX PUSH_IVAR_X (bit 4 on) -20-23 0001 01XX PUSH_INSTVAR - - v v -24-27 0001 10XX PUSH_TEMPVAR 152 1001 1000 XXXXXXXX PUSH_TEMPVAR_X (bit 4 on) -28-31 0001 11XX PUSH_TEMPVAR -32-35 0010 00XX STORE_INTO_TEMPVAR 160 1010 0000 XXXXXXXX STORE_INTO_TEMPVAR_X (bit 4 off, bit 3 off) -36-39 0010 01XX STORE_INTO_TEMPVAR -40-43 0010 10XX POP_INTO_TEMPVAR 168 1010 1000 XXXXXXXX POP_INTO_TEMPVAR_X (bit 4 off, bit 3 on) -44-47 0010 11XX POP_INTO_TEMPVAR - -48-51 0011 00XX PUSH_LITERAL 176 1011 0000 XXXXXXXX PUSH_LITERAL_X -52-55 0011 01XX PUSH_LITERAL 177 1011 0001 XXXXXXXX XXXXXXXX PUSH_LITERAL_X2 - - vv -56-59 0011 10XX STORE_INTO_OBJECT 184 1011 1000 XXXXXXXX STORE_INTO_OBJECT (bit 3 on, bit 2 off) -60-63 0011 11XX POP_INTO_OBJECT 188 1011 1100 XXXXXXXX POP_INTO_OBJECT (bit 3 on, bit 2 on) -64-67 0100 00XX PUSH_OBJECT 192 1100 0000 XXXXXXXX PUSH_OBJECT (bit 3 off) - - -68-71 0100 01XX JUMP_FORWARD 196 1100 0100 XXXXXXXX JUMP_FORWARD_X - 197 1100 0101 XXXXXXXX JUMP2_FORWARD -72-75 0100 10XX JUMP_BACKWARD 200 1100 1000 XXXXXXXX JUMP_BACKWARD_X - 201 1100 1001 XXXXXXXX JUMP2_BACKWARD -76-79 0100 11XX UNUSED 204 1100 1100 XXXXXXXX JUMP_FORWARD_IF_TRUE - 205 1100 1101 XXXXXXXX JUMP2_FORWARD_IF_TRUE - 206 1100 1110 XXXXXXXX JUMP_BACKWARD_IF_TRUE - 207 1100 1111 XXXXXXXX JUMP2_BACKWARD_IF_TRUE -80-83 0101 00XX UNUSED 208 1101 0000 XXXXXXXX JUMP_FORWARD_IF_FALSE - 209 1101 0001 XXXXXXXX JUMP2_FORWARD_IF_FALSE - 210 1101 0010 XXXXXXXX JUMP_BACKWARD_IF_FALSE - 211 1101 0011 XXXXXXXX JUMP2_BACKWARD_IF_FALSE - -84-87 0101 01XX CALL 212 1101 0100 XXXXXXXX CALL_X - - vv -88-91 0101 10XX YYYYYYYY STORE_INTO_CTXTEMPVAR 216 1101 1000 XXXXXXXX YYYYYYYY STORE_INTO_CTXTEMPVAR_X (bit 3 on, bit 2 off) -92-95 0101 11XX YYYYYYYY POP_INTO_CTXTEMPVAR 220 1101 1100 XXXXXXXX YYYYYYYY POP_INTO_CTXTEMPVAR_X (bit 3 on, bit 2 on) -96-99 0110 00XX YYYYYYYY PUSH_CTXTEMPVAR 224 1110 0000 XXXXXXXX YYYYYYYY PUSH_CTXTEMPVAR_X (bit 3 off) -# XXXth outer-frame, YYYYYYYY local variable - -100-103 0110 01XX YYYYYYYY PUSH_OBJVAR 228 1110 0100 XXXXXXXX YYYYYYYY PUSH_OBJVAR_X (bit 3 off) -104-107 0110 10XX YYYYYYYY STORE_INTO_OBJVAR 232 1110 1000 XXXXXXXX YYYYYYYY STORE_INTO_OBJVAR_X (bit 3 on, bit 2 off) -108-111 0110 11XX YYYYYYYY POP_INTO_OBJVAR 236 1110 1100 XXXXXXXX YYYYYYYY POP_INTO_OBJVAR_X (bit 3 on, bit 2 on) -# XXXth instance variable of YYYYYYYY object - - v -112-115 0111 00XX YYYYYYYY SEND_MESSAGE 240 1111 0000 XXXXXXXX YYYYYYYY SEND_X (bit 2 off) -116-119 0111 01XX YYYYYYYY SEND_TO_SUPER 244 1111 0100 XXXXXXXX YYYYYYYY SEND_TO_SUPER_X (bit 2 on) -# XXX args, YYYYYYYY message - -120 0111 1000 YYYYYYYY PUSH_CVAR_I_X -121 0111 1001 YYYYYYYY STORE_INTO_CVAR_I_X -122 0111 1010 YYYYYYYY POP_INTO_CVAR_I_X - -123 0111 1011 YYYYYYYY PUSH_CVAR_M_X -124 0111 1100 YYYYYYYY STORE_INTO_CVAR_M_X -125 0111 1101 YYYYYYYY POP_INTO_CVAR_M_X - -126 0111 1110 UNUSED -127 0111 1111 UNUSED - -## -## "SHORT_CODE_0 | 0x80" becomes "LONG_CODE_X". -## A special single byte instruction is assigned an unused number greater than 128. -## -*/ - -enum hcl_bcode_t -{ - HCL_CODE_STORE_INTO_IVAR_0 = 0x00, - HCL_CODE_STORE_INTO_IVAR_1 = 0x01, - HCL_CODE_STORE_INTO_IVAR_2 = 0x02, - HCL_CODE_STORE_INTO_IVAR_3 = 0x03, - - HCL_CODE_STORE_INTO_IVAR_4 = 0x04, - HCL_CODE_STORE_INTO_IVAR_5 = 0x05, - HCL_CODE_STORE_INTO_IVAR_6 = 0x06, - HCL_CODE_STORE_INTO_IVAR_7 = 0x07, - - HCL_CODE_POP_INTO_IVAR_0 = 0x08, - HCL_CODE_POP_INTO_IVAR_1 = 0x09, - HCL_CODE_POP_INTO_IVAR_2 = 0x0A, - HCL_CODE_POP_INTO_IVAR_3 = 0x0B, - - HCL_CODE_POP_INTO_IVAR_4 = 0x0C, - HCL_CODE_POP_INTO_IVAR_5 = 0x0D, - HCL_CODE_POP_INTO_IVAR_6 = 0x0E, - HCL_CODE_POP_INTO_IVAR_7 = 0x0F, - - HCL_CODE_PUSH_IVAR_0 = 0x10, - HCL_CODE_PUSH_IVAR_1 = 0x11, - HCL_CODE_PUSH_IVAR_2 = 0x12, - HCL_CODE_PUSH_IVAR_3 = 0x13, - - HCL_CODE_PUSH_IVAR_4 = 0x14, - HCL_CODE_PUSH_IVAR_5 = 0x15, - HCL_CODE_PUSH_IVAR_6 = 0x16, - HCL_CODE_PUSH_IVAR_7 = 0x17, - - HCL_CODE_PUSH_TEMPVAR_0 = 0x18, - HCL_CODE_PUSH_TEMPVAR_1 = 0x19, - HCL_CODE_PUSH_TEMPVAR_2 = 0x1A, - HCL_CODE_PUSH_TEMPVAR_3 = 0x1B, - - HCL_CODE_PUSH_TEMPVAR_4 = 0x1C, - HCL_CODE_PUSH_TEMPVAR_5 = 0x1D, - HCL_CODE_PUSH_TEMPVAR_6 = 0x1E, - HCL_CODE_PUSH_TEMPVAR_7 = 0x1F, - - HCL_CODE_STORE_INTO_TEMPVAR_0 = 0x20, - HCL_CODE_STORE_INTO_TEMPVAR_1 = 0x21, - HCL_CODE_STORE_INTO_TEMPVAR_2 = 0x22, - HCL_CODE_STORE_INTO_TEMPVAR_3 = 0x23, - - HCL_CODE_STORE_INTO_TEMPVAR_4 = 0x24, - HCL_CODE_STORE_INTO_TEMPVAR_5 = 0x25, - HCL_CODE_STORE_INTO_TEMPVAR_6 = 0x26, - HCL_CODE_STORE_INTO_TEMPVAR_7 = 0x27, - - HCL_CODE_POP_INTO_TEMPVAR_0 = 0x28, - HCL_CODE_POP_INTO_TEMPVAR_1 = 0x29, - HCL_CODE_POP_INTO_TEMPVAR_2 = 0x2A, - HCL_CODE_POP_INTO_TEMPVAR_3 = 0x2B, - - HCL_CODE_POP_INTO_TEMPVAR_4 = 0x2C, - HCL_CODE_POP_INTO_TEMPVAR_5 = 0x2D, - HCL_CODE_POP_INTO_TEMPVAR_6 = 0x2E, - HCL_CODE_POP_INTO_TEMPVAR_7 = 0x2F, - - HCL_CODE_PUSH_LITERAL_0 = 0x30, - HCL_CODE_PUSH_LITERAL_1 = 0x31, - HCL_CODE_PUSH_LITERAL_2 = 0x32, - HCL_CODE_PUSH_LITERAL_3 = 0x33, - - HCL_CODE_PUSH_LITERAL_4 = 0x34, - HCL_CODE_PUSH_LITERAL_5 = 0x35, - HCL_CODE_PUSH_LITERAL_6 = 0x36, - HCL_CODE_PUSH_LITERAL_7 = 0x37, - - /* -------------------------------------- */ - - HCL_CODE_STORE_INTO_OBJECT_0 = 0x38, - HCL_CODE_STORE_INTO_OBJECT_1 = 0x39, - HCL_CODE_STORE_INTO_OBJECT_2 = 0x3A, - HCL_CODE_STORE_INTO_OBJECT_3 = 0x3B, - - HCL_CODE_POP_INTO_OBJECT_0 = 0x3C, - HCL_CODE_POP_INTO_OBJECT_1 = 0x3D, - HCL_CODE_POP_INTO_OBJECT_2 = 0x3E, - HCL_CODE_POP_INTO_OBJECT_3 = 0x3F, - - HCL_CODE_PUSH_OBJECT_0 = 0x40, - HCL_CODE_PUSH_OBJECT_1 = 0x41, - HCL_CODE_PUSH_OBJECT_2 = 0x42, - HCL_CODE_PUSH_OBJECT_3 = 0x43, - - HCL_CODE_JUMP_FORWARD_0 = 0x44, /* 68 */ - HCL_CODE_JUMP_FORWARD_1 = 0x45, /* 69 */ - HCL_CODE_JUMP_FORWARD_2 = 0x46, /* 70 */ - HCL_CODE_JUMP_FORWARD_3 = 0x47, /* 71 */ - - HCL_CODE_JUMP_BACKWARD_0 = 0x48, /* 72 */ - HCL_CODE_JUMP_BACKWARD_1 = 0x49, /* 73 */ - HCL_CODE_JUMP_BACKWARD_2 = 0x4A, /* 74 */ - HCL_CODE_JUMP_BACKWARD_3 = 0x4B, /* 75 */ - - /* UNUSED 0x4C - 0x53 */ - - HCL_CODE_CALL_0 = 0x54, /* 84 */ - HCL_CODE_CALL_1 = 0x55, /* 85 */ - HCL_CODE_CALL_2 = 0x56, /* 86 */ - HCL_CODE_CALL_3 = 0x57, /* 87 */ - - HCL_CODE_STORE_INTO_CTXTEMPVAR_0 = 0x58, /* 88 */ - HCL_CODE_STORE_INTO_CTXTEMPVAR_1 = 0x59, /* 89 */ - HCL_CODE_STORE_INTO_CTXTEMPVAR_2 = 0x5A, /* 90 */ - HCL_CODE_STORE_INTO_CTXTEMPVAR_3 = 0x5B, /* 91 */ - - HCL_CODE_POP_INTO_CTXTEMPVAR_0 = 0x5C, /* 92 */ - HCL_CODE_POP_INTO_CTXTEMPVAR_1 = 0x5D, /* 93 */ - HCL_CODE_POP_INTO_CTXTEMPVAR_2 = 0x5E, /* 94 */ - HCL_CODE_POP_INTO_CTXTEMPVAR_3 = 0x5F, /* 95 */ - - HCL_CODE_PUSH_CTXTEMPVAR_0 = 0x60, /* 96 */ - HCL_CODE_PUSH_CTXTEMPVAR_1 = 0x61, /* 97 */ - HCL_CODE_PUSH_CTXTEMPVAR_2 = 0x62, /* 98 */ - HCL_CODE_PUSH_CTXTEMPVAR_3 = 0x63, /* 99 */ - - HCL_CODE_PUSH_OBJVAR_0 = 0x64, - HCL_CODE_PUSH_OBJVAR_1 = 0x65, - HCL_CODE_PUSH_OBJVAR_2 = 0x66, - HCL_CODE_PUSH_OBJVAR_3 = 0x67, - - HCL_CODE_STORE_INTO_OBJVAR_0 = 0x68, - HCL_CODE_STORE_INTO_OBJVAR_1 = 0x69, - HCL_CODE_STORE_INTO_OBJVAR_2 = 0x6A, - HCL_CODE_STORE_INTO_OBJVAR_3 = 0x6B, - - HCL_CODE_POP_INTO_OBJVAR_0 = 0x6C, - HCL_CODE_POP_INTO_OBJVAR_1 = 0x6D, - HCL_CODE_POP_INTO_OBJVAR_2 = 0x6E, - HCL_CODE_POP_INTO_OBJVAR_3 = 0x6F, - - HCL_CODE_SEND_0 = 0x70, /* 112 */ - HCL_CODE_SEND_1 = 0x71, /* 113 */ - HCL_CODE_SEND_2 = 0x72, /* 114 */ - HCL_CODE_SEND_3 = 0x73, /* 115 */ - - HCL_CODE_SEND_TO_SUPER_0 = 0x74, /* 116 */ - HCL_CODE_SEND_TO_SUPER_1 = 0x75, /* 117 */ - HCL_CODE_SEND_TO_SUPER_2 = 0x76, /* 118 */ - HCL_CODE_SEND_TO_SUPER_3 = 0x77, /* 119 */ - - HCL_CODE_PUSH_CVAR_I_X = 0x78, /* 120 */ - HCL_CODE_STORE_INTO_CVAR_I_X = 0x79, /* 121 */ - HCL_CODE_POP_INTO_CVAR_I_X = 0x7A, /* 122 */ - - HCL_CODE_PUSH_CVAR_M_X = 0x7B, /* 123 */ - HCL_CODE_STORE_INTO_CVAR_M_X = 0x7C, /* 124 */ - HCL_CODE_POP_INTO_CVAR_M_X = 0x7D, /* 125 */ - - /* UNUSED 0x7E - 0x7F */ - HCL_CODE_STORE_INTO_IVAR_X = 0x80, /* 128 */ - - HCL_CODE_PUSH_RECEIVER = 0x81, /* 129 */ - HCL_CODE_PUSH_NIL = 0x82, /* 130 */ - HCL_CODE_PUSH_TRUE = 0x83, /* 131 */ - HCL_CODE_PUSH_FALSE = 0x84, /* 132 */ - HCL_CODE_PUSH_CONTEXT = 0x85, /* 133 */ - HCL_CODE_PUSH_PROCESS = 0x86, /* 134 */ - /* UNUSED 0x87 */ - - HCL_CODE_POP_INTO_IVAR_X = 0x88, /* 136 ## */ - - HCL_CODE_PUSH_NEGONE = 0x89, /* 137 */ - HCL_CODE_PUSH_ZERO = 0x8A, /* 138 */ - HCL_CODE_PUSH_ONE = 0x8B, /* 139 */ - HCL_CODE_PUSH_TWO = 0x8C, /* 140 */ - - HCL_CODE_PUSH_IVAR_X = 0x90, /* 144 ## */ - HCL_CODE_PUSH_TEMPVAR_X = 0x98, /* 152 ## */ - HCL_CODE_STORE_INTO_TEMPVAR_X = 0xA0, /* 160 ## */ - HCL_CODE_POP_INTO_TEMPVAR_X = 0xA8, /* 168 ## */ - - HCL_CODE_PUSH_LITERAL_X = 0xB0, /* 176 ## */ - HCL_CODE_PUSH_LITERAL_X2 = 0xB1, /* 177 */ - - HCL_CODE_PUSH_INTLIT = 0xB2, /* 178 */ - HCL_CODE_PUSH_NEGINTLIT = 0xB3, /* 179 */ - HCL_CODE_PUSH_CHARLIT = 0xB4, /* 180 */ - - HCL_CODE_PLUS = 0xB5, /* 181 TOOD: move it to a lower code number later after killing OBJVAR instructions */ - /* UNUSED - 0xB6 - 0xB7 */ - - HCL_CODE_STORE_INTO_OBJECT_X = 0xB8, /* 184 ## */ - HCL_CODE_POP_INTO_OBJECT_X = 0xBC, /* 188 ## */ - HCL_CODE_PUSH_OBJECT_X = 0xC0, /* 192 ## */ - - /* UNUSED - 0xC1 - 0xC3 */ - - HCL_CODE_JUMP_FORWARD_X = 0xC4, /* 196 ## */ - HCL_CODE_JUMP2_FORWARD = 0xC5, /* 197 */ - - /* UNUSED - 0xC6 - 0xC7 */ - - HCL_CODE_JUMP_BACKWARD_X = 0xC8, /* 200 ## */ - HCL_CODE_JUMP2_BACKWARD = 0xC9, /* 201 */ - - /* UNUSED - 0xCA - 0xCB */ - - HCL_CODE_JUMP_FORWARD_IF_TRUE = 0xCC, /* 204 ## */ - HCL_CODE_JUMP2_FORWARD_IF_TRUE = 0xCD, /* 205 */ - HCL_CODE_JUMP_BACKWARD_IF_TRUE = 0xCE, /* 206 ## */ - HCL_CODE_JUMP2_BACKWARD_IF_TRUE = 0xCF, /* 207 */ - - HCL_CODE_JUMP_FORWARD_IF_FALSE = 0xD0, /* 208 ## */ - HCL_CODE_JUMP2_FORWARD_IF_FALSE = 0xD1, /* 209 */ - HCL_CODE_JUMP_BACKWARD_IF_FALSE = 0xD2, /* 210 ## */ - HCL_CODE_JUMP2_BACKWARD_IF_FALSE = 0xD3, /* 211 */ - - HCL_CODE_CALL_X = 0xD4, /* 212 ## */ - HCL_CODE_CALL_R = 0xD5, /* 213 ## ##*/ - HCL_CODE_PUSH_RETURN_R = 0xD6, /* 214 */ - HCL_CODE_TRY_ENTER = 0xD7, /* 215 ## */ - - HCL_CODE_STORE_INTO_CTXTEMPVAR_X = 0xD8, /* 216 ## */ - HCL_CODE_TRY_ENTER2 = 0xD9, /* 217 ## */ - HCL_CODE_TRY_EXIT = 0xDA, /* 218 */ - HCL_CODE_THROW = 0xDB, /* 219 */ - - HCL_CODE_POP_INTO_CTXTEMPVAR_X = 0xDC, /* 220 ## */ - HCL_CODE_CLASS_LOAD = 0xDD, /* 221 ## */ - HCL_CODE_MAKE_CHARARRAY = 0xDE, /* 222 ## */ - HCL_CODE_POP_INTO_CHARARRAY = 0xDF, /* 223 ## */ - - HCL_CODE_PUSH_CTXTEMPVAR_X = 0xE0, /* 224 ## */ - HCL_CODE_CLASS_ENTER = 0xE1, /* 225 ## */ - HCL_CODE_CLASS_EXIT = 0xE2, /* 226 */ - HCL_CODE_CLASS_PEXIT = 0xE3, /* 227 */ - - HCL_CODE_PUSH_OBJVAR_X = 0xE4, /* 228 ## */ - HCL_CODE_CLASS_CMSTORE = 0xE5, /* 229 */ - HCL_CODE_CLASS_IMSTORE = 0xE6, /* 230 */ - HCL_CODE_CLASS_CIMSTORE = 0xE7, /* 231 */ - - HCL_CODE_STORE_INTO_OBJVAR_X = 0xE8, /* 232 ## */ - HCL_CODE_MAKE_ARRAY = 0xE9, /* 233 ## */ - HCL_CODE_MAKE_BYTEARRAY = 0xEA, /* 234 ## */ - HCL_CODE_MAKE_DIC = 0xEB, /* 235 ## */ - - HCL_CODE_POP_INTO_OBJVAR_X = 0xEC, /* 236 ## */ - HCL_CODE_POP_INTO_ARRAY = 0xED, /* 237 ## */ - HCL_CODE_POP_INTO_BYTEARRAY = 0xEE, /* 238 ## */ - HCL_CODE_POP_INTO_DIC = 0xEF, /* 239 */ - - HCL_CODE_SEND_X = 0xF0, /* 240 ## */ - HCL_CODE_SEND_R = 0xF1, /* 241 ## ## - [NOTE] ((code >> 2) & 1) must be 0 */ - - HCL_CODE_MAKE_CONS = 0xF2, /* 242 */ - HCL_CODE_POP_INTO_CONS = 0xF3, /* 243 */ - - HCL_CODE_SEND_TO_SUPER_X = 0xF4, /* 244 ## */ - HCL_CODE_SEND_TO_SUPER_R = 0xF5, /* 245 ## ## - [NOTE] ((code >> 2) & 1) must be 0 */ - - HCL_CODE_POP_INTO_CONS_END = 0xF6, /* 246 */ - HCL_CODE_POP_INTO_CONS_CDR = 0xF7, /* 247 */ - /* -------------------------------------- */ - - HCL_CODE_DUP_STACKTOP = 0xF8, /* 248 */ - HCL_CODE_POP_STACKTOP = 0xF9, /* 249 */ - HCL_CODE_RETURN_STACKTOP = 0xFA, /* 250 */ - HCL_CODE_RETURN_RECEIVER = 0xFB, /* 251 */ - HCL_CODE_RETURN_FROM_BLOCK = 0xFC, /* 252, return the stack top from a block */ - - HCL_CODE_MAKE_FUNCTION = 0xFD, /* 253 */ - HCL_CODE_MAKE_BLOCK = 0xFE, /* 254 */ - HCL_CODE_NOOP = 0xFF /* 255 */ -}; - -typedef hcl_ooi_t (*hcl_outbfmt_t) ( - hcl_t* hcl, - hcl_bitmask_t mask, - const hcl_bch_t* fmt, - ... -); - -/* i don't want an error raised inside the callback to override - * the existing error number and message. */ -#define HCL_VMPRIM_LOG_WRITE(hcl,mask,ptr,len) do { \ - int shuterr = (hcl)->shuterr; \ - (hcl)->shuterr = 1; \ - (hcl)->vmprim.log_write (hcl, mask, ptr, len); \ - (hcl)->shuterr = shuterr; \ - } while(0) - - -#define HCL_CHAR_TO_NUM(c,base) \ - ((c >= '0' && c <= '9')? ((c - '0' < base)? (c - '0'): base): \ - (c >= 'A' && c <= 'Z')? ((c - 'A' + 10 < base)? (c - 'A' + 10): base): \ - (c >= 'a' && c <= 'z')? ((c - 'a' + 10 < base)? (c - 'a' + 10): base): base) - - -/* receiver check failure leads to hard failure. - * RATIONAL: the primitive handler should be used by relevant classes and - * objects only. if the receiver check fails, you must review - * your class library */ -#define HCL_PF_CHECK_RCV(hcl,cond) do { \ - if (!(cond)) { hcl_seterrnum((hcl), HCL_EMSGRCV); return HCL_PF_HARD_FAILURE; } \ -} while(0) - -/* argument check failure causes the wrapping method to return an error. - * RATIONAL: Being a typeless language, it's hard to control the kinds of - * arguments. - */ -#define HCL_PF_CHECK_ARGS(hcl,nargs,cond) do { \ - if (!(cond)) { hcl_seterrnum (hcl, HCL_EINVAL); return HCL_PF_FAILURE; } \ -} while(0) - -#if defined(__cplusplus) -extern "C" { -#endif - -/* ========================================================================= */ -/* heap.c */ -/* ========================================================================= */ - -/** - * The hcl_makeheap() function creates a new heap of the \a size bytes. - * - * \return heap pointer on success and #HCL_NULL on failure. - */ -hcl_heap_t* hcl_makeheap ( - hcl_t* hcl, - hcl_oow_t size -); - -/** - * The hcl_killheap() function destroys the heap pointed to by \a heap. - */ -void hcl_killheap ( - hcl_t* hcl, - hcl_heap_t* heap -); - -/** - * The hcl_allocheapmem() function allocates \a size bytes from the given heap - * and clears it with zeros. - */ -void* hcl_callocheapmem ( - hcl_t* hcl, - hcl_heap_t* heap, - hcl_oow_t size -); - -void* hcl_callocheapmem_noseterr ( - hcl_t* hcl, - hcl_heap_t* heap, - hcl_oow_t size -); - -void hcl_freeheapmem ( - hcl_t* hcl, - hcl_heap_t* heap, - void* ptr -); - -/* ========================================================================= */ -/* obj.c */ -/* ========================================================================= */ -void* hcl_allocbytes ( - hcl_t* hcl, - hcl_oow_t size -); - -/** - * The hcl_allocoopobj() function allocates a raw object composed of \a size - * pointer fields excluding the header. - */ -hcl_oop_t hcl_allocoopobj ( - hcl_t* hcl, - hcl_oow_t size -); - -hcl_oop_t hcl_allocoopobjwithtrailer ( - hcl_t* hcl, - hcl_oow_t size, - const hcl_oob_t* tptr, - hcl_oow_t tlen -); - -hcl_oop_t hcl_alloccharobj ( - hcl_t* hcl, - const hcl_ooch_t* ptr, - hcl_oow_t len -); - -hcl_oop_t hcl_allocbyteobj ( - hcl_t* hcl, - const hcl_oob_t* ptr, - hcl_oow_t len -); - -hcl_oop_t hcl_allochalfwordobj ( - hcl_t* hcl, - const hcl_oohw_t* ptr, - hcl_oow_t len -); - -hcl_oop_t hcl_allocwordobj ( - hcl_t* hcl, - const hcl_oow_t* ptr, - hcl_oow_t len -); - -hcl_oop_t hcl_instantiatewithtrailer ( - hcl_t* hcl, - hcl_oop_class_t _class, - hcl_oow_t vlen, - const hcl_oob_t* trptr, - hcl_oow_t trlen -); - -/* ========================================================================= */ -/* sym.c */ -/* ========================================================================= */ -hcl_oop_t hcl_makesymbol ( - hcl_t* hcl, - const hcl_ooch_t* ptr, - hcl_oow_t len -); - -hcl_oop_t hcl_makesymbolwithbcstr ( - hcl_t* hcl, - const hcl_bch_t* ptr -); - -hcl_oop_t hcl_makesymbolwithucstr ( - hcl_t* hcl, - const hcl_uch_t* ptr -); - -hcl_oop_t hcl_findsymbol ( - hcl_t* hcl, - const hcl_ooch_t* ptr, - hcl_oow_t len -); - - -/* ========================================================================= */ -/* dic.c */ -/* ========================================================================= */ -hcl_oop_cons_t hcl_putatdic_method ( - hcl_t* hcl, - hcl_oop_dic_t dic, - hcl_oop_t key, - hcl_oop_t value, - int mtype /* 1 for class method, 2 for instance method */ -); - -/* ========================================================================= */ -/* gc.c */ -/* ========================================================================= */ - -hcl_oow_t hcl_getobjpayloadbytes ( - hcl_t* hcl, - hcl_oop_t oop -); - -void hcl_gc_ms_sweep_lazy ( - hcl_t* hcl, - hcl_oow_t allocsize -); - -/* ========================================================================= */ -/* utf8.c */ -/* ========================================================================= */ -hcl_oow_t hcl_uc_to_utf8 ( - hcl_uch_t uc, - hcl_bch_t* utf8, - hcl_oow_t size -); - -hcl_oow_t hcl_utf8_to_uc ( - const hcl_bch_t* utf8, - hcl_oow_t size, - hcl_uch_t* uc -); - -int hcl_ucstoutf8 ( - const hcl_uch_t* ucs, - hcl_oow_t* ucslen, - hcl_bch_t* bcs, - hcl_oow_t* bcslen -); - -/** - * The hcl_utf8_to_ucs() function converts a UTF8 string to a uncide string. - * - * It never returns -2 if \a ucs is #HCL_NULL. - * - * \code - * const hcl_bch_t* bcs = "test string"; - * hcl_uch_t ucs[100]; - * hcl_oow_t ucslen = HCL_COUNTOF(buf), n; - * hcl_oow_t bcslen = 11; - * int n; - * n = hcl_utf8_to_ucs (bcs, &bcslen, ucs, &ucslen); - * if (n <= -1) { invalid/incomplenete sequence or buffer to small } - * \endcode - * - * For a null-terminated string, you can specify ~(hcl_oow_t)0 in - * \a bcslen. The destination buffer \a ucs also must be large enough to - * store a terminating null. Otherwise, -2 is returned. - * - * The resulting \a ucslen can still be greater than 0 even if the return - * value is negative. The value indiates the number of characters converted - * before the error has occurred. - * - * \return 0 on success. - * -1 if \a bcs contains an illegal character. - * -2 if the wide-character string buffer is too small. - * -3 if \a bcs is not a complete sequence. - */ -int hcl_utf8_to_ucs ( - const hcl_bch_t* bcs, - hcl_oow_t* bcslen, - hcl_uch_t* ucs, - hcl_oow_t* ucslen -); - -/* ========================================================================= */ -/* bigint.c */ -/* ========================================================================= */ -static HCL_INLINE int hcl_isbigint (hcl_t* hcl, hcl_oop_t x) -{ - return HCL_IS_BIGINT(hcl, x); -} - -static HCL_INLINE int hcl_isint (hcl_t* hcl, hcl_oop_t x) -{ - return HCL_OOP_IS_SMOOI(x) || HCL_IS_BIGINT(hcl, x); -} - -hcl_oop_t hcl_addints ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_subints ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_mulints ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_divints ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y, - int modulo, - hcl_oop_t* rem -); - -hcl_oop_t hcl_negateint ( - hcl_t* hcl, - hcl_oop_t x -); - -hcl_oop_t hcl_bitatint ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_bitandints ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_bitorints ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_bitxorints ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_bitinvint ( - hcl_t* hcl, - hcl_oop_t x -); - -hcl_oop_t hcl_bitshiftint ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_eqints ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_neints ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_gtints ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_geints ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_ltints ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_leints ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_sqrtint ( - hcl_t* hcl, - hcl_oop_t x -); - -hcl_oop_t hcl_absint ( - hcl_t* hcl, - hcl_oop_t x -); - -hcl_oop_t hcl_strtoint ( - hcl_t* hcl, - const hcl_ooch_t* str, - hcl_oow_t len, - int radix -); - - -#define HCL_INTTOSTR_RADIXMASK (0xFF) -#define HCL_INTTOSTR_LOWERCASE (1 << 8) -#define HCL_INTTOSTR_NONEWOBJ (1 << 9) -/** - * The hcl_inttostr() function converts an integer object to a string object - * printed in the given radix. If HCL_INTTOSTR_NONEWOBJ is set in flags_radix, - * it returns hcl->_nil but keeps the result in the buffer pointed to by - * hcl->inttostr.xbuf.ptr with the length stored in hcl->inttostr.xbuf.len. - * If the function fails, it returns #HCL_NULL. - */ -hcl_oop_t hcl_inttostr ( - hcl_t* hcl, - hcl_oop_t num, - int flagged_radix /* radix between 2 and 36 inclusive, optionally bitwise ORed of HCL_INTTOSTR_XXX bits */ -); - -/* ========================================================================= */ -/* number.c */ -/* ========================================================================= */ -hcl_oop_t hcl_addnums ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_subnums ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_mulnums ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_mltnums ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_divnums ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_truncfpdecval ( - hcl_t* hcl, - hcl_oop_t iv, /* integer */ - hcl_ooi_t cs, /* current scale */ - hcl_ooi_t ns /* new scale */ -); - -hcl_oop_t hcl_gtnums ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_genums ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_ltnums ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_lenums ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_eqnums ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_nenums ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oop_t y -); - -hcl_oop_t hcl_sqrtnum ( - hcl_t* hcl, - hcl_oop_t x -); - -hcl_oop_t hcl_absnum ( - hcl_t* hcl, - hcl_oop_t x -); - -/* ========================================================================= */ -/* hcl.c */ -/* ========================================================================= */ - -hcl_mod_data_t* hcl_openmod ( - hcl_t* hcl, - const hcl_ooch_t* name, - hcl_oow_t namelen -); - -void hcl_closemod ( - hcl_t* hcl, - hcl_mod_data_t* mdp -); - -/* - * The hcl_querymod() function finds a primitive function in modules - * with a full primitive identifier. - */ -hcl_pfbase_t* hcl_querymod ( - hcl_t* hcl, - const hcl_ooch_t* pfid, - hcl_oow_t pfidlen, - hcl_mod_t** mod -); - -/* ========================================================================= */ -/* fmt.c */ -/* ========================================================================= */ -int hcl_fmt_object ( - hcl_t* hcl, - hcl_fmtout_t* fmtout, - hcl_oop_t oop -); - -int hcl_prfmtcallstack ( - hcl_t* hcl, - hcl_ooi_t nargs -); - -int hcl_logfmtcallstack ( - hcl_t* hcl, - hcl_ooi_t nargs -); - -int hcl_strfmtcallstack ( - hcl_t* hcl, - hcl_ooi_t nargs -); - -int hcl_scfmtcallstack ( - hcl_t* hcl, - hcl_ooi_t nargs -); - -/* ========================================================================= */ -/* comp.c */ -/* ========================================================================= */ -int hcl_emitbyteinstruction ( - hcl_t* hcl, - hcl_oob_t bc -); - -int hcl_copy_string_to ( - hcl_t* hcl, - const hcl_oocs_t* src, - hcl_oocs_t* dst, - hcl_oow_t* dstcapa, - int append, - hcl_ooch_t delim_char -); - -/* ========================================================================= */ -/* cnode.c */ -/* ========================================================================= */ -hcl_cnode_t* hcl_makecnode (hcl_t* hcl, hcl_cnode_type_t type, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok); -hcl_cnode_t* hcl_makecnodenil (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok); -hcl_cnode_t* hcl_makecnodetrue (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok); -hcl_cnode_t* hcl_makecnodefalse (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok); -hcl_cnode_t* hcl_makecnodeself (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok); -hcl_cnode_t* hcl_makecnodesuper (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok); -hcl_cnode_t* hcl_makecnodeellipsis (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok); -hcl_cnode_t* hcl_makecnodetrpcolons (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok); -hcl_cnode_t* hcl_makecnodedblcolons (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok); -hcl_cnode_t* hcl_makecnodecolon (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok); -hcl_cnode_t* hcl_makecnodecolongt (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok); -hcl_cnode_t* hcl_makecnodecolonlt (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok); -hcl_cnode_t* hcl_makecnodecharlit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok, hcl_ooch_t v); -hcl_cnode_t* hcl_makecnodebchrlit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok, hcl_oob_t v); -hcl_cnode_t* hcl_makecnodesymbol (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok); -hcl_cnode_t* hcl_makecnodedsymbol (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok, int is_cla); -hcl_cnode_t* hcl_makecnodestrlit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok); -hcl_cnode_t* hcl_makecnodebstrlit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok); -hcl_cnode_t* hcl_makecnodesymlit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok); -hcl_cnode_t* hcl_makecnodenumlit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok); -hcl_cnode_t* hcl_makecnoderadnumlit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok); -hcl_cnode_t* hcl_makecnodefpdeclit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok); -hcl_cnode_t* hcl_makecnodesmptrlit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok, hcl_oow_t v); -hcl_cnode_t* hcl_makecnodeerrlit (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok, hcl_ooi_t v); -hcl_cnode_t* hcl_makecnodecons (hcl_t* hcl, int flags, const hcl_loc_t* loc, const hcl_oocs_t* tok, hcl_cnode_t* car, hcl_cnode_t* cdr); -hcl_cnode_t* hcl_makecnodeelist (hcl_t* hcl, int flags, const hcl_loc_t* loc, hcl_concode_t type); -hcl_cnode_t* hcl_makecnodeshell (hcl_t* hcl, int flags, const hcl_loc_t* loc, hcl_cnode_t* obj); -void hcl_freesinglecnode (hcl_t* hcl, hcl_cnode_t* c); -hcl_oow_t hcl_countcnodecons (hcl_t* hcl, hcl_cnode_t* cons); -void hcl_dumpcnode (hcl_t* hcl, hcl_cnode_t* c, int newline); - - -/* ========================================================================= */ -/* read.c */ -/* ========================================================================= */ -int hcl_is_binop_char (hcl_ooci_t c); - -/* ========================================================================= */ -/* exec.c */ -/* ========================================================================= */ -int hcl_class_responds_to (hcl_t* hcl, hcl_oop_t rcv, hcl_oop_t msg); -int hcl_inst_responds_to (hcl_t* hcl, hcl_oop_t rcv, hcl_oop_t msg); - -hcl_pfrc_t hcl_pf_process_current (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs); -hcl_pfrc_t hcl_pf_process_fork (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs); -hcl_pfrc_t hcl_pf_process_resume (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs); -hcl_pfrc_t hcl_pf_process_suspend (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs); -hcl_pfrc_t hcl_pf_process_terminate (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs); -hcl_pfrc_t hcl_pf_process_terminate_all (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs); -hcl_pfrc_t hcl_pf_process_yield (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs); - -hcl_pfrc_t hcl_pf_semaphore_new (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs); -hcl_pfrc_t hcl_pf_semaphore_wait (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs); -hcl_pfrc_t hcl_pf_semaphore_signal (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs); -hcl_pfrc_t hcl_pf_semaphore_signal_timed (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs); -hcl_pfrc_t hcl_pf_semaphore_signal_on_input (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs); -hcl_pfrc_t hcl_pf_semaphore_signal_on_output (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs); -/*hcl_pfrc_t hcl_pf_semaphore_signal_on_gcfin (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs);*/ -hcl_pfrc_t hcl_pf_semaphore_unsignal (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs); - -hcl_pfrc_t hcl_pf_semaphore_group_new (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs); -hcl_pfrc_t hcl_pf_semaphore_group_add_semaphore (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs); -hcl_pfrc_t hcl_pf_semaphore_group_remove_semaphore (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs); -hcl_pfrc_t hcl_pf_semaphore_group_wait (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs); - -/* ========================================================================= */ -/* std.c */ -/* ========================================================================= */ -hcl_errnum_t hcl_syserrstrb (hcl_t* hcl, int syserr_type, int syserr_code, hcl_bch_t* buf, hcl_oow_t len); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/lib/hcl-rbt.h b/lib/hcl-rbt.h deleted file mode 100644 index 4f06f7e..0000000 --- a/lib/hcl-rbt.h +++ /dev/null @@ -1,603 +0,0 @@ -/* - Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _HCL_RBT_H_ -#define _HCL_RBT_H_ - -#include - -/** \file - * This file provides a red-black tree encapsulated in the #hcl_rbt_t type that - * implements a self-balancing binary search tree.Its interface is very close - * to #hcl_htb_t. - * - * This sample code adds a series of keys and values and print them - * in descending key order. - * \code - * #include - * - * static hcl_rbt_walk_t walk (hcl_rbt_t* rbt, hcl_rbt_pair_t* pair, void* ctx) - * { - * hcl_printf (HCL_T("key = %d, value = %d\n"), - * *(int*)HCL_RBT_KPTR(pair), *(int*)HCL_RBT_VPTR(pair)); - * return HCL_RBT_WALK_FORWARD; - * } - * - * int main () - * { - * hcl_rbt_t* s1; - * int i; - * - * s1 = hcl_rbt_open(HCL_MMGR_GETDFL(), 0, 1, 1); // error handling skipped - * hcl_rbt_setstyle(s1, hcl_get_rbt_style(HCL_RBT_STYLE_INLINE_COPIERS)); - * - * for (i = 0; i < 20; i++) - * { - * int x = i * 20; - * hcl_rbt_insert (s1, &i, HCL_SIZEOF(i), &x, HCL_SIZEOF(x)); // eror handling skipped - * } - * - * hcl_rbt_rwalk (s1, walk, HCL_NULL); - * - * hcl_rbt_close (s1); - * return 0; - * } - * \endcode - */ - -typedef struct hcl_rbt_t hcl_rbt_t; -typedef struct hcl_rbt_pair_t hcl_rbt_pair_t; - -/** - * The hcl_rbt_walk_t type defines values that the callback function can - * return to control hcl_rbt_walk() and hcl_rbt_rwalk(). - */ -enum hcl_rbt_walk_t -{ - HCL_RBT_WALK_STOP = 0, - HCL_RBT_WALK_FORWARD = 1 -}; -typedef enum hcl_rbt_walk_t hcl_rbt_walk_t; - -/** - * The hcl_rbt_id_t type defines IDs to indicate a key or a value in various - * functions - */ -enum hcl_rbt_id_t -{ - HCL_RBT_KEY = 0, /**< indicate a key */ - HCL_RBT_VAL = 1 /**< indicate a value */ -}; -typedef enum hcl_rbt_id_t hcl_rbt_id_t; - -/** - * The hcl_rbt_copier_t type defines a pair contruction callback. - */ -typedef void* (*hcl_rbt_copier_t) ( - hcl_rbt_t* rbt /**< red-black tree */, - void* dptr /**< pointer to a key or a value */, - hcl_oow_t dlen /**< length of a key or a value */ -); - -/** - * The hcl_rbt_freeer_t defines a key/value destruction callback. - */ -typedef void (*hcl_rbt_freeer_t) ( - hcl_rbt_t* rbt, /**< red-black tree */ - void* dptr, /**< pointer to a key or a value */ - hcl_oow_t dlen /**< length of a key or a value */ -); - -/** - * The hcl_rbt_comper_t type defines a key comparator that is called when - * the rbt needs to compare keys. A red-black tree is created with a default - * comparator which performs bitwise comparison of two keys. - * The comparator should return 0 if the keys are the same, 1 if the first - * key is greater than the second key, -1 otherwise. - */ -typedef int (*hcl_rbt_comper_t) ( - const hcl_rbt_t* rbt, /**< red-black tree */ - const void* kptr1, /**< key pointer */ - hcl_oow_t klen1, /**< key length */ - const void* kptr2, /**< key pointer */ - hcl_oow_t klen2 /**< key length */ -); - -/** - * The hcl_rbt_keeper_t type defines a value keeper that is called when - * a value is retained in the context that it should be destroyed because - * it is identical to a new value. Two values are identical if their - * pointers and lengths are equal. - */ -typedef void (*hcl_rbt_keeper_t) ( - hcl_rbt_t* rbt, /**< red-black tree */ - void* vptr, /**< value pointer */ - hcl_oow_t vlen /**< value length */ -); - -/** - * The hcl_rbt_walker_t defines a pair visitor. - */ -typedef hcl_rbt_walk_t (*hcl_rbt_walker_t) ( - hcl_rbt_t* rbt, /**< red-black tree */ - hcl_rbt_pair_t* pair, /**< pointer to a key/value pair */ - void* ctx /**< pointer to user-defined data */ -); - -/** - * The hcl_rbt_cbserter_t type defines a callback function for hcl_rbt_cbsert(). - * The hcl_rbt_cbserter() function calls it to allocate a new pair for the - * key pointed to by \a kptr of the length \a klen and the callback context - * \a ctx. The second parameter \a pair is passed the pointer to the existing - * pair for the key or #HCL_NULL in case of no existing key. The callback - * must return a pointer to a new or a reallocated pair. When reallocating the - * existing pair, this callback must destroy the existing pair and return the - * newly reallocated pair. It must return #HCL_NULL for failure. - */ -typedef hcl_rbt_pair_t* (*hcl_rbt_cbserter_t) ( - hcl_rbt_t* rbt, /**< red-black tree */ - hcl_rbt_pair_t* pair, /**< pair pointer */ - void* kptr, /**< key pointer */ - hcl_oow_t klen, /**< key length */ - void* ctx /**< callback context */ -); - - -enum hcl_rbt_pair_color_t -{ - HCL_RBT_RED, - HCL_RBT_BLACK -}; -typedef enum hcl_rbt_pair_color_t hcl_rbt_pair_color_t; - -/** - * The hcl_rbt_pair_t type defines red-black tree pair. A pair is composed - * of a key and a value. It maintains pointers to the beginning of a key and - * a value plus their length. The length is scaled down with the scale factor - * specified in an owning tree. Use macros defined in the - */ -struct hcl_rbt_pair_t -{ - struct - { - void* ptr; - hcl_oow_t len; - } key; - - struct - { - void* ptr; - hcl_oow_t len; - } val; - - /* management information below */ - hcl_rbt_pair_color_t color; - hcl_rbt_pair_t* parent; - hcl_rbt_pair_t* child[2]; /* left and right */ -}; - -typedef struct hcl_rbt_style_t hcl_rbt_style_t; - -/** - * The hcl_rbt_style_t type defines callback function sets for key/value - * pair manipulation. - */ -struct hcl_rbt_style_t -{ - hcl_rbt_copier_t copier[2]; /**< key and value copier */ - hcl_rbt_freeer_t freeer[2]; /**< key and value freeer */ - hcl_rbt_comper_t comper; /**< key comparator */ - hcl_rbt_keeper_t keeper; /**< value keeper */ -}; - -/** - * The hcl_rbt_style_kind_t type defines the type of predefined - * callback set for pair manipulation. - */ -enum hcl_rbt_style_kind_t -{ - /** store the key and the value pointer */ - HCL_RBT_STYLE_DEFAULT, - /** copy both key and value into the pair */ - HCL_RBT_STYLE_INLINE_COPIERS, - /** copy the key into the pair but store the value pointer */ - HCL_RBT_STYLE_INLINE_KEY_COPIER, - /** copy the value into the pair but store the key pointer */ - HCL_RBT_STYLE_INLINE_VALUE_COPIER -}; - -typedef enum hcl_rbt_style_kind_t hcl_rbt_style_kind_t; - -/** - * The hcl_rbt_t type defines a red-black tree. - */ -struct hcl_rbt_t -{ - hcl_t* hcl; - const hcl_rbt_style_t* style; - hcl_oob_t scale[2]; /**< length scale */ - hcl_rbt_pair_t xnil; /**< internal nil node */ - hcl_oow_t size; /**< number of pairs */ - hcl_rbt_pair_t* root; /**< root pair */ -}; - -/** - * The HCL_RBT_COPIER_SIMPLE macros defines a copier that remembers the - * pointer and length of data in a pair. - */ -#define HCL_RBT_COPIER_SIMPLE ((hcl_rbt_copier_t)1) - -/** - * The HCL_RBT_COPIER_INLINE macros defines a copier that copies data into - * a pair. - */ -#define HCL_RBT_COPIER_INLINE ((hcl_rbt_copier_t)2) - -#define HCL_RBT_COPIER_DEFAULT (HCL_RBT_COPIER_SIMPLE) -#define HCL_RBT_FREEER_DEFAULT (HCL_NULL) -#define HCL_RBT_COMPER_DEFAULT (hcl_rbt_dflcomp) -#define HCL_RBT_KEEPER_DEFAULT (HCL_NULL) - -/** - * The HCL_RBT_SIZE() macro returns the number of pairs in red-black tree. - */ -#define HCL_RBT_SIZE(m) ((const hcl_oow_t)(m)->size) -#define HCL_RBT_KSCALE(m) ((const int)(m)->scale[HCL_RBT_KEY]) -#define HCL_RBT_VSCALE(m) ((const int)(m)->scale[HCL_RBT_VAL]) - -#define HCL_RBT_KPTL(p) (&(p)->key) -#define HCL_RBT_VPTL(p) (&(p)->val) - -#define HCL_RBT_KPTR(p) ((p)->key.ptr) -#define HCL_RBT_KLEN(p) ((p)->key.len) -#define HCL_RBT_VPTR(p) ((p)->val.ptr) -#define HCL_RBT_VLEN(p) ((p)->val.len) - -#define HCL_RBT_NEXT(p) ((p)->next) - -#if defined(__cplusplus) -extern "C" { -#endif - -/** - * The hcl_get_rbt_style() functions returns a predefined callback set for - * pair manipulation. - */ -HCL_EXPORT const hcl_rbt_style_t* hcl_get_rbt_style ( - hcl_rbt_style_kind_t kind -); - -/** - * The hcl_rbt_open() function creates a red-black tree. - * \return hcl_rbt_t pointer on success, HCL_NULL on failure. - */ -HCL_EXPORT hcl_rbt_t* hcl_rbt_open ( - hcl_t* hcl, - hcl_oow_t xtnsize, /**< extension size in bytes */ - int kscale, /**< key scale */ - int vscale /**< value scale */ -); - -/** - * The hcl_rbt_close() function destroys a red-black tree. - */ -HCL_EXPORT void hcl_rbt_close ( - hcl_rbt_t* rbt /**< red-black tree */ -); - -/** - * The hcl_rbt_init() function initializes a red-black tree - */ -HCL_EXPORT int hcl_rbt_init ( - hcl_rbt_t* rbt, /**< red-black tree */ - hcl_t* hcl, - int kscale, /**< key scale */ - int vscale /**< value scale */ -); - -/** - * The hcl_rbt_fini() funtion finalizes a red-black tree - */ -HCL_EXPORT void hcl_rbt_fini ( - hcl_rbt_t* rbt /**< red-black tree */ -); - -HCL_EXPORT void* hcl_rbt_getxtn ( - hcl_rbt_t* rbt -); - -/** - * The hcl_rbt_getstyle() function gets manipulation callback function set. - */ -HCL_EXPORT const hcl_rbt_style_t* hcl_rbt_getstyle ( - const hcl_rbt_t* rbt /**< red-black tree */ -); - -/** - * The hcl_rbt_setstyle() function sets internal manipulation callback - * functions for data construction, destruction, comparison, etc. - * The callback structure pointed to by \a style must outlive the tree - * pointed to by \a htb as the tree doesn't copy the contents of the - * structure. - */ -HCL_EXPORT void hcl_rbt_setstyle ( - hcl_rbt_t* rbt, /**< red-black tree */ - const hcl_rbt_style_t* style /**< callback function set */ -); - -/** - * The hcl_rbt_getsize() function gets the number of pairs in red-black tree. - */ -HCL_EXPORT hcl_oow_t hcl_rbt_getsize ( - const hcl_rbt_t* rbt /**< red-black tree */ -); - -/** - * The hcl_rbt_search() function searches red-black tree to find a pair with a - * matching key. It returns the pointer to the pair found. If it fails - * to find one, it returns HCL_NULL. - * \return pointer to the pair with a maching key, - * or HCL_NULL if no match is found. - */ -HCL_EXPORT hcl_rbt_pair_t* hcl_rbt_search ( - const hcl_rbt_t* rbt, /**< red-black tree */ - const void* kptr, /**< key pointer */ - hcl_oow_t klen /**< the size of the key */ -); - -/** - * The hcl_rbt_upsert() function searches red-black tree for the pair with a - * matching key. If one is found, it updates the pair. Otherwise, it inserts - * a new pair with the key and the value given. It returns the pointer to the - * pair updated or inserted. - * \return a pointer to the updated or inserted pair on success, - * HCL_NULL on failure. - */ -HCL_EXPORT hcl_rbt_pair_t* hcl_rbt_upsert ( - hcl_rbt_t* rbt, /**< red-black tree */ - void* kptr, /**< key pointer */ - hcl_oow_t klen, /**< key length */ - void* vptr, /**< value pointer */ - hcl_oow_t vlen /**< value length */ -); - -/** - * The hcl_rbt_ensert() function inserts a new pair with the key and the value - * given. If there exists a pair with the key given, the function returns - * the pair containing the key. - * \return pointer to a pair on success, HCL_NULL on failure. - */ -HCL_EXPORT hcl_rbt_pair_t* hcl_rbt_ensert ( - hcl_rbt_t* rbt, /**< red-black tree */ - void* kptr, /**< key pointer */ - hcl_oow_t klen, /**< key length */ - void* vptr, /**< value pointer */ - hcl_oow_t vlen /**< value length */ -); - -/** - * The hcl_rbt_insert() function inserts a new pair with the key and the value - * given. If there exists a pair with the key given, the function returns - * HCL_NULL without channging the value. - * \return pointer to the pair created on success, HCL_NULL on failure. - */ -HCL_EXPORT hcl_rbt_pair_t* hcl_rbt_insert ( - hcl_rbt_t* rbt, /**< red-black tree */ - void* kptr, /**< key pointer */ - hcl_oow_t klen, /**< key length */ - void* vptr, /**< value pointer */ - hcl_oow_t vlen /**< value length */ -); - -/** - * The hcl_rbt_update() function updates the value of an existing pair - * with a matching key. - * \return pointer to the pair on success, HCL_NULL on no matching pair - */ -HCL_EXPORT hcl_rbt_pair_t* hcl_rbt_update ( - hcl_rbt_t* rbt, /**< red-black tree */ - void* kptr, /**< key pointer */ - hcl_oow_t klen, /**< key length */ - void* vptr, /**< value pointer */ - hcl_oow_t vlen /**< value length */ -); - -/** - * The hcl_rbt_cbsert() function inserts a key/value pair by delegating pair - * allocation to a callback function. Depending on the callback function, - * it may behave like hcl_rbt_insert(), hcl_rbt_upsert(), hcl_rbt_update(), - * hcl_rbt_ensert(), or totally differently. The sample code below inserts - * a new pair if the key is not found and appends the new value to the - * existing value delimited by a comma if the key is found. - * - * \code - * hcl_rbt_walk_t print_map_pair (hcl_rbt_t* map, hcl_rbt_pair_t* pair, void* ctx) - * { - * hcl_printf (HCL_T("%.*s[%d] => %.*s[%d]\n"), - * (int)HCL_RBT_KLEN(pair), HCL_RBT_KPTR(pair), (int)HCL_RBT_KLEN(pair), - * (int)HCL_RBT_VLEN(pair), HCL_RBT_VPTR(pair), (int)HCL_RBT_VLEN(pair)); - * return HCL_RBT_WALK_FORWARD; - * } - * - * hcl_rbt_pair_t* cbserter ( - * hcl_rbt_t* rbt, hcl_rbt_pair_t* pair, - * void* kptr, hcl_oow_t klen, void* ctx) - * { - * hcl_cstr_t* v = (hcl_cstr_t*)ctx; - * if (pair == HCL_NULL) - * { - * // no existing key for the key - * return hcl_rbt_allocpair (rbt, kptr, klen, v->ptr, v->len); - * } - * else - * { - * // a pair with the key exists. - * // in this sample, i will append the new value to the old value - * // separated by a comma - * hcl_rbt_pair_t* new_pair; - * hcl_ooch_t comma = HCL_T(','); - * hcl_oob_t* vptr; - * - * // allocate a new pair, but without filling the actual value. - * // note vptr is given HCL_NULL for that purpose - * new_pair = hcl_rbt_allocpair ( - * rbt, kptr, klen, HCL_NULL, pair->vlen + 1 + v->len); - * if (new_pair == HCL_NULL) return HCL_NULL; - * - * // fill in the value space - * vptr = new_pair->vptr; - * hcl_memcpy (vptr, pair->vptr, pair->vlen*HCL_SIZEOF(hcl_ooch_t)); - * vptr += pair->vlen*HCL_SIZEOF(hcl_ooch_t); - * hcl_memcpy (vptr, &comma, HCL_SIZEOF(hcl_ooch_t)); - * vptr += HCL_SIZEOF(hcl_ooch_t); - * hcl_memcpy (vptr, v->ptr, v->len*HCL_SIZEOF(hcl_ooch_t)); - * - * // this callback requires the old pair to be destroyed - * hcl_rbt_freepair (rbt, pair); - * - * // return the new pair - * return new_pair; - * } - * } - * - * int main () - * { - * hcl_rbt_t* s1; - * int i; - * hcl_ooch_t* keys[] = { HCL_T("one"), HCL_T("two"), HCL_T("three") }; - * hcl_ooch_t* vals[] = { HCL_T("1"), HCL_T("2"), HCL_T("3"), HCL_T("4"), HCL_T("5") }; - * - * s1 = hcl_rbt_open ( - * HCL_MMGR_GETDFL(), 0, - * HCL_SIZEOF(hcl_ooch_t), HCL_SIZEOF(hcl_ooch_t) - * ); // note error check is skipped - * hcl_rbt_setstyle (s1, &style1); - * - * for (i = 0; i < HCL_COUNTOF(vals); i++) - * { - * hcl_cstr_t ctx; - * ctx.ptr = vals[i]; ctx.len = hcl_strlen(vals[i]); - * hcl_rbt_cbsert (s1, - * keys[i%HCL_COUNTOF(keys)], hcl_strlen(keys[i%HCL_COUNTOF(keys)]), - * cbserter, &ctx - * ); // note error check is skipped - * } - * hcl_rbt_walk (s1, print_map_pair, HCL_NULL); - * - * hcl_rbt_close (s1); - * return 0; - * } - * \endcode - */ -HCL_EXPORT hcl_rbt_pair_t* hcl_rbt_cbsert ( - hcl_rbt_t* rbt, /**< red-black tree */ - void* kptr, /**< key pointer */ - hcl_oow_t klen, /**< key length */ - hcl_rbt_cbserter_t cbserter, /**< callback function */ - void* ctx /**< callback context */ -); - -/** - * The hcl_rbt_delete() function deletes a pair with a matching key - * \return 0 on success, -1 on failure - */ -HCL_EXPORT int hcl_rbt_delete ( - hcl_rbt_t* rbt, /**< red-black tree */ - const void* kptr, /**< key pointer */ - hcl_oow_t klen /**< key size */ -); - -/** - * The hcl_rbt_clear() function empties a red-black tree. - */ -HCL_EXPORT void hcl_rbt_clear ( - hcl_rbt_t* rbt /**< red-black tree */ -); - -/** - * The hcl_rbt_walk() function traverses a red-black tree in preorder - * from the leftmost child. - */ -HCL_EXPORT void hcl_rbt_walk ( - hcl_rbt_t* rbt, /**< red-black tree */ - hcl_rbt_walker_t walker, /**< callback function for each pair */ - void* ctx /**< pointer to user-specific data */ -); - -/** - * The hcl_rbt_walk() function traverses a red-black tree in preorder - * from the rightmost child. - */ -HCL_EXPORT void hcl_rbt_rwalk ( - hcl_rbt_t* rbt, /**< red-black tree */ - hcl_rbt_walker_t walker, /**< callback function for each pair */ - void* ctx /**< pointer to user-specific data */ -); - -/** - * The hcl_rbt_allocpair() function allocates a pair for a key and a value - * given. But it does not chain the pair allocated into the red-black tree \a rbt. - * Use this function at your own risk. - * - * Take note of he following special behavior when the copier is - * #HCL_RBT_COPIER_INLINE. - * - If \a kptr is #HCL_NULL, the key space of the size \a klen is reserved but - * not propagated with any data. - * - If \a vptr is #HCL_NULL, the value space of the size \a vlen is reserved - * but not propagated with any data. - */ -HCL_EXPORT hcl_rbt_pair_t* hcl_rbt_allocpair ( - hcl_rbt_t* rbt, - void* kptr, - hcl_oow_t klen, - void* vptr, - hcl_oow_t vlen -); - -/** - * The hcl_rbt_freepair() function destroys a pair. But it does not detach - * the pair destroyed from the red-black tree \a rbt. Use this function at your - * own risk. - */ -HCL_EXPORT void hcl_rbt_freepair ( - hcl_rbt_t* rbt, - hcl_rbt_pair_t* pair -); - -/** - * The hcl_rbt_dflcomp() function defines the default key comparator. - */ -HCL_EXPORT int hcl_rbt_dflcomp ( - const hcl_rbt_t* rbt, - const void* kptr1, - hcl_oow_t klen1, - const void* kptr2, - hcl_oow_t klen2 -); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/lib/hcl-str.h b/lib/hcl-str.h deleted file mode 100644 index c23dd2c..0000000 --- a/lib/hcl-str.h +++ /dev/null @@ -1,373 +0,0 @@ -/* - Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _HCL_STR_H_ -#define _HCL_STR_H_ - -#include - -#if defined(__cplusplus) -extern "C" { -#endif - -/** - * The hcl_equal_uchars() function determines equality of two strings - * of the same length \a len. - */ -HCL_EXPORT int hcl_equal_uchars ( - const hcl_uch_t* str1, - const hcl_uch_t* str2, - hcl_oow_t len -); - -HCL_EXPORT int hcl_equal_bchars ( - const hcl_bch_t* str1, - const hcl_bch_t* str2, - hcl_oow_t len -); - -/* ------------------------------ */ - -HCL_EXPORT int hcl_comp_uchars ( - const hcl_uch_t* str1, - hcl_oow_t len1, - const hcl_uch_t* str2, - hcl_oow_t len2 -); - -HCL_EXPORT int hcl_comp_bchars ( - const hcl_bch_t* str1, - hcl_oow_t len1, - const hcl_bch_t* str2, - hcl_oow_t len2 -); - -HCL_EXPORT int hcl_comp_ucstr ( - const hcl_uch_t* str1, - const hcl_uch_t* str2 -); - -HCL_EXPORT int hcl_comp_bcstr ( - const hcl_bch_t* str1, - const hcl_bch_t* str2 -); - -HCL_EXPORT int hcl_comp_ucstr_bcstr ( - const hcl_uch_t* str1, - const hcl_bch_t* str2 -); - -HCL_EXPORT int hcl_comp_uchars_ucstr ( - const hcl_uch_t* str1, - hcl_oow_t len, - const hcl_uch_t* str2 -); - -HCL_EXPORT int hcl_comp_uchars_bcstr ( - const hcl_uch_t* str1, - hcl_oow_t len, - const hcl_bch_t* str2 -); - -HCL_EXPORT int hcl_comp_bchars_bcstr ( - const hcl_bch_t* str1, - hcl_oow_t len, - const hcl_bch_t* str2 -); - -HCL_EXPORT int hcl_comp_bchars_ucstr ( - const hcl_bch_t* str1, - hcl_oow_t len, - const hcl_uch_t* str2 -); - -/* ------------------------------ */ - -HCL_EXPORT void hcl_copy_uchars ( - hcl_uch_t* dst, - const hcl_uch_t* src, - hcl_oow_t len -); - -HCL_EXPORT void hcl_copy_bchars ( - hcl_bch_t* dst, - const hcl_bch_t* src, - hcl_oow_t len -); - -HCL_EXPORT void hcl_copy_bchars_to_uchars ( - hcl_uch_t* dst, - const hcl_bch_t* src, - hcl_oow_t len -); - -HCL_EXPORT void hcl_copy_uchars_to_bchars ( - hcl_bch_t* dst, - const hcl_uch_t* src, - hcl_oow_t len -); - -HCL_EXPORT hcl_oow_t hcl_copy_bcstr_to_ucstr ( - hcl_uch_t* dst, - hcl_oow_t len, - const hcl_bch_t* src -); - -HCL_EXPORT hcl_oow_t hcl_copy_ucstr_to_bcstr ( - hcl_bch_t* dst, - hcl_oow_t len, - const hcl_uch_t* src -); - -HCL_EXPORT hcl_oow_t hcl_copy_uchars_to_ucstr_unlimited ( - hcl_uch_t* dst, - const hcl_uch_t* src, - hcl_oow_t len -); - -HCL_EXPORT hcl_oow_t hcl_copy_bchars_to_bcstr_unlimited ( - hcl_bch_t* dst, - const hcl_bch_t* src, - hcl_oow_t len -); - -HCL_EXPORT hcl_oow_t hcl_copy_ucstr ( - hcl_uch_t* dst, - hcl_oow_t len, - const hcl_uch_t* src -); - -HCL_EXPORT hcl_oow_t hcl_copy_bcstr ( - hcl_bch_t* dst, - hcl_oow_t len, - const hcl_bch_t* src -); - -HCL_EXPORT hcl_oow_t hcl_copy_uchars_to_ucstr ( - hcl_uch_t* dst, - hcl_oow_t dlen, - const hcl_uch_t* src, - hcl_oow_t slen -); - -HCL_EXPORT hcl_oow_t hcl_copy_bchars_to_bcstr ( - hcl_bch_t* dst, - hcl_oow_t dlen, - const hcl_bch_t* src, - hcl_oow_t slen -); - -HCL_EXPORT hcl_oow_t hcl_copy_ucstr_unlimited ( - hcl_uch_t* dst, - const hcl_uch_t* src -); - -HCL_EXPORT hcl_oow_t hcl_copy_bcstr_unlimited ( - hcl_bch_t* dst, - const hcl_bch_t* src -); - -/* ------------------------------ */ - -HCL_EXPORT void hcl_fill_uchars ( - hcl_uch_t* dst, - hcl_uch_t ch, - hcl_oow_t len -); - -HCL_EXPORT void hcl_fill_bchars ( - hcl_bch_t* dst, - hcl_bch_t ch, - hcl_oow_t len -); - -HCL_EXPORT hcl_uch_t* hcl_find_uchar ( - const hcl_uch_t* ptr, - hcl_oow_t len, - hcl_uch_t c -); - -HCL_EXPORT hcl_bch_t* hcl_find_bchar ( - const hcl_bch_t* ptr, - hcl_oow_t len, - hcl_bch_t c -); - -HCL_EXPORT hcl_uch_t* hcl_rfind_uchar ( - const hcl_uch_t* ptr, - hcl_oow_t len, - hcl_uch_t c -); - -HCL_EXPORT hcl_bch_t* hcl_rfind_bchar ( - const hcl_bch_t* ptr, - hcl_oow_t len, - hcl_bch_t c -); - -HCL_EXPORT hcl_uch_t* hcl_find_uchar_in_ucstr ( - const hcl_uch_t* ptr, - hcl_uch_t c -); - -HCL_EXPORT hcl_bch_t* hcl_find_bchar_in_bcstr ( - const hcl_bch_t* ptr, - hcl_bch_t c -); - -HCL_EXPORT hcl_oow_t hcl_rotate_uchars ( - hcl_uch_t* str, - hcl_oow_t len, - int dir, - hcl_oow_t n -); - -HCL_EXPORT hcl_oow_t hcl_rotate_bchars ( - hcl_bch_t* str, - hcl_oow_t len, - int dir, - hcl_oow_t n -); - -HCL_EXPORT hcl_oow_t hcl_count_ucstr ( - const hcl_uch_t* str -); - -HCL_EXPORT hcl_oow_t hcl_count_bcstr ( - const hcl_bch_t* str -); - -#if defined(HCL_OOCH_IS_UCH) -# define hcl_equal_oochars(str1,str2,len) hcl_equal_uchars(str1,str2,len) -# define hcl_comp_oochars(str1,len1,str2,len2) hcl_comp_uchars(str1,len1,str2,len2) -# define hcl_comp_oocstr_bcstr(str1,str2) hcl_comp_ucstr_bcstr(str1,str2) -# define hcl_comp_oochars_bcstr(str1,len1,str2) hcl_comp_uchars_bcstr(str1,len1,str2) -# define hcl_comp_oochars_ucstr(str1,len1,str2) hcl_comp_uchars_ucstr(str1,len1,str2) -# define hcl_comp_oochars_oocstr(str1,len1,str2) hcl_comp_uchars_ucstr(str1,len1,str2) -# define hcl_comp_oocstr(str1,str2) hcl_comp_ucstr(str1,str2) - -# define hcl_copy_oochars(dst,src,len) hcl_copy_uchars(dst,src,len) -# define hcl_copy_bchars_to_oochars(dst,src,len) hcl_copy_bchars_to_uchars(dst,src,len) -# define hcl_copy_oochars_to_bchars(dst,src,len) hcl_copy_uchars_to_bchars(dst,src,len) -# define hcl_copy_uchars_to_oochars(dst,src,len) hcl_copy_uchars(dst,src,len) -# define hcl_copy_oochars_to_uchars(dst,src,len) hcl_copy_uchars(dst,src,len) - -# define hcl_copy_oochars_to_oocstr(dst,dlen,src,slen) hcl_copy_uchars_to_ucstr(dst,dlen,src,slen) -# define hcl_copy_oochars_to_oocstr_unlimited(dst,src,len) hcl_copy_uchars_to_ucstr_unlimited(dst,src,len) -# define hcl_copy_oocstr(dst,len,src) hcl_copy_ucstr(dst,len,src) -# define hcl_copy_oocstr_unlimited(dst,src) hcl_copy_ucstr_unlimited(dst,src) - -# define hcl_fill_oochars hcl_fill_uchars -# define hcl_find_oochar hcl_find_uchar -# define hcl_rfind_oochar hcl_rfind_uchar -# define hcl_find_oochar_in_oocstr hcl_find_uchar_in_ucstr -# define hcl_rotate_oochars hcl_rotate_uchars -# define hcl_count_oocstr hcl_count_ucstr -#else -# define hcl_equal_oochars(str1,str2,len) hcl_equal_bchars(str1,str2,len) -# define hcl_comp_oochars(str1,len1,str2,len2) hcl_comp_bchars(str1,len1,str2,len2) -# define hcl_comp_oocstr_bcstr(str1,str2) hcl_comp_bcstr(str1,str2) -# define hcl_comp_oochars_bcstr(str1,len1,str2) hcl_comp_bchars_bcstr(str1,len1,str2) -# define hcl_comp_oochars_ucstr(str1,len1,str2) hcl_comp_bchars_ucstr(str1,len1,str2) -# define hcl_comp_oochars_oocstr(str1,len1,str2) hcl_comp_bchars_bcstr(str1,len1,str2) -# define hcl_comp_oocstr(str1,str2) hcl_comp_bcstr(str1,str2) - -# define hcl_copy_oochars(dst,src,len) hcl_copy_bchars(dst,src,len) -# define hcl_copy_bchars_to_oochars(dst,src,len) hcl_copy_bchars(dst,src,len) -# define hcl_copy_oochars_to_bchars(dst,src,len) hcl_copy_bchars(dst,src,len) -# define hcl_copy_uchars_to_oochars(dst,src,len) hcl_copy_uchars_to_bchars(dst,src,len) -# define hcl_copy_oochars_to_uchars(dst,src,len) hcl_copy_bchars_to_uchars(dst,src,len) - -# define hcl_copy_oochars_to_oocstr(dst,dlen,src,slen) hcl_copy_bchars_to_bcstr(dst,dlen,src,slen) -# define hcl_copy_oochars_to_oocstr_unlimited(dst,src,len) hcl_copy_bchars_to_bcstr_unlimited(dst,src,len) -# define hcl_copy_oocstr(dst,len,src) hcl_copy_bcstr(dst,len,src) -# define hcl_copy_oocstr_unlimited(dst,src) hcl_copy_bcstr_unlimited(dst,src) - -# define hcl_fill_oochars hcl_fill_bchars -# define hcl_find_oochar hcl_find_bchar -# define hcl_rfind_oochar hcl_rfind_bchar -# define hcl_find_oochar_in_oocstr hcl_find_bchar_in_bcstr -# define hcl_rotate_oochars hcl_rotate_bchars -# define hcl_count_oocstr hcl_count_bcstr -#endif - -#define HCL_BYTE_TO_BCSTR_RADIXMASK (0xFF) -#define HCL_BYTE_TO_BCSTR_LOWERCASE (1 << 8) - -hcl_oow_t hcl_byte_to_bcstr ( - hcl_uint8_t byte, - hcl_bch_t* buf, - hcl_oow_t size, - int flagged_radix, - hcl_bch_t fill -); - - -HCL_EXPORT int hcl_conv_bcstr_to_ucstr_with_cmgr ( - const hcl_bch_t* bcs, - hcl_oow_t* bcslen, - hcl_uch_t* ucs, - hcl_oow_t* ucslen, - hcl_cmgr_t* cmgr, - int all -); - -HCL_EXPORT int hcl_conv_bchars_to_uchars_with_cmgr ( - const hcl_bch_t* bcs, - hcl_oow_t* bcslen, - hcl_uch_t* ucs, - hcl_oow_t* ucslen, - hcl_cmgr_t* cmgr, - int all -); - -HCL_EXPORT int hcl_conv_ucstr_to_bcstr_with_cmgr ( - const hcl_uch_t* ucs, - hcl_oow_t* ucslen, - hcl_bch_t* bcs, - hcl_oow_t* bcslen, - hcl_cmgr_t* cmgr -); - -HCL_EXPORT int hcl_conv_uchars_to_bchars_with_cmgr ( - const hcl_uch_t* ucs, - hcl_oow_t* ucslen, - hcl_bch_t* bcs, - hcl_oow_t* bcslen, - hcl_cmgr_t* cmgr -); - -#if defined(HCL_OOCH_IS_UCH) -# define hcl_conv_oocstr_to_bcstr_with_cmgr(oocs,oocslen,bcs,bcslen,cmgr) hcl_conv_ucstr_to_bcstr_with_cmgr(oocs,oocslen,bcs,bcslen,cmgr) -# define hcl_conv_oochars_to_bchars_with_cmgr(oocs,oocslen,bcs,bcslen,cmgr) hcl_conv_uchars_to_bchars_with_cmgr(oocs,oocslen,bcs,bcslen,cmgr) -#else -# define hcl_conv_oocstr_to_ucstr_with_cmgr(oocs,oocslen,ucs,ucslen,cmgr) hcl_conv_bcstr_to_ucstr_with_cmgr(oocs,oocslen,ucs,ucslen,cmgr,0) -# define hcl_conv_oochars_to_uchars_with_cmgr(oocs,oocslen,ucs,ucslen,cmgr) hcl_conv_bchars_to_uchars_with_cmgr(oocs,oocslen,ucs,ucslen,cmgr,0) -#endif - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/lib/hcl-tmr.h b/lib/hcl-tmr.h deleted file mode 100644 index 62a8f8b..0000000 --- a/lib/hcl-tmr.h +++ /dev/null @@ -1,152 +0,0 @@ -/* - Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _HCL_TMR_H_ -#define _HCL_TMR_H_ - -#include - -typedef struct hcl_tmr_t hcl_tmr_t; -typedef struct hcl_tmr_event_t hcl_tmr_event_t; -typedef hcl_oow_t hcl_tmr_index_t; - -typedef void (*hcl_tmr_handler_t) ( - hcl_tmr_t* tmr, - const hcl_ntime_t* now, - hcl_tmr_event_t* evt -); - -typedef void (*hcl_tmr_updater_t) ( - hcl_tmr_t* tmr, - hcl_tmr_index_t old_index, - hcl_tmr_index_t new_index, - hcl_tmr_event_t* evt -); - -struct hcl_tmr_t -{ - hcl_t* hcl; - hcl_oow_t capa; - hcl_oow_t size; - hcl_tmr_event_t* event; -}; - -struct hcl_tmr_event_t -{ - void* ctx; /* primary context pointer */ - hcl_ntime_t when; - hcl_tmr_handler_t handler; - hcl_tmr_updater_t updater; -}; - -#define HCL_TMR_INVALID_INDEX ((hcl_tmr_index_t)-1) - -#define HCL_TMR_SIZE(tmr) ((tmr)->size) -#define HCL_TMR_CAPA(tmr) ((tmr)->capa); - -#if defined(__cplusplus) -extern "C" { -#endif - -HCL_EXPORT hcl_tmr_t* hcl_tmr_open ( - hcl_t* mmgr, - hcl_oow_t xtnsize, - hcl_oow_t capa -); - -HCL_EXPORT void hcl_tmr_close ( - hcl_tmr_t* tmr -); - -HCL_EXPORT int hcl_tmr_init ( - hcl_tmr_t* tmr, - hcl_t* mmgr, - hcl_oow_t capa -); - -HCL_EXPORT void hcl_tmr_fini ( - hcl_tmr_t* tmr -); - -/* -HCL_EXPORT hcl_mmgr_t* hcl_tmr_getmmgr ( - hcl_tmr_t* tmr -);*/ - -HCL_EXPORT void* hcl_tmr_getxtn ( - hcl_tmr_t* tmr -); - -HCL_EXPORT void hcl_tmr_clear ( - hcl_tmr_t* tmr -); - -/** - * The hcl_tmr_insert() function schedules a new event. - * - * \return #HCL_TMR_INVALID_INDEX on failure, valid index on success. - */ - -HCL_EXPORT hcl_tmr_index_t hcl_tmr_insert ( - hcl_tmr_t* tmr, - const hcl_tmr_event_t* event -); - -HCL_EXPORT hcl_tmr_index_t hcl_tmr_update ( - hcl_tmr_t* tmr, - hcl_tmr_index_t index, - const hcl_tmr_event_t* event -); - -HCL_EXPORT void hcl_tmr_delete ( - hcl_tmr_t* tmr, - hcl_tmr_index_t index -); - -HCL_EXPORT int hcl_tmr_fire ( - hcl_tmr_t* tmr, - const hcl_ntime_t* tm, - hcl_oow_t* firecnt -); - -HCL_EXPORT int hcl_tmr_gettmout ( - hcl_tmr_t* tmr, - const hcl_ntime_t* tm, - hcl_ntime_t* tmout -); - -/** - * The hcl_tmr_getevent() function returns the - * pointer to the registered event at the given index. - */ -HCL_EXPORT hcl_tmr_event_t* hcl_tmr_getevent ( - hcl_tmr_t* tmr, - hcl_tmr_index_t index -); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/lib/hcl-utl.h b/lib/hcl-utl.h deleted file mode 100644 index 0ad7253..0000000 --- a/lib/hcl-utl.h +++ /dev/null @@ -1,901 +0,0 @@ -/* - Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _HCL_UTL_H_ -#define _HCL_UTL_H_ - -#include -#include - -/* ========================================================================= - * DOUBLY LINKED LIST - * ========================================================================= */ -#define HCL_APPEND_TO_LIST(list, node) do { \ - (node)->next = HCL_NULL; \ - (node)->prev = (list)->last; \ - if ((list)->first) (list)->last->next = (node); \ - else (list)->first = (node); \ - (list)->last = (node); \ -} while(0) - -#define HCL_PREPPEND_TO_LIST(list, node) do { \ - (node)->prev = HCL_NULL; \ - (node)->next = (list)->first; \ - if ((list)->last) (list)->first->prev = (node); \ - else (list)->last = (node); \ - (list)->first = (node); \ -} while(0) - -#define HCL_DELETE_FROM_LIST(list, node) do { \ - if ((node)->prev) (node)->prev->next = (node)->next; \ - else (list)->first = (node)->next; \ - if ((node)->next) (node)->next->prev = (node)->prev; \ - else (list)->last = (node)->prev; \ -} while(0) - - - -#define HCL_APPEND_TO_OOP_LIST(hcl, list, node_type, node, _link) do { \ - (node)->_link.next = (node_type)(hcl)->_nil; \ - (node)->_link.prev = (list)->last; \ - if ((hcl_oop_t)(list)->last != (hcl)->_nil) (list)->last->_link.next = (node); \ - else (list)->first = (node); \ - (list)->last = (node); \ -} while(0) - -#define HCL_PREPPEND_TO_OOP_LIST(hcl, list, node_type, node, _link) do { \ - (node)->_link.prev = (node_type)(hcl)->_nil; \ - (node)->_link.next = (list)->first; \ - if ((hcl_oop_t)(list)->first != (hcl)->_nil) (list)->first->_link.prev = (node); \ - else (list)->last = (node); \ - (list)->first = (node); \ -} while(0) - -#define HCL_DELETE_FROM_OOP_LIST(hcl, list, node, _link) do { \ - if ((hcl_oop_t)(node)->_link.prev != (hcl)->_nil) (node)->_link.prev->_link.next = (node)->_link.next; \ - else (list)->first = (node)->_link.next; \ - if ((hcl_oop_t)(node)->_link.next != (hcl)->_nil) (node)->_link.next->_link.prev = (node)->_link.prev; \ - else (list)->last = (node)->_link.prev; \ -} while(0) - -/* -#define HCL_CLEANUP_FROM_OOP_LIST(hcl, list, node, _link) do { \ - HCL_DELETE_FROM_OOP_LIST (hcl, list, node, _link); \ - (node)->_link.prev = (node_type)(hcl)->_nil; \ - (node)->_link.next = (node_type)(hcl)->_nil; \ -} while(0); -*/ - -/* ========================================================================= - * ENDIAN CHANGE OF A CONSTANT - * ========================================================================= */ -#define HCL_CONST_BSWAP16(x) \ - ((hcl_uint16_t)((((hcl_uint16_t)(x) & ((hcl_uint16_t)0xff << 0)) << 8) | \ - (((hcl_uint16_t)(x) & ((hcl_uint16_t)0xff << 8)) >> 8))) - -#define HCL_CONST_BSWAP32(x) \ - ((hcl_uint32_t)((((hcl_uint32_t)(x) & ((hcl_uint32_t)0xff << 0)) << 24) | \ - (((hcl_uint32_t)(x) & ((hcl_uint32_t)0xff << 8)) << 8) | \ - (((hcl_uint32_t)(x) & ((hcl_uint32_t)0xff << 16)) >> 8) | \ - (((hcl_uint32_t)(x) & ((hcl_uint32_t)0xff << 24)) >> 24))) - -#if defined(HCL_HAVE_UINT64_T) -#define HCL_CONST_BSWAP64(x) \ - ((hcl_uint64_t)((((hcl_uint64_t)(x) & ((hcl_uint64_t)0xff << 0)) << 56) | \ - (((hcl_uint64_t)(x) & ((hcl_uint64_t)0xff << 8)) << 40) | \ - (((hcl_uint64_t)(x) & ((hcl_uint64_t)0xff << 16)) << 24) | \ - (((hcl_uint64_t)(x) & ((hcl_uint64_t)0xff << 24)) << 8) | \ - (((hcl_uint64_t)(x) & ((hcl_uint64_t)0xff << 32)) >> 8) | \ - (((hcl_uint64_t)(x) & ((hcl_uint64_t)0xff << 40)) >> 24) | \ - (((hcl_uint64_t)(x) & ((hcl_uint64_t)0xff << 48)) >> 40) | \ - (((hcl_uint64_t)(x) & ((hcl_uint64_t)0xff << 56)) >> 56))) -#endif - -#if defined(HCL_HAVE_UINT128_T) -#define HCL_CONST_BSWAP128(x) \ - ((hcl_uint128_t)((((hcl_uint128_t)(x) & ((hcl_uint128_t)0xff << 0)) << 120) | \ - (((hcl_uint128_t)(x) & ((hcl_uint128_t)0xff << 8)) << 104) | \ - (((hcl_uint128_t)(x) & ((hcl_uint128_t)0xff << 16)) << 88) | \ - (((hcl_uint128_t)(x) & ((hcl_uint128_t)0xff << 24)) << 72) | \ - (((hcl_uint128_t)(x) & ((hcl_uint128_t)0xff << 32)) << 56) | \ - (((hcl_uint128_t)(x) & ((hcl_uint128_t)0xff << 40)) << 40) | \ - (((hcl_uint128_t)(x) & ((hcl_uint128_t)0xff << 48)) << 24) | \ - (((hcl_uint128_t)(x) & ((hcl_uint128_t)0xff << 56)) << 8) | \ - (((hcl_uint128_t)(x) & ((hcl_uint128_t)0xff << 64)) >> 8) | \ - (((hcl_uint128_t)(x) & ((hcl_uint128_t)0xff << 72)) >> 24) | \ - (((hcl_uint128_t)(x) & ((hcl_uint128_t)0xff << 80)) >> 40) | \ - (((hcl_uint128_t)(x) & ((hcl_uint128_t)0xff << 88)) >> 56) | \ - (((hcl_uint128_t)(x) & ((hcl_uint128_t)0xff << 96)) >> 72) | \ - (((hcl_uint128_t)(x) & ((hcl_uint128_t)0xff << 104)) >> 88) | \ - (((hcl_uint128_t)(x) & ((hcl_uint128_t)0xff << 112)) >> 104) | \ - (((hcl_uint128_t)(x) & ((hcl_uint128_t)0xff << 120)) >> 120))) -#endif - -#if defined(HCL_ENDIAN_LITTLE) - -# if defined(HCL_HAVE_UINT16_T) -# define HCL_CONST_NTOH16(x) HCL_CONST_BSWAP16(x) -# define HCL_CONST_HTON16(x) HCL_CONST_BSWAP16(x) -# define HCL_CONST_HTOBE16(x) HCL_CONST_BSWAP16(x) -# define HCL_CONST_HTOLE16(x) (x) -# define HCL_CONST_BE16TOH(x) HCL_CONST_BSWAP16(x) -# define HCL_CONST_LE16TOH(x) (x) -# endif - -# if defined(HCL_HAVE_UINT32_T) -# define HCL_CONST_NTOH32(x) HCL_CONST_BSWAP32(x) -# define HCL_CONST_HTON32(x) HCL_CONST_BSWAP32(x) -# define HCL_CONST_HTOBE32(x) HCL_CONST_BSWAP32(x) -# define HCL_CONST_HTOLE32(x) (x) -# define HCL_CONST_BE32TOH(x) HCL_CONST_BSWAP32(x) -# define HCL_CONST_LE32TOH(x) (x) -# endif - -# if defined(HCL_HAVE_UINT64_T) -# define HCL_CONST_NTOH64(x) HCL_CONST_BSWAP64(x) -# define HCL_CONST_HTON64(x) HCL_CONST_BSWAP64(x) -# define HCL_CONST_HTOBE64(x) HCL_CONST_BSWAP64(x) -# define HCL_CONST_HTOLE64(x) (x) -# define HCL_CONST_BE64TOH(x) HCL_CONST_BSWAP64(x) -# define HCL_CONST_LE64TOH(x) (x) -# endif - -# if defined(HCL_HAVE_UINT128_T) -# define HCL_CONST_NTOH128(x) HCL_CONST_BSWAP128(x) -# define HCL_CONST_HTON128(x) HCL_CONST_BSWAP128(x) -# define HCL_CONST_HTOBE128(x) HCL_CONST_BSWAP128(x) -# define HCL_CONST_HTOLE128(x) (x) -# define HCL_CONST_BE128TOH(x) HCL_CONST_BSWAP128(x) -# define HCL_CONST_LE128TOH(x) (x) -#endif - -#elif defined(HCL_ENDIAN_BIG) - -# if defined(HCL_HAVE_UINT16_T) -# define HCL_CONST_NTOH16(x) (x) -# define HCL_CONST_HTON16(x) (x) -# define HCL_CONST_HTOBE16(x) (x) -# define HCL_CONST_HTOLE16(x) HCL_CONST_BSWAP16(x) -# define HCL_CONST_BE16TOH(x) (x) -# define HCL_CONST_LE16TOH(x) HCL_CONST_BSWAP16(x) -# endif - -# if defined(HCL_HAVE_UINT32_T) -# define HCL_CONST_NTOH32(x) (x) -# define HCL_CONST_HTON32(x) (x) -# define HCL_CONST_HTOBE32(x) (x) -# define HCL_CONST_HTOLE32(x) HCL_CONST_BSWAP32(x) -# define HCL_CONST_BE32TOH(x) (x) -# define HCL_CONST_LE32TOH(x) HCL_CONST_BSWAP32(x) -# endif - -# if defined(HCL_HAVE_UINT64_T) -# define HCL_CONST_NTOH64(x) (x) -# define HCL_CONST_HTON64(x) (x) -# define HCL_CONST_HTOBE64(x) (x) -# define HCL_CONST_HTOLE64(x) HCL_CONST_BSWAP64(x) -# define HCL_CONST_BE64TOH(x) (x) -# define HCL_CONST_LE64TOH(x) HCL_CONST_BSWAP64(x) -# endif - -# if defined(HCL_HAVE_UINT128_T) -# define HCL_CONST_NTOH128(x) (x) -# define HCL_CONST_HTON128(x) (x) -# define HCL_CONST_HTOBE128(x) (x) -# define HCL_CONST_HTOLE128(x) HCL_CONST_BSWAP128(x) -# define HCL_CONST_BE128TOH(x) (x) -# define HCL_CONST_LE128TOH(x) HCL_CONST_BSWAP128(x) -# endif - -#else -# error UNKNOWN ENDIAN -#endif - - -#if defined(HCL_HAVE_UINT16_T) && (HCL_SIZEOF_UINT16_T == HCL_SIZEOF_OOW_T) -# define HCL_CONST_NTOHOOW(x) HCL_CONST_NTOH16(x) -# define HCL_CONST_HTONOOW(x) HCL_CONST_HTON16(x) -# define HCL_CONST_HTOBEOOW(x) HCL_CONST_HTOBE16(x) -# define HCL_CONST_HTOLEOOW(x) HCL_CONST_HTOLE16(x) -# define HCL_CONST_BEOOWTOH(x) HCL_CONST_BE16TOH(x) -# define HCL_CONST_LEOOWTOH(x) HCL_CONST_LE16TOH(x) -#elif defined(HCL_HAVE_UINT32_T) && (HCL_SIZEOF_UINT32_T == HCL_SIZEOF_OOW_T) -# define HCL_CONST_NTOHOOW(x) HCL_CONST_NTOH32(x) -# define HCL_CONST_HTONOOW(x) HCL_CONST_HTON32(x) -# define HCL_CONST_HTOBEOOW(x) HCL_CONST_HTOBE32(x) -# define HCL_CONST_HTOLEOOW(x) HCL_CONST_HTOLE32(x) -# define HCL_CONST_BEOOWTOH(x) HCL_CONST_BE32TOH(x) -# define HCL_CONST_LEOOWTOH(x) HCL_CONST_LE32TOH(x) -#elif defined(HCL_HAVE_UINT64_T) && (HCL_SIZEOF_UINT64_T == HCL_SIZEOF_OOW_T) -# define HCL_CONST_NTOHOOW(x) HCL_CONST_NTOH64(x) -# define HCL_CONST_HTONOOW(x) HCL_CONST_HTON64(x) -# define HCL_CONST_HTOBEOOW(x) HCL_CONST_HTOBE64(x) -# define HCL_CONST_HTOLEOOW(x) HCL_CONST_HTOLE64(x) -# define HCL_CONST_BEOOWTOH(x) HCL_CONST_BE64TOH(x) -# define HCL_CONST_LEOOWTOH(x) HCL_CONST_LE64TOH(x) -#elif defined(HCL_HAVE_UINT128_T) && (HCL_SIZEOF_UINT128_T == HCL_SIZEOF_OOW_T) -# define HCL_CONST_NTOHOOW(x) HCL_CONST_NTOH128(x) -# define HCL_CONST_HTONOOW(x) HCL_CONST_HTON128(x) -# define HCL_CONST_HTOBEOOW(x) HCL_CONST_HTOBE128(x) -# define HCL_CONST_HTOLEOOW(x) HCL_CONST_HTOLE128(x) -# define HCL_CONST_BEOOWTOH(x) HCL_CONST_BE128TOH(x) -# define HCL_CONST_LEOOWTOH(x) HCL_CONST_LE128TOH(x) -#endif - -#if defined(HCL_HAVE_UINT16_T) && (HCL_SIZEOF_UINT16_T == HCL_SIZEOF_OOHW_T) -# define HCL_CONST_NTOHOOHW(x) HCL_CONST_NTOH16(x) -# define HCL_CONST_HTONOOHW(x) HCL_CONST_HTON16(x) -# define HCL_CONST_HTOBEOOHW(x) HCL_CONST_HTOBE16(x) -# define HCL_CONST_HTOLEOOHW(x) HCL_CONST_HTOLE16(x) -# define HCL_CONST_BEOOHWTOH(x) HCL_CONST_BE16TOH(x) -# define HCL_CONST_LEOOHWTOH(x) HCL_CONST_LE16TOH(x) -#elif defined(HCL_HAVE_UINT32_T) && (HCL_SIZEOF_UINT32_T == HCL_SIZEOF_OOHW_T) -# define HCL_CONST_NTOHOOHW(x) HCL_CONST_NTOH32(x) -# define HCL_CONST_HTONOOHW(x) HCL_CONST_HTON32(x) -# define HCL_CONST_HTOBEOOHW(x) HCL_CONST_HTOBE32(x) -# define HCL_CONST_HTOLEOOHW(x) HCL_CONST_HTOLE32(x) -# define HCL_CONST_BEOOHWTOH(x) HCL_CONST_BE32TOH(x) -# define HCL_CONST_LEOOHWTOH(x) HCL_CONST_LE32TOH(x) -#elif defined(HCL_HAVE_UINT64_T) && (HCL_SIZEOF_UINT64_T == HCL_SIZEOF_OOHW_T) -# define HCL_CONST_NTOHOOHW(x) HCL_CONST_NTOH64(x) -# define HCL_CONST_HTONOOHW(x) HCL_CONST_HTON64(x) -# define HCL_CONST_HTOBEOOHW(x) HCL_CONST_HTOBE64(x) -# define HCL_CONST_HTOLEOOHW(x) HCL_CONST_HTOLE64(x) -# define HCL_CONST_BEOOHWTOH(x) HCL_CONST_BE64TOH(x) -# define HCL_CONST_LEOOHWTOH(x) HCL_CONST_LE64TOH(x) -#elif defined(HCL_HAVE_UINT128_T) && (HCL_SIZEOF_UINT128_T == HCL_SIZEOF_OOHW_T) -# define HCL_CONST_NTOHOOHW(x) HCL_CONST_NTOH128(x) -# define HCL_CONST_HTONOOHW(x) HCL_CONST_HTON128(x) -# define HCL_CONST_HTOBEOOHW(x) HCL_CONST_HTOBE128(x) -# define HCL_CONST_HTOLEOOHW(x) HCL_CONST_HTOLE128(x) -# define HCL_CONST_BEOOHWTOH(x) HCL_CONST_BE128TOH(x) -# define HCL_CONST_LEOOHWTOH(x) HCL_CONST_LE128TOH(x) -#endif - -#if defined(HCL_USE_OOW_FOR_LIW) -# define HCL_CONST_NTOHLIW(x) HCL_CONST_NTOHOOW(x) -# define HCL_CONST_HTONLIW(x) HCL_CONST_HTONOOW(x) -# define HCL_CONST_HTOBELIW(x) HCL_CONST_HTOBEOOW(x) -# define HCL_CONST_HTOLELIW(x) HCL_CONST_HTOLEOOW(x) -# define HCL_CONST_BELIWTOH(x) HCL_CONST_BEOOWTOH(x) -# define HCL_CONST_LELIWTOH(x) HCL_CONST_LEOOWTOH(x) -#else -# define HCL_CONST_NTOHLIW(x) HCL_CONST_NTOHOOHW(x) -# define HCL_CONST_HTONLIW(x) HCL_CONST_HTONOOHW(x) -# define HCL_CONST_HTOBELIW(x) HCL_CONST_HTOBEOOHW(x) -# define HCL_CONST_HTOLELIW(x) HCL_CONST_HTOLEOOHW(x) -# define HCL_CONST_BELIWTOH(x) HCL_CONST_BEOOHWTOH(x) -# define HCL_CONST_LELIWTOH(x) HCL_CONST_LEOOHWTOH(x) -#endif - -/* ========================================================================= - * HASH - * ========================================================================= */ - -#if (HCL_SIZEOF_OOW_T == 4) -# define HCL_HASH_FNV_MAGIC_INIT (0x811c9dc5) -# define HCL_HASH_FNV_MAGIC_PRIME (0x01000193) -#elif (HCL_SIZEOF_OOW_T == 8) - -# define HCL_HASH_FNV_MAGIC_INIT (0xCBF29CE484222325) -# define HCL_HASH_FNV_MAGIC_PRIME (0x100000001B3l) - -#elif (HCL_SIZEOF_OOW_T == 16) -# define HCL_HASH_FNV_MAGIC_INIT (0x6C62272E07BB014262B821756295C58D) -# define HCL_HASH_FNV_MAGIC_PRIME (0x1000000000000000000013B) -#endif - -#if defined(HCL_HASH_FNV_MAGIC_INIT) - /* FNV-1 hash */ -# define HCL_HASH_INIT HCL_HASH_FNV_MAGIC_INIT -# define HCL_HASH_VALUE(hv,v) (((hv) ^ (v)) * HCL_HASH_FNV_MAGIC_PRIME) - -#else - /* SDBM hash */ -# define HCL_HASH_INIT 0 -# define HCL_HASH_VALUE(hv,v) (((hv) << 6) + ((hv) << 16) - (hv) + (v)) -#endif - -#define HCL_HASH_VPTL(hv, ptr, len, type) do { \ - hv = HCL_HASH_INIT; \ - HCL_HASH_MORE_VPTL (hv, ptr, len, type); \ -} while(0) - -#define HCL_HASH_MORE_VPTL(hv, ptr, len, type) do { \ - type* __hcl_hash_more_vptl_p = (type*)(ptr); \ - type* __hcl_hash_more_vptl_q = (type*)__hcl_hash_more_vptl_p + (len); \ - while (__hcl_hash_more_vptl_p < __hcl_hash_more_vptl_q) \ - { \ - hv = HCL_HASH_VALUE(hv, *__hcl_hash_more_vptl_p); \ - __hcl_hash_more_vptl_p++; \ - } \ -} while(0) - -#define HCL_HASH_VPTR(hv, ptr, type) do { \ - hv = HCL_HASH_INIT; \ - HCL_HASH_MORE_VPTR (hv, ptr, type); \ -} while(0) - -#define HCL_HASH_MORE_VPTR(hv, ptr, type) do { \ - type* __hcl_hash_more_vptr_p = (type*)(ptr); \ - while (*__hcl_hash_more_vptr_p) \ - { \ - hv = HCL_HASH_VALUE(hv, *__hcl_hash_more_vptr_p); \ - __hcl_hash_more_vptr_p++; \ - } \ -} while(0) - -#define HCL_HASH_BYTES(hv, ptr, len) HCL_HASH_VPTL(hv, ptr, len, const hcl_uint8_t) -#define HCL_HASH_MORE_BYTES(hv, ptr, len) HCL_HASH_MORE_VPTL(hv, ptr, len, const hcl_uint8_t) - -#define HCL_HASH_BCHARS(hv, ptr, len) HCL_HASH_VPTL(hv, ptr, len, const hcl_bch_t) -#define HCL_HASH_MORE_BCHARS(hv, ptr, len) HCL_HASH_MORE_VPTL(hv, ptr, len, const hcl_bch_t) - -#define HCL_HASH_UCHARS(hv, ptr, len) HCL_HASH_VPTL(hv, ptr, len, const hcl_uch_t) -#define HCL_HASH_MORE_UCHARS(hv, ptr, len) HCL_HASH_MORE_VPTL(hv, ptr, len, const hcl_uch_t) - -#define HCL_HASH_BCSTR(hv, ptr) HCL_HASH_VPTR(hv, ptr, const hcl_bch_t) -#define HCL_HASH_MORE_BCSTR(hv, ptr) HCL_HASH_MORE_VPTR(hv, ptr, const hcl_bch_t) - -#define HCL_HASH_UCSTR(hv, ptr) HCL_HASH_VPTR(hv, ptr, const hcl_uch_t) -#define HCL_HASH_MORE_UCSTR(hv, ptr) HCL_HASH_MORE_VPTR(hv, ptr, const hcl_uch_t) - -/* ========================================================================= - * PATH-RELATED MACROS - * ========================================================================= */ -#if defined(_WIN32) || defined(__OS2__) || defined(__DOS__) -# define HCL_DFL_PATH_SEP ('\\') -# define HCL_ALT_PATH_SEP ('/') -# define HCL_IS_PATH_SEP(c) ((c) == HCL_DFL_PATH_SEP || (c) == HCL_ALT_PATH_SEP) -# define HCL_HAVE_ALT_PATH_SEP 1 -#else -# define HCL_DFL_PATH_SEP ('/') -# define HCL_ALT_PATH_SEP ('/') -# define HCL_IS_PATH_SEP(c) ((c) == HCL_DFL_PATH_SEP) -# undef HCL_HAVE_ALT_PATH_SEP -#endif - - -/* TODO: handle path with a drive letter or in the UNC notation */ -#define HCL_IS_PATH_ABSOLUTE(x) HCL_IS_PATH_SEP(x[0]) - - -#if defined(__cplusplus) -extern "C" { -#endif - -HCL_EXPORT hcl_oow_t hcl_hash_bytes_ ( - const hcl_oob_t* ptr, - hcl_oow_t len -); - -#if defined(HCL_HAVE_INLINE) -static HCL_INLINE hcl_oow_t hcl_hash_bytes (const hcl_oob_t* ptr, hcl_oow_t len) -{ - hcl_oow_t hv; - HCL_HASH_BYTES (hv, ptr, len); - /* constrain the hash value to be representable in a small integer - * for convenience sake */ - return hv % ((hcl_oow_t)HCL_SMOOI_MAX + 1); -} - -static HCL_INLINE hcl_oow_t hcl_hash_bchars (const hcl_bch_t* ptr, hcl_oow_t len) -{ - return hcl_hash_bytes((const hcl_oob_t*)ptr, len * HCL_SIZEOF(hcl_bch_t)); -} - -static HCL_INLINE hcl_oow_t hcl_hash_uchars (const hcl_uch_t* ptr, hcl_oow_t len) -{ - return hcl_hash_bytes((const hcl_oob_t*)ptr, len * HCL_SIZEOF(hcl_uch_t)); -} - -static HCL_INLINE hcl_oow_t hcl_hash_words (const hcl_oow_t* ptr, hcl_oow_t len) -{ - return hcl_hash_bytes((const hcl_oob_t*)ptr, len * HCL_SIZEOF(hcl_oow_t)); -} - -static HCL_INLINE hcl_oow_t hcl_hash_halfwords (const hcl_oohw_t* ptr, hcl_oow_t len) -{ - return hcl_hash_bytes((const hcl_oob_t*)ptr, len * HCL_SIZEOF(hcl_oohw_t)); -} - -static HCL_INLINE hcl_oow_t hcl_hash_liwords(const hcl_liw_t* ptr, hcl_oow_t len) -{ - return hcl_hash_bytes((const hcl_oob_t*)ptr, len * HCL_SIZEOF(hcl_liw_t)); -} - -#else -# define hcl_hash_bytes(ptr,len) hcl_hash_bytes_(ptr, len) -# define hcl_hash_bchars(ptr,len) hcl_hash_bytes((const hcl_oob_t*)ptr, len * HCL_SIZEOF(hcl_bch_t)) -# define hcl_hash_uchars(ptr,len) hcl_hash_bytes((const hcl_oob_t*)ptr, len * HCL_SIZEOF(hcl_uch_t)) -# define hcl_hash_words(ptr,len) hcl_hash_bytes((const hcl_oob_t*)ptr, len * HCL_SIZEOF(hcl_oow_t)) -# define hcl_hash_halfwords(ptr,len) hcl_hash_bytes((const hcl_oob_t*)ptr, len * HCL_SIZEOF(hcl_oohw_t)) -# define hcl_hash_liwords(ptr,len) hcl_hash_bytes((const hcl_oob_t*)ptr, len * HCL_SIZEOF(hcl_liw_t)) -#endif - -#if defined(HCL_OOCH_IS_UCH) -# define hcl_hash_oochars(ptr,len) hcl_hash_uchars(ptr,len) -#else -# define hcl_hash_oochars(ptr,len) hcl_hash_bchars(ptr,len) -#endif - -/* ========================================================================= - * TIME CALCULATION WITH OVERFLOW/UNDERFLOW DETECTION - * ========================================================================= */ - -/** - * The hcl_add_ntime() function adds two time structures pointed to by \a x and \a y - * and stores the result in the structure pointed to by \a z. If it detects overflow/ - * underflow, it stores the largest/least possible value respectively. - * You may use the HCL_ADD_NTIME() macro if overflow/underflow check isn't needed. - */ -HCL_EXPORT void hcl_add_ntime ( - hcl_ntime_t* z, - const hcl_ntime_t* x, - const hcl_ntime_t* y -); - -/** - * The hcl_sub_ntime() function subtracts the time value \a y from the time value \a x - * and stores the result in the structure pointed to by \a z. If it detects overflow/ - * underflow, it stores the largest/least possible value respectively. - * You may use the HCL_SUB_NTIME() macro if overflow/underflow check isn't needed. - */ -HCL_EXPORT void hcl_sub_ntime ( - hcl_ntime_t* z, - const hcl_ntime_t* x, - const hcl_ntime_t* y -); - -/* ========================================================================= - * PATH NAME - * ========================================================================= */ - -const hcl_bch_t* hcl_get_base_name_from_bcstr_path ( - const hcl_bch_t* path -); - -const hcl_uch_t* hcl_get_base_name_from_ucstr_path ( - const hcl_uch_t* path -); - -#if defined(HCL_OOCH_IS_UCH) -#define hcl_get_base_name_from_path(x) hcl_get_base_name_from_ucstr_path(x) -#else -#define hcl_get_base_name_from_path(x) hcl_get_base_name_from_bcstr_path(x) -#endif - -/* ========================================================================= - * BIT SWAP - * ========================================================================= */ -#if defined(HCL_HAVE_INLINE) - -#if defined(HCL_HAVE_UINT16_T) -static HCL_INLINE hcl_uint16_t hcl_bswap16 (hcl_uint16_t x) -{ -#if defined(HCL_HAVE_BUILTIN_BSWAP16) - return __builtin_bswap16(x); -#elif defined(__GNUC__) && (defined(__x86_64) || defined(__amd64) || defined(__i386) || defined(i386)) - __asm__ /*volatile*/ ("xchgb %b0, %h0" : "=Q"(x): "0"(x)); - return x; -#elif defined(__GNUC__) && defined(__arm__) && (defined(__ARM_ARCH) && (__ARM_ARCH >= 6)) - __asm__ /*volatile*/ ("rev16 %0, %0" : "+r"(x)); - return x; -#else - return (x << 8) | (x >> 8); -#endif -} -#endif - -#if defined(HCL_HAVE_UINT32_T) -static HCL_INLINE hcl_uint32_t hcl_bswap32 (hcl_uint32_t x) -{ -#if defined(HCL_HAVE_BUILTIN_BSWAP32) - return __builtin_bswap32(x); -#elif defined(__GNUC__) && (defined(__x86_64) || defined(__amd64) || defined(__i386) || defined(i386)) - __asm__ /*volatile*/ ("bswapl %0" : "=r"(x) : "0"(x)); - return x; -#elif defined(__GNUC__) && defined(__aarch64__) - __asm__ /*volatile*/ ("rev32 %0, %0" : "+r"(x)); - return x; -#elif defined(__GNUC__) && defined(__arm__) && (defined(__ARM_ARCH) && (__ARM_ARCH >= 6)) - __asm__ /*volatile*/ ("rev %0, %0" : "+r"(x)); - return x; -#elif defined(__GNUC__) && defined(__ARM_ARCH) - hcl_uint32_t tmp; - __asm__ /*volatile*/ ( - "eor %1, %0, %0, ror #16\n\t" - "bic %1, %1, #0x00ff0000\n\t" - "mov %0, %0, ror #8\n\t" - "eor %0, %0, %1, lsr #8\n\t" - :"+r"(x), "=&r"(tmp) - ); - return x; -#else - return ((x >> 24)) | - ((x >> 8) & ((hcl_uint32_t)0xff << 8)) | - ((x << 8) & ((hcl_uint32_t)0xff << 16)) | - ((x << 24)); -#endif -} -#endif - -#if defined(HCL_HAVE_UINT64_T) -static HCL_INLINE hcl_uint64_t hcl_bswap64 (hcl_uint64_t x) -{ -#if defined(HCL_HAVE_BUILTIN_BSWAP64) - return __builtin_bswap64(x); -#elif defined(__GNUC__) && (defined(__x86_64) || defined(__amd64)) - __asm__ /*volatile*/ ("bswapq %0" : "=r"(x) : "0"(x)); - return x; -#elif defined(__GNUC__) && defined(__aarch64__) - __asm__ /*volatile*/ ("rev %0, %0" : "+r"(x)); - return x; -#else - return ((x >> 56)) | - ((x >> 40) & ((hcl_uint64_t)0xff << 8)) | - ((x >> 24) & ((hcl_uint64_t)0xff << 16)) | - ((x >> 8) & ((hcl_uint64_t)0xff << 24)) | - ((x << 8) & ((hcl_uint64_t)0xff << 32)) | - ((x << 24) & ((hcl_uint64_t)0xff << 40)) | - ((x << 40) & ((hcl_uint64_t)0xff << 48)) | - ((x << 56)); -#endif -} -#endif - -#if defined(HCL_HAVE_UINT128_T) -static HCL_INLINE hcl_uint128_t hcl_bswap128 (hcl_uint128_t x) -{ -#if defined(HCL_HAVE_BUILTIN_BSWAP128) - return __builtin_bswap128(x); -#else - return ((x >> 120)) | - ((x >> 104) & ((hcl_uint128_t)0xff << 8)) | - ((x >> 88) & ((hcl_uint128_t)0xff << 16)) | - ((x >> 72) & ((hcl_uint128_t)0xff << 24)) | - ((x >> 56) & ((hcl_uint128_t)0xff << 32)) | - ((x >> 40) & ((hcl_uint128_t)0xff << 40)) | - ((x >> 24) & ((hcl_uint128_t)0xff << 48)) | - ((x >> 8) & ((hcl_uint128_t)0xff << 56)) | - ((x << 8) & ((hcl_uint128_t)0xff << 64)) | - ((x << 24) & ((hcl_uint128_t)0xff << 72)) | - ((x << 40) & ((hcl_uint128_t)0xff << 80)) | - ((x << 56) & ((hcl_uint128_t)0xff << 88)) | - ((x << 72) & ((hcl_uint128_t)0xff << 96)) | - ((x << 88) & ((hcl_uint128_t)0xff << 104)) | - ((x << 104) & ((hcl_uint128_t)0xff << 112)) | - ((x << 120)); -#endif -} -#endif - -#else - -#if defined(HCL_HAVE_UINT16_T) -# if defined(HCL_HAVE_BUILTIN_BSWAP16) -# define hcl_bswap16(x) ((hcl_uint16_t)__builtin_bswap16((hcl_uint16_t)(x))) -# else -# define hcl_bswap16(x) ((hcl_uint16_t)(((hcl_uint16_t)(x)) << 8) | (((hcl_uint16_t)(x)) >> 8)) -# endif -#endif - -#if defined(HCL_HAVE_UINT32_T) -# if defined(HCL_HAVE_BUILTIN_BSWAP32) -# define hcl_bswap32(x) ((hcl_uint32_t)__builtin_bswap32((hcl_uint32_t)(x))) -# else -# define hcl_bswap32(x) ((hcl_uint32_t)(((((hcl_uint32_t)(x)) >> 24)) | \ - ((((hcl_uint32_t)(x)) >> 8) & ((hcl_uint32_t)0xff << 8)) | \ - ((((hcl_uint32_t)(x)) << 8) & ((hcl_uint32_t)0xff << 16)) | \ - ((((hcl_uint32_t)(x)) << 24)))) -# endif -#endif - -#if defined(HCL_HAVE_UINT64_T) -# if defined(HCL_HAVE_BUILTIN_BSWAP64) -# define hcl_bswap64(x) ((hcl_uint64_t)__builtin_bswap64((hcl_uint64_t)(x))) -# else -# define hcl_bswap64(x) ((hcl_uint64_t)(((((hcl_uint64_t)(x)) >> 56)) | \ - ((((hcl_uint64_t)(x)) >> 40) & ((hcl_uint64_t)0xff << 8)) | \ - ((((hcl_uint64_t)(x)) >> 24) & ((hcl_uint64_t)0xff << 16)) | \ - ((((hcl_uint64_t)(x)) >> 8) & ((hcl_uint64_t)0xff << 24)) | \ - ((((hcl_uint64_t)(x)) << 8) & ((hcl_uint64_t)0xff << 32)) | \ - ((((hcl_uint64_t)(x)) << 24) & ((hcl_uint64_t)0xff << 40)) | \ - ((((hcl_uint64_t)(x)) << 40) & ((hcl_uint64_t)0xff << 48)) | \ - ((((hcl_uint64_t)(x)) << 56)))) -# endif -#endif - -#if defined(HCL_HAVE_UINT128_T) -# if defined(HCL_HAVE_BUILTIN_BSWAP128) -# define hcl_bswap128(x) ((hcl_uint128_t)__builtin_bswap128((hcl_uint128_t)(x))) -# else -# define hcl_bswap128(x) ((hcl_uint128_t)(((((hcl_uint128_t)(x)) >> 120)) | \ - ((((hcl_uint128_t)(x)) >> 104) & ((hcl_uint128_t)0xff << 8)) | \ - ((((hcl_uint128_t)(x)) >> 88) & ((hcl_uint128_t)0xff << 16)) | \ - ((((hcl_uint128_t)(x)) >> 72) & ((hcl_uint128_t)0xff << 24)) | \ - ((((hcl_uint128_t)(x)) >> 56) & ((hcl_uint128_t)0xff << 32)) | \ - ((((hcl_uint128_t)(x)) >> 40) & ((hcl_uint128_t)0xff << 40)) | \ - ((((hcl_uint128_t)(x)) >> 24) & ((hcl_uint128_t)0xff << 48)) | \ - ((((hcl_uint128_t)(x)) >> 8) & ((hcl_uint128_t)0xff << 56)) | \ - ((((hcl_uint128_t)(x)) << 8) & ((hcl_uint128_t)0xff << 64)) | \ - ((((hcl_uint128_t)(x)) << 24) & ((hcl_uint128_t)0xff << 72)) | \ - ((((hcl_uint128_t)(x)) << 40) & ((hcl_uint128_t)0xff << 80)) | \ - ((((hcl_uint128_t)(x)) << 56) & ((hcl_uint128_t)0xff << 88)) | \ - ((((hcl_uint128_t)(x)) << 72) & ((hcl_uint128_t)0xff << 96)) | \ - ((((hcl_uint128_t)(x)) << 88) & ((hcl_uint128_t)0xff << 104)) | \ - ((((hcl_uint128_t)(x)) << 104) & ((hcl_uint128_t)0xff << 112)) | \ - ((((hcl_uint128_t)(x)) << 120)))) -# endif -#endif - -#endif /* HCL_HAVE_INLINE */ - - -#if defined(HCL_ENDIAN_LITTLE) - -# if defined(HCL_HAVE_UINT16_T) -# define hcl_hton16(x) hcl_bswap16(x) -# define hcl_ntoh16(x) hcl_bswap16(x) -# define hcl_htobe16(x) hcl_bswap16(x) -# define hcl_be16toh(x) hcl_bswap16(x) -# define hcl_htole16(x) ((hcl_uint16_t)(x)) -# define hcl_le16toh(x) ((hcl_uint16_t)(x)) -# endif - -# if defined(HCL_HAVE_UINT32_T) -# define hcl_hton32(x) hcl_bswap32(x) -# define hcl_ntoh32(x) hcl_bswap32(x) -# define hcl_htobe32(x) hcl_bswap32(x) -# define hcl_be32toh(x) hcl_bswap32(x) -# define hcl_htole32(x) ((hcl_uint32_t)(x)) -# define hcl_le32toh(x) ((hcl_uint32_t)(x)) -# endif - -# if defined(HCL_HAVE_UINT64_T) -# define hcl_hton64(x) hcl_bswap64(x) -# define hcl_ntoh64(x) hcl_bswap64(x) -# define hcl_htobe64(x) hcl_bswap64(x) -# define hcl_be64toh(x) hcl_bswap64(x) -# define hcl_htole64(x) ((hcl_uint64_t)(x)) -# define hcl_le64toh(x) ((hcl_uint64_t)(x)) -# endif - -# if defined(HCL_HAVE_UINT128_T) -# define hcl_hton128(x) hcl_bswap128(x) -# define hcl_ntoh128(x) hcl_bswap128(x) -# define hcl_htobe128(x) hcl_bswap128(x) -# define hcl_be128toh(x) hcl_bswap128(x) -# define hcl_htole128(x) ((hcl_uint128_t)(x)) -# define hcl_le128toh(x) ((hcl_uint128_t)(x)) -# endif - -#elif defined(HCL_ENDIAN_BIG) - -# if defined(HCL_HAVE_UINT16_T) -# define hcl_hton16(x) ((hcl_uint16_t)(x)) -# define hcl_ntoh16(x) ((hcl_uint16_t)(x)) -# define hcl_htobe16(x) ((hcl_uint16_t)(x)) -# define hcl_be16toh(x) ((hcl_uint16_t)(x)) -# define hcl_htole16(x) hcl_bswap16(x) -# define hcl_le16toh(x) hcl_bswap16(x) -# endif - -# if defined(HCL_HAVE_UINT32_T) -# define hcl_hton32(x) ((hcl_uint32_t)(x)) -# define hcl_ntoh32(x) ((hcl_uint32_t)(x)) -# define hcl_htobe32(x) ((hcl_uint32_t)(x)) -# define hcl_be32toh(x) ((hcl_uint32_t)(x)) -# define hcl_htole32(x) hcl_bswap32(x) -# define hcl_le32toh(x) hcl_bswap32(x) -# endif - -# if defined(HCL_HAVE_UINT64_T) -# define hcl_hton64(x) ((hcl_uint64_t)(x)) -# define hcl_ntoh64(x) ((hcl_uint64_t)(x)) -# define hcl_htobe64(x) ((hcl_uint64_t)(x)) -# define hcl_be64toh(x) ((hcl_uint64_t)(x)) -# define hcl_htole64(x) hcl_bswap64(x) -# define hcl_le64toh(x) hcl_bswap64(x) -# endif - -# if defined(HCL_HAVE_UINT128_T) -# define hcl_hton128(x) ((hcl_uint128_t)(x)) -# define hcl_ntoh128(x) ((hcl_uint128_t)(x)) -# define hcl_htobe128(x) ((hcl_uint128_t)(x)) -# define hcl_be128toh(x) ((hcl_uint128_t)(x)) -# define hcl_htole128(x) hcl_bswap128(x) -# define hcl_le128toh(x) hcl_bswap128(x) -# endif - -#else -# error UNKNOWN ENDIAN -#endif - -#if defined(HCL_HAVE_UINT16_T) && (HCL_SIZEOF_UINT16_T == HCL_SIZEOF_OOW_T) -# define hcl_ntohoow(x) hcl_ntoh16(x) -# define hcl_htonoow(x) hcl_hton16(x) -# define hcl_htobeoow(x) hcl_htobe116(x) -# define hcl_beoowtoh(x) hcl_be16toh(x) -# define hcl_htoleoow(x) hcl_htole16(x) -# define hcl_leoowtoh(x) hcl_le16toh(x) -#elif defined(HCL_HAVE_UINT32_T) && (HCL_SIZEOF_UINT32_T == HCL_SIZEOF_OOW_T) -# define hcl_ntohoow(x) hcl_ntoh32(x) -# define hcl_htonoow(x) hcl_hton32(x) -# define hcl_htobeoow(x) hcl_htobe32(x) -# define hcl_beoowtoh(x) hcl_be32toh(x) -# define hcl_htoleoow(x) hcl_htole32(x) -# define hcl_leoowtoh(x) hcl_le32toh(x) -#elif defined(HCL_HAVE_UINT64_T) && (HCL_SIZEOF_UINT64_T == HCL_SIZEOF_OOW_T) -# define hcl_ntohoow(x) hcl_ntoh64(x) -# define hcl_htonoow(x) hcl_hton64(x) -# define hcl_htobeoow(x) hcl_htobe64(x) -# define hcl_beoowtoh(x) hcl_be64toh(x) -# define hcl_htoleoow(x) hcl_htole64(x) -# define hcl_leoowtoh(x) hcl_le64toh(x) -#elif defined(HCL_HAVE_UINT128_T) && (HCL_SIZEOF_UINT128_T == HCL_SIZEOF_OOW_T) -# define hcl_ntohoow(x) hcl_ntoh128(x) -# define hcl_htonoow(x) hcl_hton128(x) -# define hcl_htobeoow(x) hcl_htobe128(x) -# define hcl_beoowtoh(x) hcl_be128toh(x) -# define hcl_htoleoow(x) hcl_htole128(x) -# define hcl_leoowtoh(x) hcl_le128toh(x) -#endif - - -#if defined(HCL_HAVE_UINT16_T) && (HCL_SIZEOF_UINT16_T == HCL_SIZEOF_OOHW_T) -# define hcl_ntohoohw(x) hcl_ntoh16(x) -# define hcl_htonoohw(x) hcl_hton16(x) -# define hcl_htobeoohw(x) hcl_htobe116(x) -# define hcl_beoohwtoh(x) hcl_be16toh(x) -# define hcl_htoleoohw(x) hcl_htole16(x) -# define hcl_leoohwtoh(x) hcl_le16toh(x) -#elif defined(HCL_HAVE_UINT32_T) && (HCL_SIZEOF_UINT32_T == HCL_SIZEOF_OOHW_T) -# define hcl_ntohoohw(x) hcl_ntoh32(x) -# define hcl_htonoohw(x) hcl_hton32(x) -# define hcl_htobeoohw(x) hcl_htobe32(x) -# define hcl_beoohwtoh(x) hcl_be32toh(x) -# define hcl_htoleoohw(x) hcl_htole32(x) -# define hcl_leoohwtoh(x) hcl_le32toh(x) -#elif defined(HCL_HAVE_UINT64_T) && (HCL_SIZEOF_UINT64_T == HCL_SIZEOF_OOHW_T) -# define hcl_ntohoohw(x) hcl_ntoh64(x) -# define hcl_htonoohw(x) hcl_hton64(x) -# define hcl_htobeoohw(x) hcl_htobe64(x) -# define hcl_beoohwtoh(x) hcl_be64toh(x) -# define hcl_htoleoohw(x) hcl_htole64(x) -# define hcl_leoohwtoh(x) hcl_le64toh(x) -#elif defined(HCL_HAVE_UINT128_T) && (HCL_SIZEOF_UINT128_T == HCL_SIZEOF_OOHW_T) -# define hcl_ntohoohw(x) hcl_ntoh128(x) -# define hcl_htonoohw(x) hcl_hton128(x) -# define hcl_htobeoohw(x) hcl_htobe128(x) -# define hcl_beoohwtoh(x) hcl_be128toh(x) -# define hcl_htoleoohw(x) hcl_htole128(x) -# define hcl_leoohwtoh(x) hcl_le128toh(x) -#endif - -#if defined(HCL_USE_OOW_FOR_LIW) -# define hcl_ntohliw(x) hcl_ntohoow(x) -# define hcl_htonliw(x) hcl_htonoow(x) -# define hcl_htobeliw(x) hcl_htobeoow(x) -# define hcl_beliwtoh(x) hcl_beoowtoh(x) -# define hcl_htoleliw(x) hcl_htoleoow(x) -# define hcl_leliwtoh(x) hcl_leoowtoh(x) -#else -# define hcl_ntohliw(x) hcl_ntohoohw(x) -# define hcl_htonliw(x) hcl_htonoohw(x) -# define hcl_htobeliw(x) hcl_htobeoohw(x) -# define hcl_beliwtoh(x) hcl_beoohwtoh(x) -# define hcl_htoleliw(x) hcl_htoleoohw(x) -# define hcl_leliwtoh(x) hcl_leoohwtoh(x) -#endif - -/* ========================================================================= - * BIT POSITION - * ========================================================================= */ -static HCL_INLINE int hcl_get_pos_of_msb_set_pow2 (hcl_oow_t x) -{ - /* the caller must ensure that x is power of 2. if x happens to be zero, - * the return value is undefined as each method used may give different result. */ -#if defined(HCL_HAVE_BUILTIN_CTZLL) && (HCL_SIZEOF_OOW_T == HCL_SIZEOF_LONG_LONG) - return __builtin_ctzll(x); /* count the number of trailing zeros */ -#elif defined(HCL_HAVE_BUILTIN_CTZL) && (HCL_SIZEOF_OOW_T == HCL_SIZEOF_LONG) - return __builtin_ctzl(x); /* count the number of trailing zeros */ -#elif defined(HCL_HAVE_BUILTIN_CTZ) && (HCL_SIZEOF_OOW_T == HCL_SIZEOF_INT) - return __builtin_ctz(x); /* count the number of trailing zeros */ -#elif defined(__GNUC__) && (defined(__x86_64) || defined(__amd64) || defined(__i386) || defined(i386)) - hcl_oow_t pos; - /* use the Bit Scan Forward instruction */ -#if 1 - __asm__ volatile ( - "bsf %1,%0\n\t" - : "=r"(pos) /* output */ - : "r"(x) /* input */ - ); -#else - __asm__ volatile ( - "bsf %[X],%[EXP]\n\t" - : [EXP]"=r"(pos) /* output */ - : [X]"r"(x) /* input */ - ); -#endif - return (int)pos; -#elif defined(__GNUC__) && defined(__aarch64__) || (defined(__arm__) && (defined(__ARM_ARCH) && (__ARM_ARCH >= 5))) - hcl_oow_t n; - /* CLZ is available in ARMv5T and above. there is no instruction to - * count trailing zeros or something similar. using RBIT with CLZ - * would be good in ARMv6T2 and above to avoid further calculation - * afte CLZ */ - __asm__ volatile ( - "clz %0,%1\n\t" - : "=r"(n) /* output */ - : "r"(x) /* input */ - ); - return (int)(HCL_OOW_BITS - n - 1); - /* TODO: PPC - use cntlz, cntlzw, cntlzd, SPARC - use lzcnt, MIPS clz */ -#else - int pos = 0; - while (x >>= 1) pos++; - return pos; -#endif -} - -static HCL_INLINE int hcl_get_pos_of_msb_set (hcl_oow_t x) -{ - /* x doesn't have to be power of 2. if x is zero, the result is undefined */ -#if defined(HCL_HAVE_BUILTIN_CLZLL) && (HCL_SIZEOF_OOW_T == HCL_SIZEOF_LONG_LONG) - return HCL_OOW_BITS - __builtin_clzll(x) - 1; /* count the number of leading zeros */ -#elif defined(HCL_HAVE_BUILTIN_CLZL) && (HCL_SIZEOF_OOW_T == HCL_SIZEOF_LONG) - return HCL_OOW_BITS - __builtin_clzl(x) - 1; /* count the number of leading zeros */ -#elif defined(HCL_HAVE_BUILTIN_CLZ) && (HCL_SIZEOF_OOW_T == HCL_SIZEOF_INT) - return HCL_OOW_BITS - __builtin_clz(x) - 1; /* count the number of leading zeros */ -#elif defined(__GNUC__) && (defined(__x86_64) || defined(__amd64) || defined(__i386) || defined(i386)) - /* bit scan reverse. not all x86 CPUs have LZCNT. */ - hcl_oow_t pos; - __asm__ volatile ( - "bsr %1,%0\n\t" - : "=r"(pos) /* output */ - : "r"(x) /* input */ - ); - return (int)pos; -#elif defined(__GNUC__) && defined(__aarch64__) || (defined(__arm__) && (defined(__ARM_ARCH) && (__ARM_ARCH >= 5))) - hcl_oow_t n; - __asm__ volatile ( - "clz %0,%1\n\t" - : "=r"(n) /* output */ - : "r"(x) /* input */ - ); - return (int)(HCL_OOW_BITS - n - 1); - /* TODO: PPC - use cntlz, cntlzw, cntlzd, SPARC - use lzcnt, MIPS clz */ -#else - int pos = 0; - while (x >>= 1) pos++; - return pos; -#endif -} -#if defined(__cplusplus) -} -#endif - - -#endif diff --git a/lib/hcl-x.h b/lib/hcl-x.h deleted file mode 100644 index 050b405..0000000 --- a/lib/hcl-x.h +++ /dev/null @@ -1,634 +0,0 @@ -/* - Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _HCL_X_T_ -#define _HCL_X_T_ - -#include -#include - -enum hcl_xpkt_type_t -{ - /* the actual type field is 4 bits long. up to 16 types are possible */ - - HCL_XPKT_CODE, /* [C]->[S] input code */ - HCL_XPKT_EXECUTE, /* [C]->[S] command to execute the code input */ - - HCL_XPKT_ERROR, /* [S]->[C] error indicator */ - HCL_XPKT_RETVAL, /* [S]->[C] return value */ - - HCL_XPKT_STDIN, /* [C]->[S] */ - HCL_XPKT_STDOUT, /* [S]->[C] output to stdout */ - HCL_XPKT_STDERR, /* [S]->[C] output to stderr or output data related to error */ - - HCL_XPKT_INFORM, /* [S]->[C], [C]->[S] */ - - /*TODO: define HCL_XPKT_CONTROL and make LIST_WORKS AND KILL_WORKER sub-commands of CONTORL */ - HCL_XPKT_LIST_WORKERS, /* [C]->[S] */ - HCL_XPKT_KILL_WORKER, /* [C]->[S] */ - - HCL_XPKT_DISCONNECT /* [C]->[S], [S]->[C] */ -}; -typedef enum hcl_xpkt_type_t hcl_xpkt_type_t; - -#include "hcl-pac1.h" -struct hcl_xpkt_hdr_t -{ - hcl_uint8_t id; - hcl_uint8_t type; /* lower 4 bits represent the actual type. - the upper 4 bits are part of the length extending the length to 12 bits */ - hcl_uint8_t len; -}; -typedef struct hcl_xpkt_hdr_t hcl_xpkt_hdr_t; -#include "hcl-upac.h" - -#define HCL_XPKT_HDR_LEN (HCL_SIZEOF(hcl_xpkt_hdr_t)) - -/* the actual length field is 12 bits long. so the maximum payload length allowed per packet is 2^12 - 1 */ -#define HCL_XPKT_MAX_PLD_LEN (4095) - -/* ---------------------------------------------------------------------- */ - -typedef struct hcl_xproto_t hcl_xproto_t; - -typedef int (*hcl_xproto_cb_on_packet) ( - hcl_xproto_t* proto, - hcl_xpkt_type_t type, - const void* data, - hcl_oow_t len -); - -struct hcl_xproto_cb_t -{ - hcl_xproto_cb_on_packet on_packet; -}; -typedef struct hcl_xproto_cb_t hcl_xproto_cb_t; - -/* ---------------------------------------------------------------------- */ - -/* forward declaration to skip including just for struct iovec */ -typedef struct iovec hcl_iovec_t; - -/* ---------------------------------------------------------------------- */ - -typedef struct hcl_server_proto_t hcl_server_proto_t; -typedef struct hcl_server_worker_t hcl_server_worker_t; -typedef struct hcl_server_t hcl_server_t; - -enum hcl_server_option_t -{ - HCL_SERVER_TRAIT, - HCL_SERVER_LOG_MASK, - HCL_SERVER_WORKER_MAX_COUNT, - HCL_SERVER_WORKER_STACK_SIZE, - HCL_SERVER_WORKER_IDLE_TIMEOUT, - HCL_SERVER_ACTOR_HEAP_SIZE, - HCL_SERVER_ACTOR_MAX_RUNTIME, - HCL_SERVER_SCRIPT_INCLUDE_PATH, - HCL_SERVER_MODULE_INCTX -}; -typedef enum hcl_server_option_t hcl_server_option_t; - -enum hcl_server_trait_t -{ -#if defined(HCL_BUILD_DEBUG) - HCL_SERVER_TRAIT_DEBUG_GC = (1 << 0), - HCL_SERVER_TRAIT_DEBUG_BIGINT = (1 << 1) -#endif -}; -typedef enum hcl_server_trait_t hcl_server_trait_t; - -#define HCL_SERVER_WID_INVALID ((hcl_oow_t)-1) -#define HCL_SERVER_WID_MAX (HCL_SERVER_WID_INVALID - 1) - -typedef void (*hcl_server_log_write_t) ( - hcl_server_t* server, - hcl_oow_t wid, - hcl_bitmask_t mask, - const hcl_ooch_t* msg, - hcl_oow_t len -); - -struct hcl_server_prim_t -{ - hcl_server_log_write_t log_write; -}; -typedef struct hcl_server_prim_t hcl_server_prim_t; - - -/* ---------------------------------------------------------------------- */ - - -typedef struct hcl_client_t hcl_client_t; - -enum hcl_client_option_t -{ - HCL_CLIENT_TRAIT, - HCL_CLIENT_LOG_MASK, -}; -typedef enum hcl_client_option_t hcl_client_option_t; - -enum hcl_client_trait_t -{ - /* no trait defined at this moment. XXXX is just a placeholder */ - HCL_CLIENT_XXXX = (1 << 0) -}; -typedef enum hcl_client_trait_t hcl_client_trait_t; - - -typedef void (*hcl_client_log_write_t) ( - hcl_client_t* client, - hcl_bitmask_t mask, - const hcl_ooch_t* msg, - hcl_oow_t len -); - -typedef int (*hcl_client_on_packet_t) ( - hcl_client_t* client, - hcl_xpkt_type_t type, - const void* data, - hcl_oow_t len -); - -struct hcl_client_prim_t -{ - hcl_client_log_write_t log_write; - hcl_client_on_packet_t on_packet; -}; -typedef struct hcl_client_prim_t hcl_client_prim_t; - - -/* ---------------------------------------------------------------------- */ - -#if (HCL_SIZEOF_SOCKLEN_T == 1) - #if defined(HCL_SOCKLEN_T_IS_SIGNED) - typedef hcl_int8_t hcl_scklen_t; - #else - typedef hcl_uint8_t hcl_scklen_t; - #endif -#elif (HCL_SIZEOF_SOCKLEN_T == 2) - #if defined(HCL_SOCKLEN_T_IS_SIGNED) - typedef hcl_int16_t hcl_scklen_t; - #else - typedef hcl_uint16_t hcl_scklen_t; - #endif -#elif (HCL_SIZEOF_SOCKLEN_T == 4) - #if defined(HCL_SOCKLEN_T_IS_SIGNED) - typedef hcl_int32_t hcl_scklen_t; - #else - typedef hcl_uint32_t hcl_scklen_t; - #endif -#elif (HCL_SIZEOF_SOCKLEN_T == 8) - #if defined(HCL_SOCKLEN_T_IS_SIGNED) - typedef hcl_int64_t hcl_scklen_t; - #else - typedef hcl_uint64_t hcl_scklen_t; - #endif -#else - #undef HCL_SIZEOF_SOCKLEN_T - #define HCL_SIZEOF_SOCKLEN_T HCL_SIZEOF_INT - #define HCL_SOCKLEN_T_IS_SIGNED - typedef int hcl_scklen_t; -#endif - -struct hcl_sckaddr_t -{ -#define HCL_SCKADDR_DATA_SIZE 0 - -#if (HCL_SIZEOF_STRUCT_SOCKADDR_IN > HCL_SCKADDR_DATA_SIZE) - #undef HCL_SCKADDR_DATA_SIZE - #define HCL_SCKADDR_DATA_SIZE HCL_SIZEOF_STRUCT_SOCKADDR_IN -#endif -#if (HCL_SIZEOF_STRUCT_SOCKADDR_IN6 > HCL_SCKADDR_DATA_SIZE) - #undef HCL_SCKADDR_DATA_SIZE - #define HCL_SCKADDR_DATA_SIZE HCL_SIZEOF_STRUCT_SOCKADDR_IN6 -#endif -#if (HCL_SIZEOF_STRUCT_SOCKADDR_UN > HCL_SCKADDR_DATA_SIZE) - #undef HCL_SCKADDR_DATA_SIZE - #define HCL_SCKADDR_DATA_SIZE HCL_SIZEOF_STRUCT_SOCKADDR_UN -#endif -#if (HCL_SIZEOF_STRUCT_SOCKADDR_LL > HCL_SCKADDR_DATA_SIZE) - #undef HCL_SCKADDR_DATA_SIZE - #define HCL_SCKADDR_DATA_SIZE HCL_SIZEOF_STRUCT_SOCKADDR_LL -#endif - -#if (HCL_SCKADDR_DATA_SIZE == 0) - #undef HCL_SCKADDR_DATA_SIZE - #define HCL_SCKADDR_DATA_SIZE 64 -#endif - hcl_uint8_t storage[HCL_SCKADDR_DATA_SIZE]; -}; -typedef struct hcl_sckaddr_t hcl_sckaddr_t; - -/* ---------------------------------------------------------------------- */ - -#if defined(__cplusplus) -extern "C" { -#endif - -HCL_EXPORT hcl_server_t* hcl_server_open ( - hcl_mmgr_t* mmgr, - hcl_oow_t xtnsize, - hcl_server_prim_t* prim, - hcl_errnum_t* errnum -); - -HCL_EXPORT void hcl_server_close ( - hcl_server_t* server -); - -HCL_EXPORT int hcl_server_start ( - hcl_server_t* server, - const hcl_bch_t* addrs -); - -HCL_EXPORT void hcl_server_stop ( - hcl_server_t* server -); - -HCL_EXPORT int hcl_server_setoption ( - hcl_server_t* server, - hcl_server_option_t id, - const void* value -); - -HCL_EXPORT int hcl_server_getoption ( - hcl_server_t* server, - hcl_server_option_t id, - void* value -); - -HCL_EXPORT void* hcl_server_getxtn ( - hcl_server_t* server -); - -HCL_EXPORT hcl_mmgr_t* hcl_server_getmmgr ( - hcl_server_t* server -); - - -HCL_EXPORT hcl_cmgr_t* hcl_server_getcmgr ( - hcl_server_t* server -); - -HCL_EXPORT void hcl_server_setcmgr ( - hcl_server_t* server, - hcl_cmgr_t* cmgr -); - -HCL_EXPORT hcl_errnum_t hcl_server_geterrnum ( - hcl_server_t* server -); - -HCL_EXPORT const hcl_ooch_t* hcl_server_geterrstr ( - hcl_server_t* server -); - -HCL_EXPORT const hcl_ooch_t* hcl_server_geterrmsg ( - hcl_server_t* server -); - -HCL_EXPORT void hcl_server_seterrnum ( - hcl_server_t* server, - hcl_errnum_t errnum -); - -HCL_EXPORT void hcl_server_seterrbfmt ( - hcl_server_t* server, - hcl_errnum_t errnum, - const hcl_bch_t* fmt, - ... -); - -HCL_EXPORT void hcl_server_seterrufmt ( - hcl_server_t* server, - hcl_errnum_t errnum, - const hcl_uch_t* fmt, - ... -); - -HCL_EXPORT void hcl_server_logbfmt ( - hcl_server_t* server, - hcl_bitmask_t mask, - const hcl_bch_t* fmt, - ... -); - -HCL_EXPORT void hcl_server_logufmt ( - hcl_server_t* server, - hcl_bitmask_t mask, - const hcl_uch_t* fmt, - ... -); - - -HCL_EXPORT void* hcl_server_allocmem ( - hcl_server_t* server, - hcl_oow_t size -); - -HCL_EXPORT void* hcl_server_callocmem ( - hcl_server_t* server, - hcl_oow_t size -); - -HCL_EXPORT void* hcl_server_reallocmem ( - hcl_server_t* server, - void* ptr, - hcl_oow_t size -); - - -HCL_EXPORT void hcl_server_freemem ( - hcl_server_t* server, - void* ptr -); - - -/* ---------------------------------------------------------------------- */ - -HCL_EXPORT hcl_client_t* hcl_client_open ( - hcl_mmgr_t* mmgr, - hcl_oow_t xtnsize, - hcl_client_prim_t* prim, - hcl_errnum_t* errnum -); - -HCL_EXPORT void hcl_client_close ( - hcl_client_t* client -); - -HCL_EXPORT int hcl_client_start ( - hcl_client_t* client, - const char* ipaddr, - int shut_wr_after_req -); - -HCL_EXPORT void hcl_client_stop ( - hcl_client_t* client -); - -HCL_EXPORT int hcl_client_setoption ( - hcl_client_t* client, - hcl_client_option_t id, - const void* value -); - -HCL_EXPORT int hcl_client_getoption ( - hcl_client_t* client, - hcl_client_option_t id, - void* value -); - - -HCL_EXPORT void* hcl_client_getxtn ( - hcl_client_t* client -); - -HCL_EXPORT hcl_mmgr_t* hcl_client_getmmgr ( - hcl_client_t* client -); - -HCL_EXPORT hcl_cmgr_t* hcl_client_getcmgr ( - hcl_client_t* client -); - -HCL_EXPORT void hcl_client_setcmgr ( - hcl_client_t* client, - hcl_cmgr_t* cmgr -); - - -HCL_EXPORT hcl_errnum_t hcl_client_geterrnum ( - hcl_client_t* client -); - -HCL_EXPORT const hcl_ooch_t* hcl_client_geterrstr ( - hcl_client_t* client -); - -HCL_EXPORT const hcl_ooch_t* hcl_client_geterrmsg ( - hcl_client_t* client -); - -HCL_EXPORT const hcl_bch_t* hcl_client_geterrbmsg ( - hcl_client_t* client -); - -HCL_EXPORT const hcl_uch_t* hcl_client_geterrumsg ( - hcl_client_t* client -); - - -HCL_EXPORT void hcl_client_seterrnum ( - hcl_client_t* client, - hcl_errnum_t errnum -); - -HCL_EXPORT void hcl_client_seterrbfmt ( - hcl_client_t* client, - hcl_errnum_t errnum, - const hcl_bch_t* fmt, - ... -); - -HCL_EXPORT void hcl_client_seterrufmt ( - hcl_client_t* client, - hcl_errnum_t errnum, - const hcl_uch_t* fmt, - ... -); - -HCL_EXPORT void hcl_client_logbfmt ( - hcl_client_t* client, - hcl_bitmask_t mask, - const hcl_bch_t* fmt, - ... -); - -HCL_EXPORT void hcl_client_logufmt ( - hcl_client_t* client, - hcl_bitmask_t mask, - const hcl_uch_t* fmt, - ... -); - -HCL_EXPORT void* hcl_client_allocmem ( - hcl_client_t* client, - hcl_oow_t size -); - -HCL_EXPORT void* hcl_client_callocmem ( - hcl_client_t* client, - hcl_oow_t size -); - -HCL_EXPORT void* hcl_client_reallocmem ( - hcl_client_t* client, - void* ptr, - hcl_oow_t size -); - - -HCL_EXPORT void hcl_client_freemem ( - hcl_client_t* client, - void* ptr -); - - -/* ---------------------------------------------------------------------- */ - -HCL_EXPORT hcl_xproto_t* hcl_xproto_open ( - hcl_mmgr_t* mmgr, - hcl_xproto_cb_t* cb, - hcl_oow_t xtnsize -); - -HCL_EXPORT void hcl_xproto_close ( - hcl_xproto_t* proto -); - -HCL_EXPORT void* hcl_xproto_getxtn ( - hcl_xproto_t* proto -); - -HCL_EXPORT hcl_uint8_t* hcl_xproto_getbuf ( - hcl_xproto_t* proto, - hcl_oow_t* capa -); - -HCL_EXPORT int hcl_xproto_geteof ( - hcl_xproto_t* proto -); - -HCL_EXPORT void hcl_xproto_seteof ( - hcl_xproto_t* proto, - int v -); - -HCL_EXPORT void hcl_xproto_advbuf ( - hcl_xproto_t* proto, - hcl_oow_t inc -); - -HCL_EXPORT int hcl_xproto_ready ( - hcl_xproto_t* proto -); - -HCL_EXPORT int hcl_xproto_process ( - hcl_xproto_t* proto -); - -/* ---------------------------------------------------------------------- */ - -HCL_EXPORT int hcl_sys_send ( - int sck, - const void* data, - hcl_oow_t* size -); - -HCL_EXPORT int hcl_sys_send_iov ( - int sck, - hcl_iovec_t* iov, /* note this is not read-only and can change */ - int count -); - -HCL_EXPORT int hcl_sys_open_pipes ( - int pfd[2], - int nonblock -); - -HCL_EXPORT void hcl_sys_close_pipes ( - int pfd[2] -); - -HCL_EXPORT int hcl_sys_set_nonblock ( - int fd, - int v -); - -HCL_EXPORT int hcl_sys_set_cloexec ( - int fd, - int v -); - -HCL_EXPORT int hcl_sys_is_errno_wb ( - int no -); - -/* ---------------------------------------------------------------------- */ - -HCL_EXPORT int hcl_ucharstosckaddr ( - hcl_t* hcl, - const hcl_uch_t* str, - hcl_oow_t len, - hcl_sckaddr_t* sckaddr, - hcl_scklen_t* scklen -); - -HCL_EXPORT int hcl_bcharstosckaddr ( - hcl_t* hcl, - const hcl_bch_t* str, - hcl_oow_t len, - hcl_sckaddr_t* sckaddr, - hcl_scklen_t* scklen -); - -#if defined(HCL_HAVE_INLINE) -static HCL_INLINE int hcl_uchars_to_sckaddr (const hcl_uch_t* str, hcl_oow_t len, hcl_sckaddr_t* sckaddr, hcl_scklen_t* scklen) -{ - return hcl_ucharstosckaddr(HCL_NULL, str, len, sckaddr, scklen); -} -static HCL_INLINE int hcl_bchars_to_sckaddr (const hcl_bch_t* str, hcl_oow_t len, hcl_sckaddr_t* sckaddr, hcl_scklen_t* scklen) -{ - return hcl_bcharstosckaddr(HCL_NULL, str, len, sckaddr, scklen); -} -#else -#define hcl_uchars_to_sckaddr(str,len,sckaddr,scklen) hcl_ucharstosckaddr(HCL_NULL,str,len,sckaddr,scklen) -#define hcl_bchars_to_sckaddr(str,len,sckaddr,scklen) hcl_bcharstosckaddr(HCL_NULL,str,len,sckaddr,scklen) -#endif - -#if defined(HCL_OOCH_IS_UCH) -# define hcl_oocharstosckaddr hcl_ucharstosckaddr -# define hcl_oochars_to_sckaddr hcl_uchars_to_sckaddr -#else -# define hcl_oocharstosckaddr hcl_bcharstosckaddr -# define hcl_oochars_to_sckaddr hcl_bchars_to_sckaddr -#endif - -/** - * The hcl_get_sckaddr_info() function returns the socket family. - * if \a scklen is not #HCL_NULL, it also sets the actual address length - * in the memory pointed to by it. - */ -HCL_EXPORT int hcl_get_sckaddr_info ( - const hcl_sckaddr_t* sckaddr, - hcl_scklen_t* scklen -); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/lib/hcl-xma.h b/lib/hcl-xma.h deleted file mode 100644 index 0ddbe4c..0000000 --- a/lib/hcl-xma.h +++ /dev/null @@ -1,247 +0,0 @@ -/* - Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _HCL_XMA_H_ -#define _HCL_XMA_H_ - -/** @file - * This file defines an extravagant memory allocator. Why? It may be so. - * The memory allocator allows you to maintain memory blocks from a - * larger memory chunk allocated with an outer memory allocator. - * Typically, an outer memory allocator is a standard memory allocator - * like malloc(). You can isolate memory blocks into a particular chunk. - * - * See the example below. Note it omits error handling. - * - * @code - * #include - * #include - * #include - * void dumper (void* ctx, const char* fmt, ...) - * { - * va_list ap; - * va_start (ap, fmt); - * vfprintf (fmt, ap); - * va_end (ap); - * } - * int main () - * { - * hcl_xma_t* xma; - * void* ptr1, * ptr2; - * - * // create a new memory allocator obtaining a 100K byte zone - * // with the default memory allocator - * xma = hcl_xma_open(HCL_NULL, 0, 100000L); - * - * ptr1 = hcl_xma_alloc(xma, 5000); // allocate a 5K block from the zone - * ptr2 = hcl_xma_alloc(xma, 1000); // allocate a 1K block from the zone - * ptr1 = hcl_xma_realloc(xma, ptr1, 6000); // resize the 5K block to 6K. - * - * hcl_xma_dump (xma, dumper, HCL_NULL); // dump memory blocks - * - * // the following two lines are not actually needed as the allocator - * // is closed after them. - * hcl_xma_free (xma, ptr2); // dispose of the 1K block - * hcl_xma_free (xma, ptr1); // dispose of the 6K block - * - * hcl_xma_close (xma); // destroy the memory allocator - * return 0; - * } - * @endcode - */ -#include - -#define HCL_XMA_ENABLE_STAT - -/** @struct hcl_xma_t - * The hcl_xma_t type defines a simple memory allocator over a memory zone. - * It can obtain a relatively large zone of memory and manage it. - */ -typedef struct hcl_xma_t hcl_xma_t; - -/** - * The hcl_xma_fblk_t type defines a memory block allocated. - */ -typedef struct hcl_xma_fblk_t hcl_xma_fblk_t; -typedef struct hcl_xma_mblk_t hcl_xma_mblk_t; - -#define HCL_XMA_FIXED (32) -#define HCL_XMA_SIZE_BITS ((HCL_SIZEOF_OOW_T*8)-1) - -struct hcl_xma_t -{ - hcl_mmgr_t* _mmgr; - - hcl_uint8_t* start; /* zone beginning */ - hcl_uint8_t* end; /* zone end */ - int internal; - - /** pointer array to free memory blocks */ - hcl_xma_fblk_t* xfree[HCL_XMA_FIXED + HCL_XMA_SIZE_BITS + 1]; - - /** pre-computed value for fast xfree index calculation */ - hcl_oow_t bdec; - -#if defined(HCL_XMA_ENABLE_STAT) - struct - { - hcl_oow_t total; - hcl_oow_t alloc; /* allocated size */ - hcl_oow_t avail; /* available size */ - hcl_oow_t nused; /* nubmer of used blocks */ - hcl_oow_t nfree; /* number of free blocks */ - hcl_oow_t alloc_hwmark; /* high watermark - highest total memory ever allocated */ - hcl_oow_t nallocops; /* number of alloc operations */ - hcl_oow_t nallocgoodops; /* number of successful alloc operations */ - hcl_oow_t nallocbadops; /* number of failed alloc operations */ - hcl_oow_t nreallocops; /* number of realloc operations */ - hcl_oow_t nreallocgoodops; /* number of good realloc operations */ - hcl_oow_t nreallocbadops; /* number of failed realloc operations - could fall back to normal alloc*/ - hcl_oow_t nfreeops; /* number of free operations */ - } stat; -#endif -}; - -/** - * The hcl_xma_dumper_t type defines a printf-like output function - * for hcl_xma_dump(). - */ -typedef void (*hcl_xma_dumper_t) ( - void* ctx, - const hcl_bch_t* fmt, - ... -); - -#if defined(__cplusplus) -extern "C" { -#endif - -/** - * The hcl_xma_open() function creates a memory allocator. It obtains a memory - * zone of the @a zonesize bytes with the memory manager @a mmgr. It also makes - * available the extension area of the @a xtnsize bytes that you can get the - * pointer to with hcl_xma_getxtn(). - * - * @return pointer to a memory allocator on success, #HCL_NULL on failure - */ -HCL_EXPORT hcl_xma_t* hcl_xma_open ( - hcl_mmgr_t* mmgr, /**< memory manager */ - hcl_oow_t xtnsize, /**< extension size in bytes */ - void* zoneptr, - hcl_oow_t zonesize /**< zone size in bytes */ -); - -/** - * The hcl_xma_close() function destroys a memory allocator. It also frees - * the memory zone obtained, which invalidates the memory blocks within - * the zone. Call this function to destroy a memory allocator created with - * hcl_xma_open(). - */ -HCL_EXPORT void hcl_xma_close ( - hcl_xma_t* xma /**< memory allocator */ -); - -#if defined(HCL_HAVE_INLINE) -static HCL_INLINE hcl_mmgr_t* hcl_xma_getmmgr (hcl_xma_t* xma) { return xma->_mmgr; } -#else -# define hcl_xma_getmmgr(xma) (((hcl_xma_t*)(xma))->_mmgr) -#endif - -#if defined(HCL_HAVE_INLINE) -static HCL_INLINE void* hcl_xma_getxtn (hcl_xma_t* xma) { return (void*)(xma + 1); } -#else -#define hcl_xma_getxtn(xma) ((void*)((hcl_xma_t*)(xma) + 1)) -#endif - -/** - * The hcl_xma_init() initializes a memory allocator. If you have the hcl_xma_t - * structure statically declared or already allocated, you may pass the pointer - * to this function instead of calling hcl_xma_open(). It obtains a memory zone - * of @a zonesize bytes with the memory manager @a mmgr. Unlike hcl_xma_open(), - * it does not accept the extension size, thus not creating an extention area. - * @return 0 on success, -1 on failure - */ -HCL_EXPORT int hcl_xma_init ( - hcl_xma_t* xma, /**< memory allocator */ - hcl_mmgr_t* mmgr, /**< memory manager */ - void* zoneptr, /**< pointer to memory zone. if #HCL_NULL, a zone is auto-created */ - hcl_oow_t zonesize /**< zone size in bytes */ -); - -/** - * The hcl_xma_fini() function finalizes a memory allocator. Call this - * function to finalize a memory allocator initialized with hcl_xma_init(). - */ -HCL_EXPORT void hcl_xma_fini ( - hcl_xma_t* xma /**< memory allocator */ -); - -/** - * The hcl_xma_alloc() function allocates @a size bytes. - * @return pointer to a memory block on success, #HCL_NULL on failure - */ -HCL_EXPORT void* hcl_xma_alloc ( - hcl_xma_t* xma, /**< memory allocator */ - hcl_oow_t size /**< size in bytes */ -); - -HCL_EXPORT void* hcl_xma_calloc ( - hcl_xma_t* xma, - hcl_oow_t size -); - -/** - * The hcl_xma_alloc() function resizes the memory block @a b to @a size bytes. - * @return pointer to a resized memory block on success, #HCL_NULL on failure - */ -HCL_EXPORT void* hcl_xma_realloc ( - hcl_xma_t* xma, /**< memory allocator */ - void* b, /**< memory block */ - hcl_oow_t size /**< new size in bytes */ -); - -/** - * The hcl_xma_alloc() function frees the memory block @a b. - */ -HCL_EXPORT void hcl_xma_free ( - hcl_xma_t* xma, /**< memory allocator */ - void* b /**< memory block */ -); - -/** - * The hcl_xma_dump() function dumps the contents of the memory zone - * with the output function @a dumper provided. The debug build shows - * more statistical counters. - */ -HCL_EXPORT void hcl_xma_dump ( - hcl_xma_t* xma, /**< memory allocator */ - hcl_xma_dumper_t dumper, /**< output function */ - void* ctx /**< first parameter to output function */ -); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/lib/hcl.c b/lib/hcl.c deleted file mode 100644 index 9c02995..0000000 --- a/lib/hcl.c +++ /dev/null @@ -1,1019 +0,0 @@ -/* - Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "hcl-prv.h" - -hcl_t* hcl_open (hcl_mmgr_t* mmgr, hcl_oow_t xtnsize, const hcl_vmprim_t* vmprim, hcl_errnum_t* errnum) -{ - hcl_t* hcl; - - /* if this assertion fails, correct the type definition in hcl.h */ - HCL_ASSERT(hcl, HCL_SIZEOF(hcl_oow_t) == HCL_SIZEOF(hcl_oop_t)); - - hcl = (hcl_t*)HCL_MMGR_ALLOC(mmgr, HCL_SIZEOF(*hcl) + xtnsize); - if (hcl) - { - if (hcl_init(hcl, mmgr, vmprim) <= -1) - { - if (errnum) *errnum = hcl->errnum; - HCL_MMGR_FREE (mmgr, hcl); - hcl = HCL_NULL; - } - else HCL_MEMSET (hcl + 1, 0, xtnsize); - } - else if (errnum) *errnum = HCL_ESYSMEM; - - return hcl; -} - -void hcl_close (hcl_t* hcl) -{ - hcl_fini (hcl); - HCL_MMGR_FREE (HCL_MMGR(hcl), hcl); -} - -void* hcl_getxtn (hcl_t* hcl) -{ - return (void*)((hcl_uint8_t*)hcl + hcl->_instsize); -} - -hcl_mmgr_t* hcl_getmmgr (hcl_t* hcl) -{ - return hcl->_mmgr; -} - -hcl_cmgr_t* hcl_getcmgr (hcl_t* hcl) -{ - return hcl->_cmgr; -} -void hcl_setcmgr (hcl_t* hcl, hcl_cmgr_t* cmgr) -{ - hcl->_cmgr = cmgr; -} - -static void fill_bigint_tables (hcl_t* hcl) -{ - int radix, safe_ndigits; - hcl_oow_t ub, w; - hcl_oow_t multiplier; - - for (radix = 2; radix <= 36; radix++) - { - w = 0; - ub = (hcl_oow_t)HCL_TYPE_MAX(hcl_liw_t) / radix - (radix - 1); - multiplier = 1; - safe_ndigits = 0; - - while (w <= ub) - { - w = w * radix + (radix - 1); - multiplier *= radix; - safe_ndigits++; - } - - /* safe_ndigits contains the number of digits that never - * cause overflow when computed normally with a native type. */ - hcl->bigint[radix].safe_ndigits = safe_ndigits; - hcl->bigint[radix].multiplier = multiplier; - } -} - -static void* alloc_heap (hcl_t* hcl, hcl_oow_t* size) -{ - return hcl_allocmem(hcl, *size); -} - -static void free_heap (hcl_t* hcl, void* ptr) -{ - hcl_freemem(hcl, ptr); -} - -int hcl_init (hcl_t* hcl, hcl_mmgr_t* mmgr, const hcl_vmprim_t* vmprim) -{ - int modtab_inited = 0; - int n; - - if (!vmprim->syserrstrb && !vmprim->syserrstru) - { - hcl_seterrnum(hcl, HCL_EINVAL); - return -1; - } - -#if !defined(HCL_BUILD_RELEASE) - if (!vmprim->assertfail) - { - hcl_seterrnum(hcl, HCL_EINVAL); - return -1; - } -#endif - - HCL_MEMSET(hcl, 0, HCL_SIZEOF(*hcl)); - hcl->_instsize = HCL_SIZEOF(*hcl); - hcl->_mmgr = mmgr; - hcl->_cmgr = hcl_get_utf8_cmgr(); - hcl->vmprim = *vmprim; - if (!hcl->vmprim.alloc_heap) hcl->vmprim.alloc_heap = alloc_heap; - if (!hcl->vmprim.free_heap) hcl->vmprim.free_heap = free_heap; - - /*hcl->option.log_mask = HCL_LOG_ALL_LEVELS | HCL_LOG_ALL_TYPES;*/ - hcl->option.log_mask = (hcl_bitmask_t)0; /* log nothing by default */ - hcl->option.log_maxcapa = HCL_DFL_LOG_MAXCAPA; - hcl->option.dfl_symtab_size = HCL_DFL_SYMTAB_SIZE; - hcl->option.dfl_sysdic_size = HCL_DFL_SYSDIC_SIZE; - hcl->option.dfl_procstk_size = HCL_DFL_PROCSTK_SIZE; -#if defined(HCL_BUILD_DEBUG) - hcl->option.karatsuba_cutoff = HCL_KARATSUBA_CUTOFF; /* this won't be used when NDEBUG is set */ -#endif - - hcl->log.capa = HCL_ALIGN_POW2(1, HCL_LOG_CAPA_ALIGN); /* TODO: is this a good initial size? */ - /* alloate the log buffer in advance though it may get reallocated - * in put_oocs and put_ooch in logfmt.c. this is to let the logging - * routine still function despite some side-effects when - * reallocation fails */ - /* +1 required for consistency with put_oocs and put_ooch in logfmt.c */ - hcl->log.ptr = (hcl_ooch_t*)hcl_allocmem(hcl, (hcl->log.capa + 1) * HCL_SIZEOF(*hcl->log.ptr)); - if (HCL_UNLIKELY(!hcl->log.ptr)) goto oops; - - hcl->gci.stack.capa = HCL_ALIGN_POW2(1, 1024); /* TODO: is this a good initial size? */ - hcl->gci.stack.ptr = (hcl_oop_t*)hcl_allocmem(hcl, (hcl->gci.stack.capa + 1) * HCL_SIZEOF(*hcl->gci.stack.ptr)); - if (HCL_UNLIKELY(!hcl->gci.stack.ptr)) goto oops; - - n = hcl_rbt_init(&hcl->modtab, hcl, HCL_SIZEOF(hcl_ooch_t), 1); - if (HCL_UNLIKELY(n <= -1)) goto oops; - modtab_inited = 1; - hcl_rbt_setstyle(&hcl->modtab, hcl_get_rbt_style(HCL_RBT_STYLE_INLINE_COPIERS)); - - fill_bigint_tables (hcl); - - hcl->tagged_brands[HCL_OOP_TAG_SMOOI] = HCL_BRAND_SMOOI; - hcl->tagged_brands[HCL_OOP_TAG_SMPTR] = HCL_BRAND_SMPTR; - hcl->tagged_brands[HCL_OOP_TAG_CHAR] = HCL_BRAND_CHARACTER; - hcl->tagged_brands[HCL_OOP_TAG_ERROR] = HCL_BRAND_ERROR; - - hcl->tagged_classes[HCL_OOP_TAG_SMOOI] = &hcl->c_small_integer; - hcl->tagged_classes[HCL_OOP_TAG_SMPTR] = &hcl->c_small_pointer; - hcl->tagged_classes[HCL_OOP_TAG_CHAR] = &hcl->c_character; - hcl->tagged_classes[HCL_OOP_TAG_ERROR] = &hcl->c_error; - - hcl->proc_map_free_first = -1; - hcl->proc_map_free_last = -1; - - /* hcl_execute() resets 'sp' to -1 when it initializes the initial context. - * set it to -1 here in case hcl_gc() is called before a call to hcl_execute() */ - hcl->sp = -1; - hcl->ip = 0; - - if (hcl->vmprim.dl_startup) hcl->vmprim.dl_startup (hcl); - return 0; - -oops: - if (modtab_inited) hcl_rbt_fini(&hcl->modtab); - if (hcl->gci.stack.ptr) - { - hcl_freemem(hcl, hcl->gci.stack.ptr); - hcl->gci.stack.capa = 0; - } - if (hcl->log.ptr) hcl_freemem(hcl, hcl->log.ptr); - hcl->log.capa = 0; - return -1; -} - -static hcl_rbt_walk_t unload_module (hcl_rbt_t* rbt, hcl_rbt_pair_t* pair, void* ctx) -{ - hcl_t* hcl = (hcl_t*)ctx; - hcl_mod_data_t* mdp; - - mdp = (hcl_mod_data_t*)HCL_RBT_VPTR(pair); - HCL_ASSERT(hcl, mdp != HCL_NULL); - - mdp->pair = HCL_NULL; /* to prevent hcl_closemod() from calling hcl_rbt_delete() */ - hcl_closemod(hcl, mdp); - - return HCL_RBT_WALK_FORWARD; -} - -void hcl_fini (hcl_t* hcl) -{ - hcl_cb_t* cb; - hcl_oow_t i; - - hcl_rbt_walk(&hcl->modtab, unload_module, hcl); - hcl_rbt_fini(&hcl->modtab); - - if (hcl->log.len > 0) - { - /* flush pending log messages just in case. */ - HCL_ASSERT(hcl, hcl->log.ptr != HCL_NULL); - HCL_VMPRIM_LOG_WRITE(hcl, hcl->log.last_mask, hcl->log.ptr, hcl->log.len); - } - - for (cb = hcl->cblist; cb; cb = cb->next) - { - if (cb->on_fini) cb->on_fini (hcl); - } - - if (hcl->log.len > 0) - { - /* flush pending log message that could be generated by the fini - * callbacks. however, the actual logging might not be produced at - * this point because one of the callbacks could arrange to stop - * logging */ - HCL_ASSERT(hcl, hcl->log.ptr != HCL_NULL); - HCL_VMPRIM_LOG_WRITE(hcl, hcl->log.last_mask, hcl->log.ptr, hcl->log.len); - } - - /* deregister all callbacks */ - while (hcl->cblist) hcl_deregcb(hcl, hcl->cblist); - - /* detach the user data io handlers just in case */ - hcl_detachudio (hcl); - - if (hcl->sem_list) - { - hcl_freemem(hcl, hcl->sem_list); - hcl->sem_list_capa = 0; - hcl->sem_list_count = 0; - } - - if (hcl->sem_heap) - { - hcl_freemem(hcl, hcl->sem_heap); - hcl->sem_heap_capa = 0; - hcl->sem_heap_count = 0; - } - - if (hcl->sem_io_tuple) - { - hcl_freemem(hcl, hcl->sem_io_tuple); - hcl->sem_io_tuple_capa = 0; - hcl->sem_io_tuple_count = 0; - } - - if (hcl->sem_io_map) - { - hcl_freemem(hcl, hcl->sem_io_map); - hcl->sem_io_map_capa = 0; - } - - if (hcl->proc_map) - { - hcl_freemem(hcl, hcl->proc_map); - hcl->proc_map_capa = 0; - hcl->proc_map_used = 0; - hcl->proc_map_free_first = -1; - hcl->proc_map_free_last = -1; - } - - hcl_purgecode(hcl, &hcl->code); - - if (hcl->p.s.ptr) - { - hcl_freemem(hcl, hcl->p.s.ptr); - hcl->p.s.ptr= HCL_NULL; - hcl->p.s.capa = 0; - hcl->p.s.size = 0; - } - - if (hcl->gci.b) - { - hcl_gchdr_t* next; - do - { - next = hcl->gci.b->next; - hcl->gci.bsz -= HCL_SIZEOF(hcl_obj_t) + hcl_getobjpayloadbytes(hcl, (hcl_oop_t)(hcl->gci.b + 1)); - hcl_freeheapmem(hcl, hcl->heap, hcl->gci.b); - hcl->gci.b = next; - } - while (hcl->gci.b); - - HCL_ASSERT(hcl, hcl->gci.bsz == 0); - } - - if (hcl->gci.stack.ptr) - { - hcl_freemem(hcl, hcl->gci.stack.ptr); - hcl->gci.stack.ptr = 0; - hcl->gci.stack.capa = 0; - hcl->gci.stack.len = 0; - } - - if (hcl->heap) hcl_killheap(hcl, hcl->heap); - - if (hcl->log.ptr) - { - hcl_freemem(hcl, hcl->log.ptr); - hcl->log.capa = 0; - hcl->log.len = 0; - } - - if (hcl->option.log_target_u) - { - hcl_freemem(hcl, hcl->option.log_target_u); - hcl->option.log_target_u = HCL_NULL; - } - - if (hcl->option.log_target_b) - { - hcl_freemem(hcl, hcl->option.log_target_b); - hcl->option.log_target_b = HCL_NULL; - } - - for (i = 0; i < HCL_COUNTOF(hcl->option.mod); i++) - { - if (hcl->option.mod[i].ptr) hcl_freemem(hcl, hcl->option.mod[i].ptr); - } - - if (hcl->inttostr.xbuf.ptr) - { - hcl_freemem(hcl, hcl->inttostr.xbuf.ptr); - hcl->inttostr.xbuf.ptr = HCL_NULL; - hcl->inttostr.xbuf.capa = 0; - hcl->inttostr.xbuf.len = 0; - } - - if (hcl->inttostr.t.ptr) - { - hcl_freemem(hcl, hcl->inttostr.t.ptr); - hcl->inttostr.t.ptr = HCL_NULL; - hcl->inttostr.t.capa = 0; - } - - if (hcl->sprintf.xbuf.ptr) - { - hcl_freemem(hcl, hcl->sprintf.xbuf.ptr); - hcl->sprintf.xbuf.ptr = HCL_NULL; - hcl->sprintf.xbuf.capa = 0; - hcl->sprintf.xbuf.len = 0; - } - - if (hcl->vmprim.dl_cleanup) hcl->vmprim.dl_cleanup (hcl); -} - -void hcl_resetcode (hcl_t* hcl) -{ - hcl_oop_t v; - hcl_oow_t i; - - /* delete all literals shown in the literal frame from the system dictionary - * excluding special kernel symbols. */ - for (i = 0; i < hcl->code.lit.len; i++) - { - v = ((hcl_oop_oop_t)hcl->code.lit.arr)->slot[i]; - if (HCL_IS_CONS(hcl, v)) - { - hcl_oop_t key = HCL_CONS_CAR(v); - if (!HCL_IS_SYMBOL(hcl,key) || !HCL_OBJ_GET_FLAGS_KERNEL(key)) - hcl_zapatsysdic(hcl, HCL_CONS_CAR(v)); - } - } - - /* zap the byte code buffer and the literal frame */ - hcl->code.bc.len = 0; - hcl->code.lit.len = 0; - - /* clean up object memory */ - hcl_gc(hcl, 1); -} - -void hcl_clearcode (hcl_t* hcl) -{ - /* clear the code buffer and the literal frame only */ - hcl->code.bc.len = 0; - hcl->code.lit.len = 0; -} - -static int dup_str_opt (hcl_t* hcl, const hcl_ooch_t* value, hcl_oocs_t* tmp) -{ - if (value) - { - tmp->ptr = hcl_dupoocstr(hcl, value, &tmp->len); - if (HCL_UNLIKELY(!tmp->ptr)) return -1; - } - else - { - tmp->ptr = HCL_NULL; - tmp->len = 0; - } - - return 0; -} - -int hcl_setoption (hcl_t* hcl, hcl_option_t id, const void* value) -{ - hcl_cb_t* cb; - - switch (id) - { - case HCL_TRAIT: - hcl->option.trait = *(const hcl_bitmask_t*)value; - #if defined(HCL_BUILD_DEBUG) - hcl->option.karatsuba_cutoff = ((hcl->option.trait & HCL_TRAIT_DEBUG_BIGINT)? HCL_KARATSUBA_CUTOFF_DEBUG: HCL_KARATSUBA_CUTOFF); - #endif - break; - - case HCL_LOG_MASK: - hcl->option.log_mask = *(const hcl_bitmask_t*)value; - break; - - case HCL_LOG_MAXCAPA: - hcl->option.log_maxcapa = *(hcl_oow_t*)value; - break; - - - case HCL_LOG_TARGET_BCSTR: - { - hcl_bch_t* v1; - hcl_uch_t* v2; - - v1 = hcl_dupbcstr(hcl, (const hcl_bch_t*)value, HCL_NULL); - if (HCL_UNLIKELY(!v1)) return -1; - - v2 = hcl_dupbtoucstr(hcl, (const hcl_bch_t*)value, HCL_NULL); - if (HCL_UNLIKELY(!v2)) - { - hcl_freemem(hcl, v1); - return -1; - } - - hcl->option.log_target_u = v2; - hcl->option.log_target_b = v1; - break; - } - - case HCL_LOG_TARGET_UCSTR: - { - hcl_uch_t* v1; - hcl_bch_t* v2; - - v1 = hcl_dupucstr(hcl, (const hcl_uch_t*)value, HCL_NULL); - if (HCL_UNLIKELY(!v1)) return -1; - - v2 = hcl_duputobcstr(hcl, (const hcl_uch_t*)value, HCL_NULL); - if (HCL_UNLIKELY(!v2)) - { - hcl_freemem(hcl, v1); - return -1; - } - - hcl->option.log_target_u = v1; - hcl->option.log_target_b = v2; - break; - } - - case HCL_LOG_TARGET_BCS: - { - hcl_bch_t* v1; - hcl_uch_t* v2; - hcl_bcs_t* v = (hcl_bcs_t*)value; - - v1 = hcl_dupbchars(hcl, v->ptr, v->len); - if (HCL_UNLIKELY(!v1)) return -1; - - v2 = hcl_dupbtouchars(hcl, v->ptr, v->len, HCL_NULL); - if (HCL_UNLIKELY(!v2)) - { - hcl_freemem(hcl, v1); - return -1; - } - - hcl->option.log_target_u = v2; - hcl->option.log_target_b = v1; - break; - } - - case HCL_LOG_TARGET_UCS: - { - hcl_uch_t* v1; - hcl_bch_t* v2; - hcl_ucs_t* v = (hcl_ucs_t*)value; - - v1 = hcl_dupuchars(hcl, v->ptr, v->len); - if (HCL_UNLIKELY(!v1)) return -1; - - v2 = hcl_duputobchars(hcl, v->ptr, v->len, HCL_NULL); - if (HCL_UNLIKELY(!v2)) - { - hcl_freemem(hcl, v1); - return -1; - } - - hcl->option.log_target_u = v1; - hcl->option.log_target_b = v2; - break; - } - - case HCL_SYMTAB_SIZE: - { - hcl_oow_t w; - - w = *(hcl_oow_t*)value; - if (w <= 0 || w > HCL_SMOOI_MAX) goto einval; - - hcl->option.dfl_symtab_size = *(hcl_oow_t*)value; - break; - } - - case HCL_SYSDIC_SIZE: - { - hcl_oow_t w; - - w = *(hcl_oow_t*)value; - if (w <= 0 || w > HCL_SMOOI_MAX) goto einval; - - hcl->option.dfl_sysdic_size = *(hcl_oow_t*)value; - break; - } - - case HCL_PROCSTK_SIZE: - { - hcl_oow_t w; - - w = *(hcl_oow_t*)value; - if (w <= 0 || w > HCL_SMOOI_MAX) goto einval; - - hcl->option.dfl_procstk_size = *(hcl_oow_t*)value; - break; - } - - case HCL_MOD_LIBDIRS: - case HCL_MOD_PREFIX: - case HCL_MOD_POSTFIX: - { - hcl_oocs_t tmp; - int idx; - - if (dup_str_opt(hcl, (const hcl_ooch_t*)value, &tmp) <= -1) return -1; - - idx = id - HCL_MOD_LIBDIRS; - if (hcl->option.mod[idx].ptr) hcl_freemem(hcl, hcl->option.mod[idx].ptr); - - hcl->option.mod[idx] = tmp; - return 0; - } - - case HCL_MOD_INCTX: - hcl->option.mod_inctx = *(void**)value; - break; - - default: - goto einval; - } - - for (cb = hcl->cblist; cb; cb = cb->next) - { - if (cb->on_option) cb->on_option(hcl, id, value); - } - - return 0; - -einval: - hcl_seterrnum(hcl, HCL_EINVAL); - return -1; -} - -int hcl_getoption (hcl_t* hcl, hcl_option_t id, void* value) -{ - switch (id) - { - case HCL_TRAIT: - *(hcl_bitmask_t*)value = hcl->option.trait; - return 0; - - case HCL_LOG_MASK: - *(hcl_bitmask_t*)value = hcl->option.log_mask; - return 0; - - case HCL_LOG_MAXCAPA: - *(hcl_oow_t*)value = hcl->option.log_maxcapa; - return 0; - - case HCL_LOG_TARGET_BCSTR: - *(hcl_bch_t**)value = hcl->option.log_target_b; - return 0; - - case HCL_LOG_TARGET_UCSTR: - *(hcl_uch_t**)value = hcl->option.log_target_u; - return 0; - - case HCL_LOG_TARGET_BCS: - ((hcl_bcs_t*)value)->ptr = hcl->option.log_target_b; - ((hcl_bcs_t*)value)->len = hcl_count_bcstr(hcl->option.log_target_b); - return 0; - - case HCL_LOG_TARGET_UCS: - ((hcl_ucs_t*)value)->ptr = hcl->option.log_target_u; - ((hcl_ucs_t*)value)->len = hcl_count_ucstr(hcl->option.log_target_u); - return 0; - - case HCL_SYMTAB_SIZE: - *(hcl_oow_t*)value = hcl->option.dfl_symtab_size; - return 0; - - case HCL_SYSDIC_SIZE: - *(hcl_oow_t*)value = hcl->option.dfl_sysdic_size; - return 0; - - case HCL_PROCSTK_SIZE: - *(hcl_oow_t*)value = hcl->option.dfl_procstk_size; - return 0; - - case HCL_MOD_LIBDIRS: - case HCL_MOD_PREFIX: - case HCL_MOD_POSTFIX: - *(const hcl_ooch_t**)value = hcl->option.mod[id - HCL_MOD_LIBDIRS].ptr; - return 0; - - case HCL_MOD_INCTX: - *(void**)value = hcl->option.mod_inctx; - return 0; - }; - - hcl_seterrnum(hcl, HCL_EINVAL); - return -1; -} - - -hcl_cb_t* hcl_regcb (hcl_t* hcl, hcl_cb_t* tmpl) -{ - hcl_cb_t* actual; - - actual = (hcl_cb_t*)hcl_allocmem(hcl, HCL_SIZEOF(*actual)); - if (!actual) return HCL_NULL; - - *actual = *tmpl; - actual->next = hcl->cblist; - actual->prev = HCL_NULL; - hcl->cblist = actual; - - /* vm_checkbc is invoked very frequently. - * and there might be multiple vm_checkbc callbacks registered. - * keeping the count of vm_checkbc callbacks registered - * speeds up the check */ - if (actual->vm_checkbc) hcl->vm_checkbc_cb_count++; - - return actual; -} - -void hcl_deregcb (hcl_t* hcl, hcl_cb_t* cb) -{ - if (cb == hcl->cblist) - { - hcl->cblist = hcl->cblist->next; - if (hcl->cblist) hcl->cblist->prev = HCL_NULL; - } - else - { - if (cb->next) cb->next->prev = cb->prev; - if (cb->prev) cb->prev->next = cb->next; - } - - if (cb->vm_checkbc) - { - HCL_ASSERT(hcl, hcl->vm_checkbc_cb_count > 0); - hcl->vm_checkbc_cb_count--; - } - hcl_freemem(hcl, cb); -} - -void* hcl_allocmem (hcl_t* hcl, hcl_oow_t size) -{ - void* ptr; - - ptr = HCL_MMGR_ALLOC(HCL_MMGR(hcl), size); - if (!ptr) hcl_seterrnum(hcl, HCL_ESYSMEM); - return ptr; -} - -void* hcl_callocmem (hcl_t* hcl, hcl_oow_t size) -{ - void* ptr; - - ptr = HCL_MMGR_ALLOC(HCL_MMGR(hcl), size); - if (!ptr) hcl_seterrnum(hcl, HCL_ESYSMEM); - else HCL_MEMSET (ptr, 0, size); - return ptr; -} - -void* hcl_reallocmem (hcl_t* hcl, void* ptr, hcl_oow_t size) -{ - ptr = HCL_MMGR_REALLOC(HCL_MMGR(hcl), ptr, size); - if (!ptr) hcl_seterrnum(hcl, HCL_ESYSMEM); - return ptr; -} - -void hcl_freemem (hcl_t* hcl, void* ptr) -{ - HCL_MMGR_FREE (HCL_MMGR(hcl), ptr); -} - - -/* -------------------------------------------------------------------------- */ - -#define MOD_PREFIX "hcl_mod_" -#define MOD_PREFIX_LEN 8 - -#if defined(HCL_ENABLE_STATIC_MODULE) - -#include "../mod/_core.h" -#include "../mod/_dic.h" -#include "../mod/_sys.h" - -static struct -{ - const hcl_bch_t* modname; - int (*modload) (hcl_t* hcl, hcl_mod_t* mod); -} -static_modtab[] = -{ - { "core", hcl_mod_core }, - { "dic", hcl_mod_dic }, - { "sys", hcl_mod_sys } -}; -#endif - -hcl_mod_data_t* hcl_openmod (hcl_t* hcl, const hcl_ooch_t* name, hcl_oow_t namelen) -{ - hcl_rbt_pair_t* pair; - hcl_mod_data_t* mdp; - hcl_mod_data_t md; - hcl_mod_load_t load = HCL_NULL; -#if defined(HCL_ENABLE_STATIC_MODULE) - int n; -#endif - - /* maximum module name length is HCL_MOD_NAME_LEN_MAX. - * MOD_PREFIX_LEN for MOD_PREFIX - * 1 for _ at the end when hcl_mod_xxx_ is attempted. - * 1 for the terminating '\0'. - */ - hcl_ooch_t buf[MOD_PREFIX_LEN + HCL_MOD_NAME_LEN_MAX + 1 + 1]; - - /* copy instead of encoding conversion. MOD_PREFIX must not - * include a character that requires encoding conversion. - * note the terminating null isn't needed in buf here. */ - hcl_copy_bchars_to_oochars (buf, MOD_PREFIX, MOD_PREFIX_LEN); - - if (namelen > HCL_COUNTOF(buf) - (MOD_PREFIX_LEN + 1 + 1)) - { - /* module name too long */ - hcl_seterrnum(hcl, HCL_EINVAL); /* TODO: change the error number to something more specific */ - return HCL_NULL; - } - - hcl_copy_oochars(&buf[MOD_PREFIX_LEN], name, namelen); - buf[MOD_PREFIX_LEN + namelen] = '\0'; - -#if defined(HCL_ENABLE_STATIC_MODULE) - /* attempt to find a statically linked module */ - - /* TODO: binary search ... */ - for (n = 0; n < HCL_COUNTOF(static_modtab); n++) - { - if (hcl_comp_oochars_bcstr(name, namelen, static_modtab[n].modname) == 0) - { - load = static_modtab[n].modload; - break; - } - } - - if (load) - { - /* found the module in the static module table */ - - HCL_MEMSET(&md, 0, HCL_SIZEOF(md)); - md.mod.inctx = hcl->option.mod_inctx; - hcl_copy_oochars ((hcl_ooch_t*)md.mod.name, name, namelen); - /* Note md.handle is HCL_NULL for a static module */ - - /* i copy-insert 'md' into the table before calling 'load'. - * to pass the same address to load(), query(), etc */ - pair = hcl_rbt_insert(&hcl->modtab, (hcl_ooch_t*)name, namelen, &md, HCL_SIZEOF(md)); - if (HCL_UNLIKELY(!pair)) - { - hcl_seterrbfmt(hcl, HCL_ESYSMEM, "insufficient system memory in storing static module handle"); - return HCL_NULL; - } - - mdp = (hcl_mod_data_t*)HCL_RBT_VPTR(pair); - if (load(hcl, &mdp->mod) <= -1) - { - hcl_rbt_delete(&hcl->modtab, (hcl_ooch_t*)name, namelen); - return HCL_NULL; - } - - mdp->pair = pair; - - HCL_DEBUG1(hcl, "Opened a static module [%js]\n", mdp->mod.name); - return mdp; - } - else - { - #if !defined(HCL_ENABLE_DYNAMIC_MODULE) - HCL_DEBUG2(hcl, "Cannot find a static module [%.*js]\n", namelen, name); - hcl_seterrbfmt(hcl, HCL_ENOENT, "unable to find a static module [%.*js]", namelen, name); - return HCL_NULL; - #endif - } -#endif - -#if !defined(HCL_ENABLE_DYNAMIC_MODULE) - HCL_DEBUG2(hcl, "Cannot open module [%.*js] - module loading disabled\n", namelen, name); - hcl_seterrbfmt(hcl, HCL_ENOIMPL, "unable to open module [%.*js] - module loading disabled", namelen, name); - return HCL_NULL; -#endif - - /* attempt to find a dynamic external module */ - HCL_MEMSET(&md, 0, HCL_SIZEOF(md)); - md.mod.inctx = hcl->option.mod_inctx; - hcl_copy_oochars((hcl_ooch_t*)md.mod.name, name, namelen); - if (hcl->vmprim.dl_open && hcl->vmprim.dl_getsym && hcl->vmprim.dl_close) - { - md.handle = hcl->vmprim.dl_open(hcl, &buf[MOD_PREFIX_LEN], HCL_VMPRIM_DLOPEN_PFMOD); - } - - if (md.handle == HCL_NULL) - { - HCL_DEBUG2(hcl, "Cannot open a module [%.*js]\n", namelen, name); - hcl_seterrbfmt(hcl, HCL_ENOENT, "unable to open a module [%.*js]", namelen, name); - return HCL_NULL; - } - - /* attempt to get hcl_mod_xxx where xxx is the module name*/ - load = (hcl_mod_load_t)hcl->vmprim.dl_getsym(hcl, md.handle, buf); - if (!load) - { - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "unable to get module symbol [%js] in [%.*js]", buf, namelen, name); - HCL_DEBUG3(hcl, "Cannot get a module symbol [%js] in [%.*js]\n", buf, namelen, name); - hcl->vmprim.dl_close(hcl, md.handle); - return HCL_NULL; - } - - /* i copy-insert 'md' into the table before calling 'load'. - * to pass the same address to load(), query(), etc */ - pair = hcl_rbt_insert(&hcl->modtab, (void*)name, namelen, &md, HCL_SIZEOF(md)); - if (pair == HCL_NULL) - { - HCL_DEBUG2(hcl, "Cannot register a module [%.*js]\n", namelen, name); - hcl_seterrbfmt(hcl, HCL_ESYSMEM, "unable to register a module [%.*js] for memory shortage", namelen, name); - hcl->vmprim.dl_close(hcl, md.handle); - return HCL_NULL; - } - - mdp = (hcl_mod_data_t*)HCL_RBT_VPTR(pair); - if (load(hcl, &mdp->mod) <= -1) - { - const hcl_ooch_t* oldmsg = hcl_backuperrmsg (hcl); - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "module initializer [%js] returned failure in [%.*js] - %js", buf, namelen, name, oldmsg); - HCL_DEBUG3(hcl, "Module function [%js] returned failure in [%.*js]\n", buf, namelen, name); - hcl_rbt_delete(&hcl->modtab, name, namelen); - hcl->vmprim.dl_close(hcl, mdp->handle); - return HCL_NULL; - } - - mdp->pair = pair; - - HCL_DEBUG2(hcl, "Opened a module [%js] - %p\n", mdp->mod.name, mdp->handle); - - /* the module loader must ensure to set a proper query handler */ - HCL_ASSERT(hcl, mdp->mod.query != HCL_NULL); - - return mdp; -} - -void hcl_closemod (hcl_t* hcl, hcl_mod_data_t* mdp) -{ - if (mdp->mod.unload) mdp->mod.unload(hcl, &mdp->mod); - - if (mdp->handle) - { - hcl->vmprim.dl_close(hcl, mdp->handle); - HCL_DEBUG2(hcl, "Closed a module [%js] - %p\n", mdp->mod.name, mdp->handle); - mdp->handle = HCL_NULL; - } - else - { - HCL_DEBUG1(hcl, "Closed a static module [%js]\n", mdp->mod.name); - } - - if (mdp->pair) - { - /*mdp->pair = HCL_NULL;*/ /* this reset isn't needed as the area will get freed by hcl_rbt_delete()) */ - hcl_rbt_delete(&hcl->modtab, mdp->mod.name, hcl_count_oocstr(mdp->mod.name)); - } -} - -hcl_pfbase_t* hcl_querymod (hcl_t* hcl, const hcl_ooch_t* pfid, hcl_oow_t pfidlen, hcl_mod_t** mod) -{ - /* primitive function identifier - * _funcname - * modname_funcname - */ - hcl_rbt_pair_t* pair; - hcl_mod_data_t* mdp; - const hcl_ooch_t* sep; - - hcl_oow_t mod_name_len; - hcl_pfbase_t* pfbase; - - sep = hcl_rfind_oochar(pfid, pfidlen, '.'); - if (!sep) - { - /* i'm writing a conservative code here. the compiler should - * guarantee that a period is included in an primitive function identifer. - * what if the compiler is broken? imagine a buggy compiler rewritten - * in hcl itself? */ - HCL_DEBUG2(hcl, "Internal error - no period in a primitive function identifier [%.*js] - buggy compiler?\n", pfidlen, pfid); - hcl_seterrbfmt(hcl, HCL_EINTERN, "no period in a primitive function identifier [%.*js]", pfidlen, pfid); - return HCL_NULL; - } - - mod_name_len = sep - pfid; - - /* the first segment through the segment before the last compose a - * module id. the last segment is the primitive function name. - * for instance, in con.window.open, con.window is a module id and - * open is the primitive function name. */ - pair = hcl_rbt_search(&hcl->modtab, pfid, mod_name_len); - if (pair) - { - mdp = (hcl_mod_data_t*)HCL_RBT_VPTR(pair); - HCL_ASSERT(hcl, mdp != HCL_NULL); - } - else - { - /* open a module using the part before the last period */ - mdp = hcl_openmod(hcl, pfid, mod_name_len); - if (!mdp) return HCL_NULL; - } - - if ((pfbase = mdp->mod.query(hcl, &mdp->mod, sep + 1, pfidlen - mod_name_len - 1)) == HCL_NULL) - { - /* the primitive function is not found. but keep the module open even if it's opened above */ - HCL_DEBUG3(hcl, "Cannot find a primitive function [%.*js] in a module [%js]\n", pfidlen - mod_name_len - 1, sep + 1, mdp->mod.name); - hcl_seterrbfmt(hcl, HCL_ENOENT, "unable to find a primitive function [%.*js] in a module [%js]", pfidlen - mod_name_len - 1, sep + 1, mdp->mod.name); - return HCL_NULL; - } - - *mod = &mdp->mod; - - HCL_DEBUG4(hcl, "Found a primitive function [%.*js] in a module [%js] - %p\n", pfidlen - mod_name_len - 1, sep + 1, mdp->mod.name, pfbase); - return pfbase; -} - -hcl_pfbase_t* hcl_findpfbase (hcl_t* hcl, hcl_pfinfo_t* pfinfo, hcl_oow_t pfcount, const hcl_ooch_t* name, hcl_oow_t namelen) -{ - int n; - - /* binary search */ -#if 0 - /* [NOTE] this algorithm is NOT underflow safe with hcl_oow_t types */ - int left, right, mid; - - for (left = 0, right = pfcount - 1; left <= right; ) - { - /*mid = (left + right) / 2;*/ - mid = left + ((right - left) / 2); - - n = hcl_comp_oochars_bcstr(name, namelen, pfinfo[mid].mthname); - if (n < 0) right = mid - 1; /* this substraction can make right negative. so i can't use hcl_oow_t for the variable */ - else if (n > 0) left = mid + 1; - else return &pfinfo[mid].base; - } -#else - /* [NOTE] this algorithm is underflow safe with hcl_oow_t types */ - hcl_oow_t base, mid, lim; - - for (base = 0, lim = pfcount; lim > 0; lim >>= 1) - { - mid = base + (lim >> 1); - n = hcl_comp_oochars_bcstr(name, namelen, pfinfo[mid].mthname); - if (n == 0) return &pfinfo[mid].base; - if (n > 0) { base = mid + 1; lim--; } - } -#endif - - hcl_seterrnum(hcl, HCL_ENOENT); - return HCL_NULL; -} - diff --git a/lib/hcl.h b/lib/hcl.h deleted file mode 100644 index 1c930e6..0000000 --- a/lib/hcl.h +++ /dev/null @@ -1,3351 +0,0 @@ -/* - Copyright (c) 2016-2018 Chung, Hyung-Hwan. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _HCL_H_ -#define _HCL_H_ - -#include -#include -#include -#include - -/* TODO: move this macro out to the build files.... */ -#define HCL_INCLUDE_COMPILER - -/* ========================================================================== */ - -typedef struct hcl_mod_t hcl_mod_t; - -/* ========================================================================== */ - -/** - * The hcl_errnum_t type defines the error codes. - */ -enum hcl_errnum_t -{ - HCL_ENOERR, /**< no error */ - HCL_EGENERIC, /**< generic error */ - HCL_ENOIMPL, /**< not implemented */ - HCL_ESYSERR, /**< subsystem error */ - HCL_EINTERN, /**< internal error */ - - HCL_ESYSMEM, /**< insufficient system memory */ - HCL_EOOMEM, /**< insufficient object memory */ - HCL_ETYPE, /**< invalid class/type */ - HCL_EINVAL, /**< invalid parameter or data */ - HCL_ENOENT, /**< data not found */ - - HCL_EEXIST, /**< existing/duplicate data */ - HCL_EBUSY, - HCL_EACCES, - HCL_EPERM, - HCL_ENOTDIR, - - HCL_EINTR, - HCL_EPIPE, - HCL_EAGAIN, - HCL_EBADHND, - HCL_EFRMFLOOD, /**< too many frames */ - - HCL_EMSGRCV, /**< mesasge receiver error */ - HCL_EMSGSND, /**< message sending error. even doesNotUnderstand: is not found */ - HCL_ENUMARGS, /**< wrong number of arguments */ - HCL_ERANGE, /**< range error. overflow and underflow */ - HCL_EBCFULL, /**< byte-code full */ - - HCL_EDFULL, /**< dictionary full */ - HCL_EPFULL, /**< processor full */ - HCL_EFINIS, /**< unexpected end of data/input/stream/etc */ - HCL_EFLOOD, /**< too many items/data */ - HCL_EDIVBY0, /**< divide by zero */ - - HCL_EIOERR, /**< I/O error */ - HCL_EECERR, /**< encoding conversion error */ - HCL_EBUFFULL, /**< buffer full */ - HCL_ESYNERR, /**< syntax error */ - HCL_ECALL, /**< runtime error - cannot call */ - HCL_ECALLARG, /**< runtime error - wrong number of arguments to call */ - HCL_ECALLRET, /**< runtime error - wrong number of return variables to call */ - HCL_ESEMFLOOD, /**< runtime error - too many semaphores */ - HCL_EEXCEPT, /**< runtime error - exception not handled */ - HCL_ESTKOVRFLW, /**< runtime error - stack overflow */ - HCL_ESTKUNDFLW, /**< runtime error - stack overflow */ - HCL_EUNDEFVAR /**< runtime error - undefined variable access */ -}; -typedef enum hcl_errnum_t hcl_errnum_t; - -enum hcl_synerrnum_t -{ - HCL_SYNERR_NOERR, - HCL_SYNERR_INTERN, /* internal error */ - HCL_SYNERR_CNODE, /* unexpected compiler node */ - HCL_SYNERR_ILCHR, /* illegal character */ - HCL_SYNERR_ILTOK, /* invalid token */ - HCL_SYNERR_CMTNC, /* comment not closed */ - HCL_SYNERR_CHARLIT, /* wrong character literal */ - HCL_SYNERR_STRLIT, /* wrong string literal */ - HCL_SYNERR_SYMLIT, /* wrong symbol literal */ - HCL_SYNERR_NUMLIT , /* invalid numeric literal */ - HCL_SYNERR_NUMRANGE, /* number range error */ - HCL_SYNERR_ERRLIT, /* wrong error literal */ - HCL_SYNERR_SMPTRLIT, /* wrong smptr literal */ - HCL_SYNERR_RADIX, /* invalid radix for a numeric literal */ - - HCL_SYNERR_EOF, /* sudden end of input */ - HCL_SYNERR_LPAREN, /* ( expected */ - HCL_SYNERR_RPAREN, /* ) expected */ - HCL_SYNERR_RBRACK, /* ] expected */ - HCL_SYNERR_RBRACE, /* } expected */ - HCL_SYNERR_VBAR, /* | expected */ - - HCL_SYNERR_STRING, /* string expected */ - HCL_SYNERR_BYTERANGE, /* byte too small or too large */ - HCL_SYNERR_NESTING, /* nesting level too deep */ - - HCL_SYNERR_COMMA, /* , expected */ - HCL_SYNERR_VBARBANNED, /* | disallowed */ - HCL_SYNERR_DOTBANNED, /* . disallowed */ - HCL_SYNERR_COMMABANNED, /* , disallowed */ - HCL_SYNERR_COLONBANNED, /* : disallowed */ - HCL_SYNERR_COLONEQBANNED, /* := disallowed */ - HCL_SYNERR_COMMANOVALUE, /* no value after , */ - HCL_SYNERR_COLONNOVALUE, /* no value after : */ - HCL_SYNERR_NOVALUE, /* missing value */ - HCL_SYNERR_NOSEP, /* no separator between array/dictionary elements */ - HCL_SYNERR_INCLUDE, /* #include error */ - - HCL_SYNERR_ELLIPSISBANNED, /* ... disallowed */ - HCL_SYNERR_TRPCOLONSBANNED, /* ::: disallowed */ - HCL_SYNERR_LOOPFLOOD, /* loop body too big */ - HCL_SYNERR_IFFLOOD, /* if body too big */ - HCL_SYNERR_BLKFLOOD, /* block too big */ - HCL_SYNERR_BLKDEPTH, /* block too deep */ - HCL_SYNERR_ARGNAMELIST, /* argument name list expected */ - HCL_SYNERR_ARGNAME, /* argument name expected */ - HCL_SYNERR_ARGNAMEDUP, /* duplicate argument name */ - HCL_SYNERR_VARNAME, /* variable name expected */ - HCL_SYNERR_ARGCOUNT, /* wrong number of arguments */ - HCL_SYNERR_ARGFLOOD, /* too many arguments defined */ - HCL_SYNERR_VARFLOOD, /* too many variables defined */ - HCL_SYNERR_VARDCLBANNED, /* variable declaration disallowed */ - HCL_SYNERR_VARNAMEDUP, /* duplicate variable name */ - HCL_SYNERR_VARNAMEUNKNOWN, /* unknown variable name */ - - HCL_SYNERR_BANNEDVARNAME, /* disallowed varible name */ - HCL_SYNERR_BANNEDARGNAME, /* disallowed argument name */ - HCL_SYNERR_BANNED, /* prohibited */ - - HCL_SYNERR_CLASS, /* invalid class definition */ - HCL_SYNERR_FUN, /* invalid function definition */ - HCL_SYNERR_VAR, /* invalid variable declaration */ - HCL_SYNERR_ELIF, /* elif without if */ - HCL_SYNERR_ELSE, /* else without if */ - HCL_SYNERR_CATCH, /* catch outside try */ - HCL_SYNERR_BREAK, /* break outside loop */ - - HCL_SYNERR_CALLABLE, /* invalid callable */ - HCL_SYNERR_UNBALKV, /* unbalanced key/value pair */ - HCL_SYNERR_UNBALPBB, /* unbalanced parenthesis/brace/bracket */ - HCL_SYNERR_SEMICOLON, /* unexpected semicolon */ - HCL_SYNERR_BACKSLASH, /* stray backslash */ - HCL_SYNERR_BLOCK, /* block expression expected */ - HCL_SYNERR_BLOCKBANNED, /* block expression disallowed */ - HCL_SYNERR_LVALUE, /* invalid lvalue */ - HCL_SYNERR_RVALUE /* invalid rvalue */ -}; -typedef enum hcl_synerrnum_t hcl_synerrnum_t; - -enum hcl_option_t -{ - HCL_TRAIT, - HCL_LOG_MASK, - HCL_LOG_MAXCAPA, - - HCL_LOG_TARGET_BCSTR, - HCL_LOG_TARGET_UCSTR, - HCL_LOG_TARGET_BCS, - HCL_LOG_TARGET_UCS, -#if defined(HCL_OOCH_IS_UCH) -# define HCL_LOG_TARGET HCL_LOG_TARGET_UCSTR -# define HCL_LOG_TARGET_OOCSTR HCL_LOG_TARGET_UCSTR -# define HCL_LOG_TARGET_OOCS HCL_LOG_TARGET_UCS -#else -# define HCL_LOG_TARGET HCL_LOG_TARGET_BCSTR -# define HCL_LOG_TARGET_OOCSTR HCL_LOG_TARGET_BCSTR -# define HCL_LOG_TARGET_OOCS HCL_LOG_TARGET_BCS -#endif - - HCL_SYMTAB_SIZE, /* default system table size */ - HCL_SYSDIC_SIZE, /* default system dictionary size */ - HCL_PROCSTK_SIZE, /* default process stack size */ - - HCL_MOD_LIBDIRS, - HCL_MOD_PREFIX, - HCL_MOD_POSTFIX, - - HCL_MOD_INCTX -}; -typedef enum hcl_option_t hcl_option_t; - -/* [NOTE] ensure that it is a power of 2 */ -#define HCL_LOG_CAPA_ALIGN 512 - -enum hcl_option_dflval_t -{ - HCL_DFL_LOG_MAXCAPA = HCL_LOG_CAPA_ALIGN * 16, - HCL_DFL_SYMTAB_SIZE = 5000, - HCL_DFL_SYSDIC_SIZE = 5000, - HCL_DFL_PROCSTK_SIZE = 5000 -}; -typedef enum hcl_option_dflval_t hcl_option_dflval_t; - -enum hcl_trait_t -{ -#if defined(HCL_BUILD_DEBUG) - HCL_TRAIT_DEBUG_GC = (((hcl_bitmask_t)1) << 0), - HCL_TRAIT_DEBUG_BIGINT = (((hcl_bitmask_t)1) << 1), -#endif - - HCL_TRAIT_INTERACTIVE = (((hcl_bitmask_t)1) << 7), - - /* perform no garbage collection when the heap is full. - * you still can use hcl_gc() explicitly. */ - HCL_TRAIT_NOGC = (((hcl_bitmask_t)1) << 8), - - /* wait for running process when exiting from the main method */ - HCL_TRAIT_AWAIT_PROCS = (((hcl_bitmask_t)1) << 9), - - /* return EOL as a token */ /* TODO: make this pragma controllable */ - HCL_TRAIT_LANG_ENABLE_EOL = (((hcl_bitmask_t)1) << 14), -}; -typedef enum hcl_trait_t hcl_trait_t; - -/* ========================================================================= - * SPECIALIZED OOP TYPES - * ========================================================================= */ - -/* hcl_oop_t defined in hcl-cmn.h - * hcl_obj_t defined further down */ - -/* these are more specialized types for hcl_obj_t */ -typedef struct hcl_obj_oop_t hcl_obj_oop_t; -typedef struct hcl_obj_char_t hcl_obj_char_t; -typedef struct hcl_obj_byte_t hcl_obj_byte_t; -typedef struct hcl_obj_halfword_t hcl_obj_halfword_t; -typedef struct hcl_obj_word_t hcl_obj_word_t; - -/* these are more specialized types for hcl_oop_t */ -typedef struct hcl_obj_oop_t* hcl_oop_oop_t; -typedef struct hcl_obj_char_t* hcl_oop_char_t; -typedef struct hcl_obj_byte_t* hcl_oop_byte_t; -typedef struct hcl_obj_halfword_t* hcl_oop_halfword_t; -typedef struct hcl_obj_word_t* hcl_oop_word_t; - -#define HCL_OOP_BITS (HCL_SIZEOF_OOP_T * HCL_BITS_PER_BYTE) - -#if defined(HCL_USE_OOW_FOR_LIW) - typedef hcl_oop_word_t hcl_oop_liword_t; -# define HCL_OBJ_TYPE_LIWORD HCL_OBJ_TYPE_WORD -#else - typedef hcl_oop_halfword_t hcl_oop_liword_t; -# define HCL_OBJ_TYPE_LIWORD HCL_OBJ_TYPE_HALFWORD -#endif - -/* ========================================================================= - * HEADER FOR GC IMPLEMENTATION - * ========================================================================= */ -typedef struct hcl_gchdr_t hcl_gchdr_t; -struct hcl_gchdr_t -{ - hcl_gchdr_t* next; -}; -/* The size of hcl_gchdr_t must be aligned to HCL_SIZEOF_OOP_T */ - -/* ========================================================================= - * OBJECT STRUCTURE - * ========================================================================= */ -enum hcl_obj_type_t -{ - HCL_OBJ_TYPE_OOP, - HCL_OBJ_TYPE_CHAR, - HCL_OBJ_TYPE_BYTE, - HCL_OBJ_TYPE_HALFWORD, - HCL_OBJ_TYPE_WORD - -/* - HCL_OBJ_TYPE_UINT8, - HCL_OBJ_TYPE_UINT16, - HCL_OBJ_TYPE_UINT32, -*/ - -/* NOTE: you can have HCL_OBJ_SHORT, HCL_OBJ_INT - * HCL_OBJ_LONG, HCL_OBJ_FLOAT, HCL_OBJ_DOUBLE, etc - * type field being 6 bits long, you can have up to 64 different types. - - HCL_OBJ_TYPE_SHORT, - HCL_OBJ_TYPE_INT, - HCL_OBJ_TYPE_LONG, - HCL_OBJ_TYPE_FLOAT, - HCL_OBJ_TYPE_DOUBLE */ -}; -typedef enum hcl_obj_type_t hcl_obj_type_t; - -/* ========================================================================= - * Object header structure - * - * _flags: - * type: the type of a payload item. - * one of HCL_OBJ_TYPE_OOP, HCL_OBJ_TYPE_CHAR, - * HCL_OBJ_TYPE_BYTE, HCL_OBJ_TYPE_HALFWORD, HCL_OBJ_TYPE_WORD - * unit: the size of a payload item in bytes. - * extra: 0 or 1. 1 indicates that the payload contains 1 more - * item than the value of the size field. used for a - * terminating null in a variable-char object. internel - * use only. - * kernel: 0 - ordinary object. - * 1 - kernel object. can survive hcl_resetcode(). - * 2 - kernel object. can survive hcl_resetcode(). - * a symbol object with 2 in the kernel bits cannot be assigned a - * value with the 'set' special form. - * moved: 0 or 1. used by GC. internal use only. - * ngc: 0 or 1, used by GC. internal use only. - * trailer: 0 or 1. indicates that there are trailing bytes - * after the object payload. internal use only. - * - * _size: the number of payload items in an object. - * it doesn't include the header size. - * - * The total number of bytes occupied by an object can be calculated - * with this fomula: - * sizeof(hcl_obj_t) + ALIGN((size + extra) * unit), sizeof(hcl_oop_t)) - * - * If the type is known to be not HCL_OBJ_TYPE_CHAR, you can assume that - * 'extra' is 0. So you can simplify the fomula in such a context. - * sizeof(hcl_obj_t) + ALIGN(size * unit), sizeof(hcl_oop_t)) - * - * The ALIGN() macro is used above since allocation adjusts the payload - * size to a multiple of sizeof(hcl_oop_t). it assumes that sizeof(hcl_obj_t) - * is a multiple of sizeof(hcl_oop_t). See the HCL_BYTESOF() macro. - * - * Due to the header structure, an object can only contain items of - * homogeneous data types in the payload. - * - * It's actually possible to split the size field into 2. For example, - * the upper half contains the number of oops and the lower half contains - * the number of bytes/chars. This way, a variable-byte class or a variable-char - * class can have normal instance variables. On the contrary, the actual byte - * size calculation and the access to the payload fields become more complex. - * Therefore, i've dropped the idea. - * ========================================================================= */ -#define HCL_OBJ_FLAGS_TYPE_BITS (6) /* 6 */ -#define HCL_OBJ_FLAGS_UNIT_BITS (5) /* 11 */ -#define HCL_OBJ_FLAGS_EXTRA_BITS (1) /* 12 */ -#define HCL_OBJ_FLAGS_KERNEL_BITS (2) /* 14 */ -#define HCL_OBJ_FLAGS_MOVED_BITS (2) /* 16 */ -#define HCL_OBJ_FLAGS_NGC_BITS (1) /* 17 */ -#define HCL_OBJ_FLAGS_TRAILER_BITS (1) /* 18 */ -#define HCL_OBJ_FLAGS_CONCODE_BITS (4) /* 22 - concode for cons */ -#define HCL_OBJ_FLAGS_FLEXI_BITS (1) /* 23 */ -#define HCL_OBJ_FLAGS_RDONLY_BITS (1) /* 24 */ -#define HCL_OBJ_FLAGS_PROC_BITS (1) /* 25 */ - -/* -#define HCL_OBJ_FLAGS_PERM_BITS 1 -#define HCL_OBJ_FLAGS_MOVED_BITS 2 -#define HCL_OBJ_FLAGS_GCFIN_BITS 4 -#define HCL_OBJ_FLAGS_TRAILER_BITS 1 -#define HCL_OBJ_FLAGS_HASH_BITS 2 -#define HCL_OBJ_FLAGS_UNCOPYABLE_BITS 1 -*/ - -#define HCL_OBJ_FLAGS_TYPE_SHIFT (HCL_OBJ_FLAGS_UNIT_BITS + HCL_OBJ_FLAGS_UNIT_SHIFT) -#define HCL_OBJ_FLAGS_UNIT_SHIFT (HCL_OBJ_FLAGS_EXTRA_BITS + HCL_OBJ_FLAGS_EXTRA_SHIFT) -#define HCL_OBJ_FLAGS_EXTRA_SHIFT (HCL_OBJ_FLAGS_KERNEL_BITS + HCL_OBJ_FLAGS_KERNEL_SHIFT) -#define HCL_OBJ_FLAGS_KERNEL_SHIFT (HCL_OBJ_FLAGS_MOVED_BITS + HCL_OBJ_FLAGS_MOVED_SHIFT) -#define HCL_OBJ_FLAGS_MOVED_SHIFT (HCL_OBJ_FLAGS_NGC_BITS + HCL_OBJ_FLAGS_NGC_SHIFT) -#define HCL_OBJ_FLAGS_NGC_SHIFT (HCL_OBJ_FLAGS_TRAILER_BITS + HCL_OBJ_FLAGS_TRAILER_SHIFT) -#define HCL_OBJ_FLAGS_TRAILER_SHIFT (HCL_OBJ_FLAGS_CONCODE_BITS + HCL_OBJ_FLAGS_CONCODE_SHIFT) -#define HCL_OBJ_FLAGS_CONCODE_SHIFT (HCL_OBJ_FLAGS_FLEXI_BITS + HCL_OBJ_FLAGS_FLEXI_SHIFT) -#define HCL_OBJ_FLAGS_FLEXI_SHIFT (HCL_OBJ_FLAGS_RDONLY_BITS + HCL_OBJ_FLAGS_RDONLY_SHIFT) -#define HCL_OBJ_FLAGS_RDONLY_SHIFT (HCL_OBJ_FLAGS_PROC_BITS + HCL_OBJ_FLAGS_PROC_SHIFT) -#define HCL_OBJ_FLAGS_PROC_SHIFT (0) - -#define HCL_OBJ_GET_FLAGS_TYPE(oop) HCL_GETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_TYPE_SHIFT, HCL_OBJ_FLAGS_TYPE_BITS) -#define HCL_OBJ_GET_FLAGS_UNIT(oop) HCL_GETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_UNIT_SHIFT, HCL_OBJ_FLAGS_UNIT_BITS) -#define HCL_OBJ_GET_FLAGS_EXTRA(oop) HCL_GETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_EXTRA_SHIFT, HCL_OBJ_FLAGS_EXTRA_BITS) -#define HCL_OBJ_GET_FLAGS_KERNEL(oop) HCL_GETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_KERNEL_SHIFT, HCL_OBJ_FLAGS_KERNEL_BITS) -#define HCL_OBJ_GET_FLAGS_MOVED(oop) HCL_GETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_MOVED_SHIFT, HCL_OBJ_FLAGS_MOVED_BITS) -#define HCL_OBJ_GET_FLAGS_NGC(oop) HCL_GETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_NGC_SHIFT, HCL_OBJ_FLAGS_NGC_BITS) -#define HCL_OBJ_GET_FLAGS_TRAILER(oop) HCL_GETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_TRAILER_SHIFT, HCL_OBJ_FLAGS_TRAILER_BITS) -#define HCL_OBJ_GET_FLAGS_CONCODE(oop) HCL_GETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_CONCODE_SHIFT, HCL_OBJ_FLAGS_CONCODE_BITS) -#define HCL_OBJ_GET_FLAGS_FLEXI(oop) HCL_GETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_FLEXI_SHIFT, HCL_OBJ_FLAGS_FLEXI_BITS) -#define HCL_OBJ_GET_FLAGS_RDONLY(oop) HCL_GETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_RDONLY_SHIFT, HCL_OBJ_FLAGS_RDONLY_BITS) -#define HCL_OBJ_GET_FLAGS_PROC(oop) HCL_GETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_PROC_SHIFT, HCL_OBJ_FLAGS_PROC_BITS) - -#define HCL_OBJ_SET_FLAGS_TYPE(oop,v) HCL_SETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_TYPE_SHIFT, HCL_OBJ_FLAGS_TYPE_BITS, v) -#define HCL_OBJ_SET_FLAGS_UNIT(oop,v) HCL_SETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_UNIT_SHIFT, HCL_OBJ_FLAGS_UNIT_BITS, v) -#define HCL_OBJ_SET_FLAGS_EXTRA(oop,v) HCL_SETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_EXTRA_SHIFT, HCL_OBJ_FLAGS_EXTRA_BITS, v) -#define HCL_OBJ_SET_FLAGS_KERNEL(oop,v) HCL_SETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_KERNEL_SHIFT, HCL_OBJ_FLAGS_KERNEL_BITS, v) -#define HCL_OBJ_SET_FLAGS_MOVED(oop,v) HCL_SETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_MOVED_SHIFT, HCL_OBJ_FLAGS_MOVED_BITS, v) -#define HCL_OBJ_SET_FLAGS_NGC(oop,v) HCL_SETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_NGC_SHIFT, HCL_OBJ_FLAGS_NGC_BITS, v) -#define HCL_OBJ_SET_FLAGS_TRAILER(oop,v) HCL_SETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_TRAILER_SHIFT, HCL_OBJ_FLAGS_TRAILER_BITS, v) -#define HCL_OBJ_SET_FLAGS_CONCODE(oop,v) HCL_SETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_CONCODE_SHIFT, HCL_OBJ_FLAGS_CONCODE_BITS, v) -#define HCL_OBJ_SET_FLAGS_FLEXI(oop,v) HCL_SETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_FLEXI_SHIFT, HCL_OBJ_FLAGS_FLEXI_BITS, v) -#define HCL_OBJ_SET_FLAGS_RDONLY(oop,v) HCL_SETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_RDONLY_SHIFT, HCL_OBJ_FLAGS_RDONLY_BITS, v) -#define HCL_OBJ_SET_FLAGS_PROC(oop,v) HCL_SETBITS(hcl_oow_t, (oop)->_flags, HCL_OBJ_FLAGS_PROC_SHIFT, HCL_OBJ_FLAGS_PROC_BITS, v) - -/* [NOTE] this macro doesn't check the range of the actual value. - * make sure that the value of each bit fields given falls within the - * possible range of the defined bits */ -#define HCL_OBJ_MAKE_FLAGS(t,u,e,k,m,g,r) ( \ - (((hcl_oow_t)(t)) << HCL_OBJ_FLAGS_TYPE_SHIFT) | \ - (((hcl_oow_t)(u)) << HCL_OBJ_FLAGS_UNIT_SHIFT) | \ - (((hcl_oow_t)(e)) << HCL_OBJ_FLAGS_EXTRA_SHIFT) | \ - (((hcl_oow_t)(k)) << HCL_OBJ_FLAGS_KERNEL_SHIFT) | \ - (((hcl_oow_t)(m)) << HCL_OBJ_FLAGS_MOVED_SHIFT) | \ - (((hcl_oow_t)(g)) << HCL_OBJ_FLAGS_NGC_SHIFT) | \ - (((hcl_oow_t)(r)) << HCL_OBJ_FLAGS_TRAILER_SHIFT) \ -) - -#define HCL_OBJ_FLAGS_KERNEL_USER 0 /* not a kernel object */ -#define HCL_OBJ_FLAGS_KERNEL_IMMATURE 1 /* incomplete kernel object. defined in gc.c for bootstrapping. but no complete class definition has been read */ -#define HCL_OBJ_FLAGS_KERNEL_MATURE 2 /* kernel object with its full class defintion read in */ - -#define HCL_OBJ_GET_SIZE(oop) ((oop)->_size) -#define HCL_OBJ_GET_CLASS(oop) ((oop)->_class) - -#define HCL_OBJ_SET_SIZE(oop,v) ((oop)->_size = (v)) -#define HCL_OBJ_SET_CLASS(oop,c) ((oop)->_class = (c)) - -/* [NOTE] this macro doesn't include the size of the trailer */ -#define HCL_OBJ_BYTESOF(oop) ((HCL_OBJ_GET_SIZE(oop) + HCL_OBJ_GET_FLAGS_EXTRA(oop)) * HCL_OBJ_GET_FLAGS_UNIT(oop)) - -#define HCL_OBJ_IS_OOP_POINTER(oop) (HCL_OOP_IS_POINTER(oop) && (HCL_OBJ_GET_FLAGS_TYPE(oop) == HCL_OBJ_TYPE_OOP)) -#define HCL_OBJ_IS_CHAR_POINTER(oop) (HCL_OOP_IS_POINTER(oop) && (HCL_OBJ_GET_FLAGS_TYPE(oop) == HCL_OBJ_TYPE_CHAR)) -#define HCL_OBJ_IS_BYTE_POINTER(oop) (HCL_OOP_IS_POINTER(oop) && (HCL_OBJ_GET_FLAGS_TYPE(oop) == HCL_OBJ_TYPE_BYTE)) -#define HCL_OBJ_IS_HALFWORD_POINTER(oop) (HCL_OOP_IS_POINTER(oop) && (HCL_OBJ_GET_FLAGS_TYPE(oop) == HCL_OBJ_TYPE_HALFWORD)) -#define HCL_OBJ_IS_WORD_POINTER(oop) (HCL_OOP_IS_POINTER(oop) && (HCL_OBJ_GET_FLAGS_TYPE(oop) == HCL_OBJ_TYPE_WORD)) - -#define HCL_STORE_OOP(hcl,var,val) (*(var) = val) - -#define HCL_OBJ_HEADER \ - hcl_oow_t _flags; \ - hcl_oow_t _size; \ - hcl_oop_t _class - -struct hcl_obj_t -{ - HCL_OBJ_HEADER; -}; - -struct hcl_obj_oop_t -{ - HCL_OBJ_HEADER; - hcl_oop_t slot[1]; -}; - -struct hcl_obj_char_t -{ - HCL_OBJ_HEADER; - hcl_ooch_t slot[1]; -}; - -struct hcl_obj_byte_t -{ - HCL_OBJ_HEADER; - hcl_oob_t slot[1]; -}; - -struct hcl_obj_halfword_t -{ - HCL_OBJ_HEADER; - hcl_oohw_t slot[1]; -}; - -struct hcl_obj_word_t -{ - HCL_OBJ_HEADER; - hcl_oow_t slot[1]; -}; - -#define HCL_OBJ_GET_OOP_SLOT(oop) (((hcl_oop_oop_t)(oop))->slot) -#define HCL_OBJ_GET_CHAR_SLOT(oop) (((hcl_oop_char_t)(oop))->slot) -#define HCL_OBJ_GET_BYTE_SLOT(oop) (((hcl_oop_byte_t)(oop))->slot) -#define HCL_OBJ_GET_HALFWORD_SLOT(oop) (((hcl_oop_halfword_t)(oop))->slot) -#define HCL_OBJ_GET_WORD_SLOT(oop) (((hcl_oop_word_t)(oop))->slot) -#define HCL_OBJ_GET_LIWORD_SLOT(oop) (((hcl_oop_liword_t)(oop))->slot) - -#define HCL_OBJ_GET_OOP_PTR(oop,idx) (&(((hcl_oop_oop_t)(oop))->slot)[idx]) -#define HCL_OBJ_GET_CHAR_PTR(oop,idx) (&(((hcl_oop_char_t)(oop))->slot)[idx]) -#define HCL_OBJ_GET_BYTE_PTR(oop,idx) (&(((hcl_oop_byte_t)(oop))->slot)[idx]) -#define HCL_OBJ_GET_HALFWORD_PTR(oop,idx) (&(((hcl_oop_halfword_t)(oop))->slot)[idx]) -#define HCL_OBJ_GET_WORD_PTR(oop,idx) (&(((hcl_oop_word_t)(oop))->slot)[idx]) -#define HCL_OBJ_GET_LIWORD_PTR(oop,idx) (&(((hcl_oop_liword_t)(oop))->slot)[idx]) - -#define HCL_OBJ_GET_OOP_VAL(oop,idx) ((((hcl_oop_oop_t)(oop))->slot)[idx]) -#define HCL_OBJ_GET_CHAR_VAL(oop,idx) ((((hcl_oop_char_t)(oop))->slot)[idx]) -#define HCL_OBJ_GET_BYTE_VAL(oop,idx) ((((hcl_oop_byte_t)(oop))->slot)[idx]) -#define HCL_OBJ_GET_HALFWORD_VAL(oop,idx) ((((hcl_oop_halfword_t)(oop))->slot)[idx]) -#define HCL_OBJ_GET_WORD_VAL(oop,idx) ((((hcl_oop_word_t)(oop))->slot)[idx]) -#define HCL_OBJ_GET_LIWORD_VAL(oop,idx) ((((hcl_oop_liword_t)(oop))->slot)[idx]) - -#define HCL_OBJ_SET_OOP_VAL(oop,idx,val) ((((hcl_oop_oop_t)(oop))->slot)[idx] = (val)) -#define HCL_OBJ_SET_CHAR_VAL(oop,idx,val) ((((hcl_oop_char_t)(oop))->slot)[idx] = (val)) -#define HCL_OBJ_SET_BYTE_VAL(oop,idx,val) ((((hcl_oop_byte_t)(oop))->slot)[idx] = (val)) -#define HCL_OBJ_SET_HALFWORD_VAL(oop,idx,val) ((((hcl_oop_halfword_t)(oop))->slot)[idx] = (val)) -#define HCL_OBJ_SET_WORD_VAL(oop,idx,val) ((((hcl_oop_word_t)(oop))->slot)[idx] = (val)) -#define HCL_OBJ_SET_LIWORD_VAL(oop,idx,val) ((((hcl_oop_liword_t)(oop))->slot)[idx] = (val)) - -typedef struct hcl_trailer_t hcl_trailer_t; -struct hcl_trailer_t -{ - hcl_oow_t size; - hcl_oob_t slot[1]; -}; - -#define HCL_OBJ_GET_TRAILER_BYTE(oop) ((hcl_oob_t*)&((hcl_oop_oop_t)oop)->slot[HCL_OBJ_GET_SIZE(oop) + 1]) -#define HCL_OBJ_GET_TRAILER_SIZE(oop) ((hcl_oow_t)((hcl_oop_oop_t)oop)->slot[HCL_OBJ_GET_SIZE(oop)]) - -#define HCL_PRIM_NAMED_INSTVARS 4 -typedef struct hcl_prim_t hcl_prim_t; -typedef struct hcl_prim_t* hcl_oop_prim_t; -struct hcl_prim_t -{ - HCL_OBJ_HEADER; - hcl_oow_t impl; - hcl_oow_t min_nargs; - hcl_oow_t max_nargs; - hcl_oow_t mod; -}; - -#define HCL_CONS_NAMED_INSTVARS 2 -typedef struct hcl_cons_t hcl_cons_t; -typedef struct hcl_cons_t* hcl_oop_cons_t; -struct hcl_cons_t -{ - HCL_OBJ_HEADER; - hcl_oop_t car; - hcl_oop_t cdr; -}; - -#define HCL_DIC_NAMED_INSTVARS 2 -typedef struct hcl_dic_t hcl_dic_t; -typedef struct hcl_dic_t* hcl_oop_dic_t; -struct hcl_dic_t -{ - HCL_OBJ_HEADER; - hcl_oop_t tally; /* SmallInteger */ - hcl_oop_oop_t bucket; /* Array */ -}; - -#define HCL_FPDEC_NAMED_INSTVARS 2 -typedef struct hcl_fpdec_t hcl_fpdec_t; -typedef struct hcl_fpdec_t* hcl_oop_fpdec_t; -struct hcl_fpdec_t -{ - HCL_OBJ_HEADER; - hcl_oop_t value; /* smooi or bigint */ - hcl_oop_t scale; /* smooi, positive */ -}; - -/* the first byte after the main payload is the trailer size - * the code bytes are placed after the trailer size. - * - * code bytes -> ((hcl_oob_t*)&((hcl_oop_oop_t)m)->slot[HCL_OBJ_GET_SIZE(m) + 1]) or - * ((hcl_oob_t*)&((hcl_oop_function_t)m)->literal_frame[HCL_OBJ_GET_SIZE(m) + 1 - HCL_METHOD_NAMED_INSTVARS]) - * size -> ((hcl_oow_t)((hcl_oop_oop_t)m)->slot[HCL_OBJ_GET_SIZE(m)])*/ -#define HCL_FUNCTION_GET_CODE_BYTE(m) HCL_OBJ_GET_TRAILER_BYTE(m) -#define HCL_FUNCTION_GET_CODE_SIZE(m) HCL_OBJ_GET_TRAILER_SIZE(m) - -#define HCL_FUNCTION_NAMED_INSTVARS 3 /* this excludes literal frames and byte codes */ -typedef struct hcl_function_t hcl_function_t; -typedef struct hcl_function_t* hcl_oop_function_t; - -#define HCL_BLOCK_NAMED_INSTVARS 3 -typedef struct hcl_block_t hcl_block_t; -typedef struct hcl_block_t* hcl_oop_block_t; - -#define HCL_CONTEXT_NAMED_INSTVARS 10 -typedef struct hcl_context_t hcl_context_t; -typedef struct hcl_context_t* hcl_oop_context_t; - -struct hcl_function_t -{ - HCL_OBJ_HEADER; - - hcl_oop_t attr_mask; /* smooi */ - hcl_oop_context_t home; /* home context. nil for the initial function */ - - hcl_oop_t dbgi; /* byte array containing debug information. nil if not available */ - - /* == variable indexed part == */ - hcl_oop_t literal_frame[1]; /* it stores literals. it may not exist */ - - /* after the literal frame comes the actual byte code */ -}; - -/* hcl_function_t copies the byte codes and literal frames into itself - * hcl_block_t contains minimal information(ip) for referening byte codes - * and literal frames available in home->origin. it represents the compiled block. - */ -struct hcl_block_t -{ - HCL_OBJ_HEADER; - - hcl_oop_t attr_mask; /* smooi */ - hcl_oop_context_t home; /* home context */ - hcl_oop_t ip; /* smooi. instruction pointer where the byte code begins in home->base */ -}; - -struct hcl_context_t -{ - HCL_OBJ_HEADER; - - /* SmallInteger */ - hcl_oop_t req_nrets; - - /* SmallInteger. */ - hcl_oop_t attr_mask; - - /* SmallInteger, instruction pointer */ - hcl_oop_t ip; - - /* the initial context is created with the initial function object in this field. - * a function-based context is created with the activating function object. - * a block-based context is created with the function object that the base field of - * the home context of the activating block context points to. */ - hcl_oop_function_t base; /* function */ - - /* it points to the active context at the moment when - * this context object has been activated. a new method context - * is activated as a result of normal message sending and a block - * context is activated when it is sent 'value'. it's set to - * nil if a block context created hasn't received 'value'. */ - hcl_oop_context_t sender; /* context or nil */ - - /* it points to the receiver of the message for a method context. - * a block context points to a block object and a function context - * points to a function object */ - hcl_oop_t receiver; - - /* for a block context, it points to the active context at the - * moment the block context was created. that is, it points to - * a method context where the base block has been defined. - * an activated block context copies this field from the base block context. */ - hcl_oop_context_t home; /* context or nil */ - - /* it is set to itself for a method context, nil for other contexts. - * TODO: this field may not be needed.. mthhome access has been commented out.. so remove this field */ - hcl_oop_context_t mthhome; - - /* instance variable access instructions hold the index to a variable within - * the the containing class. If the class inherits from a superclass and the - * superclass chain contains instance variables, the actual index must be - * added with the number of instance variables in the superclass chain. - * - * for example, the following instruction accesses the instance variable slot - * at index 3. if the class of the instance has 4 instance variables in the - * superclass side, the method context activated has 4 in thie field. - * therefore, the instruction accesses the instance variable slot at index 7. - * push_ivar 3 - * the debug output shows this instruction as "push_ivar 3; [4]" - */ - hcl_oop_t ivaroff; - - /* method owner if this context is created of a message send. nil otherwise */ - hcl_oop_t owner; /* class(hcl_oop_class_t) or nil */ - - /* variable indexed part */ - hcl_oop_t slot[1]; /* arguments, return variables, local variables, other arguments, etc */ -}; - -#define HCL_PROCESS_NAMED_INSTVARS (15) -typedef struct hcl_process_t hcl_process_t; -typedef struct hcl_process_t* hcl_oop_process_t; - -#define HCL_SEMAPHORE_NAMED_INSTVARS (11) -typedef struct hcl_semaphore_t hcl_semaphore_t; -typedef struct hcl_semaphore_t* hcl_oop_semaphore_t; - -#define HCL_SEMAPHORE_GROUP_NAMED_INSTVARS (8) -typedef struct hcl_semaphore_group_t hcl_semaphore_group_t; -typedef struct hcl_semaphore_group_t* hcl_oop_semaphore_group_t; - - -#define HCL_PROCESS_STATE_RUNNING (3) -#define HCL_PROCESS_STATE_WAITING (2) -#define HCL_PROCESS_STATE_RUNNABLE (1) -#define HCL_PROCESS_STATE_SUSPENDED (0) -#define HCL_PROCESS_STATE_TERMINATED (-1) - -struct hcl_process_t -{ - HCL_OBJ_HEADER; - hcl_oop_context_t initial_context; - hcl_oop_context_t current_context; - - hcl_oop_t id; /* SmallInteger */ - hcl_oop_t state; /* SmallInteger */ - - hcl_oop_t sp; /* stack pointer. SmallInteger */ - hcl_oop_t st; /* stack top */ - - hcl_oop_t exsp; /* exception stack pointer. SmallInteger */ - hcl_oop_t exst; /* exception stack top */ - - hcl_oop_t clsp; /* class stack pointer */ - hcl_oop_t clst; /* class stack top */ - - struct - { - hcl_oop_process_t prev; - hcl_oop_process_t next; - } ps; /* links to use with the process scheduler */ - - struct - { - hcl_oop_process_t prev; - hcl_oop_process_t next; - } sem_wait; /* links to use with a semaphore */ - - hcl_oop_t sem; /* nil, semaphore, or semaphore group */ - - /* == variable indexed part == */ - hcl_oop_t slot[1]; /* process stack */ - - /* after the process stack comes the exception stack. - * the exception stack is composed of instruction pointers and some context values. - * the instruction pointers are OOPs of small integers. safe without GC. - * the context values must be referenced by the active call chain. GC doesn't need to scan this area. - * If this assumption is not correct, GC code must be modified. - * so the garbage collector is free to ignore the exception stack */ -}; - -enum hcl_semaphore_subtype_t -{ - HCL_SEMAPHORE_SUBTYPE_TIMED = 0, - HCL_SEMAPHORE_SUBTYPE_IO = 1 -}; -typedef enum hcl_semaphore_subtype_t hcl_semaphore_subtype_t; - -enum hcl_semaphore_io_type_t -{ - HCL_SEMAPHORE_IO_TYPE_INPUT = 0, - HCL_SEMAPHORE_IO_TYPE_OUTPUT = 1 -}; -typedef enum hcl_semaphore_io_type_t hcl_semaphore_io_type_t; - -enum hcl_semaphore_io_mask_t -{ - HCL_SEMAPHORE_IO_MASK_INPUT = (1 << 0), - HCL_SEMAPHORE_IO_MASK_OUTPUT = (1 << 1), - HCL_SEMAPHORE_IO_MASK_HANGUP = (1 << 2), - HCL_SEMAPHORE_IO_MASK_ERROR = (1 << 3) -}; -typedef enum hcl_semaphore_io_mask_t hcl_semaphore_io_mask_t; - -struct hcl_semaphore_t -{ - HCL_OBJ_HEADER; - - /* [IMPORTANT] make sure that the position of 'waiting' in hcl_semaphore_t - * must be exactly the same as its position in hcl_semaphore_group_t */ - struct - { - hcl_oop_process_t first; - hcl_oop_process_t last; - } waiting; /* list of processes waiting on this semaphore */ - /* [END IMPORTANT] */ - - hcl_oop_t count; /* SmallInteger */ - - /* nil for normal. SmallInteger if associated with - * timer(HCL_SEMAPHORE_SUBTYPE_TIMED) or IO(HCL_SEMAPHORE_SUBTYPE_IO). */ - hcl_oop_t subtype; - - union - { - struct - { - hcl_oop_t index; /* index to the heap that stores timed semaphores */ - hcl_oop_t ftime_sec; /* firing time */ - hcl_oop_t ftime_nsec; /* firing time */ - } timed; - - struct - { - hcl_oop_t index; /* index to sem_io_tuple */ - hcl_oop_t handle; - hcl_oop_t type; /* SmallInteger */ - } io; - } u; - - hcl_oop_t signal_action; - - hcl_oop_semaphore_group_t group; /* nil or belonging semaphore group */ - struct - { - hcl_oop_semaphore_t prev; - hcl_oop_semaphore_t next; - } grm; /* group membership chain */ -}; - -#define HCL_SEMAPHORE_GROUP_SEMS_UNSIG 0 -#define HCL_SEMAPHORE_GROUP_SEMS_SIG 1 - -struct hcl_semaphore_group_t -{ - HCL_OBJ_HEADER; - - /* [IMPORTANT] make sure that the position of 'waiting' in hcl_semaphore_group_t - * must be exactly the same as its position in hcl_semaphore_t */ - struct - { - hcl_oop_process_t first; - hcl_oop_process_t last; - } waiting; /* list of processes waiting on this semaphore group */ - /* [END IMPORTANT] */ - - struct - { - hcl_oop_semaphore_t first; - hcl_oop_semaphore_t last; - } sems[2]; /* sems[0] - unsignaled semaphores, sems[1] - signaled semaphores */ - - hcl_oop_t sem_io_count; /* the number of io semaphores in the group */ - hcl_oop_t sem_count; /* the total number of semaphores in the group */ -}; - -#define HCL_PROCESS_SCHEDULER_NAMED_INSTVARS 8 -typedef struct hcl_process_scheduler_t hcl_process_scheduler_t; -typedef struct hcl_process_scheduler_t* hcl_oop_process_scheduler_t; -struct hcl_process_scheduler_t -{ - HCL_OBJ_HEADER; - - hcl_oop_process_t active; /* pointer to an active process in the runnable process list */ - hcl_oop_t total_count; /* smooi, total number of processes - runnable/running/suspended */ - - struct - { - hcl_oop_t count; /* smooi, the number of runnable/running processes */ - hcl_oop_process_t first; /* runnable process list */ - hcl_oop_process_t last; /* runnable process list */ - } runnable; - - struct - { - hcl_oop_t count; /* smooi, the number of suspended processes */ - hcl_oop_process_t first; /* suspended process list */ - hcl_oop_process_t last; /* suspended process list */ - } suspended; -}; - - -#define HCL_CLASS_NAMED_INSTVARS 9 -typedef struct hcl_class_t hcl_class_t; -typedef struct hcl_class_t* hcl_oop_class_t; -struct hcl_class_t -{ - HCL_OBJ_HEADER; - - hcl_oop_t name; /* class name. nil for unnamed class */ - hcl_oop_t mdic; /* method dictionary. nil or a dictionary object */ - - hcl_oop_t spec; /* SmallInteger. instance specification */ - hcl_oop_t selfspec; /* SmallInteger. specification of the class object itself */ - - hcl_oop_t superclass; - hcl_oop_t nivars_super; /* SmallInteger */ - hcl_oop_t ibrand; /* SmallInteger */ - - hcl_oop_char_t ivarnames; - hcl_oop_char_t cvarnames; - - /* indexed part afterwards - not included in HCL_CLASS_NAMED_INSTVARS */ - hcl_oop_t cvar[1]; /* class variables. */ -}; - -#if 0 -struct hcl_class_t -{ - HCL_OBJ_HEADER; - - /* === the following five fields must be in sync with hcl_methowner_t === */ - hcl_oop_char_t name; /* Symbol */ - - /* [0] - instance methods, MethodDictionary - * [1] - class methods, MethodDictionary */ - hcl_oop_dic_t mthdic[2]; - - hcl_oop_nsdic_t nsup; /* pointer to the upper namespace */ - hcl_oop_nsdic_t nsdic; /* dictionary used for namespacing - may be nil when there are no subitems underneath */ - /* ===================================================================== */ - - hcl_oop_t spec; /* SmallInteger. instance specification */ - hcl_oop_t selfspec; /* SmallInteger. specification of the class object itself */ - - hcl_oop_t superclass; /* Another class */ - hcl_oop_t subclasses; /* Array of subclasses */ - - hcl_oop_t modname; /* Symbol if importing a module. nil if not. */ - - /* == NEVER CHANGE THIS ORDER OF 3 ITEMS BELOW == */ - hcl_oop_char_t ivars; /* String */ - hcl_oop_char_t civars; /* String */ - hcl_oop_char_t cvars; /* String */ - /* == NEVER CHANGE THE ORDER OF 3 ITEMS ABOVE == */ - -#if 0 - hcl_oop_char_t pooldics; /* String - pool dictionaries imported */ - - hcl_oop_t trsize; /* trailer size for new instances */ - hcl_oop_t trgc; /* trailer gc callback */ - - /* [0] - initial values for instance variables of new instances - * [1] - initial values for class instance variables */ - hcl_oop_t initv[2]; -#endif - /* indexed part afterwards */ - hcl_oop_t cvar[1]; /* class instance variables and class variables. */ -}; -#endif - -/** - * The HCL_CLASSOF() macro return the class of an object including a numeric - * object encoded into a pointer. - */ -#define HCL_CLASSOF(hcl,oop) \ - (HCL_OOP_GET_TAG(oop)? ((hcl_oop_t)(*(hcl)->tagged_classes[HCL_OOP_GET_TAG(oop)])): HCL_OBJ_GET_CLASS(oop)) - - -/** - * The HCL_BYTESOF() macro returns the size of the payload of - * an object in bytes. If the pointer given encodes a numeric value, - * it returns the size of #hcl_oow_t in bytes. - */ -#define HCL_BYTESOF(hcl,oop) \ - (HCL_OOP_IS_NUMERIC(oop)? HCL_SIZEOF(hcl_oow_t): HCL_OBJ_BYTESOF(oop)) - - -/** - * The HCL_ISTYPEOF() macro is a safe replacement for HCL_OBJ_GET_FLAGS_TYPE() - */ -#define HCL_ISTYPEOF(hcl,oop,type) \ - (!HCL_OOP_IS_NUMERIC(oop) && HCL_OBJ_GET_FLAGS_TYPE(oop) == (type)) - -/* ========================================================================= - * HEAP - * ========================================================================= */ - -typedef struct hcl_heap_t hcl_heap_t; - -struct hcl_heap_t -{ - hcl_uint8_t* base; /* start of a heap */ - hcl_oow_t size; - hcl_xma_t* xma; - hcl_mmgr_t xmmgr; -}; - -/* ========================================================================= - * VM LOGGING - * ========================================================================= */ - -enum hcl_log_mask_t -{ - HCL_LOG_DEBUG = ((hcl_bitmask_t)1 << 0), - HCL_LOG_INFO = ((hcl_bitmask_t)1 << 1), - HCL_LOG_WARN = ((hcl_bitmask_t)1 << 2), - HCL_LOG_ERROR = ((hcl_bitmask_t)1 << 3), - HCL_LOG_FATAL = ((hcl_bitmask_t)1 << 4), - - HCL_LOG_UNTYPED = ((hcl_bitmask_t)1 << 6), /* only to be used by HCL_DEBUGx() and HCL_INFOx() */ - HCL_LOG_COMPILER = ((hcl_bitmask_t)1 << 7), - HCL_LOG_VM = ((hcl_bitmask_t)1 << 8), - HCL_LOG_MNEMONIC = ((hcl_bitmask_t)1 << 9), /* bytecode mnemonic */ - HCL_LOG_GC = ((hcl_bitmask_t)1 << 10), - HCL_LOG_IC = ((hcl_bitmask_t)1 << 11), /* instruction cycle, fetch-decode-execute */ - HCL_LOG_PRIMITIVE = ((hcl_bitmask_t)1 << 12), - - HCL_LOG_APP = ((hcl_bitmask_t)1 << 13), /* hcl applications, set by hcl logging primitive */ - HCL_LOG_APP_X1 = ((hcl_bitmask_t)1 << 14), /* more hcl applications, you can choose to use one of APP_X? randomly */ - HCL_LOG_APP_X2 = ((hcl_bitmask_t)1 << 15), - HCL_LOG_APP_X3 = ((hcl_bitmask_t)1 << 16), - - HCL_LOG_ALL_LEVELS = (HCL_LOG_DEBUG | HCL_LOG_INFO | HCL_LOG_WARN | HCL_LOG_ERROR | HCL_LOG_FATAL), - HCL_LOG_ALL_TYPES = (HCL_LOG_UNTYPED | HCL_LOG_COMPILER | HCL_LOG_VM | HCL_LOG_MNEMONIC | HCL_LOG_GC | HCL_LOG_IC | HCL_LOG_PRIMITIVE | HCL_LOG_APP | HCL_LOG_APP_X1 | HCL_LOG_APP_X2 | HCL_LOG_APP_X3), - - - HCL_LOG_STDOUT = ((hcl_bitmask_t)1 << 20), /* write log messages to stdout without timestamp. HCL_LOG_STDOUT wins over HCL_LOG_STDERR. */ - HCL_LOG_STDERR = ((hcl_bitmask_t)1 << 21), /* write log messages to stderr without timestamp. */ - - HCL_LOG_PREFER_JSON = ((hcl_bitmask_t)1 << 30) /* write a object in the json format. don't set this explicitly. use %J instead */ -}; -typedef enum hcl_log_mask_t hcl_log_mask_t; - -/* all bits must be set to get enabled */ -#define HCL_LOG_ENABLED(hcl,mask) (((hcl)->option.log_mask & (mask)) == (mask)) - -#define HCL_LOG0(hcl,mask,fmt) do { if (HCL_LOG_ENABLED(hcl,mask)) hcl_logbfmt(hcl, mask, fmt); } while(0) -#define HCL_LOG1(hcl,mask,fmt,a1) do { if (HCL_LOG_ENABLED(hcl,mask)) hcl_logbfmt(hcl, mask, fmt, a1); } while(0) -#define HCL_LOG2(hcl,mask,fmt,a1,a2) do { if (HCL_LOG_ENABLED(hcl,mask)) hcl_logbfmt(hcl, mask, fmt, a1, a2); } while(0) -#define HCL_LOG3(hcl,mask,fmt,a1,a2,a3) do { if (HCL_LOG_ENABLED(hcl,mask)) hcl_logbfmt(hcl, mask, fmt, a1, a2, a3); } while(0) -#define HCL_LOG4(hcl,mask,fmt,a1,a2,a3,a4) do { if (HCL_LOG_ENABLED(hcl,mask)) hcl_logbfmt(hcl, mask, fmt, a1, a2, a3, a4); } while(0) -#define HCL_LOG5(hcl,mask,fmt,a1,a2,a3,a4,a5) do { if (HCL_LOG_ENABLED(hcl,mask)) hcl_logbfmt(hcl, mask, fmt, a1, a2, a3, a4, a5); } while(0) -#define HCL_LOG6(hcl,mask,fmt,a1,a2,a3,a4,a5,a6) do { if (HCL_LOG_ENABLED(hcl,mask)) hcl_logbfmt(hcl, mask, fmt, a1, a2, a3, a4, a5, a6); } while(0) -#define HCL_LOG7(hcl,mask,fmt,a1,a2,a3,a4,a5,a6,a7) do { if (HCL_LOG_ENABLED(hcl,mask)) hcl_logbfmt(hcl, mask, fmt, a1, a2, a3, a4, a5, a6, a7); } while(0) -#define HCL_LOG8(hcl,mask,fmt,a1,a2,a3,a4,a5,a6,a7,a8) do { if (HCL_LOG_ENABLED(hcl,mask)) hcl_logbfmt(hcl, mask, fmt, a1, a2, a3, a4, a5, a6, a7, a8); } while(0) -#define HCL_LOG9(hcl,mask,fmt,a1,a2,a3,a4,a5,a6,a7,a8,a9) do { if (HCL_LOG_ENABLED(hcl,mask)) hcl_logbfmt(hcl, mask, fmt, a1, a2, a3, a4, a5, a6, a7, a8, a9); } while(0) - -#if defined(HCL_BUILD_RELEASE) - /* [NOTE] - * get rid of debugging message totally regardless of - * the log mask in the release build. - */ -# define HCL_DEBUG0(hcl,fmt) -# define HCL_DEBUG1(hcl,fmt,a1) -# define HCL_DEBUG2(hcl,fmt,a1,a2) -# define HCL_DEBUG3(hcl,fmt,a1,a2,a3) -# define HCL_DEBUG4(hcl,fmt,a1,a2,a3,a4) -# define HCL_DEBUG5(hcl,fmt,a1,a2,a3,a4,a5) -# define HCL_DEBUG6(hcl,fmt,a1,a2,a3,a4,a5,a6) -# define HCL_DEBUG7(hcl,fmt,a1,a2,a3,a4,a5,a6,a7) -# define HCL_DEBUG8(hcl,fmt,a1,a2,a3,a4,a5,a6,a7,a8) -# define HCL_DEBUG9(hcl,fmt,a1,a2,a3,a4,a5,a6,a7,a8,a9) -#else -# define HCL_DEBUG0(hcl,fmt) HCL_LOG0(hcl, HCL_LOG_DEBUG | HCL_LOG_UNTYPED, fmt) -# define HCL_DEBUG1(hcl,fmt,a1) HCL_LOG1(hcl, HCL_LOG_DEBUG | HCL_LOG_UNTYPED, fmt, a1) -# define HCL_DEBUG2(hcl,fmt,a1,a2) HCL_LOG2(hcl, HCL_LOG_DEBUG | HCL_LOG_UNTYPED, fmt, a1, a2) -# define HCL_DEBUG3(hcl,fmt,a1,a2,a3) HCL_LOG3(hcl, HCL_LOG_DEBUG | HCL_LOG_UNTYPED, fmt, a1, a2, a3) -# define HCL_DEBUG4(hcl,fmt,a1,a2,a3,a4) HCL_LOG4(hcl, HCL_LOG_DEBUG | HCL_LOG_UNTYPED, fmt, a1, a2, a3, a4) -# define HCL_DEBUG5(hcl,fmt,a1,a2,a3,a4,a5) HCL_LOG5(hcl, HCL_LOG_DEBUG | HCL_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5) -# define HCL_DEBUG6(hcl,fmt,a1,a2,a3,a4,a5,a6) HCL_LOG6(hcl, HCL_LOG_DEBUG | HCL_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5, a6) -# define HCL_DEBUG7(hcl,fmt,a1,a2,a3,a4,a5,a6,a7) HCL_LOG7(hcl, HCL_LOG_DEBUG | HCL_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5, a6, a7) -# define HCL_DEBUG8(hcl,fmt,a1,a2,a3,a4,a5,a6,a7,a8) HCL_LOG8(hcl, HCL_LOG_DEBUG | HCL_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5, a6, a7, a8) -# define HCL_DEBUG9(hcl,fmt,a1,a2,a3,a4,a5,a6,a7,a8,a9) HCL_LOG9(hcl, HCL_LOG_DEBUG | HCL_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5, a6, a7, a8, a9) -#endif - -#define HCL_INFO0(hcl,fmt) HCL_LOG0(hcl, HCL_LOG_INFO | HCL_LOG_UNTYPED, fmt) -#define HCL_INFO1(hcl,fmt,a1) HCL_LOG1(hcl, HCL_LOG_INFO | HCL_LOG_UNTYPED, fmt, a1) -#define HCL_INFO2(hcl,fmt,a1,a2) HCL_LOG2(hcl, HCL_LOG_INFO | HCL_LOG_UNTYPED, fmt, a1, a2) -#define HCL_INFO3(hcl,fmt,a1,a2,a3) HCL_LOG3(hcl, HCL_LOG_INFO | HCL_LOG_UNTYPED, fmt, a1, a2, a3) -#define HCL_INFO4(hcl,fmt,a1,a2,a3,a4) HCL_LOG4(hcl, HCL_LOG_INFO | HCL_LOG_UNTYPED, fmt, a1, a2, a3, a4) -#define HCL_INFO5(hcl,fmt,a1,a2,a3,a4,a5) HCL_LOG5(hcl, HCL_LOG_INFO | HCL_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5) -#define HCL_INFO6(hcl,fmt,a1,a2,a3,a4,a5,a6) HCL_LOG6(hcl, HCL_LOG_INFO | HCL_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5, a6) -#define HCL_INFO7(hcl,fmt,a1,a2,a3,a4,a5,a6,a7) HCL_LOG7(hcl, HCL_LOG_INFO | HCL_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5, a6, a7) -#define HCL_INFO8(hcl,fmt,a1,a2,a3,a4,a5,a6,a7,a8) HCL_LOG8(hcl, HCL_LOG_INFO | HCL_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5, a6, a7, a8) -#define HCL_INFO9(hcl,fmt,a1,a2,a3,a4,a5,a6,a7,a8,a9) HCL_LOG9(hcl, HCL_LOG_INFO | HCL_LOG_UNTYPED, fmt, a1, a2, a3, a4, a5, a6, a7, a8, a9) - - -/* ========================================================================= - * VIRTUAL MACHINE PRIMITIVES - * ========================================================================= */ - -typedef void* (*hcl_alloc_heap_t) ( - hcl_t* hcl, - hcl_oow_t* size /* [IN] requested size, [OUT] allocated size */ -); - -typedef void (*hcl_free_heap_t) ( - hcl_t* hcl, - void* ptr -); - -typedef void (*hcl_log_write_t) ( - hcl_t* hcl, - hcl_bitmask_t mask, - const hcl_ooch_t* msg, - hcl_oow_t len -); - -typedef hcl_errnum_t (*hcl_syserrstrb_t) ( - hcl_t* hcl, - int syserr_type, - int syserr_code, - hcl_bch_t* buf, - hcl_oow_t len -); - -typedef hcl_errnum_t (*hcl_syserrstru_t) ( - hcl_t* hcl, - int syserr_type, - int syserr_code, - hcl_uch_t* buf, - hcl_oow_t len -); - -typedef void (*hcl_assertfail_t) ( - hcl_t* hcl, - const hcl_bch_t* expr, - const hcl_bch_t* file, - hcl_oow_t line -); - -enum hcl_vmprim_dlopen_flag_t -{ - HCL_VMPRIM_DLOPEN_PFMOD = (1 << 0) -}; -typedef enum hcl_vmprim_dlopen_flag_t hcl_vmprim_dlopen_flag_t; - -typedef void (*hcl_vmprim_dlstartup_t) ( - hcl_t* hcl -); - -typedef void (*hcl_vmprim_dlcleanup_t) ( - hcl_t* hcl -); - -typedef void* (*hcl_vmprim_dlopen_t) ( - hcl_t* hcl, - const hcl_ooch_t* name, - int flags -); - -typedef void (*hcl_vmprim_dlclose_t) ( - hcl_t* hcl, - void* handle -); - -typedef void* (*hcl_vmprim_dlgetsym_t) ( - hcl_t* hcl, - void* handle, - const hcl_ooch_t* name -); - -typedef void (*hcl_vmprim_gettime_t) ( - hcl_t* hcl, - hcl_ntime_t* now -); - -typedef int (*hcl_vmprim_muxadd_t) ( - hcl_t* hcl, - hcl_ooi_t io_handle, - hcl_ooi_t masks -); - -typedef int (*hcl_vmprim_muxmod_t) ( - hcl_t* hcl, - hcl_ooi_t io_handle, - hcl_ooi_t masks -); - -typedef int (*hcl_vmprim_muxdel_t) ( - hcl_t* hcl, - hcl_ooi_t io_handle -); - -typedef void (*hcl_vmprim_muxwait_cb_t) ( - hcl_t* hcl, - hcl_ooi_t io_handle, - hcl_ooi_t masks -); - -typedef void (*hcl_vmprim_muxwait_t) ( - hcl_t* hcl, - const hcl_ntime_t* duration, - hcl_vmprim_muxwait_cb_t muxwcb -); - -typedef int (*hcl_vmprim_sleep_t) ( - hcl_t* hcl, - const hcl_ntime_t* duration -); - -typedef hcl_ooi_t (*hcl_vmprim_getsigfd_t) ( - hcl_t* hcl -); - -typedef int (*hcl_vmprim_getsig_t) ( - hcl_t* hcl, - hcl_uint8_t* sig -); - -typedef int (*hcl_vmprim_setsig_t) ( - hcl_t* hcl, - hcl_uint8_t sig -); - -struct hcl_vmprim_t -{ - /* The alloc_heap callback function is called very earlier - * before hcl is fully initialized. so few features are availble - * in this callback function. If it's not provided, the default - * implementation is used. */ - hcl_alloc_heap_t alloc_heap; /* optional */ - - /* If you customize the heap allocator by providing the alloc_heap - * callback, you should implement the heap freer. otherwise the default - * implementation doesn't know how to free the heap allocated by - * the allocator callback. */ - hcl_free_heap_t free_heap; /* optional */ - - hcl_log_write_t log_write; /* required */ - hcl_syserrstrb_t syserrstrb; /* one of syserrstrb or syserrstru required */ - hcl_syserrstru_t syserrstru; - hcl_assertfail_t assertfail; - - hcl_vmprim_dlstartup_t dl_startup; /* optional */ - hcl_vmprim_dlcleanup_t dl_cleanup; /* optional */ - hcl_vmprim_dlopen_t dl_open; /* required */ - hcl_vmprim_dlclose_t dl_close; /* required */ - hcl_vmprim_dlgetsym_t dl_getsym; /* requried */ - - hcl_vmprim_gettime_t vm_gettime; /* required */ - hcl_vmprim_muxadd_t vm_muxadd; - hcl_vmprim_muxdel_t vm_muxdel; - hcl_vmprim_muxmod_t vm_muxmod; - hcl_vmprim_muxwait_t vm_muxwait; - hcl_vmprim_sleep_t vm_sleep; /* required */ - - hcl_vmprim_getsigfd_t vm_getsigfd; - hcl_vmprim_getsig_t vm_getsig; - hcl_vmprim_setsig_t vm_setsig; -}; - -typedef struct hcl_vmprim_t hcl_vmprim_t; - -/* ========================================================================= - * IO MANIPULATION - * ========================================================================= */ - -enum hcl_io_cmd_t -{ - HCL_IO_OPEN, - HCL_IO_CLOSE, - HCL_IO_READ, - HCL_IO_READ_BYTES, - HCL_IO_WRITE, - HCL_IO_WRITE_BYTES, - HCL_IO_FLUSH -}; -typedef enum hcl_io_cmd_t hcl_io_cmd_t; - -struct hcl_loc_t -{ - hcl_oow_t line; /**< line */ - hcl_oow_t colm; /**< column */ - const hcl_ooch_t* file; /**< file specified in #include */ -}; -typedef struct hcl_loc_t hcl_loc_t; - -struct hcl_lxc_t -{ - hcl_ooci_t c; /**< character */ - hcl_loc_t l; /**< location */ -}; -typedef struct hcl_lxc_t hcl_lxc_t; - -#if !defined(HCL_CCI_BUF_LEN) -#define HCL_CCI_BUF_LEN (2048) -#endif - -typedef struct hcl_io_cciarg_t hcl_io_cciarg_t; -struct hcl_io_cciarg_t -{ - /** - * [IN] I/O object name. - * It is #HCL_NULL for the main stream and points to a non-NULL string - * for an included stream. - */ - const hcl_ooch_t* name; - - /** - * [OUT] I/O handle set by a handler. - * The source stream handler can set this field when it opens a stream. - * All subsequent operations on the stream see this field as set - * during opening. - */ - void* handle; - - /** - * [OUT] set this to non-zero in HCL_IO_OPEN if the handler fills the buffer with bytes. - * the caller issues HCL_IO_READ_BYTES if it's set to non-zero, expecting bytes. - * otherwise it issues HCL_IO_READ expecting characters. - */ - int byte_oriented; - - /** - * [OUT] place data here for #HCL_IO_READ or #HCL_IO_READ_BYTES - */ - union - { - hcl_ooch_t c[HCL_CCI_BUF_LEN]; - hcl_uint8_t b[HCL_CCI_BUF_LEN * HCL_SIZEOF(hcl_ooch_t)]; - } buf; - - /** - * [OUT] place the number of characters read here for #HCL_IO_READ - */ - hcl_oow_t xlen; - - /** - * [IN] points to the data of the includer. It is #HCL_NULL for the - * main stream. - */ - hcl_io_cciarg_t* includer; - - /*-----------------------------------------------------------------*/ - /*----------- from here down, internal use only -------------------*/ - struct - { - hcl_oow_t pos; - hcl_oow_t len; - } b; /* buffer(buf.c or buf.b) usage status */ - - struct - { - hcl_uint8_t buf[HCL_MBLEN_MAX]; - hcl_oow_t len; - } rsd; /* residue bytes for HCL_IO_READ_BYTES */ - - hcl_oow_t line; - hcl_oow_t colm; - hcl_ooci_t nl; - - hcl_lxc_t lxc; - /*-----------------------------------------------------------------*/ -}; - -typedef struct hcl_io_udiarg_t hcl_io_udiarg_t; -struct hcl_io_udiarg_t -{ - /** - * [OUT] I/O handle set by a handler. - * The stream handler can set this field when it opens a stream. - * All subsequent operations on the stream see this field as set - * during opening. - */ - void* handle; - - /** - * [OUT] indicates if HCL_IO_READ_BYTES is implemented - */ - int byte_oriented; - - /** - * [OUT] place data in c for #HCL_IO_READ and in d for #HCL_IO_READ_BYTES - */ - union { - hcl_ooch_t c[2048]; /* TODO: resize this if necessary */ - hcl_uint8_t b[2048 * HCL_SIZEOF(hcl_ooch_t)]; /* TODO: resize this if necessary */ - } buf; - - /** - * [OUT] place the number of characters read here for - * #HCL_IO_READ or #HCL_IO_READ_BYTES - */ - hcl_oow_t xlen; - - - /*-----------------------------------------------------------------*/ - /*----------- from here down, internal use only -------------------*/ - struct - { - hcl_oow_t pos; - hcl_oow_t len; - } b; /* buffer(buf.c or buf.b) usage status */ - - struct - { - hcl_uint8_t buf[HCL_MBLEN_MAX]; - hcl_oow_t len; - } rsd; /* residue bytes for HCL_IO_READ_BYTES */ - - int eof_reached; -}; - -typedef struct hcl_io_udoarg_t hcl_io_udoarg_t; -struct hcl_io_udoarg_t -{ - /** - * [OUT] I/O handle set by a handler. - * The stream handler can set this field when it opens a stream. - * All subsequent operations on the stream see this field as set - * during opening. - */ - void* handle; - - /** - * [IN] the pointer to the beginning of the character/byte string - * to write. - * hcl_ooch_t* for HCL_IO_WRITE - * hcl_bch_t* or hcl_uint8_t* for HCL_IO_WRITE_BYTES - */ - void* ptr; - - /** - * [IN] total number of characters/bytes to write - */ - hcl_oow_t len; - - /** - * [OUT] place the number of characters/bytes written here for - * #HCL_IO_WRITE or #HCL_IO_WRITE_BYTES - */ - hcl_oow_t xlen; -}; - -/** - * The hcl_io_impl_t type defines a callback function prototype - * for I/O operations. - */ -typedef int (*hcl_io_impl_t) ( - hcl_t* hcl, - hcl_io_cmd_t cmd, - void* arg /* one of hcl_io_cciarg_t*, hcl_io_udiarg_t*, hcl_io_udoarg_t* */ -); - -/* ========================================================================= - * CALLBACK MANIPULATION - * ========================================================================= */ - - -typedef void (*hcl_cb_on_fini_t) (hcl_t* hcl); -typedef void (*hcl_cb_on_halting_t) (hcl_t* hcl); -typedef void (*hcl_cb_on_option_t) (hcl_t* hcl, hcl_option_t id, const void* val); -typedef void (*hcl_cb_on_gc_t) (hcl_t* hcl); -typedef int (*hcl_cb_vm_startup_t) (hcl_t* hcl); -typedef void (*hcl_cb_vm_cleanup_t) (hcl_t* hcl); -typedef void (*hcl_cb_vm_checkbc_t) (hcl_t* hcl, hcl_oob_t bcode); - -typedef struct hcl_cb_t hcl_cb_t; -struct hcl_cb_t -{ - hcl_cb_on_fini_t on_fini; /* called from hcl_fini() */ - hcl_cb_on_halting_t halting; - hcl_cb_on_option_t on_option; /* called from hcl_setoption() */ - hcl_cb_on_gc_t on_gc; /* called from hcl_gc() */ - - hcl_cb_vm_startup_t vm_startup; - hcl_cb_vm_cleanup_t vm_cleanup; - hcl_cb_vm_checkbc_t vm_checkbc; - - /* private below */ - hcl_cb_t* prev; - hcl_cb_t* next; -}; - - -/* ========================================================================= - * PRIMITIVE FUNCTIONS - * ========================================================================= */ -enum hcl_pfrc_t -{ - HCL_PF_FAILURE = -1, - HCL_PF_SUCCESS = 0 -}; -typedef enum hcl_pfrc_t hcl_pfrc_t; - -typedef hcl_pfrc_t (*hcl_pfimpl_t) ( - hcl_t* hcl, - hcl_mod_t* mod, - hcl_ooi_t nargs -); - -enum hcl_pfbase_type_t -{ - HCL_PFBASE_FUNC = 0, - HCL_PFBASE_VAR = 1, - HCL_PFBASE_CONST = 2 -}; -typedef enum hcl_pfbase_type_t hcl_pfbase_type_t; - -typedef struct hcl_pfbase_t hcl_pfbase_t; -struct hcl_pfbase_t -{ - hcl_pfbase_type_t type; - hcl_pfimpl_t handler; - hcl_oow_t minargs; - hcl_oow_t maxargs; -}; - -typedef struct hcl_pfinfo_t hcl_pfinfo_t; -struct hcl_pfinfo_t -{ - const hcl_bch_t* mthname; - hcl_pfbase_t base; -}; -/* ========================================================================= - * PRIMITIVE MODULE MANIPULATION - * ========================================================================= */ -#define HCL_MOD_NAME_LEN_MAX 120 - -typedef int (*hcl_mod_load_t) ( - hcl_t* hcl, - hcl_mod_t* mod -); - -typedef hcl_pfbase_t* (*hcl_mod_query_t) ( - hcl_t* hcl, - hcl_mod_t* mod, - const hcl_ooch_t* name, - hcl_oow_t namelen -); - -typedef void (*hcl_mod_unload_t) ( - hcl_t* hcl, - hcl_mod_t* mod -); - -typedef void (*hcl_mod_gc_t) ( - hcl_t* hcl, - hcl_mod_t* mod -); - -struct hcl_mod_t -{ - /* input */ - hcl_ooch_t name[HCL_MOD_NAME_LEN_MAX + 1]; - void* inctx; - - /* user-defined data - the module intializer shoudl fill in the following fields. */ - hcl_mod_query_t query; - hcl_mod_unload_t unload; - hcl_mod_gc_t gc; - void* ctx; -}; - -struct hcl_mod_data_t -{ - void* handle; - hcl_rbt_pair_t* pair; /* internal backreference to hcl->modtab */ - hcl_mod_t mod; -}; -typedef struct hcl_mod_data_t hcl_mod_data_t; - - -struct hcl_sem_tuple_t -{ - hcl_oop_semaphore_t sem[2]; /* [0] input, [1] output */ - hcl_ooi_t handle; /* io handle */ - hcl_ooi_t mask; -}; -typedef struct hcl_sem_tuple_t hcl_sem_tuple_t; - -/* ========================================================================= - * HCL VM - * ========================================================================= */ -typedef struct hcl_synerr_t hcl_synerr_t; -struct hcl_synerr_t -{ - hcl_synerrnum_t num; - hcl_loc_t loc; - struct - { - hcl_ooch_t val[256]; - hcl_oow_t len; - } tgt; -}; - -typedef struct hcl_dbgi_t hcl_dbgi_t; -struct hcl_dbgi_t -{ - const hcl_ooch_t* fname; /* file name */ - hcl_oow_t sline; /* source line in the file */ -}; - -#if defined(HCL_INCLUDE_COMPILER) -typedef struct hcl_compiler_t hcl_compiler_t; -typedef struct hcl_cnode_t hcl_cnode_t; - -typedef int (*hcl_on_cnode_t) (hcl_t* hcl, hcl_cnode_t* obj); - -enum hcl_compile_flag_t -{ - /* clear byte codes at the beginnign of hcl_compile() */ - HCL_COMPILE_CLEAR_CODE = (1 << 0), - - /* clear the top-level function block at the end of hcl_compile() */ - HCL_COMPILE_CLEAR_FUNBLK = (1 << 1) -}; -typedef enum hcl_compile_flag_t hcl_compile_flag_t; -#endif - -#define HCL_ERRMSG_CAPA (2048) - -struct hcl_code_t -{ - struct - { - hcl_oob_t* ptr; /* byte code array */ - hcl_oow_t len; - hcl_oow_t capa; - } bc; - - struct - { - hcl_oop_oop_t arr; /* literal array - not part of object memory */ - hcl_oow_t len; - } lit; - - /* the cumulative number of temporaries collected at the global(top-level) level */ - hcl_oow_t ngtmprs; - - /* array that holds the location of the byte code emitted */ - hcl_dbgi_t* dbgi; -}; -typedef struct hcl_code_t hcl_code_t; - -struct hcl_t -{ - hcl_oow_t _instsize; - hcl_mmgr_t* _mmgr; - hcl_cmgr_t* _cmgr; - - hcl_errnum_t errnum; - struct - { - union - { - hcl_ooch_t ooch[HCL_ERRMSG_CAPA]; - hcl_bch_t bch[HCL_ERRMSG_CAPA]; - hcl_uch_t uch[HCL_ERRMSG_CAPA]; - } tmpbuf; - #if defined(HCL_OOCH_IS_BCH) - hcl_uch_t xerrmsg[HCL_ERRMSG_CAPA]; - #else - hcl_bch_t xerrmsg[HCL_ERRMSG_CAPA * 2]; - #endif - hcl_ooch_t buf[HCL_ERRMSG_CAPA]; - hcl_oow_t len; - - } errmsg; - hcl_loc_t errloc; - int shuterr; - - struct - { - hcl_bitmask_t trait; - hcl_bitmask_t log_mask; - hcl_oow_t log_maxcapa; - hcl_bch_t* log_target_b; - hcl_uch_t* log_target_u; - hcl_oow_t dfl_symtab_size; - hcl_oow_t dfl_sysdic_size; - hcl_oow_t dfl_procstk_size; - void* mod_inctx; - - hcl_oocs_t mod[3]; - - #if defined(HCL_BUILD_DEBUG) - /* set automatically when trait is set */ - hcl_oow_t karatsuba_cutoff; - #endif - } option; - - hcl_vmprim_t vmprim; - - hcl_oow_t vm_checkbc_cb_count; - hcl_cb_t* cblist; - hcl_rbt_t modtab; /* primitive module table */ - - struct - { - hcl_ooch_t* ptr; - hcl_oow_t len; - hcl_oow_t capa; - hcl_bitmask_t last_mask; - hcl_bitmask_t default_type_mask; - } log; - /* ========================= */ - - hcl_heap_t* heap; - - /* ========================= */ - hcl_oop_t _undef; /* special internal value for uninitialized global variables */ - hcl_oop_t _nil; /* pointer to the nil object */ - hcl_oop_t _true; - hcl_oop_t _false; - - hcl_oop_dic_t symtab; /* system-wide symbol table. */ - hcl_oop_dic_t sysdic; /* system dictionary. */ - hcl_oop_process_scheduler_t processor; /* instance of ProcessScheduler */ - hcl_oop_process_t nil_process; /* instance of Process */ - - /* ============================================================= - * KERNEL CLASSES - * Be sure to Keep these kernel class pointers registered in the - * kernel_classes table in gc.c - * ============================================================= */ - hcl_oop_class_t c_apex; /* Apex */ - hcl_oop_class_t c_class; /* Class */ - hcl_oop_class_t c_undefobj; /* UndefinedObject */ - hcl_oop_class_t c_nilobj; /* NilObject */ -#if 0 - hcl_oop_class_t c_interface; /* Interface */ -#endif - hcl_oop_class_t c_object; /* Object */ - - hcl_oop_class_t c_collection; /* Collection */ - hcl_oop_class_t c_indexed_collection; /* IndexedCollection */ - hcl_oop_class_t c_fixed_sized_collection; /* FixedSizedCollection */ - hcl_oop_class_t c_string; /* String */ - hcl_oop_class_t c_byte_string; /* String */ - hcl_oop_class_t c_symbol; /* Symbol */ - hcl_oop_class_t c_array; /* Array */ - hcl_oop_class_t c_character_array; /* CharacterArray */ - hcl_oop_class_t c_byte_array; /* ByteArray */ - hcl_oop_class_t c_symtab; /* SymbolTable */ - hcl_oop_class_t c_dictionary; - hcl_oop_class_t c_cons; /* Cons */ - -#if 0 - hcl_oop_class_t c_namespace; /* Namespace */ - hcl_oop_class_t c_pool_dictionary; /* PoolDictionary */ -#endif - hcl_oop_class_t c_method_dictionary; /* MethodDictionary */ -#if 0 - hcl_oop_class_t c_method; /* CompiledMethod */ - hcl_oop_class_t c_methsig; /* MethodSignature */ -#endif - hcl_oop_class_t c_function; /* Function */ - hcl_oop_class_t c_primitive; /* Primitive */ - hcl_oop_class_t c_compiled_block; /* CompiledBlock */ - - hcl_oop_class_t c_block_context; /* BlockContext */ - hcl_oop_class_t c_process; /* Process */ - hcl_oop_class_t c_semaphore; /* Semaphore */ - hcl_oop_class_t c_semaphore_group; /* SemaphoreGroup */ - hcl_oop_class_t c_process_scheduler; /* ProcessScheduler */ - - hcl_oop_class_t c_error; /* Error */ - hcl_oop_class_t c_true; /* True */ - hcl_oop_class_t c_false; /* False */ - hcl_oop_class_t c_magnitude; /* Magnitude */ - hcl_oop_class_t c_character; /* Character */ - hcl_oop_class_t c_number; /* Number */ - hcl_oop_class_t c_small_integer; /* SmallInteger */ - - hcl_oop_class_t c_large_positive_integer; /* LargePositiveInteger */ - hcl_oop_class_t c_large_negative_integer; /* LargeNegativeInteger */ - hcl_oop_class_t c_fixed_point_decimal; /* FixedPointDecimal */ - - hcl_oop_class_t c_small_pointer; - hcl_oop_class_t c_large_pointer; - hcl_oop_class_t c_system; - - /* ============================================================================= */ - - /* pending asynchronous semaphores */ - hcl_oop_semaphore_t* sem_list; - hcl_oow_t sem_list_count; - hcl_oow_t sem_list_capa; - - /* semaphores sorted according to time-out. - * organize entries using heap as the earliest entry - * needs to be checked first */ - hcl_oop_semaphore_t* sem_heap; - hcl_oow_t sem_heap_count; - hcl_oow_t sem_heap_capa; - - /* semaphores for I/O handling. plain array */ - /*hcl_oop_semaphore_t* sem_io;*/ - hcl_sem_tuple_t* sem_io_tuple; - hcl_oow_t sem_io_tuple_count; - hcl_oow_t sem_io_tuple_capa; - - hcl_oow_t sem_io_count; - hcl_oow_t sem_io_wait_count; /* number of processes waiting on an IO semaphore */ - - hcl_ooi_t* sem_io_map; - hcl_oow_t sem_io_map_capa; - /* ============================================================================= */ - - hcl_oop_t* proc_map; - hcl_oow_t proc_map_capa; - hcl_oow_t proc_map_used; - hcl_ooi_t proc_map_free_first; - hcl_ooi_t proc_map_free_last; - - /* 2 tag bits(lo) + 2 extended tag bits(hi). not all slots are used - * because the 2 high extended bits are used only if the low tag bits - * are 3 */ - int tagged_brands[16]; - hcl_oop_class_t* tagged_classes[16]; /* this is a pointer to hcl_oop_class_t which is also a pointer */ - - - hcl_oop_t* volat_stack[256]; /* stack for temporaries */ - hcl_oow_t volat_count; - - /* == EXECUTION REGISTERS == */ - hcl_oop_function_t initial_function; - hcl_oop_context_t initial_context; /* fake initial context */ - hcl_oop_context_t active_context; - hcl_oop_function_t active_function; - hcl_oob_t* active_code; - hcl_ooi_t sp; - hcl_ooi_t ip; - int no_proc_switch; /* process switching disabled */ - int proc_switched; /* TODO: this is temporary. implement something else to skip immediate context switching */ - int switch_proc; - int abort_req; - hcl_ntime_t exec_start_time; - hcl_ntime_t exec_end_time; - hcl_oop_t last_retv; - /* == END EXECUTION REGISTERS == */ - - /* == BIGINT CONVERSION == */ - struct - { - int safe_ndigits; - hcl_oow_t multiplier; - } bigint[37]; - - struct - { - struct - { - hcl_ooch_t* ptr; - hcl_oow_t capa; - hcl_oow_t len; - } xbuf; - struct - { - hcl_liw_t* ptr; - hcl_oow_t capa; - } t; - } inttostr; - /* == END BIGINT CONVERSION == */ - - struct - { - struct - { - hcl_ooch_t* ptr; - hcl_oow_t capa; - hcl_oow_t len; - } xbuf; /* buffer to support sprintf */ - } sprintf; - - - hcl_code_t code; - - /* == PRINTER to udo stream == */ - struct - { - struct - { - void* ptr; - hcl_oow_t capa; - hcl_oow_t size; - } s; - hcl_oop_t e; /* top entry being printed */ - } p; - /* == PRINTER to udo stream == */ - - struct - { - hcl_gchdr_t* b; /* object blocks allocated */ - struct - { - hcl_gchdr_t* curr; - hcl_gchdr_t* prev; - } ls; - hcl_oow_t bsz; /* total size of object blocks allocated */ - hcl_oow_t threshold; - int lazy_sweep; - - struct - { - hcl_oop_t* ptr; - hcl_oow_t capa; - hcl_oow_t len; - hcl_oow_t max; - } stack; - - struct - { - hcl_ntime_t alloc; - hcl_ntime_t mark; - hcl_ntime_t sweep; - } stat; - } gci; - - struct - { - /* input handler */ - hcl_io_impl_t udi_rdr; - hcl_io_udiarg_t udi_arg; - - /* output handler */ - hcl_io_impl_t udo_wrtr; - hcl_io_udoarg_t udo_arg; - } io; - -#if defined(HCL_INCLUDE_COMPILER) - hcl_compiler_t* c; -#endif -}; - - -/* TODO: stack bound check when pushing */ -#define HCL_STACK_PUSH(hcl,v) \ - do { \ - if (HCL_UNLIKELY((hcl)->sp >= HCL_OOP_TO_SMOOI((hcl)->processor->active->st))) \ - { \ - hcl_seterrbfmt (hcl, HCL_EOOMEM, "process stack overflow"); \ - (hcl)->abort_req = -1; \ - } \ - (hcl)->sp = (hcl)->sp + 1; \ - (hcl)->processor->active->slot[(hcl)->sp] = v; \ - } while (0) - -#define HCL_STACK_GET(hcl,sp_) ((hcl)->processor->active->slot[sp_]) -#define HCL_STACK_SET(hcl,sp_,obj_) ((hcl)->processor->active->slot[sp_] = obj_) - -#define HCL_STACK_GETTOP(hcl) HCL_STACK_GET(hcl, (hcl)->sp) -#define HCL_STACK_SETTOP(hcl,obj_) HCL_STACK_SET(hcl, (hcl)->sp, obj_) - -/* [NOTE] - * the following macros don't commit the active stack pointer(hcl->sp) - * to hcl->processor->active->sp immediately. - */ -#define HCL_STACK_POP(hcl) ((hcl)->sp = (hcl)->sp - 1) -#define HCL_STACK_POPS(hcl,count) ((hcl)->sp = (hcl)->sp - (count)) -#define HCL_STACK_POP_TO(hcl,v) \ - do { \ - v = HCL_STACK_GETTOP(hcl); \ - HCL_STACK_POP (hcl); \ - } while(0) - -#define HCL_STACK_GET_ST(hcl) HCL_OOP_TO_SMOOI((hcl)->processor->active->st) -#define HCL_STACK_GET_SP(hcl) ((hcl)->sp) -#define HCL_STACK_IS_EMPTY(hcl) ((hcl)->sp <= -1) - -/* get the stack pointer of the argument at the given index */ -#define HCL_STACK_GETARGSP(hcl,nargs,idx) ((hcl)->sp - ((nargs) - (idx) - 1)) -/* get the argument at the given index */ -#define HCL_STACK_GETARG(hcl,nargs,idx) HCL_STACK_GET(hcl, (hcl)->sp - ((nargs) - (idx) - 1)) -/* get the receiver of a message */ -#define HCL_STACK_GETRCV(hcl,nargs) HCL_STACK_GET(hcl, (hcl)->sp - nargs - 1) -/* get the operator such as the called function/block/method */ -#define HCL_STACK_GETOP(hcl,nargs) HCL_STACK_GET(hcl, (hcl)->sp - nargs) - -/* change the receiver of a message */ -#define HCL_STACK_SETRCV(hcl,nargs,newrcv) HCL_STACK_SET(hcl, (hcl)->sp - nargs - 1, newrcv) - -/* - * ..... - * argument 1 - * argument 0 - * operator - * receiver - */ - -/* you can't access arguments and receiver after this macro. - * also you must not call this macro more than once */ - -#define HCL_STACK_SETRET(hcl,nargs,retv) \ - do { \ - HCL_STACK_POPS(hcl, nargs + 1); \ - HCL_STACK_SETTOP(hcl, (retv)); \ - } while(0) - -#define HCL_STACK_SETRETTOERRNUM(hcl,nargs) HCL_STACK_SETRET(hcl, nargs, HCL_ERROR_TO_OOP(hcl->errnum)) -#define HCL_STACK_SETRETTOERROR(hcl,nargs,ec) HCL_STACK_SETRET(hcl, nargs, HCL_ERROR_TO_OOP(ec)) - -/* ========================================================================= - * HCL ASSERTION - * ========================================================================= */ -#if defined(HCL_BUILD_RELEASE) -# define HCL_ASSERT(hcl,expr) ((void)0) -#else -# define HCL_ASSERT(hcl,expr) ((void)((expr) || ((hcl)->vmprim.assertfail (hcl, #expr, __FILE__, __LINE__), 0))) -#endif - -/* ========================================================================= - * HCL COMMON OBJECTS - * ========================================================================= */ -enum hcl_brand_t -{ - HCL_BRAND_SMOOI = 1, /* never used because a small integer is encoded in an object pointer */ - HCL_BRAND_SMPTR, - HCL_BRAND_ERROR, - HCL_BRAND_CHARACTER, - - HCL_BRAND_UNDEF, - HCL_BRAND_NIL, - HCL_BRAND_TRUE, - HCL_BRAND_FALSE, - - HCL_BRAND_PBIGINT, /* positive big integer */ - HCL_BRAND_NBIGINT, /* negative big integer */ - HCL_BRAND_CONS, - HCL_BRAND_ARRAY, - HCL_BRAND_BYTE_ARRAY, - HCL_BRAND_CHARACTER_ARRAY, - HCL_BRAND_SYMBOL, - HCL_BRAND_STRING, - HCL_BRAND_BYTE_STRING, - HCL_BRAND_DIC, - HCL_BRAND_FPDEC, /* fixed-point decimal */ - - HCL_BRAND_PRIM, - - HCL_BRAND_FUNCTION, - HCL_BRAND_BLOCK, - HCL_BRAND_CONTEXT, - HCL_BRAND_PROCESS, - HCL_BRAND_PROCESS_SCHEDULER, - HCL_BRAND_SEMAPHORE, - HCL_BRAND_SEMAPHORE_GROUP, - HCL_BRAND_CLASS, - HCL_BRAND_INSTANCE - - - /* [NOTE] each enumerator must not exceed the maximum value that can be - * represented with HCL_OBJ_FLAGS_BRAND_BITS bits */ -}; -typedef enum hcl_brand_t hcl_brand_t; - -/* TODO: this concode stuff has become mostly useless as the bits are never set as of now */ -enum hcl_concode_t -{ - /* these can be set in the CONCODE flags for a cons cell */ - /* if you have more than 16 elements, increase HCL_OBJ_FLAGS_CONCODE_BITS */ - - HCL_CONCODE_XLIST = 0, /* ( ) - executable list */ - HCL_CONCODE_MLIST, /* (obj:message) - message send list */ - HCL_CONCODE_ALIST, /* (a := 20) assignment list */ - HCL_CONCODE_BLIST, /* (10 + 20) expression with binary operator */ - HCL_CONCODE_BLOCK, /* { } */ - HCL_CONCODE_ARRAY, /* #[ ] */ - HCL_CONCODE_BYTEARRAY, /* #b[ ] */ - HCL_CONCODE_CHARARRAY, /* #c[ ] */ - HCL_CONCODE_DIC, /* #{ } */ - HCL_CONCODE_QLIST, /* #( ) - data list */ - HCL_CONCODE_TUPLE, /* [ ] */ - HCL_CONCODE_VLIST /* | | - symbol list */ -}; -typedef enum hcl_concode_t hcl_concode_t; - -#define HCL_IS_UNDEF(hcl,v) (v == (hcl)->_undef) -#define HCL_IS_NIL(hcl,v) (v == (hcl)->_nil) -#define HCL_IS_TRUE(hcl,v) (v == (hcl)->_true) -#define HCL_IS_FALSE(hcl,v) (v == (hcl)->_false) - -#define HCL_IS_SYMBOL(hcl,v) (HCL_CLASSOF(hcl,v) == (hcl_oop_t)(hcl)->c_symbol) -#define HCL_IS_STRING(hcl,v) (HCL_CLASSOF(hcl,v) == (hcl_oop_t)(hcl)->c_string) -#define HCL_IS_CONTEXT(hcl,v) (HCL_CLASSOF(hcl,v) == (hcl_oop_t)(hcl)->c_block_context) -#define HCL_IS_FUNCTION(hcl,v) (HCL_CLASSOF(hcl,v) == (hcl_oop_t)(hcl)->c_function) -#define HCL_IS_COMPILED_BLOCK(hcl,v) (HCL_CLASSOF(hcl,v) == (hcl_oop_t)(hcl)->c_compiled_block) -#define HCL_IS_CLASS(hcl,v) (HCL_CLASSOF(hcl,v) == (hcl_oop_t)(hcl)->c_class) -#define HCL_IS_INSTANCE(hcl,v) (HCL_OOP_IS_POINTER(v) && HCL_OBJ_GET_FLAGS_BRAND(v) == HCL_BRAND_INSTANCE) -#define HCL_IS_CONS(hcl,v) (HCL_CLASSOF(hcl,v) == (hcl_oop_t)(hcl)->c_cons) -#define HCL_IS_CONS_CONCODED(hcl,v,concode) (HCL_IS_CONS(hcl,v) && HCL_OBJ_GET_FLAGS_CONCODE(v) == (concode)) -#define HCL_IS_ARRAY(hcl,v) (HCL_CLASSOF(hcl,v) == (hcl_oop_t)(hcl)->c_array) -#define HCL_IS_BYTEARRAY(hcl,v) (HCL_CLASSOF(hcl,v) == (hcl_oop_t)(hcl)->c_byte_array) -#define HCL_IS_DIC(hcl,v) (HCL_CLASSOF(hcl,v) == (hcl_oop_t)(hcl)->c_dictionary) -#define HCL_IS_PRIM(hcl,v) (HCL_CLASSOF(hcl,v) == (hcl_oop_t)(hcl)->c_primitive) -#define HCL_IS_PBIGINT(hcl,v) (HCL_CLASSOF(hcl,v) == (hcl_oop_t)(hcl)->c_large_positive_integer) -#define HCL_IS_NBIGINT(hcl,v) (HCL_CLASSOF(hcl,v) == (hcl_oop_t)(hcl)->c_large_negative_integer) -#define HCL_IS_BIGINT(hcl,v) (HCL_OOP_IS_POINTER(v) && (HCL_OBJ_GET_CLASS(v) == (hcl_oop_t)(hcl)->c_large_positive_integer || HCL_OBJ_GET_CLASS(v) == (hcl_oop_t)(hcl)->c_large_negative_integer)) -#define HCL_IS_FPDEC(hcl,v) (HCL_CLASSOF(hcl,v) == (hcl_oop_t)(hcl)->c_fixed_point_decimal) -#define HCL_IS_PROCESS(hcl,v) (HCL_CLASSOF(hcl,v) == (hcl_oop_t)(hcl)->c_process) -#define HCL_IS_SEMAPHORE(hcl,v) (HCL_CLASSOF(hcl,v) == (hcl_oop_t)(hcl)->c_semaphore) -#define HCL_IS_SEMAPHORE_GROUP(hcl,v) (HCL_CLASSOF(hcl,v) == (hcl_oop_t)(hcl)->c_semaphore_group) - -#define HCL_CONS_CAR(v) (((hcl_cons_t*)(v))->car) -#define HCL_CONS_CDR(v) (((hcl_cons_t*)(v))->cdr) - -typedef int (*hcl_dic_walker_t) ( - hcl_t* hcl, - hcl_oop_dic_t dic, - hcl_oop_cons_t pair, - void* ctx -); - -typedef int (*hcl_xchg_reader_t) ( - hcl_t* hcl, - void* buf, - hcl_oow_t len, - void* ctx -); - -typedef int (*hcl_xchg_writer_t) ( - hcl_t* hcl, - const void* ptr, - hcl_oow_t len, - void* ctx -); - -#if defined(__cplusplus) -extern "C" { -#endif - -HCL_EXPORT hcl_t* hcl_open ( - hcl_mmgr_t* mmgr, - hcl_oow_t xtnsize, - const hcl_vmprim_t* vmprim, - hcl_errnum_t* errnum -); - -HCL_EXPORT hcl_t* hcl_openstdwithmmgr ( - hcl_mmgr_t* mmgr, - hcl_oow_t xtnsize, - hcl_errnum_t* errnum -); - -HCL_EXPORT hcl_t* hcl_openstd ( - hcl_oow_t xtnsize, - hcl_errnum_t* errnum -); - -HCL_EXPORT void hcl_close ( - hcl_t* vm -); - -HCL_EXPORT int hcl_init ( - hcl_t* hcl, - hcl_mmgr_t* mmgr, - const hcl_vmprim_t* vmprim -); - -HCL_EXPORT void hcl_fini ( - hcl_t* hcl -); - -HCL_EXPORT hcl_cmgr_t* hcl_getcmgr ( - hcl_t* hcl -); - -HCL_EXPORT void hcl_setcmgr ( - hcl_t* hcl, - hcl_cmgr_t* cmgr -); - -HCL_EXPORT hcl_errnum_t hcl_geterrnum ( - hcl_t* hcl -); - -HCL_EXPORT void hcl_seterrnum ( - hcl_t* hcl, - hcl_errnum_t errnum -); - -HCL_EXPORT void hcl_geterrloc ( - hcl_t* hcl, - hcl_loc_t* loc -); - -HCL_EXPORT void hcl_seterrbmsg ( - hcl_t* hcl, - hcl_errnum_t errnum, - const hcl_bch_t* errmsg -); - -HCL_EXPORT void hcl_seterrumsg ( - hcl_t* hcl, - hcl_errnum_t errnum, - const hcl_uch_t* errmsg -); - -HCL_EXPORT void hcl_seterrwithsyserr ( - hcl_t* hcl, - int syserr_type, - int syserr_code -); - -HCL_EXPORT void hcl_seterrbfmtwithsyserr ( - hcl_t* hcl, - int syserr_type, - int syserr_code, - const hcl_bch_t* fmt, - ... -); - -HCL_EXPORT void hcl_seterrufmtwithsyserr ( - hcl_t* hcl, - int syserr_type, - int syserr_code, - const hcl_uch_t* fmt, - ... -); - -HCL_EXPORT void hcl_seterrbfmt ( - hcl_t* hcl, - hcl_errnum_t errnum, - const hcl_bch_t* fmt, - ... -); - -HCL_EXPORT void hcl_seterrufmt ( - hcl_t* hcl, - hcl_errnum_t errnum, - const hcl_uch_t* fmt, - ... -); - -HCL_EXPORT void hcl_seterrbfmtloc ( - hcl_t* hcl, - hcl_errnum_t errnum, - const hcl_loc_t* loc, - const hcl_bch_t* fmt, - ... -); - -HCL_EXPORT void hcl_seterrufmtloc ( - hcl_t* hcl, - hcl_errnum_t errnum, - const hcl_loc_t* loc, - const hcl_uch_t* fmt, - ... -); - -HCL_EXPORT void hcl_seterrbfmtv ( - hcl_t* hcl, - hcl_errnum_t errnum, - const hcl_bch_t* fmt, - va_list ap -); - -HCL_EXPORT void hcl_seterrufmtv ( - hcl_t* hcl, - hcl_errnum_t errnum, - const hcl_uch_t* fmt, - va_list ap -); - - -HCL_EXPORT const hcl_ooch_t* hcl_geterrstr ( - hcl_t* hcl -); - -HCL_EXPORT const hcl_uch_t* hcl_geterrumsg ( - hcl_t* hcl -); - -HCL_EXPORT const hcl_bch_t* hcl_geterrbmsg ( - hcl_t* hcl -); - -HCL_EXPORT hcl_oow_t hcl_copyerrbmsg ( - hcl_t* hcl, - hcl_bch_t* buf, - hcl_oow_t len -); - -HCL_EXPORT hcl_oow_t hcl_copyerrumsg ( - hcl_t* hcl, - hcl_uch_t* buf, - hcl_oow_t len -); - -#if defined(HCL_OOCH_IS_UCH) -# define hcl_geterrmsg hcl_geterrumsg -# define hcl_seterrmsg hcl_seterrumsg -# define hcl_copyerrmsg hcl_copyerrumsg -#else -# define hcl_geterrmsg hcl_geterrbmsg -# define hcl_seterrmsg hcl_seterrbmsg -# define hcl_copyerrmsg hcl_copyerrbmsg -#endif - -HCL_EXPORT const hcl_ooch_t* hcl_backuperrmsg ( - hcl_t* hcl -); - -HCL_EXPORT int hcl_errnum_is_synerr ( - hcl_errnum_t errnum -); - -HCL_EXPORT const hcl_ooch_t* hcl_errnum_to_errstr ( - hcl_errnum_t errnum -); - -HCL_EXPORT const hcl_bch_t* hcl_errnum_to_errbcstr ( - hcl_errnum_t errnum, - hcl_bch_t* buf, - hcl_oow_t len -); - -HCL_EXPORT const hcl_uch_t* hcl_errnum_to_errucstr ( - hcl_errnum_t errnum, - hcl_uch_t* buf, - hcl_oow_t len -); - -/** - * The hcl_getoption() function gets the value of an option - * specified by \a id into the buffer pointed to by \a value. - * - * \return 0 on success, -1 on failure - */ -HCL_EXPORT int hcl_getoption ( - hcl_t* hcl, - hcl_option_t id, - void* value -); - -/** - * The hcl_setoption() function sets the value of an option - * specified by \a id to the value pointed to by \a value. - * - * \return 0 on success, -1 on failure - */ -HCL_EXPORT int hcl_setoption ( - hcl_t* hcl, - hcl_option_t id, - const void* value -); - -HCL_EXPORT hcl_cb_t* hcl_regcb ( - hcl_t* hcl, - hcl_cb_t* tmpl -); - -HCL_EXPORT void hcl_deregcb ( - hcl_t* hcl, - hcl_cb_t* cb -); - -/** - * The hcl_gc() function performs garbage collection. - * It is not affected by #HCL_TRAIT_NOGC. - */ -HCL_EXPORT void hcl_gc ( - hcl_t* hcl, - int full -); - - -/** - * The hcl_moveoop() function is used to move a live object to a new - * location in hcl_gc(). When hcl_gc() invokes registered gc callbacks, - * you may call this function to protect extra objects you might have - * allocated manually. - */ -hcl_oop_t hcl_moveoop ( - hcl_t* hcl, - hcl_oop_t oop -); - -HCL_EXPORT hcl_oop_t hcl_shallowcopy ( - hcl_t* hcl, - hcl_oop_t oop -); - -/** - * The hcl_ignite() function creates key initial objects. - */ -HCL_EXPORT int hcl_ignite ( - hcl_t* hcl, - hcl_oow_t heapsize -); - -HCL_EXPORT int hcl_addbuiltinprims ( - hcl_t* hcl -); - -/** - * The hcl_execute() function executes an activated context. - */ -HCL_EXPORT hcl_oop_t hcl_execute ( - hcl_t* hcl -); - -HCL_EXPORT void hcl_abort ( - hcl_t* hcl -); - - -#if defined(HCL_HAVE_INLINE) - static HCL_INLINE void hcl_switchprocess (hcl_t* hcl) { hcl->switch_proc = 1; } -#else -# define hcl_switchprocess(hcl) ((hcl)->switch_proc = 1) -#endif - -HCL_EXPORT void hcl_setbasesrloc ( - hcl_t* hcl, - hcl_oow_t line, - hcl_oow_t colm -); - -/* if you should read charcters from the input stream before hcl_read(), - * you can call hcl_readbasesrchar() */ -HCL_EXPORT hcl_lxc_t* hcl_readbasesrchar ( - hcl_t* hcl -); - -HCL_EXPORT int hcl_attachccio ( - hcl_t* hcl, - hcl_io_impl_t cci_rdr -); - -HCL_EXPORT void hcl_detachccio ( - hcl_t* hcl -); - -HCL_EXPORT int hcl_attachudio ( - hcl_t* hcl, - hcl_io_impl_t udi_rdr, - hcl_io_impl_t udo_wrtr -); - -HCL_EXPORT void hcl_detachudio ( - hcl_t* hcl -); - - -HCL_EXPORT int hcl_attachcciostdwithucstr ( - hcl_t* hcl, - const hcl_uch_t* cci_file -); - -HCL_EXPORT int hcl_attachcciostdwithbcstr ( - hcl_t* hcl, - const hcl_bch_t* cci_file -); - -HCL_EXPORT int hcl_attachudiostdwithucstr ( - hcl_t* hcl, - const hcl_uch_t* udi_file, - const hcl_uch_t* udo_file -); - -HCL_EXPORT int hcl_attachudiostdwithbcstr ( - hcl_t* hcl, - const hcl_bch_t* udi_file, - const hcl_bch_t* udo_file -); - -HCL_EXPORT void hcl_detachio ( - hcl_t* hcl -); - -HCL_EXPORT void hcl_flushudio ( - hcl_t* hcl -); - -HCL_EXPORT int hcl_print ( - hcl_t* hcl, - hcl_oop_t obj -); - -HCL_EXPORT hcl_ooi_t hcl_proutbfmt ( - hcl_t* hcl, - hcl_bitmask_t mask, - const hcl_bch_t* fmt, - ... -); - -HCL_EXPORT hcl_ooi_t hcl_proutufmt ( - hcl_t* hcl, - hcl_bitmask_t mask, - const hcl_uch_t* fmt, - ... -); - -#if defined(HCL_INCLUDE_COMPILER) - -HCL_EXPORT void hcl_freecnode ( - hcl_t* hcl, - hcl_cnode_t* cnode -); - -HCL_EXPORT int hcl_beginfeed ( - hcl_t* hcl, - hcl_on_cnode_t on_cnode -); - -HCL_EXPORT int hcl_feed ( - hcl_t* hcl, - const hcl_ooch_t* data, - hcl_oow_t len -); - -HCL_EXPORT int hcl_feeduchars ( - hcl_t* hcl, - const hcl_uch_t* data, - hcl_oow_t len -); - -HCL_EXPORT int hcl_feedbchars ( - hcl_t* hcl, - const hcl_bch_t* data, - hcl_oow_t len -); - -HCL_EXPORT int hcl_feedpending ( - hcl_t* hcl -); - -HCL_EXPORT void hcl_resetfeed ( - hcl_t* hcl -); - -HCL_EXPORT void hcl_resetfeedloc ( - hcl_t* hcl -); - -HCL_EXPORT void hcl_getfeedloc ( - hcl_t* hcl, - hcl_loc_t* loc -); - -HCL_EXPORT int hcl_endfeed ( - hcl_t* hcl -); - -HCL_EXPORT int hcl_compile ( - hcl_t* hcl, - hcl_cnode_t* obj, - int flags -); -#endif - -HCL_EXPORT int hcl_addliteraltocode ( - hcl_t* hcl, - hcl_code_t* code, - hcl_oop_t obj, - hcl_oow_t lfbase, - hcl_oow_t* index -); - -/** - * The hcl_brewcode() initializes the structure pointed to by \a code partially or entirely. - * The part already initialized is not destroyed and/or reinitialized. - */ -HCL_EXPORT int hcl_brewcode ( - hcl_t* hcl, - hcl_code_t* code -); - -/** - * The hcl_purgecode() function cleans up the data held in code space memory - * pointed to by \a code. - */ -HCL_EXPORT void hcl_purgecode ( - hcl_t* hcl, - hcl_code_t* code -); - -/** - * The hcl_decode() function decodes instructions from the position - * \a start to the position \a end - 1, and prints the decoded instructions - * in the textual form. - */ -HCL_EXPORT int hcl_decode ( - hcl_t* hcl, - const hcl_code_t* code, - hcl_oow_t start, - hcl_oow_t end -); - -/** - * The hcl_resetcode() function some internal states back to the initial state. - * The affected internal states include byte code buffer, literal frame, - * ordinary global variables. You should take extra precaution as it is - * a risky function. For instance, a global variable inserted manually - * with hcl_putatsysdic() gets deleted if the kernel bit is not set on - * the variable symbol. - */ -HCL_EXPORT void hcl_resetcode ( - hcl_t* hcl -); - -HCL_EXPORT void hcl_clearcode ( - hcl_t* hcl -); - -#define HCL_XTN(hcl) ((void*)((hcl_uint8_t*)hcl + ((hcl_t*)hcl)->_instsize)) -#define HCL_MMGR(hcl) (((hcl_t*)(hcl))->_mmgr) -#define HCL_CMGR(hcl) (((hcl_t*)(hcl))->_cmgr) -#define HCL_ERRNUM(hcl) (((hcl_t*)(hcl))->errnum) - -void* hcl_getxtn ( - hcl_t* hcl -); - - -#if defined(HCL_HAVE_INLINE) -static HCL_INLINE hcl_code_t* hcl_getcode (hcl_t* hcl) { return &hcl->code; } -static HCL_INLINE hcl_oob_t* hcl_getbcptr (hcl_t* hcl) { return hcl->code.bc.ptr; } -static HCL_INLINE hcl_oow_t hcl_getbclen (hcl_t* hcl) { return hcl->code.bc.len; } -static HCL_INLINE hcl_oow_t hcl_getlflen (hcl_t* hcl) { return hcl->code.lit.len; } -static HCL_INLINE hcl_oow_t hcl_getngtmprs (hcl_t* hcl) { return hcl->code.ngtmprs; } -static HCL_INLINE hcl_ooi_t hcl_getip (hcl_t* hcl) { return hcl->ip; } -#else -# define hcl_getcode(hcl) (&(hcl)->code) -# define hcl_getbcptr(hcl) ((hcl)->code.bc.ptr) -# define hcl_getbclen(hcl) ((hcl)->code.bc.len) -# define hcl_getlflen(hcl) ((hcl)->code.lit.len) -# define hcl_getngtmprs(hcl) ((hcl)->code.ngtmprs) -# define hcl_getip(hcl) ((hcl)->ip) -#endif - -/* ========================================================================= - * SYNTAX ERROR HANDLING - * ========================================================================= */ -HCL_EXPORT void hcl_getsynerr ( - hcl_t* hcl, - hcl_synerr_t* synerr -); - -HCL_EXPORT hcl_synerrnum_t hcl_getsynerrnum ( - hcl_t* hcl -); - -HCL_EXPORT void hcl_setsynerrbfmt ( - hcl_t* hcl, - hcl_synerrnum_t num, - const hcl_loc_t* loc, - const hcl_oocs_t* tgt, - const hcl_bch_t* msgfmt, - ... -); - -HCL_EXPORT void hcl_setsynerrufmt ( - hcl_t* hcl, - hcl_synerrnum_t num, - const hcl_loc_t* loc, - const hcl_oocs_t* tgt, - const hcl_uch_t* msgfmt, - ... -); - -#if defined(HCL_HAVE_INLINE) -static HCL_INLINE void hcl_setsynerr (hcl_t* hcl, hcl_synerrnum_t num, const hcl_loc_t* loc, const hcl_oocs_t* tgt) -{ - hcl_setsynerrbfmt (hcl, num, loc, tgt, HCL_NULL); -} -#else -# define hcl_setsynerr(hcl,num,loc,tgt) hcl_setsynerrbfmt(hcl,num,loc,tgt,HCL_NULL) -#endif - -/* ========================================================================= - * TEMPORARY OOP MANAGEMENT FUNCTIONS - * ========================================================================= */ -HCL_EXPORT void hcl_pushvolat ( - hcl_t* hcl, - hcl_oop_t* oop_ptr -); - -HCL_EXPORT void hcl_popvolat ( - hcl_t* hcl -); - -HCL_EXPORT void hcl_popvolats ( - hcl_t* hcl, - hcl_oow_t count -); - -/* ========================================================================= - * SYSTEM MEMORY MANAGEMENT FUCNTIONS VIA MMGR - * ========================================================================= */ -HCL_EXPORT void* hcl_allocmem ( - hcl_t* hcl, - hcl_oow_t size -); - -HCL_EXPORT void* hcl_callocmem ( - hcl_t* hcl, - hcl_oow_t size -); - -HCL_EXPORT void* hcl_reallocmem ( - hcl_t* hcl, - void* ptr, - hcl_oow_t size -); - -HCL_EXPORT void hcl_freemem ( - hcl_t* hcl, - void* ptr -); - - -/* ========================================================================= - * PRIMITIVE FUNCTION MANIPULATION - * ========================================================================= */ -HCL_EXPORT hcl_pfbase_t* hcl_findpfbase ( - hcl_t* hcl, - hcl_pfinfo_t* pfinfo, - hcl_oow_t pfcount, - const hcl_ooch_t* name, - hcl_oow_t namelen -); - - -/* ========================================================================= - * LOGGING - * ========================================================================= */ - -HCL_EXPORT hcl_ooi_t hcl_logbfmt ( - hcl_t* hcl, - hcl_bitmask_t mask, - const hcl_bch_t* fmt, - ... -); - -HCL_EXPORT hcl_ooi_t hcl_logbfmtv ( - hcl_t* hcl, - hcl_bitmask_t mask, - const hcl_bch_t* fmt, - va_list ap -); - -HCL_EXPORT hcl_ooi_t hcl_logufmt ( - hcl_t* hcl, - hcl_bitmask_t mask, - const hcl_uch_t* fmt, - ... -); - -HCL_EXPORT hcl_ooi_t hcl_logufmtv ( - hcl_t* hcl, - hcl_bitmask_t mask, - const hcl_uch_t* fmt, - va_list ap -); - -#if defined(HCL_OOCH_IS_UCH) -# define hcl_logoofmt hcl_logufmt -# define hcl_logoofmtv hcl_logufmtv -#else -# define hcl_logoofmt hcl_logbfmt -# define hcl_logoofmtv hcl_logbfmtv -#endif - -HCL_EXPORT hcl_ooi_t hcl_prbfmt ( - hcl_t* hcl, - const hcl_bch_t* fmt, - ... -); - -HCL_EXPORT hcl_ooi_t hcl_prbfmtv ( - hcl_t* hcl, - const hcl_bch_t* fmt, - va_list ap -); - -HCL_EXPORT hcl_ooi_t hcl_prufmt ( - hcl_t* hcl, - const hcl_uch_t* fmt, - ... -); - -HCL_EXPORT hcl_ooi_t hcl_prufmtv ( - hcl_t* hcl, - const hcl_uch_t* fmt, - va_list ap -); - -#if defined(HCL_OOCH_IS_UCH) -# define hcl_proofmt hcl_prufmt -# define hcl_proofmtv hcl_prufmtv -#else -# define hcl_proofmt hcl_prbfmt -# define hcl_proofmtv hcl_prbfmtv -#endif - - -/* ========================================================================= - * STRING FORMATTING - * ========================================================================= */ - -HCL_EXPORT hcl_oow_t hcl_vfmttoucstr ( - hcl_t* hcl, - hcl_uch_t* buf, - hcl_oow_t bufsz, - const hcl_uch_t* fmt, - va_list ap -); - -HCL_EXPORT hcl_oow_t hcl_fmttoucstr ( - hcl_t* hcl, - hcl_uch_t* buf, - hcl_oow_t bufsz, - const hcl_uch_t* fmt, - ... -); - -HCL_EXPORT hcl_oow_t hcl_vfmttobcstr ( - hcl_t* hcl, - hcl_bch_t* buf, - hcl_oow_t bufsz, - const hcl_bch_t* fmt, - va_list ap -); - -HCL_EXPORT hcl_oow_t hcl_fmttobcstr ( - hcl_t* hcl, - hcl_bch_t* buf, - hcl_oow_t bufsz, - const hcl_bch_t* fmt, - ... -); - -#if defined(HCL_OOCH_IS_UCH) -# define hcl_vfmttooocstr hcl_vfmttoucstr -# define hcl_fmttooocstr hcl_fmttoucstr -#else -# define hcl_vfmttooocstr hcl_vfmttobcstr -# define hcl_fmttooocstr hcl_fmttobcstr -#endif - - -/* ========================================================================= - * OBJECT MANAGEMENT - * ========================================================================= */ -HCL_EXPORT hcl_oop_t hcl_hatchundef ( - hcl_t* hcl -); - -HCL_EXPORT hcl_oop_t hcl_hatchnil ( - hcl_t* hcl -); - -HCL_EXPORT hcl_oop_t hcl_instantiate ( - hcl_t* hcl, - hcl_oop_class_t _class, - const void* vptr, - hcl_oow_t vlen -); - -HCL_EXPORT hcl_oop_t hcl_makecons ( - hcl_t* hcl, - hcl_oop_t car, - hcl_oop_t cdr -); - -HCL_EXPORT hcl_oop_t hcl_makearray ( - hcl_t* hcl, - hcl_oow_t len -); - -HCL_EXPORT hcl_oop_t hcl_makechararray ( - hcl_t* hcl, - const hcl_ooch_t* ptr, - hcl_oow_t len -); - -HCL_EXPORT hcl_oop_t hcl_makebytearray ( - hcl_t* hcl, - const hcl_oob_t* ptr, - hcl_oow_t len -); - -HCL_EXPORT hcl_oop_t hcl_makebytestringwithbytes ( - hcl_t* hcl, - const hcl_oob_t* ptr, - hcl_oow_t len -); - -HCL_EXPORT hcl_oop_t hcl_makebytestring ( - hcl_t* hcl, - const hcl_ooch_t* ptr, - hcl_oow_t len -); - -HCL_EXPORT hcl_oop_t hcl_makestring ( - hcl_t* hcl, - const hcl_ooch_t* ptr, - hcl_oow_t len -); - -HCL_EXPORT hcl_oop_t hcl_makefpdec ( - hcl_t* hcl, - hcl_oop_t value, - hcl_ooi_t scale -); - -HCL_EXPORT hcl_oop_t hcl_makedic ( - hcl_t* hcl, - hcl_oow_t inisize /* initial bucket size */ -); - -HCL_EXPORT hcl_oop_t hcl_makeclass ( - hcl_t* hcl, - hcl_oop_t name, - hcl_oop_t superclass, - hcl_ooi_t spec, - hcl_ooi_t selfspec, - hcl_oop_t ivars_str, - hcl_oop_t cvars_str -); - -HCL_EXPORT void hcl_freengcobj ( - hcl_t* hcl, - hcl_oop_t obj -); - -HCL_EXPORT hcl_oop_t hcl_makengcbytearray ( - hcl_t* hcl, - const hcl_oob_t* ptr, - hcl_oow_t len -); - -HCL_EXPORT hcl_oop_t hcl_remakengcbytearray ( - hcl_t* hcl, - hcl_oop_t obj, - hcl_oow_t newsz -); - -HCL_EXPORT hcl_oop_t hcl_makengcarray ( - hcl_t* hcl, - hcl_oow_t len -); - -HCL_EXPORT hcl_oop_t hcl_remakengcarray ( - hcl_t* hcl, - hcl_oop_t obj, - hcl_oow_t newsz -); - -HCL_EXPORT hcl_oop_t hcl_makeprim ( - hcl_t* hcl, - hcl_pfimpl_t primimpl, - hcl_oow_t minargs, - hcl_oow_t maxargs, - hcl_mod_t* mod -); - -HCL_EXPORT hcl_oop_t hcl_oowtoint ( - hcl_t* hcl, - hcl_oow_t w -); - -HCL_EXPORT hcl_oop_t hcl_ooitoint ( - hcl_t* hcl, - hcl_ooi_t i -); - -HCL_EXPORT int hcl_inttooow_noseterr ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oow_t* w -); - -HCL_EXPORT int hcl_inttooow ( - hcl_t* hcl, - hcl_oop_t x, - hcl_oow_t* w -); - -HCL_EXPORT int hcl_inttoooi_noseterr ( - hcl_t* hcl, - hcl_oop_t x, - hcl_ooi_t* i -); - -HCL_EXPORT int hcl_inttoooi ( - hcl_t* hcl, - hcl_oop_t x, - hcl_ooi_t* i -); - -#if (HCL_SIZEOF_UINTMAX_T == HCL_SIZEOF_OOW_T) -# define hcl_inttouintmax_noseterr hcl_inttooow_noseterr -# define hcl_inttouintmax hcl_inttooow -# define hcl_inttointmax_noseterr hcl_inttoooi_noseterr -# define hcl_inttointmax hcl_inttoooi -# define hcl_uintmaxtoint hcl_oowtoint -# define hcl_intmaxtoint hcl_ooitoint -#else - -HCL_EXPORT hcl_oop_t hcl_intmaxtoint ( - hcl_t* hcl, - hcl_intmax_t i -); - -HCL_EXPORT hcl_oop_t hcl_uintmaxtoint ( - hcl_t* hcl, - hcl_uintmax_t i -); - -HCL_EXPORT int hcl_inttouintmax_noseterr ( - hcl_t* hcl, - hcl_oop_t x, - hcl_uintmax_t* w -); - -HCL_EXPORT int hcl_inttouintmax ( - hcl_t* hcl, - hcl_oop_t x, - hcl_uintmax_t* w -); - -HCL_EXPORT int hcl_inttointmax_noseterr ( - hcl_t* hcl, - hcl_oop_t x, - hcl_intmax_t* i -); - -HCL_EXPORT int hcl_inttointmax ( - hcl_t* hcl, - hcl_oop_t x, - hcl_intmax_t* i -); -#endif - -/* ========================================================================= - * CONS OBJECT UTILITIES - * ========================================================================= */ -HCL_EXPORT hcl_oow_t hcl_countcons ( - hcl_t* hcl, - hcl_oop_t cons -); - - -HCL_EXPORT hcl_oop_t hcl_getlastconscdr ( - hcl_t* hcl, - hcl_oop_t cons -); - -HCL_EXPORT hcl_oop_t hcl_reversecons ( - hcl_t* hcl, - hcl_oop_t cons -); - - -/* ========================================================================= - * CODE MARSHALING/UNMARSHALING - * ========================================================================= */ -HCL_EXPORT int hcl_marshalcode ( - hcl_t* hcl, - const hcl_code_t* code, - hcl_xchg_writer_t wrtr, - void* ctx -); - -HCL_EXPORT int hcl_unmarshalcode ( - hcl_t* hcl, - hcl_code_t* code, - hcl_xchg_reader_t rdr, - void* ctx -); - -HCL_EXPORT int hcl_marshalcodetomem ( - hcl_t* hcl, - const hcl_code_t* code, - hcl_ptlc_t* dst -); - -HCL_EXPORT int hcl_unmarshalcodefrommem ( - hcl_t* hcl, - hcl_code_t* code, - const hcl_ptl_t* src -); - -/* ========================================================================= - * DICTIONARY ACCESS FUNCTIONS - * ========================================================================= */ -HCL_EXPORT hcl_oop_cons_t hcl_putatsysdic ( - hcl_t* hcl, - hcl_oop_t key, - hcl_oop_t value -); - -HCL_EXPORT hcl_oop_cons_t hcl_getatsysdic ( - hcl_t* hcl, - hcl_oop_t key -); - -HCL_EXPORT hcl_oop_cons_t hcl_lookupsysdicforsymbol ( - hcl_t* hcl, - const hcl_oocs_t* name -); - -HCL_EXPORT hcl_oop_cons_t hcl_lookupsysdicforsymbol_noseterr ( - hcl_t* hcl, - const hcl_oocs_t* name -); - -HCL_EXPORT int hcl_zapatsysdic ( - hcl_t* hcl, - hcl_oop_t key -); - -HCL_EXPORT hcl_oop_cons_t hcl_lookupdicforsymbol ( - hcl_t* hcl, - hcl_oop_dic_t dic, - const hcl_oocs_t* name -); - -HCL_EXPORT hcl_oop_cons_t hcl_lookupdicforsymbol_noseterr ( - hcl_t* hcl, - hcl_oop_dic_t dic, - const hcl_oocs_t* name -); - -HCL_EXPORT hcl_oop_cons_t hcl_putatdic ( - hcl_t* hcl, - hcl_oop_dic_t dic, - hcl_oop_t key, - hcl_oop_t value -); - -HCL_EXPORT hcl_oop_cons_t hcl_getatdic ( - hcl_t* hcl, - hcl_oop_dic_t dic, - hcl_oop_t key -); - - -HCL_EXPORT int hcl_zapatdic ( - hcl_t* hcl, - hcl_oop_dic_t dic, - hcl_oop_t key -); - -HCL_EXPORT int hcl_walkdic ( - hcl_t* hcl, - hcl_oop_dic_t dic, - hcl_dic_walker_t walker, - void* ctx -); - - - -/* ========================================================================= - * OBJECT HASHING AND COMPARISION - * ========================================================================= */ - -HCL_EXPORT int hcl_hashobj ( - hcl_t* hcl, - hcl_oop_t obj, - hcl_oow_t* xhv -); - -HCL_EXPORT int hcl_equalobjs ( - hcl_t* hcl, - hcl_oop_t rcv, - hcl_oop_t arg -); - - -/* ========================================================================= - * STRING ENCODING CONVERSION - * ========================================================================= */ - -#if defined(HCL_OOCH_IS_UCH) -# define hcl_convootobchars(hcl,oocs,oocslen,bcs,bcslen) hcl_convutobchars(hcl,oocs,oocslen,bcs,bcslen) -# define hcl_convbtooochars(hcl,bcs,bcslen,oocs,oocslen) hcl_convbtouchars(hcl,bcs,bcslen,oocs,oocslen) -# define hcl_convootobcstr(hcl,oocs,oocslen,bcs,bcslen) hcl_convutobcstr(hcl,oocs,oocslen,bcs,bcslen) -# define hcl_convbtooocstr(hcl,bcs,bcslen,oocs,oocslen) hcl_convbtoucstr(hcl,bcs,bcslen,oocs,oocslen) -#else -# define hcl_convootouchars(hcl,oocs,oocslen,ucs,ucslen) hcl_convbtouchars(hcl,oocs,oocslen,ucs,ucslen) -# define hcl_convutooochars(hcl,ucs,ucslen,oocs,oocslen) hcl_convutobchars(hcl,ucs,ucslen,oocs,oocslen) -# define hcl_convootoucstr(hcl,oocs,oocslen,ucs,ucslen) hcl_convbtoucstr(hcl,oocs,oocslen,ucs,ucslen) -# define hcl_convutooocstr(hcl,ucs,ucslen,oocs,oocslen) hcl_convutobcstr(hcl,ucs,ucslen,oocs,oocslen) -#endif - -HCL_EXPORT int hcl_convbtouchars ( - hcl_t* hcl, - const hcl_bch_t* bcs, - hcl_oow_t* bcslen, - hcl_uch_t* ucs, - hcl_oow_t* ucslen -); - -HCL_EXPORT int hcl_convutobchars ( - hcl_t* hcl, - const hcl_uch_t* ucs, - hcl_oow_t* ucslen, - hcl_bch_t* bcs, - hcl_oow_t* bcslen -); - - -/** - * The hcl_convbtoucstr() function converts a null-terminated byte string - * to a wide string. - */ -HCL_EXPORT int hcl_convbtoucstr ( - hcl_t* hcl, - const hcl_bch_t* bcs, - hcl_oow_t* bcslen, - hcl_uch_t* ucs, - hcl_oow_t* ucslen -); - - -/** - * The hcl_convutobcstr() function converts a null-terminated wide string - * to a byte string. - */ -HCL_EXPORT int hcl_convutobcstr ( - hcl_t* hcl, - const hcl_uch_t* ucs, - hcl_oow_t* ucslen, - hcl_bch_t* bcs, - hcl_oow_t* bcslen -); - -#if defined(HCL_OOCH_IS_UCH) -# define hcl_dupootobcharswithheadroom(hcl,hrb,oocs,oocslen,bcslen) hcl_duputobcharswithheadroom(hcl,hrb,oocs,oocslen,bcslen) -# define hcl_dupbtooocharswithheadroom(hcl,hrb,bcs,bcslen,oocslen) hcl_dupbtoucharswithheadroom(hcl,hrb,bcs,bcslen,oocslen) -# define hcl_dupootobchars(hcl,oocs,oocslen,bcslen) hcl_duputobchars(hcl,oocs,oocslen,bcslen) -# define hcl_dupbtooochars(hcl,bcs,bcslen,oocslen) hcl_dupbtouchars(hcl,bcs,bcslen,oocslen) - -# define hcl_dupootobcstrwithheadroom(hcl,hrb,oocs,bcslen) hcl_duputobcstrwithheadroom(hcl,hrb,oocs,bcslen) -# define hcl_dupbtooocstrwithheadroom(hcl,hrb,bcs,oocslen) hcl_dupbtoucstrwithheadroom(hcl,hrb,bcs,oocslen) -# define hcl_dupootobcstr(hcl,oocs,bcslen) hcl_duputobcstr(hcl,oocs,bcslen) -# define hcl_dupbtooocstr(hcl,bcs,oocslen) hcl_dupbtoucstr(hcl,bcs,oocslen) - -# define hcl_dupootoucstr(hcl,oocs,ucslen) hcl_dupucstr(hcl,oocs,ucslen) -# define hcl_duputooocstr(hcl,ucs,oocslen) hcl_dupucstr(hcl,ucs,oocslen) -#else -# define hcl_dupootoucharswithheadroom(hcl,hrb,oocs,oocslen,ucslen) hcl_dupbtoucharswithheadroom(hcl,hrb,oocs,oocslen,ucslen) -# define hcl_duputooocharswithheadroom(hcl,hrb,ucs,ucslen,oocslen) hcl_duputobcharswithheadroom(hcl,hrb,ucs,ucslen,oocslen) -# define hcl_dupootouchars(hcl,oocs,oocslen,ucslen) hcl_dupbtouchars(hcl,oocs,oocslen,ucslen) -# define hcl_duputooochars(hcl,ucs,ucslen,oocslen) hcl_duputobchars(hcl,ucs,ucslen,oocslen) - -# define hcl_dupootoucstrwithheadroom(hcl,hrb,oocs,ucslen) hcl_dupbtoucstrwithheadroom(hcl,hrb,oocs,ucslen) -# define hcl_duputooocstrwithheadroom(hcl,hrb,ucs,oocslen) hcl_duputobcstrwithheadroom(hcl,hrb,ucs,oocslen) -# define hcl_dupootoucstr(hcl,oocs,ucslen) hcl_dupbtoucstr(hcl,oocs,ucslen) -# define hcl_duputooocstr(hcl,ucs,oocslen) hcl_duputobcstr(hcl,ucs,oocslen) - -# define hcl_dupootobcstr(hcl,oocs,bcslen) hcl_dupbcstr(hcl,oocs,bcslen) -# define hcl_dupbtooocstr(hcl,bcs,oocslen) hcl_dupbcstr(hcl,bcs,oocslen) -#endif - - -HCL_EXPORT hcl_uch_t* hcl_dupbtoucharswithheadroom ( - hcl_t* hcl, - hcl_oow_t headroom_bytes, - const hcl_bch_t* bcs, - hcl_oow_t bcslen, - hcl_oow_t* ucslen -); - -HCL_EXPORT hcl_bch_t* hcl_duputobcharswithheadroom ( - hcl_t* hcl, - hcl_oow_t headroom_bytes, - const hcl_uch_t* ucs, - hcl_oow_t ucslen, - hcl_oow_t* bcslen -); - -HCL_EXPORT hcl_uch_t* hcl_dupbtouchars ( - hcl_t* hcl, - const hcl_bch_t* bcs, - hcl_oow_t bcslen, - hcl_oow_t* ucslen -); - -HCL_EXPORT hcl_bch_t* hcl_duputobchars ( - hcl_t* hcl, - const hcl_uch_t* ucs, - hcl_oow_t ucslen, - hcl_oow_t* bcslen -); - - -HCL_EXPORT hcl_uch_t* hcl_dupbtoucstrwithheadroom ( - hcl_t* hcl, - hcl_oow_t headroom_bytes, - const hcl_bch_t* bcs, - hcl_oow_t* ucslen -); - -HCL_EXPORT hcl_bch_t* hcl_duputobcstrwithheadroom ( - hcl_t* hcl, - hcl_oow_t headroom_bytes, - const hcl_uch_t* ucs, - hcl_oow_t* bcslen -); - -HCL_EXPORT hcl_uch_t* hcl_dupbtoucstr ( - hcl_t* hcl, - const hcl_bch_t* bcs, - hcl_oow_t* ucslen /* optional: length of returned string */ -); - -HCL_EXPORT hcl_bch_t* hcl_duputobcstr ( - hcl_t* hcl, - const hcl_uch_t* ucs, - hcl_oow_t* bcslen /* optional: length of returned string */ -); - - -#if defined(HCL_OOCH_IS_UCH) -# define hcl_dupoochars(hcl,oocs,oocslen) hcl_dupuchars(hcl,oocs,oocslen) -# define hcl_dupoocstr(hcl,oocs,oocslen) hcl_dupucstr(hcl,oocs,oocslen) -#else -# define hcl_dupoochars(hcl,oocs,oocslen) hcl_dupbchars(hcl,oocs,oocslen) -# define hcl_dupoocstr(hcl,oocs,oocslen) hcl_dupbcstr(hcl,oocs,oocslen) -#endif - -HCL_EXPORT hcl_uch_t* hcl_dupuchars ( - hcl_t* hcl, - const hcl_uch_t* ucs, - hcl_oow_t ucslen -); - -HCL_EXPORT hcl_bch_t* hcl_dupbchars ( - hcl_t* hcl, - const hcl_bch_t* bcs, - hcl_oow_t bcslen -); - -HCL_EXPORT hcl_uch_t* hcl_dupucstr ( - hcl_t* hcl, - const hcl_uch_t* ucs, - hcl_oow_t* ucslen -); - -HCL_EXPORT hcl_bch_t* hcl_dupbcstr ( - hcl_t* hcl, - const hcl_bch_t* bcs, - hcl_oow_t* bcslen -); - -/* ========================================================================= - * ASSERTION SUPPORT - * ========================================================================= */ -HCL_EXPORT void hcl_assertfailed ( - hcl_t* hcl, - const hcl_bch_t* expr, - const hcl_bch_t* file, - hcl_oow_t line -); - - -/* ========================================================================= - * HELPERS - * ========================================================================= */ -HCL_EXPORT void hcl_start_ticker ( - void -); - -HCL_EXPORT void hcl_stop_ticker ( - void -); - -HCL_EXPORT void hcl_catch_termreq ( - void -); - -HCL_EXPORT void hcl_uncatch_termreq ( - void -); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/lib/heap.c b/lib/heap.c index e085fbb..c795922 100644 --- a/lib/heap.c +++ b/lib/heap.c @@ -22,35 +22,35 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "hcl-prv.h" +#include "hak-prv.h" -static void* xma_alloc (hcl_mmgr_t* mmgr, hcl_oow_t size) +static void* xma_alloc (hak_mmgr_t* mmgr, hak_oow_t size) { - return hcl_xma_alloc((hcl_xma_t*)mmgr->ctx, size); + return hak_xma_alloc((hak_xma_t*)mmgr->ctx, size); } -static void* xma_realloc (hcl_mmgr_t* mmgr, void* ptr, hcl_oow_t size) +static void* xma_realloc (hak_mmgr_t* mmgr, void* ptr, hak_oow_t size) { - return hcl_xma_realloc((hcl_xma_t*)mmgr->ctx, ptr, size); + return hak_xma_realloc((hak_xma_t*)mmgr->ctx, ptr, size); } -static void xma_free (hcl_mmgr_t* mmgr, void* ptr) +static void xma_free (hak_mmgr_t* mmgr, void* ptr) { - hcl_xma_free((hcl_xma_t*)mmgr->ctx, ptr); + hak_xma_free((hak_xma_t*)mmgr->ctx, ptr); } -hcl_heap_t* hcl_makeheap (hcl_t* hcl, hcl_oow_t size) +hak_heap_t* hak_makeheap (hak_t* hak, hak_oow_t size) { - hcl_heap_t* heap; - hcl_oow_t alloc_size; + hak_heap_t* heap; + hak_oow_t alloc_size; - if (size <= HCL_SIZEOF(*heap)) /* 0 or smaller than the heap header */ + if (size <= HAK_SIZEOF(*heap)) /* 0 or smaller than the heap header */ { /* make a zero-sized heap using the default memory manager. * this zero-sized heap contains only the heap header */ size = 0; - alloc_size = HCL_SIZEOF(*heap); - heap = (hcl_heap_t*)hcl_allocmem(hcl, alloc_size); + alloc_size = HAK_SIZEOF(*heap); + heap = (hak_heap_t*)hak_allocmem(hak, alloc_size); } else { @@ -58,39 +58,39 @@ hcl_heap_t* hcl_makeheap (hcl_t* hcl, hcl_oow_t size) * the dedicated heap allocator which is allowed to create * a bigger heap than requested */ alloc_size = size; - heap = (hcl_heap_t*)hcl->vmprim.alloc_heap(hcl, &alloc_size); + heap = (hak_heap_t*)hak->vmprim.alloc_heap(hak, &alloc_size); } - if (HCL_UNLIKELY(!heap)) + if (HAK_UNLIKELY(!heap)) { - const hcl_ooch_t* oldmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "unable to allocate a heap - %js", oldmsg); - return HCL_NULL; + const hak_ooch_t* oldmsg = hak_backuperrmsg(hak); + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "unable to allocate a heap - %js", oldmsg); + return HAK_NULL; } /* the vmprim.alloc_heap() function is allowed to create a bigger heap than the requested size. * if the created heap is bigger than requested, the heap will be utilized in full. */ - HCL_ASSERT(hcl, alloc_size >= HCL_SIZEOF(*heap)); - HCL_MEMSET(heap, 0, alloc_size); + HAK_ASSERT(hak, alloc_size >= HAK_SIZEOF(*heap)); + HAK_MEMSET(heap, 0, alloc_size); - alloc_size -= HCL_SIZEOF(*heap); /* exclude the header size */ - heap->base = (hcl_uint8_t*)(heap + 1); + alloc_size -= HAK_SIZEOF(*heap); /* exclude the header size */ + heap->base = (hak_uint8_t*)(heap + 1); heap->size = alloc_size; if (size == 0) { /* use the existing memory allocator */ - HCL_ASSERT(hcl, alloc_size == 0); - heap->xmmgr = *HCL_MMGR(hcl); + HAK_ASSERT(hak, alloc_size == 0); + heap->xmmgr = *HAK_MMGR(hak); } else { /* create a new memory allocator over the allocated heap */ - heap->xma = hcl_xma_open(HCL_MMGR(hcl), 0, heap->base, heap->size); - if (HCL_UNLIKELY(!heap->xma)) + heap->xma = hak_xma_open(HAK_MMGR(hak), 0, heap->base, heap->size); + if (HAK_UNLIKELY(!heap->xma)) { - hcl->vmprim.free_heap (hcl, heap); - hcl_seterrbfmt(hcl, HCL_ESYSMEM, "unable to allocate a memory manager over a heap"); - return HCL_NULL; + hak->vmprim.free_heap (hak, heap); + hak_seterrbfmt(hak, HAK_ESYSMEM, "unable to allocate a memory manager over a heap"); + return HAK_NULL; } heap->xmmgr.allocmem = xma_alloc; @@ -102,45 +102,45 @@ hcl_heap_t* hcl_makeheap (hcl_t* hcl, hcl_oow_t size) return heap; } -void hcl_killheap (hcl_t* hcl, hcl_heap_t* heap) +void hak_killheap (hak_t* hak, hak_heap_t* heap) { if (heap->size == 0) { - hcl_freemem(hcl, heap); + hak_freemem(hak, heap); } else { - if (heap->xma) hcl_xma_close(heap->xma); - hcl->vmprim.free_heap(hcl, heap); + if (heap->xma) hak_xma_close(heap->xma); + hak->vmprim.free_heap(hak, heap); } } -void* hcl_callocheapmem (hcl_t* hcl, hcl_heap_t* heap, hcl_oow_t size) +void* hak_callocheapmem (hak_t* hak, hak_heap_t* heap, hak_oow_t size) { void* ptr; - ptr = HCL_MMGR_ALLOC(&heap->xmmgr, size); - if (HCL_UNLIKELY(!ptr)) + ptr = HAK_MMGR_ALLOC(&heap->xmmgr, size); + if (HAK_UNLIKELY(!ptr)) { - HCL_DEBUG2 (hcl, "Cannot callocate %zd bytes from heap - ptr %p\n", size, heap); - hcl_seterrnum(hcl, HCL_EOOMEM); + HAK_DEBUG2 (hak, "Cannot callocate %zd bytes from heap - ptr %p\n", size, heap); + hak_seterrnum(hak, HAK_EOOMEM); } else { - HCL_MEMSET(ptr, 0, size); + HAK_MEMSET(ptr, 0, size); } return ptr; } -void* hcl_callocheapmem_noseterr (hcl_t* hcl, hcl_heap_t* heap, hcl_oow_t size) +void* hak_callocheapmem_noseterr (hak_t* hak, hak_heap_t* heap, hak_oow_t size) { void* ptr; - ptr = HCL_MMGR_ALLOC(&heap->xmmgr, size); - if (HCL_LIKELY(ptr)) HCL_MEMSET(ptr, 0, size); + ptr = HAK_MMGR_ALLOC(&heap->xmmgr, size); + if (HAK_LIKELY(ptr)) HAK_MEMSET(ptr, 0, size); return ptr; } -void hcl_freeheapmem (hcl_t* hcl, hcl_heap_t* heap, void* ptr) +void hak_freeheapmem (hak_t* hak, hak_heap_t* heap, void* ptr) { - HCL_MMGR_FREE(&heap->xmmgr, ptr); + HAK_MMGR_FREE(&heap->xmmgr, ptr); } diff --git a/lib/json.c b/lib/json.c index 8dc16a6..7cfc47e 100644 --- a/lib/json.c +++ b/lib/json.c @@ -22,25 +22,25 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include "hcl-prv.h" +#include +#include "hak-prv.h" #include #include -#define HCL_JSON_TOKEN_NAME_ALIGN 64 +#define HAK_JSON_TOKEN_NAME_ALIGN 64 -struct json_hcl_xtn_t +struct json_hak_xtn_t { - hcl_json_t* json; + hak_json_t* json; }; -typedef struct json_hcl_xtn_t json_hcl_xtn_t; +typedef struct json_hak_xtn_t json_hak_xtn_t; -typedef struct hcl_json_state_node_t hcl_json_state_node_t; -struct hcl_json_state_node_t +typedef struct hak_json_state_node_t hak_json_state_node_t; +struct hak_json_state_node_t { - hcl_json_state_t state; + hak_json_state_t state; union { struct @@ -60,7 +60,7 @@ struct hcl_json_state_node_t int digit_count; /* acc is always of unicode type to handle \u and \U. * in the bch mode, it will get converted to a utf8 stream. */ - hcl_uch_t acc; + hak_uch_t acc; } sv; struct { @@ -68,50 +68,50 @@ struct hcl_json_state_node_t int digit_count; /* for a character, no way to support the unicode character * in the bch mode */ - hcl_ooch_t acc; + hak_ooch_t acc; } cv; struct { int dotted; } nv; } u; - hcl_json_state_node_t* next; + hak_json_state_node_t* next; }; -struct hcl_json_t +struct hak_json_t { - hcl_mmgr_t* mmgr; - hcl_cmgr_t* cmgr; - hcl_json_prim_t prim; - hcl_t* dummy_hcl; + hak_mmgr_t* mmgr; + hak_cmgr_t* cmgr; + hak_json_prim_t prim; + hak_t* dummy_hak; - hcl_errnum_t errnum; + hak_errnum_t errnum; struct { - hcl_ooch_t buf[HCL_ERRMSG_CAPA]; - hcl_oow_t len; + hak_ooch_t buf[HAK_ERRMSG_CAPA]; + hak_oow_t len; } errmsg; struct { - hcl_bitmask_t trait; - hcl_bitmask_t logmask; + hak_bitmask_t trait; + hak_bitmask_t logmask; } cfg; - hcl_json_state_node_t state_top; - hcl_json_state_node_t* state_stack; + hak_json_state_node_t state_top; + hak_json_state_node_t* state_stack; - hcl_oocs_t tok; - hcl_oow_t tok_capa; + hak_oocs_t tok; + hak_oow_t tok_capa; }; /* ========================================================================= */ -static void log_write_for_dummy (hcl_t* hcl, hcl_bitmask_t mask, const hcl_ooch_t* msg, hcl_oow_t len) +static void log_write_for_dummy (hak_t* hak, hak_bitmask_t mask, const hak_ooch_t* msg, hak_oow_t len) { - json_hcl_xtn_t* xtn = (json_hcl_xtn_t*)hcl_getxtn(hcl); - hcl_json_t* json; + json_hak_xtn_t* xtn = (json_hak_xtn_t*)hak_getxtn(hak); + hak_json_t* json; json = xtn->json; json->prim.log_write (json, mask, msg, len); @@ -119,7 +119,7 @@ static void log_write_for_dummy (hcl_t* hcl, hcl_bitmask_t mask, const hcl_ooch_ /* ========================================================================= */ -static HCL_INLINE int is_spacechar (hcl_bch_t c) +static HAK_INLINE int is_spacechar (hak_bch_t c) { /* TODO: handle other space unicode characters */ switch (c) @@ -137,33 +137,33 @@ static HCL_INLINE int is_spacechar (hcl_bch_t c) } } -static HCL_INLINE int is_alphachar (hcl_ooci_t c) +static HAK_INLINE int is_alphachar (hak_ooci_t c) { /* TODO: support full unicode */ return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); } -static HCL_INLINE int is_digitchar (hcl_ooci_t c) +static HAK_INLINE int is_digitchar (hak_ooci_t c) { /* TODO: support full unicode */ return (c >= '0' && c <= '9'); } -static void clear_token (hcl_json_t* json) +static void clear_token (hak_json_t* json) { json->tok.len = 0; if (json->tok_capa > 0) json->tok.ptr[json->tok.len] = '\0'; } -static int add_char_to_token (hcl_json_t* json, hcl_ooch_t ch) +static int add_char_to_token (hak_json_t* json, hak_ooch_t ch) { if (json->tok.len >= json->tok_capa) { - hcl_ooch_t* tmp; - hcl_oow_t newcapa; + hak_ooch_t* tmp; + hak_oow_t newcapa; - newcapa = HCL_ALIGN_POW2(json->tok.len + 2, HCL_JSON_TOKEN_NAME_ALIGN); /* +2 here because of -1 when setting newcapa */ - tmp = (hcl_ooch_t*)hcl_json_reallocmem(json, json->tok.ptr, newcapa * HCL_SIZEOF(*tmp)); + newcapa = HAK_ALIGN_POW2(json->tok.len + 2, HAK_JSON_TOKEN_NAME_ALIGN); /* +2 here because of -1 when setting newcapa */ + tmp = (hak_ooch_t*)hak_json_reallocmem(json, json->tok.ptr, newcapa * HAK_SIZEOF(*tmp)); if (!tmp) return -1; json->tok_capa = newcapa - 1; /* -1 to secure space for terminating null */ @@ -175,17 +175,17 @@ static int add_char_to_token (hcl_json_t* json, hcl_ooch_t ch) return 0; } -static int add_chars_to_token (hcl_json_t* json, const hcl_ooch_t* ptr, hcl_oow_t len) +static int add_chars_to_token (hak_json_t* json, const hak_ooch_t* ptr, hak_oow_t len) { - hcl_oow_t i; + hak_oow_t i; if (json->tok_capa - json->tok.len > len) { - hcl_ooch_t* tmp; - hcl_oow_t newcapa; + hak_ooch_t* tmp; + hak_oow_t newcapa; - newcapa = HCL_ALIGN_POW2(json->tok.len + len + 1, HCL_JSON_TOKEN_NAME_ALIGN); - tmp = (hcl_ooch_t*)hcl_json_reallocmem(json, json->tok.ptr, newcapa * HCL_SIZEOF(*tmp)); + newcapa = HAK_ALIGN_POW2(json->tok.len + len + 1, HAK_JSON_TOKEN_NAME_ALIGN); + tmp = (hak_ooch_t*)hak_json_reallocmem(json, json->tok.ptr, newcapa * HAK_SIZEOF(*tmp)); if (!tmp) return -1; json->tok_capa = newcapa - 1; @@ -198,7 +198,7 @@ static int add_chars_to_token (hcl_json_t* json, const hcl_ooch_t* ptr, hcl_oow_ return 0; } -static HCL_INLINE hcl_ooch_t unescape (hcl_ooch_t c) +static HAK_INLINE hak_ooch_t unescape (hak_ooch_t c) { switch (c) { @@ -215,11 +215,11 @@ static HCL_INLINE hcl_ooch_t unescape (hcl_ooch_t c) /* ========================================================================= */ -static int push_state (hcl_json_t* json, hcl_json_state_t state) +static int push_state (hak_json_t* json, hak_json_state_t state) { - hcl_json_state_node_t* ss; + hak_json_state_node_t* ss; - ss = (hcl_json_state_node_t*)hcl_json_callocmem(json, HCL_SIZEOF(*ss)); + ss = (hak_json_state_node_t*)hak_json_callocmem(json, HAK_SIZEOF(*ss)); if (!ss) return -1; ss->state = state; @@ -229,52 +229,52 @@ static int push_state (hcl_json_t* json, hcl_json_state_t state) return 0; } -static void pop_state (hcl_json_t* json) +static void pop_state (hak_json_t* json) { - hcl_json_state_node_t* ss; + hak_json_state_node_t* ss; ss = json->state_stack; - HCL_ASSERT (json->dummy_hcl, ss != HCL_NULL && ss != &json->state_top); + HAK_ASSERT (json->dummy_hak, ss != HAK_NULL && ss != &json->state_top); json->state_stack = ss->next; - if (json->state_stack->state == HCL_JSON_STATE_IN_ARRAY) + if (json->state_stack->state == HAK_JSON_STATE_IN_ARRAY) { json->state_stack->u.ia.got_value = 1; } - else if (json->state_stack->state == HCL_JSON_STATE_IN_DIC) + else if (json->state_stack->state == HAK_JSON_STATE_IN_DIC) { json->state_stack->u.id.state++; } /* TODO: don't free this. move it to the free list? */ - hcl_json_freemem (json, ss); + hak_json_freemem (json, ss); } -static void pop_all_states (hcl_json_t* json) +static void pop_all_states (hak_json_t* json) { while (json->state_stack != &json->state_top) pop_state (json); } /* ========================================================================= */ -static int invoke_data_inst (hcl_json_t* json, hcl_json_inst_t inst) +static int invoke_data_inst (hak_json_t* json, hak_json_inst_t inst) { - if (json->state_stack->state == HCL_JSON_STATE_IN_DIC && json->state_stack->u.id.state == 1) + if (json->state_stack->state == HAK_JSON_STATE_IN_DIC && json->state_stack->u.id.state == 1) { - if (inst != HCL_JSON_INST_STRING) + if (inst != HAK_JSON_INST_STRING) { - hcl_json_seterrbfmt (json, HCL_EINVAL, "dictionary key not a string - %.*js", json->tok.len, json->tok.ptr); + hak_json_seterrbfmt (json, HAK_EINVAL, "dictionary key not a string - %.*js", json->tok.len, json->tok.ptr); return -1; } - inst = HCL_JSON_INST_KEY; + inst = HAK_JSON_INST_KEY; } if (json->prim.instcb(json, inst, &json->tok) <= -1) return -1; return 0; } -static int handle_string_value_char (hcl_json_t* json, hcl_ooci_t c) +static int handle_string_value_char (hak_json_t* json, hak_ooci_t c) { int ret = 1; @@ -316,19 +316,19 @@ static int handle_string_value_char (hcl_json_t* json, hcl_ooci_t c) { ret = 0; add_sv_acc: - #if defined(HCL_OOCH_IS_UCH) + #if defined(HAK_OOCH_IS_UCH) if (add_char_to_token(json, json->state_stack->u.sv.acc) <= -1) return -1; #else /* convert the character to utf8 */ { - hcl_bch_t bcsbuf[HCL_BCSIZE_MAX]; - hcl_oow_t n; + hak_bch_t bcsbuf[HAK_BCSIZE_MAX]; + hak_oow_t n; - n = json->cmgr->uctobc(json->state_stack->u.sv.acc, bcsbuf, HCL_COUNTOF(bcsbuf)); - if (n == 0 || n > HCL_COUNTOF(bcsbuf)) + n = json->cmgr->uctobc(json->state_stack->u.sv.acc, bcsbuf, HAK_COUNTOF(bcsbuf)); + if (n == 0 || n > HAK_COUNTOF(bcsbuf)) { /* illegal character or buffer to small */ - hcl_json_seterrbfmt (json, HCL_EECERR, "unable to convert %jc", json->state_stack->u.sv.acc); + hak_json_seterrbfmt (json, HAK_EECERR, "unable to convert %jc", json->state_stack->u.sv.acc); return -1; } @@ -377,7 +377,7 @@ static int handle_string_value_char (hcl_json_t* json, hcl_ooci_t c) else if (c == '\"') { pop_state (json); - if (invoke_data_inst(json, HCL_JSON_INST_STRING) <= -1) return -1; + if (invoke_data_inst(json, HAK_JSON_INST_STRING) <= -1) return -1; } else { @@ -387,9 +387,9 @@ static int handle_string_value_char (hcl_json_t* json, hcl_ooci_t c) return ret; } -static int handle_character_value_char (hcl_json_t* json, hcl_ooci_t c) +static int handle_character_value_char (hak_json_t* json, hak_ooci_t c) { - /* The real JSON dones't support character literal. this is HCL's own extension. */ + /* The real JSON dones't support character literal. this is HAK's own extension. */ int ret = 1; if (json->state_stack->u.cv.escaped == 3) @@ -476,10 +476,10 @@ static int handle_character_value_char (hcl_json_t* json, hcl_ooci_t c) if (json->tok.len < 1) { - hcl_json_seterrbfmt (json, HCL_EINVAL, "no character in a character literal"); + hak_json_seterrbfmt (json, HAK_EINVAL, "no character in a character literal"); return -1; } - if (invoke_data_inst(json, HCL_JSON_INST_CHARACTER) <= -1) return -1; + if (invoke_data_inst(json, HAK_JSON_INST_CHARACTER) <= -1) return -1; } else { @@ -488,14 +488,14 @@ static int handle_character_value_char (hcl_json_t* json, hcl_ooci_t c) if (json->tok.len > 1) { - hcl_json_seterrbfmt (json, HCL_EINVAL, "too many characters in a character literal - %.*js", json->tok.len, json->tok.ptr); + hak_json_seterrbfmt (json, HAK_EINVAL, "too many characters in a character literal - %.*js", json->tok.len, json->tok.ptr); return -1; } return ret; } -static int handle_numeric_value_char (hcl_json_t* json, hcl_ooci_t c) +static int handle_numeric_value_char (hak_json_t* json, hak_ooci_t c) { if (is_digitchar(c) || (json->tok.len == 0 && (c == '+' || c == '-'))) { @@ -512,19 +512,19 @@ static int handle_numeric_value_char (hcl_json_t* json, hcl_ooci_t c) pop_state (json); - HCL_ASSERT (json->dummy_hcl, json->tok.len > 0); + HAK_ASSERT (json->dummy_hak, json->tok.len > 0); if (!is_digitchar(json->tok.ptr[json->tok.len - 1])) { - hcl_json_seterrbfmt (json, HCL_EINVAL, "invalid numeric value - %.*js", json->tok.len, json->tok.ptr); + hak_json_seterrbfmt (json, HAK_EINVAL, "invalid numeric value - %.*js", json->tok.len, json->tok.ptr); return -1; } - if (invoke_data_inst(json, HCL_JSON_INST_NUMBER) <= -1) return -1; + if (invoke_data_inst(json, HAK_JSON_INST_NUMBER) <= -1) return -1; return 0; /* start over */ } -static int handle_word_value_char (hcl_json_t* json, hcl_ooci_t c) +static int handle_word_value_char (hak_json_t* json, hak_ooci_t c) { - hcl_json_inst_t inst; + hak_json_inst_t inst; if (is_alphachar(c)) { @@ -534,12 +534,12 @@ static int handle_word_value_char (hcl_json_t* json, hcl_ooci_t c) pop_state (json); - if (hcl_comp_oochars_bcstr(json->tok.ptr, json->tok.len, "null") == 0) inst = HCL_JSON_INST_NIL; - else if (hcl_comp_oochars_bcstr(json->tok.ptr, json->tok.len, "true") == 0) inst = HCL_JSON_INST_TRUE; - else if (hcl_comp_oochars_bcstr(json->tok.ptr, json->tok.len, "false") == 0) inst = HCL_JSON_INST_FALSE; + if (hak_comp_oochars_bcstr(json->tok.ptr, json->tok.len, "null") == 0) inst = HAK_JSON_INST_NIL; + else if (hak_comp_oochars_bcstr(json->tok.ptr, json->tok.len, "true") == 0) inst = HAK_JSON_INST_TRUE; + else if (hak_comp_oochars_bcstr(json->tok.ptr, json->tok.len, "false") == 0) inst = HAK_JSON_INST_FALSE; else { - hcl_json_seterrbfmt (json, HCL_EINVAL, "invalid word value - %.*js", json->tok.len, json->tok.ptr); + hak_json_seterrbfmt (json, HAK_EINVAL, "invalid word value - %.*js", json->tok.len, json->tok.ptr); return -1; } @@ -549,20 +549,20 @@ static int handle_word_value_char (hcl_json_t* json, hcl_ooci_t c) /* ========================================================================= */ -static int handle_start_char (hcl_json_t* json, hcl_ooci_t c) +static int handle_start_char (hak_json_t* json, hak_ooci_t c) { if (c == '[') { - if (push_state(json, HCL_JSON_STATE_IN_ARRAY) <= -1) return -1; + if (push_state(json, HAK_JSON_STATE_IN_ARRAY) <= -1) return -1; json->state_stack->u.ia.got_value = 0; - if (json->prim.instcb(json, HCL_JSON_INST_START_ARRAY, HCL_NULL) <= -1) return -1; + if (json->prim.instcb(json, HAK_JSON_INST_START_ARRAY, HAK_NULL) <= -1) return -1; return 1; } else if (c == '{') { - if (push_state(json, HCL_JSON_STATE_IN_DIC) <= -1) return -1; + if (push_state(json, HAK_JSON_STATE_IN_DIC) <= -1) return -1; json->state_stack->u.id.state = 0; - if (json->prim.instcb(json, HCL_JSON_INST_START_DIC, HCL_NULL) <= -1) return -1; + if (json->prim.instcb(json, HAK_JSON_INST_START_DIC, HAK_NULL) <= -1) return -1; return 1; } else if (is_spacechar(c)) @@ -572,16 +572,16 @@ static int handle_start_char (hcl_json_t* json, hcl_ooci_t c) } else { - hcl_json_seterrbfmt (json, HCL_EINVAL, "not starting with [ or { - %jc", (hcl_ooch_t)c); + hak_json_seterrbfmt (json, HAK_EINVAL, "not starting with [ or { - %jc", (hak_ooch_t)c); return -1; } } -static int handle_char_in_array (hcl_json_t* json, hcl_ooci_t c) +static int handle_char_in_array (hak_json_t* json, hak_ooci_t c) { if (c == ']') { - if (json->prim.instcb(json, HCL_JSON_INST_END_ARRAY, HCL_NULL) <= -1) return -1; + if (json->prim.instcb(json, HAK_JSON_INST_END_ARRAY, HAK_NULL) <= -1) return -1; pop_state (json); return 1; } @@ -589,7 +589,7 @@ static int handle_char_in_array (hcl_json_t* json, hcl_ooci_t c) { if (!json->state_stack->u.ia.got_value) { - hcl_json_seterrbfmt (json, HCL_EINVAL, "redundant comma in array - %jc", (hcl_ooch_t)c); + hak_json_seterrbfmt (json, HAK_EINVAL, "redundant comma in array - %jc", (hak_ooch_t)c); return -1; } json->state_stack->u.ia.got_value = 0; @@ -604,64 +604,64 @@ static int handle_char_in_array (hcl_json_t* json, hcl_ooci_t c) { if (json->state_stack->u.ia.got_value) { - hcl_json_seterrbfmt (json, HCL_EINVAL, "comma required in array - %jc", (hcl_ooch_t)c); + hak_json_seterrbfmt (json, HAK_EINVAL, "comma required in array - %jc", (hak_ooch_t)c); return -1; } if (c == '\"') { - if (push_state(json, HCL_JSON_STATE_IN_STRING_VALUE) <= -1) return -1; + if (push_state(json, HAK_JSON_STATE_IN_STRING_VALUE) <= -1) return -1; clear_token (json); return 1; } else if (c == '\'') { - if (push_state(json, HCL_JSON_STATE_IN_CHARACTER_VALUE) <= -1) return -1; + if (push_state(json, HAK_JSON_STATE_IN_CHARACTER_VALUE) <= -1) return -1; clear_token (json); return 1; } - /* TOOD: else if (c == '#') HCL radixed number + /* TOOD: else if (c == '#') HAK radixed number */ else if (is_digitchar(c) || c == '+' || c == '-') { - if (push_state(json, HCL_JSON_STATE_IN_NUMERIC_VALUE) <= -1) return -1; + if (push_state(json, HAK_JSON_STATE_IN_NUMERIC_VALUE) <= -1) return -1; clear_token (json); json->state_stack->u.nv.dotted = 0; return 0; /* start over */ } else if (is_alphachar(c)) { - if (push_state(json, HCL_JSON_STATE_IN_WORD_VALUE) <= -1) return -1; + if (push_state(json, HAK_JSON_STATE_IN_WORD_VALUE) <= -1) return -1; clear_token (json); return 0; /* start over */ } else if (c == '[') { - if (push_state(json, HCL_JSON_STATE_IN_ARRAY) <= -1) return -1; + if (push_state(json, HAK_JSON_STATE_IN_ARRAY) <= -1) return -1; json->state_stack->u.ia.got_value = 0; - if (json->prim.instcb(json, HCL_JSON_INST_START_ARRAY, HCL_NULL) <= -1) return -1; + if (json->prim.instcb(json, HAK_JSON_INST_START_ARRAY, HAK_NULL) <= -1) return -1; return 1; } else if (c == '{') { - if (push_state(json, HCL_JSON_STATE_IN_DIC) <= -1) return -1; + if (push_state(json, HAK_JSON_STATE_IN_DIC) <= -1) return -1; json->state_stack->u.id.state = 0; - if (json->prim.instcb(json, HCL_JSON_INST_START_DIC, HCL_NULL) <= -1) return -1; + if (json->prim.instcb(json, HAK_JSON_INST_START_DIC, HAK_NULL) <= -1) return -1; return 1; } else { - hcl_json_seterrbfmt (json, HCL_EINVAL, "wrong character inside array - %jc[%d]", (hcl_ooch_t)c, (int)c); + hak_json_seterrbfmt (json, HAK_EINVAL, "wrong character inside array - %jc[%d]", (hak_ooch_t)c, (int)c); return -1; } } } -static int handle_char_in_dic (hcl_json_t* json, hcl_ooci_t c) +static int handle_char_in_dic (hak_json_t* json, hak_ooci_t c) { if (c == '}') { - if (json->prim.instcb(json, HCL_JSON_INST_END_DIC, HCL_NULL) <= -1) return -1; + if (json->prim.instcb(json, HAK_JSON_INST_END_DIC, HAK_NULL) <= -1) return -1; pop_state (json); return 1; } @@ -669,7 +669,7 @@ static int handle_char_in_dic (hcl_json_t* json, hcl_ooci_t c) { if (json->state_stack->u.id.state != 1) { - hcl_json_seterrbfmt (json, HCL_EINVAL, "redundant colon in dictionary - %jc", (hcl_ooch_t)c); + hak_json_seterrbfmt (json, HAK_EINVAL, "redundant colon in dictionary - %jc", (hak_ooch_t)c); return -1; } json->state_stack->u.id.state++; @@ -679,7 +679,7 @@ static int handle_char_in_dic (hcl_json_t* json, hcl_ooci_t c) { if (json->state_stack->u.id.state != 3) { - hcl_json_seterrbfmt (json, HCL_EINVAL, "redundant comma in dicitonary - %jc", (hcl_ooch_t)c); + hak_json_seterrbfmt (json, HAK_EINVAL, "redundant comma in dicitonary - %jc", (hak_ooch_t)c); return -1; } json->state_stack->u.id.state = 0; @@ -694,59 +694,59 @@ static int handle_char_in_dic (hcl_json_t* json, hcl_ooci_t c) { if (json->state_stack->u.id.state == 1) { - hcl_json_seterrbfmt (json, HCL_EINVAL, "colon required in dicitonary - %jc", (hcl_ooch_t)c); + hak_json_seterrbfmt (json, HAK_EINVAL, "colon required in dicitonary - %jc", (hak_ooch_t)c); return -1; } else if (json->state_stack->u.id.state == 3) { - hcl_json_seterrbfmt (json, HCL_EINVAL, "comma required in dicitonary - %jc", (hcl_ooch_t)c); + hak_json_seterrbfmt (json, HAK_EINVAL, "comma required in dicitonary - %jc", (hak_ooch_t)c); return -1; } if (c == '\"') { - if (push_state(json, HCL_JSON_STATE_IN_STRING_VALUE) <= -1) return -1; + if (push_state(json, HAK_JSON_STATE_IN_STRING_VALUE) <= -1) return -1; clear_token (json); return 1; } else if (c == '\'') { - if (push_state(json, HCL_JSON_STATE_IN_CHARACTER_VALUE) <= -1) return -1; + if (push_state(json, HAK_JSON_STATE_IN_CHARACTER_VALUE) <= -1) return -1; clear_token (json); return 1; } - /* TOOD: else if (c == '#') HCL radixed number + /* TOOD: else if (c == '#') HAK radixed number */ else if (is_digitchar(c) || c == '+' || c == '-') { - if (push_state(json, HCL_JSON_STATE_IN_NUMERIC_VALUE) <= -1) return -1; + if (push_state(json, HAK_JSON_STATE_IN_NUMERIC_VALUE) <= -1) return -1; clear_token (json); json->state_stack->u.nv.dotted = 0; return 0; /* start over */ } else if (is_alphachar(c)) { - if (push_state(json, HCL_JSON_STATE_IN_WORD_VALUE) <= -1) return -1; + if (push_state(json, HAK_JSON_STATE_IN_WORD_VALUE) <= -1) return -1; clear_token (json); return 0; /* start over */ } else if (c == '[') { - if (push_state(json, HCL_JSON_STATE_IN_ARRAY) <= -1) return -1; + if (push_state(json, HAK_JSON_STATE_IN_ARRAY) <= -1) return -1; json->state_stack->u.ia.got_value = 0; - if (json->prim.instcb(json, HCL_JSON_INST_START_ARRAY, HCL_NULL) <= -1) return -1; + if (json->prim.instcb(json, HAK_JSON_INST_START_ARRAY, HAK_NULL) <= -1) return -1; return 1; } else if (c == '{') { - if (push_state(json, HCL_JSON_STATE_IN_DIC) <= -1) return -1; + if (push_state(json, HAK_JSON_STATE_IN_DIC) <= -1) return -1; json->state_stack->u.id.state = 0; - if (json->prim.instcb(json, HCL_JSON_INST_START_DIC, HCL_NULL) <= -1) return -1; + if (json->prim.instcb(json, HAK_JSON_INST_START_DIC, HAK_NULL) <= -1) return -1; return 1; } else { - hcl_json_seterrbfmt (json, HCL_EINVAL, "wrong character inside dictionary - %jc[%d]", (hcl_ooch_t)c, (int)c); + hak_json_seterrbfmt (json, HAK_EINVAL, "wrong character inside dictionary - %jc[%d]", (hak_ooch_t)c, (int)c); return -1; } } @@ -754,57 +754,57 @@ static int handle_char_in_dic (hcl_json_t* json, hcl_ooci_t c) /* ========================================================================= */ -static int handle_char (hcl_json_t* json, hcl_ooci_t c) +static int handle_char (hak_json_t* json, hak_ooci_t c) { int x; start_over: - if (c == HCL_OOCI_EOF) + if (c == HAK_OOCI_EOF) { - if (json->state_stack->state == HCL_JSON_STATE_START) + if (json->state_stack->state == HAK_JSON_STATE_START) { /* no input data */ return 0; } else { - hcl_json_seterrbfmt (json, HCL_EFINIS, "unexpected end of data"); + hak_json_seterrbfmt (json, HAK_EFINIS, "unexpected end of data"); return -1; } } switch (json->state_stack->state) { - case HCL_JSON_STATE_START: + case HAK_JSON_STATE_START: x = handle_start_char(json, c); break; - case HCL_JSON_STATE_IN_ARRAY: + case HAK_JSON_STATE_IN_ARRAY: x = handle_char_in_array(json, c); break; - case HCL_JSON_STATE_IN_DIC: + case HAK_JSON_STATE_IN_DIC: x = handle_char_in_dic(json, c); break; - case HCL_JSON_STATE_IN_WORD_VALUE: + case HAK_JSON_STATE_IN_WORD_VALUE: x = handle_word_value_char(json, c); break; - case HCL_JSON_STATE_IN_STRING_VALUE: + case HAK_JSON_STATE_IN_STRING_VALUE: x = handle_string_value_char(json, c); break; - case HCL_JSON_STATE_IN_CHARACTER_VALUE: + case HAK_JSON_STATE_IN_CHARACTER_VALUE: x = handle_character_value_char(json, c); break; - case HCL_JSON_STATE_IN_NUMERIC_VALUE: + case HAK_JSON_STATE_IN_NUMERIC_VALUE: x = handle_numeric_value_char(json, c); break; default: - hcl_json_seterrbfmt (json, HCL_EINTERN, "internal error - must not be called for state %d", (int)json->state_stack->state); + hak_json_seterrbfmt (json, HAK_EINTERN, "internal error - must not be called for state %d", (int)json->state_stack->state); return -1; } @@ -816,22 +816,22 @@ start_over: /* ========================================================================= */ -static int feed_json_data_b (hcl_json_t* json, const hcl_bch_t* data, hcl_oow_t len, hcl_oow_t* xlen) +static int feed_json_data_b (hak_json_t* json, const hak_bch_t* data, hak_oow_t len, hak_oow_t* xlen) { - const hcl_bch_t* ptr; - const hcl_bch_t* end; + const hak_bch_t* ptr; + const hak_bch_t* end; ptr = data; end = ptr + len; while (ptr < end) { - hcl_ooci_t c; + hak_ooci_t c; - #if defined(HCL_OOCH_IS_UCH) - hcl_ooch_t uc; - hcl_oow_t bcslen; - hcl_oow_t n; + #if defined(HAK_OOCH_IS_UCH) + hak_ooch_t uc; + hak_oow_t bcslen; + hak_oow_t n; bcslen = end - ptr; n = json->cmgr->bctouc(ptr, bcslen, &uc); @@ -869,28 +869,28 @@ oops: /* ========================================================================= */ -static int feed_json_data_u (hcl_json_t* json, const hcl_uch_t* data, hcl_oow_t len, hcl_oow_t* xlen) +static int feed_json_data_u (hak_json_t* json, const hak_uch_t* data, hak_oow_t len, hak_oow_t* xlen) { - const hcl_uch_t* ptr; - const hcl_uch_t* end; + const hak_uch_t* ptr; + const hak_uch_t* end; ptr = data; end = ptr + len; while (ptr < end) { - hcl_ooci_t c; + hak_ooci_t c; - #if defined(HCL_OOCH_IS_UCH) + #if defined(HAK_OOCH_IS_UCH) c = *ptr++; /* handle a single character */ if (handle_char(json, c) <= -1) goto oops; #else - hcl_bch_t bcsbuf[HCL_BCSIZE_MAX]; - hcl_oow_t mlen = 0; - hcl_oow_t n, i; + hak_bch_t bcsbuf[HAK_BCSIZE_MAX]; + hak_oow_t mlen = 0; + hak_oow_t n, i; - n = json->_gem.cmgr->uctobc(*ptr++, bcsbuf, HCL_COUNTOF(bcsbuf)); + n = json->_gem.cmgr->uctobc(*ptr++, bcsbuf, HAK_COUNTOF(bcsbuf)); if (n == 0) goto oops; // illegal character for (i = 0; i < n; i++) @@ -911,245 +911,245 @@ oops: /* ========================================================================= */ -hcl_json_t* hcl_json_open (hcl_mmgr_t* mmgr, hcl_oow_t xtnsize, hcl_json_prim_t* prim, hcl_errnum_t* errnum) +hak_json_t* hak_json_open (hak_mmgr_t* mmgr, hak_oow_t xtnsize, hak_json_prim_t* prim, hak_errnum_t* errnum) { - hcl_json_t* json; - hcl_t* hcl; - json_hcl_xtn_t* xtn; + hak_json_t* json; + hak_t* hak; + json_hak_xtn_t* xtn; - json = (hcl_json_t*)HCL_MMGR_ALLOC(mmgr, HCL_SIZEOF(*json) + xtnsize); + json = (hak_json_t*)HAK_MMGR_ALLOC(mmgr, HAK_SIZEOF(*json) + xtnsize); if (!json) { - if (errnum) *errnum = HCL_ESYSMEM; - return HCL_NULL; + if (errnum) *errnum = HAK_ESYSMEM; + return HAK_NULL; } - hcl = hcl_openstdwithmmgr(mmgr, HCL_SIZEOF(*xtn), errnum); - if (!hcl) + hak = hak_openstdwithmmgr(mmgr, HAK_SIZEOF(*xtn), errnum); + if (!hak) { - HCL_MMGR_FREE (mmgr, json); - return HCL_NULL; + HAK_MMGR_FREE (mmgr, json); + return HAK_NULL; } - hcl->vmprim.log_write = log_write_for_dummy; + hak->vmprim.log_write = log_write_for_dummy; - xtn = (json_hcl_xtn_t*)hcl_getxtn(hcl); + xtn = (json_hak_xtn_t*)hak_getxtn(hak); xtn->json = json; - HCL_MEMSET (json, 0, HCL_SIZEOF(*json) + xtnsize); + HAK_MEMSET (json, 0, HAK_SIZEOF(*json) + xtnsize); json->mmgr = mmgr; - json->cmgr = hcl_get_utf8_cmgr(); + json->cmgr = hak_get_utf8_cmgr(); json->prim = *prim; - json->dummy_hcl = hcl; + json->dummy_hak = hak; - json->cfg.logmask = ~(hcl_bitmask_t)0; + json->cfg.logmask = ~(hak_bitmask_t)0; - /* the dummy hcl is used for this json to perform primitive operations + /* the dummy hak is used for this json to perform primitive operations * such as getting system time or logging. so the heap size doesn't * need to be changed from the tiny value set above. */ - hcl_setoption (json->dummy_hcl, HCL_LOG_MASK, &json->cfg.logmask); - hcl_setcmgr (json->dummy_hcl, json->cmgr); + hak_setoption (json->dummy_hak, HAK_LOG_MASK, &json->cfg.logmask); + hak_setcmgr (json->dummy_hak, json->cmgr); - json->state_top.state = HCL_JSON_STATE_START; - json->state_top.next = HCL_NULL; + json->state_top.state = HAK_JSON_STATE_START; + json->state_top.next = HAK_NULL; json->state_stack = &json->state_top; return json; } -void hcl_json_close (hcl_json_t* json) +void hak_json_close (hak_json_t* json) { pop_all_states (json); - if (json->tok.ptr) hcl_json_freemem (json, json->tok.ptr); - hcl_close (json->dummy_hcl); - HCL_MMGR_FREE (json->mmgr, json); + if (json->tok.ptr) hak_json_freemem (json, json->tok.ptr); + hak_close (json->dummy_hak); + HAK_MMGR_FREE (json->mmgr, json); } -int hcl_json_setoption (hcl_json_t* json, hcl_json_option_t id, const void* value) +int hak_json_setoption (hak_json_t* json, hak_json_option_t id, const void* value) { switch (id) { - case HCL_JSON_TRAIT: - json->cfg.trait = *(const hcl_bitmask_t*)value; + case HAK_JSON_TRAIT: + json->cfg.trait = *(const hak_bitmask_t*)value; return 0; - case HCL_JSON_LOG_MASK: - json->cfg.logmask = *(const hcl_bitmask_t*)value; - if (json->dummy_hcl) + case HAK_JSON_LOG_MASK: + json->cfg.logmask = *(const hak_bitmask_t*)value; + if (json->dummy_hak) { - /* setting this affects the dummy hcl immediately. - * existing hcl instances inside worker threads won't get - * affected. new hcl instances to be created later + /* setting this affects the dummy hak immediately. + * existing hak instances inside worker threads won't get + * affected. new hak instances to be created later * is supposed to use the new value */ - hcl_setoption (json->dummy_hcl, HCL_LOG_MASK, value); + hak_setoption (json->dummy_hak, HAK_LOG_MASK, value); } return 0; } - hcl_json_seterrnum (json, HCL_EINVAL); + hak_json_seterrnum (json, HAK_EINVAL); return -1; } -int hcl_json_getoption (hcl_json_t* json, hcl_json_option_t id, void* value) +int hak_json_getoption (hak_json_t* json, hak_json_option_t id, void* value) { switch (id) { - case HCL_JSON_TRAIT: - *(hcl_bitmask_t*)value = json->cfg.trait; + case HAK_JSON_TRAIT: + *(hak_bitmask_t*)value = json->cfg.trait; return 0; - case HCL_JSON_LOG_MASK: - *(hcl_bitmask_t*)value = json->cfg.logmask; + case HAK_JSON_LOG_MASK: + *(hak_bitmask_t*)value = json->cfg.logmask; return 0; }; - hcl_json_seterrnum (json, HCL_EINVAL); + hak_json_seterrnum (json, HAK_EINVAL); return -1; } -void* hcl_json_getxtn (hcl_json_t* json) +void* hak_json_getxtn (hak_json_t* json) { return (void*)(json + 1); } -hcl_mmgr_t* hcl_json_getmmgr (hcl_json_t* json) +hak_mmgr_t* hak_json_getmmgr (hak_json_t* json) { return json->mmgr; } -hcl_cmgr_t* hcl_json_getcmgr (hcl_json_t* json) +hak_cmgr_t* hak_json_getcmgr (hak_json_t* json) { return json->cmgr; } -void hcl_json_setcmgr (hcl_json_t* json, hcl_cmgr_t* cmgr) +void hak_json_setcmgr (hak_json_t* json, hak_cmgr_t* cmgr) { json->cmgr = cmgr; } -hcl_errnum_t hcl_json_geterrnum (hcl_json_t* json) +hak_errnum_t hak_json_geterrnum (hak_json_t* json) { return json->errnum; } -const hcl_ooch_t* hcl_json_geterrstr (hcl_json_t* json) +const hak_ooch_t* hak_json_geterrstr (hak_json_t* json) { - return hcl_errnum_to_errstr(json->errnum); + return hak_errnum_to_errstr(json->errnum); } -const hcl_ooch_t* hcl_json_geterrmsg (hcl_json_t* json) +const hak_ooch_t* hak_json_geterrmsg (hak_json_t* json) { - if (json->errmsg.len <= 0) return hcl_errnum_to_errstr(json->errnum); + if (json->errmsg.len <= 0) return hak_errnum_to_errstr(json->errnum); return json->errmsg.buf; } -void hcl_json_seterrnum (hcl_json_t* json, hcl_errnum_t errnum) +void hak_json_seterrnum (hak_json_t* json, hak_errnum_t errnum) { /*if (json->shuterr) return; */ json->errnum = errnum; json->errmsg.len = 0; } -void hcl_json_seterrbfmt (hcl_json_t* json, hcl_errnum_t errnum, const hcl_bch_t* fmt, ...) +void hak_json_seterrbfmt (hak_json_t* json, hak_errnum_t errnum, const hak_bch_t* fmt, ...) { va_list ap; va_start (ap, fmt); - hcl_seterrbfmtv (json->dummy_hcl, errnum, fmt, ap); + hak_seterrbfmtv (json->dummy_hak, errnum, fmt, ap); va_end (ap); - HCL_ASSERT (json->dummy_hcl, HCL_COUNTOF(json->errmsg.buf) == HCL_COUNTOF(json->dummy_hcl->errmsg.buf)); + HAK_ASSERT (json->dummy_hak, HAK_COUNTOF(json->errmsg.buf) == HAK_COUNTOF(json->dummy_hak->errmsg.buf)); json->errnum = errnum; - hcl_copy_oochars (json->errmsg.buf, json->dummy_hcl->errmsg.buf, HCL_COUNTOF(json->errmsg.buf)); - json->errmsg.len = json->dummy_hcl->errmsg.len; + hak_copy_oochars (json->errmsg.buf, json->dummy_hak->errmsg.buf, HAK_COUNTOF(json->errmsg.buf)); + json->errmsg.len = json->dummy_hak->errmsg.len; } -void hcl_json_seterrufmt (hcl_json_t* json, hcl_errnum_t errnum, const hcl_uch_t* fmt, ...) +void hak_json_seterrufmt (hak_json_t* json, hak_errnum_t errnum, const hak_uch_t* fmt, ...) { va_list ap; va_start (ap, fmt); - hcl_seterrufmtv (json->dummy_hcl, errnum, fmt, ap); + hak_seterrufmtv (json->dummy_hak, errnum, fmt, ap); va_end (ap); - HCL_ASSERT (json->dummy_hcl, HCL_COUNTOF(json->errmsg.buf) == HCL_COUNTOF(json->dummy_hcl->errmsg.buf)); + HAK_ASSERT (json->dummy_hak, HAK_COUNTOF(json->errmsg.buf) == HAK_COUNTOF(json->dummy_hak->errmsg.buf)); json->errnum = errnum; - hcl_copy_oochars (json->errmsg.buf, json->dummy_hcl->errmsg.buf, HCL_COUNTOF(json->errmsg.buf)); - json->errmsg.len = json->dummy_hcl->errmsg.len; + hak_copy_oochars (json->errmsg.buf, json->dummy_hak->errmsg.buf, HAK_COUNTOF(json->errmsg.buf)); + json->errmsg.len = json->dummy_hak->errmsg.len; } /* ========================================================================= */ -void hcl_json_logbfmt (hcl_json_t* json, hcl_bitmask_t mask, const hcl_bch_t* fmt, ...) +void hak_json_logbfmt (hak_json_t* json, hak_bitmask_t mask, const hak_bch_t* fmt, ...) { va_list ap; va_start (ap, fmt); - hcl_logbfmtv (json->dummy_hcl, mask, fmt, ap); + hak_logbfmtv (json->dummy_hak, mask, fmt, ap); va_end (ap); } -void hcl_json_logufmt (hcl_json_t* json, hcl_bitmask_t mask, const hcl_uch_t* fmt, ...) +void hak_json_logufmt (hak_json_t* json, hak_bitmask_t mask, const hak_uch_t* fmt, ...) { va_list ap; va_start (ap, fmt); - hcl_logufmtv (json->dummy_hcl, mask, fmt, ap); + hak_logufmtv (json->dummy_hak, mask, fmt, ap); va_end (ap); } /* ========================================================================= */ -void* hcl_json_allocmem (hcl_json_t* json, hcl_oow_t size) +void* hak_json_allocmem (hak_json_t* json, hak_oow_t size) { void* ptr; - ptr = HCL_MMGR_ALLOC(json->mmgr, size); - if (!ptr) hcl_json_seterrnum (json, HCL_ESYSMEM); + ptr = HAK_MMGR_ALLOC(json->mmgr, size); + if (!ptr) hak_json_seterrnum (json, HAK_ESYSMEM); return ptr; } -void* hcl_json_callocmem (hcl_json_t* json, hcl_oow_t size) +void* hak_json_callocmem (hak_json_t* json, hak_oow_t size) { void* ptr; - ptr = HCL_MMGR_ALLOC(json->mmgr, size); - if (!ptr) hcl_json_seterrnum (json, HCL_ESYSMEM); - else HCL_MEMSET (ptr, 0, size); + ptr = HAK_MMGR_ALLOC(json->mmgr, size); + if (!ptr) hak_json_seterrnum (json, HAK_ESYSMEM); + else HAK_MEMSET (ptr, 0, size); return ptr; } -void* hcl_json_reallocmem (hcl_json_t* json, void* ptr, hcl_oow_t size) +void* hak_json_reallocmem (hak_json_t* json, void* ptr, hak_oow_t size) { - ptr = HCL_MMGR_REALLOC(json->mmgr, ptr, size); - if (!ptr) hcl_json_seterrnum (json, HCL_ESYSMEM); + ptr = HAK_MMGR_REALLOC(json->mmgr, ptr, size); + if (!ptr) hak_json_seterrnum (json, HAK_ESYSMEM); return ptr; } -void hcl_json_freemem (hcl_json_t* json, void* ptr) +void hak_json_freemem (hak_json_t* json, void* ptr) { - HCL_MMGR_FREE (json->mmgr, ptr); + HAK_MMGR_FREE (json->mmgr, ptr); } /* ========================================================================= */ -hcl_json_state_t hcl_json_getstate (hcl_json_t* json) +hak_json_state_t hak_json_getstate (hak_json_t* json) { return json->state_stack->state; } -void hcl_json_reset (hcl_json_t* json) +void hak_json_reset (hak_json_t* json) { /* TODO: reset XXXXXXXXXXXXXXXXXXXXXXXXXXXxxxxx */ pop_all_states (json); - HCL_ASSERT (json->dummy_hcl, json->state_stack == &json->state_top); - json->state_stack->state = HCL_JSON_STATE_START; + HAK_ASSERT (json->dummy_hak, json->state_stack == &json->state_top); + json->state_stack->state = HAK_JSON_STATE_START; } -int hcl_json_feedbchars (hcl_json_t* json, const hcl_bch_t* ptr, hcl_oow_t len, hcl_oow_t* xlen) +int hak_json_feedbchars (hak_json_t* json, const hak_bch_t* ptr, hak_oow_t len, hak_oow_t* xlen) { int x; - hcl_oow_t total, ylen; + hak_oow_t total, ylen; total = 0; while (total < len) @@ -1165,10 +1165,10 @@ int hcl_json_feedbchars (hcl_json_t* json, const hcl_bch_t* ptr, hcl_oow_t len, return 0; } -int hcl_json_feeduchars (hcl_json_t* json, const hcl_uch_t* ptr, hcl_oow_t len, hcl_oow_t* xlen) +int hak_json_feeduchars (hak_json_t* json, const hak_uch_t* ptr, hak_oow_t len, hak_oow_t* xlen) { int x; - hcl_oow_t total, ylen; + hak_oow_t total, ylen; total = 0; while (total < len) diff --git a/lib/mb8.c b/lib/mb8.c index 364e785..549dae4 100644 --- a/lib/mb8.c +++ b/lib/mb8.c @@ -22,18 +22,18 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "hcl-prv.h" +#include "hak-prv.h" -hcl_oow_t hcl_uc_to_mb8 (hcl_uch_t wc, hcl_bch_t* mb8, hcl_oow_t size) +hak_oow_t hak_uc_to_mb8 (hak_uch_t wc, hak_bch_t* mb8, hak_oow_t size) { if (size <= 0) return size + 1; /* buffer too small */ - if (wc > HCL_TYPE_MAX(hcl_uint8_t)) return 0; /* illegal character */ - if (mb8) *(hcl_uint8_t*)mb8 = wc; + if (wc > HAK_TYPE_MAX(hak_uint8_t)) return 0; /* illegal character */ + if (mb8) *(hak_uint8_t*)mb8 = wc; return 1; } -hcl_oow_t hcl_mb8_to_uc (const hcl_bch_t* mb8, hcl_oow_t size, hcl_uch_t* wc) +hak_oow_t hak_mb8_to_uc (const hak_bch_t* mb8, hak_oow_t size, hak_uch_t* wc) { - *wc = *(const hcl_uint8_t*)mb8; + *wc = *(const hak_uint8_t*)mb8; return 1; } diff --git a/lib/number.c b/lib/number.c index 2d4927c..cc2e893 100644 --- a/lib/number.c +++ b/lib/number.c @@ -22,39 +22,39 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "hcl-prv.h" +#include "hak-prv.h" -static hcl_ooi_t equalize_scale (hcl_t* hcl, hcl_oop_t* x, hcl_oop_t* y) +static hak_ooi_t equalize_scale (hak_t* hak, hak_oop_t* x, hak_oop_t* y) { - hcl_ooi_t xs, ys; - hcl_oop_t nv; - hcl_oop_t xv, yv; + hak_ooi_t xs, ys; + hak_oop_t nv; + hak_oop_t xv, yv; /* this function assumes that x and y are protected by the caller */ xs = 0; xv = *x; - if (HCL_IS_FPDEC(hcl, xv)) + if (HAK_IS_FPDEC(hak, xv)) { - xs = HCL_OOP_TO_SMOOI(((hcl_oop_fpdec_t)xv)->scale); - xv = ((hcl_oop_fpdec_t)xv)->value; + xs = HAK_OOP_TO_SMOOI(((hak_oop_fpdec_t)xv)->scale); + xv = ((hak_oop_fpdec_t)xv)->value; } - else if (!hcl_isint(hcl, xv)) + else if (!hak_isint(hak, xv)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not numeric - %O", xv); + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not numeric - %O", xv); return -1; } ys = 0; yv = *y; - if (HCL_IS_FPDEC(hcl, yv)) + if (HAK_IS_FPDEC(hak, yv)) { - ys = HCL_OOP_TO_SMOOI(((hcl_oop_fpdec_t)yv)->scale); - yv = ((hcl_oop_fpdec_t)yv)->value; + ys = HAK_OOP_TO_SMOOI(((hak_oop_fpdec_t)yv)->scale); + yv = ((hak_oop_fpdec_t)yv)->value; } - else if (!hcl_isint(hcl, yv)) + else if (!hak_isint(hak, yv)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not numeric - %O", yv); + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not numeric - %O", yv); return -1; } @@ -64,12 +64,12 @@ static hcl_ooi_t equalize_scale (hcl_t* hcl, hcl_oop_t* x, hcl_oop_t* y) while (xs < ys) { /* TODO: optmize this. less multiplications */ - nv = hcl_mulints(hcl, nv, HCL_SMOOI_TO_OOP(10)); + nv = hak_mulints(hak, nv, HAK_SMOOI_TO_OOP(10)); if (!nv) return -1; xs++; } - nv = hcl_makefpdec(hcl, nv, xs); + nv = hak_makefpdec(hak, nv, xs); if (!nv) return -1; *x = nv; @@ -79,12 +79,12 @@ static hcl_ooi_t equalize_scale (hcl_t* hcl, hcl_oop_t* x, hcl_oop_t* y) nv = yv; while (ys < xs) { - nv = hcl_mulints(hcl, nv, HCL_SMOOI_TO_OOP(10)); + nv = hak_mulints(hak, nv, HAK_SMOOI_TO_OOP(10)); if (!nv) return -1; ys++; } - nv = hcl_makefpdec(hcl, nv, ys); + nv = hak_makefpdec(hak, nv, ys); if (!nv) return -1; *y = nv; @@ -93,7 +93,7 @@ static hcl_ooi_t equalize_scale (hcl_t* hcl, hcl_oop_t* x, hcl_oop_t* y) return xs; } -hcl_oop_t hcl_truncfpdecval (hcl_t* hcl, hcl_oop_t iv, hcl_ooi_t cs, hcl_ooi_t ns) +hak_oop_t hak_truncfpdecval (hak_t* hak, hak_oop_t iv, hak_ooi_t cs, hak_ooi_t ns) { /* this function truncates an existing fixed-point decimal. * it doesn't create a new object */ @@ -103,8 +103,8 @@ hcl_oop_t hcl_truncfpdecval (hcl_t* hcl, hcl_oop_t iv, hcl_ooi_t cs, hcl_ooi_t n do { /* TODO: optimizatino... less divisions */ - iv = hcl_divints(hcl, iv, HCL_SMOOI_TO_OOP(10), 0, HCL_NULL); - if (!iv) return HCL_NULL; + iv = hak_divints(hak, iv, HAK_SMOOI_TO_OOP(10), 0, HAK_NULL); + if (!iv) return HAK_NULL; cs--; } while (cs > ns); @@ -113,282 +113,282 @@ hcl_oop_t hcl_truncfpdecval (hcl_t* hcl, hcl_oop_t iv, hcl_ooi_t cs, hcl_ooi_t n return iv; } -hcl_oop_t hcl_addnums (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_addnums (hak_t* hak, hak_oop_t x, hak_oop_t y) { - if (!HCL_IS_FPDEC(hcl, x) && !HCL_IS_FPDEC(hcl, y)) + if (!HAK_IS_FPDEC(hak, x) && !HAK_IS_FPDEC(hak, y)) { /* both are probably integers */ - return hcl_addints(hcl, x, y); + return hak_addints(hak, x, y); } else { - hcl_oop_t v; - hcl_ooi_t scale; + hak_oop_t v; + hak_ooi_t scale; - hcl_pushvolat (hcl, &x); - hcl_pushvolat (hcl, &y); + hak_pushvolat (hak, &x); + hak_pushvolat (hak, &y); - scale = equalize_scale(hcl, &x, &y); + scale = equalize_scale(hak, &x, &y); if (scale <= -1) { - hcl_popvolats (hcl, 2); - return HCL_NULL; + hak_popvolats (hak, 2); + return HAK_NULL; } - v = hcl_addints(hcl, ((hcl_oop_fpdec_t)x)->value, ((hcl_oop_fpdec_t)y)->value); - hcl_popvolats (hcl, 2); - if (!v) return HCL_NULL; + v = hak_addints(hak, ((hak_oop_fpdec_t)x)->value, ((hak_oop_fpdec_t)y)->value); + hak_popvolats (hak, 2); + if (!v) return HAK_NULL; - return hcl_makefpdec(hcl, v, scale); + return hak_makefpdec(hak, v, scale); } } -hcl_oop_t hcl_subnums (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_subnums (hak_t* hak, hak_oop_t x, hak_oop_t y) { - if (!HCL_IS_FPDEC(hcl, x) && !HCL_IS_FPDEC(hcl, y)) + if (!HAK_IS_FPDEC(hak, x) && !HAK_IS_FPDEC(hak, y)) { /* both are probably integers */ - return hcl_subints(hcl, x, y); + return hak_subints(hak, x, y); } else { - hcl_oop_t v; - hcl_ooi_t scale; + hak_oop_t v; + hak_ooi_t scale; - hcl_pushvolat (hcl, &x); - hcl_pushvolat (hcl, &y); + hak_pushvolat (hak, &x); + hak_pushvolat (hak, &y); - scale = equalize_scale(hcl, &x, &y); + scale = equalize_scale(hak, &x, &y); if (scale <= -1) { - hcl_popvolats (hcl, 2); - return HCL_NULL; + hak_popvolats (hak, 2); + return HAK_NULL; } - v = hcl_subints(hcl, ((hcl_oop_fpdec_t)x)->value, ((hcl_oop_fpdec_t)y)->value); - hcl_popvolats (hcl, 2); - if (!v) return HCL_NULL; + v = hak_subints(hak, ((hak_oop_fpdec_t)x)->value, ((hak_oop_fpdec_t)y)->value); + hak_popvolats (hak, 2); + if (!v) return HAK_NULL; - return hcl_makefpdec(hcl, v, scale); + return hak_makefpdec(hak, v, scale); } } -static hcl_oop_t mul_nums (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y, int mult) +static hak_oop_t mul_nums (hak_t* hak, hak_oop_t x, hak_oop_t y, int mult) { - hcl_ooi_t xs, ys, cs, ns; - hcl_oop_t nv; - hcl_oop_t xv, yv; + hak_ooi_t xs, ys, cs, ns; + hak_oop_t nv; + hak_oop_t xv, yv; xs = 0; xv = x; - if (HCL_IS_FPDEC(hcl, xv)) + if (HAK_IS_FPDEC(hak, xv)) { - xs = HCL_OOP_TO_SMOOI(((hcl_oop_fpdec_t)xv)->scale); - xv = ((hcl_oop_fpdec_t)xv)->value; + xs = HAK_OOP_TO_SMOOI(((hak_oop_fpdec_t)xv)->scale); + xv = ((hak_oop_fpdec_t)xv)->value; } - else if (!hcl_isint(hcl, xv)) + else if (!hak_isint(hak, xv)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not numeric - %O", xv); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not numeric - %O", xv); + return HAK_NULL; } ys = 0; yv = y; - if (HCL_IS_FPDEC(hcl, y)) + if (HAK_IS_FPDEC(hak, y)) { - ys = HCL_OOP_TO_SMOOI(((hcl_oop_fpdec_t)yv)->scale); - yv = ((hcl_oop_fpdec_t)yv)->value; + ys = HAK_OOP_TO_SMOOI(((hak_oop_fpdec_t)yv)->scale); + yv = ((hak_oop_fpdec_t)yv)->value; } - else if (!hcl_isint(hcl, yv)) + else if (!hak_isint(hak, yv)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not numeric - %O", yv); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not numeric - %O", yv); + return HAK_NULL; } - nv = hcl_mulints(hcl, xv, yv); - if (!nv) return HCL_NULL; + nv = hak_mulints(hak, xv, yv); + if (!nv) return HAK_NULL; cs = xs + ys; if (cs <= 0) return nv; /* the result must be an integer */ ns = (mult || xs > ys)? xs: ys; - /* cs may be larger than HCL_SMOOI_MAX. but ns is guaranteed to be - * equal to or less than HCL_SMOOI_MAX */ - HCL_ASSERT (hcl, ns <= HCL_SMOOI_MAX); + /* cs may be larger than HAK_SMOOI_MAX. but ns is guaranteed to be + * equal to or less than HAK_SMOOI_MAX */ + HAK_ASSERT (hak, ns <= HAK_SMOOI_MAX); - nv = hcl_truncfpdecval(hcl, nv, cs, ns); - if (!nv) return HCL_NULL; + nv = hak_truncfpdecval(hak, nv, cs, ns); + if (!nv) return HAK_NULL; - return (ns <= 0)? nv: hcl_makefpdec(hcl, nv, ns); + return (ns <= 0)? nv: hak_makefpdec(hak, nv, ns); } -hcl_oop_t hcl_mulnums (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_mulnums (hak_t* hak, hak_oop_t x, hak_oop_t y) { /* (* 1.00 12.123) => 12.123 */ - return mul_nums(hcl, x, y, 0); + return mul_nums(hak, x, y, 0); } -hcl_oop_t hcl_mltnums (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_mltnums (hak_t* hak, hak_oop_t x, hak_oop_t y) { /* (mlt 1.00 12.123) => 12.12 */ - return mul_nums(hcl, x, y, 1); + return mul_nums(hak, x, y, 1); } -hcl_oop_t hcl_divnums (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_divnums (hak_t* hak, hak_oop_t x, hak_oop_t y) { - hcl_ooi_t xs, ys, i; - hcl_oop_t nv; - hcl_oop_t xv, yv; + hak_ooi_t xs, ys, i; + hak_oop_t nv; + hak_oop_t xv, yv; xs = 0; xv = x; - if (HCL_IS_FPDEC(hcl, xv)) + if (HAK_IS_FPDEC(hak, xv)) { - xs = HCL_OOP_TO_SMOOI(((hcl_oop_fpdec_t)xv)->scale); - xv = ((hcl_oop_fpdec_t)xv)->value; + xs = HAK_OOP_TO_SMOOI(((hak_oop_fpdec_t)xv)->scale); + xv = ((hak_oop_fpdec_t)xv)->value; } - else if (!hcl_isint(hcl, xv)) + else if (!hak_isint(hak, xv)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not numeric - %O", xv); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not numeric - %O", xv); + return HAK_NULL; } ys = 0; yv = y; - if (HCL_IS_FPDEC(hcl, y)) + if (HAK_IS_FPDEC(hak, y)) { - ys = HCL_OOP_TO_SMOOI(((hcl_oop_fpdec_t)yv)->scale); - yv = ((hcl_oop_fpdec_t)yv)->value; + ys = HAK_OOP_TO_SMOOI(((hak_oop_fpdec_t)yv)->scale); + yv = ((hak_oop_fpdec_t)yv)->value; } - else if (!hcl_isint(hcl, yv)) + else if (!hak_isint(hak, yv)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not numeric - %O", yv); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not numeric - %O", yv); + return HAK_NULL; } nv = xv; - hcl_pushvolat (hcl, &yv); + hak_pushvolat (hak, &yv); for (i = 0; i < ys; i++) { - nv = hcl_mulints(hcl, nv, HCL_SMOOI_TO_OOP(10)); + nv = hak_mulints(hak, nv, HAK_SMOOI_TO_OOP(10)); if (!nv) { - hcl_popvolat (hcl); - return HCL_NULL; + hak_popvolat (hak); + return HAK_NULL; } } - nv = hcl_divints(hcl, nv, yv, 0, HCL_NULL); - hcl_popvolat (hcl); - if (!nv) return HCL_NULL; + nv = hak_divints(hak, nv, yv, 0, HAK_NULL); + hak_popvolat (hak); + if (!nv) return HAK_NULL; - return hcl_makefpdec(hcl, nv, xs); + return hak_makefpdec(hak, nv, xs); } -static hcl_oop_t comp_nums (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y, hcl_oop_t (*comper) (hcl_t*, hcl_oop_t, hcl_oop_t)) +static hak_oop_t comp_nums (hak_t* hak, hak_oop_t x, hak_oop_t y, hak_oop_t (*comper) (hak_t*, hak_oop_t, hak_oop_t)) { - if (!HCL_IS_FPDEC(hcl, x) && !HCL_IS_FPDEC(hcl, y)) + if (!HAK_IS_FPDEC(hak, x) && !HAK_IS_FPDEC(hak, y)) { /* both are probably integers */ - return comper(hcl, x, y); + return comper(hak, x, y); } else { - hcl_oop_t v; - hcl_ooi_t scale; + hak_oop_t v; + hak_ooi_t scale; - hcl_pushvolat (hcl, &x); - hcl_pushvolat (hcl, &y); + hak_pushvolat (hak, &x); + hak_pushvolat (hak, &y); - scale = equalize_scale(hcl, &x, &y); + scale = equalize_scale(hak, &x, &y); if (scale <= -1) { - hcl_popvolats (hcl, 2); - return HCL_NULL; + hak_popvolats (hak, 2); + return HAK_NULL; } - v = comper(hcl, ((hcl_oop_fpdec_t)x)->value, ((hcl_oop_fpdec_t)y)->value); - hcl_popvolats (hcl, 2); + v = comper(hak, ((hak_oop_fpdec_t)x)->value, ((hak_oop_fpdec_t)y)->value); + hak_popvolats (hak, 2); return v; } } -hcl_oop_t hcl_gtnums (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_gtnums (hak_t* hak, hak_oop_t x, hak_oop_t y) { - return comp_nums(hcl, x, y, hcl_gtints); + return comp_nums(hak, x, y, hak_gtints); } -hcl_oop_t hcl_genums (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_genums (hak_t* hak, hak_oop_t x, hak_oop_t y) { - return comp_nums(hcl, x, y, hcl_geints); + return comp_nums(hak, x, y, hak_geints); } -hcl_oop_t hcl_ltnums (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_ltnums (hak_t* hak, hak_oop_t x, hak_oop_t y) { - return comp_nums(hcl, x, y, hcl_ltints); + return comp_nums(hak, x, y, hak_ltints); } -hcl_oop_t hcl_lenums (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_lenums (hak_t* hak, hak_oop_t x, hak_oop_t y) { - return comp_nums(hcl, x, y, hcl_leints); + return comp_nums(hak, x, y, hak_leints); } -hcl_oop_t hcl_eqnums (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_eqnums (hak_t* hak, hak_oop_t x, hak_oop_t y) { - return comp_nums(hcl, x, y, hcl_eqints); + return comp_nums(hak, x, y, hak_eqints); } -hcl_oop_t hcl_nenums (hcl_t* hcl, hcl_oop_t x, hcl_oop_t y) +hak_oop_t hak_nenums (hak_t* hak, hak_oop_t x, hak_oop_t y) { - return comp_nums(hcl, x, y, hcl_neints); + return comp_nums(hak, x, y, hak_neints); } -hcl_oop_t hcl_sqrtnum (hcl_t* hcl, hcl_oop_t x) +hak_oop_t hak_sqrtnum (hak_t* hak, hak_oop_t x) { - if (!HCL_IS_FPDEC(hcl, x)) + if (!HAK_IS_FPDEC(hak, x)) { - return hcl_sqrtint(hcl, x); + return hak_sqrtint(hak, x); } else { - hcl_oop_t v; - hcl_ooi_t i, scale; + hak_oop_t v; + hak_ooi_t i, scale; - scale = HCL_OOP_TO_SMOOI(((hcl_oop_fpdec_t)x)->scale); + scale = HAK_OOP_TO_SMOOI(((hak_oop_fpdec_t)x)->scale); - v = ((hcl_oop_fpdec_t)x)->value; + v = ((hak_oop_fpdec_t)x)->value; for (i = 0; i < scale ; i++) { - v = hcl_mulints(hcl, v, HCL_SMOOI_TO_OOP(10)); + v = hak_mulints(hak, v, HAK_SMOOI_TO_OOP(10)); if (!v) { - hcl_popvolat (hcl); - return HCL_NULL; + hak_popvolat (hak); + return HAK_NULL; } } - v = hcl_sqrtint(hcl, v); - if (!v) return HCL_NULL; + v = hak_sqrtint(hak, v); + if (!v) return HAK_NULL; - return hcl_makefpdec(hcl, v, scale); + return hak_makefpdec(hak, v, scale); } } -hcl_oop_t hcl_absnum (hcl_t* hcl, hcl_oop_t x) +hak_oop_t hak_absnum (hak_t* hak, hak_oop_t x) { - if (!HCL_IS_FPDEC(hcl, x)) + if (!HAK_IS_FPDEC(hak, x)) { - return hcl_absint(hcl, x); + return hak_absint(hak, x); } else { - hcl_oop_t v; - hcl_ooi_t scale; + hak_oop_t v; + hak_ooi_t scale; - scale = HCL_OOP_TO_SMOOI(((hcl_oop_fpdec_t)x)->scale); - v = ((hcl_oop_fpdec_t)x)->value; + scale = HAK_OOP_TO_SMOOI(((hak_oop_fpdec_t)x)->scale); + v = ((hak_oop_fpdec_t)x)->value; - v = hcl_absint(hcl, v); - if (!v) return HCL_NULL; + v = hak_absint(hak, v); + if (!v) return HAK_NULL; - return hcl_makefpdec(hcl, v, scale); + return hak_makefpdec(hak, v, scale); } } diff --git a/lib/obj.c b/lib/obj.c index 1d3be27..cb6bfea 100644 --- a/lib/obj.c +++ b/lib/obj.c @@ -22,521 +22,521 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "hcl-prv.h" +#include "hak-prv.h" -#if defined(HCL_PROFILE_VM) +#if defined(HAK_PROFILE_VM) #include #include /* getrusage */ #endif -void* hcl_allocbytes (hcl_t* hcl, hcl_oow_t size) +void* hak_allocbytes (hak_t* hak, hak_oow_t size) { - hcl_gchdr_t* gch; - hcl_oow_t allocsize; + hak_gchdr_t* gch; + hak_oow_t allocsize; int gc_called = 0; -#if defined(HCL_PROFILE_VM) +#if defined(HAK_PROFILE_VM) struct rusage ru; - hcl_ntime_t rut; + hak_ntime_t rut; #endif -#if defined(HCL_BUILD_DEBUG) - if ((hcl->option.trait & HCL_TRAIT_DEBUG_GC) && !(hcl->option.trait & HCL_TRAIT_NOGC)) hcl_gc (hcl, 1); +#if defined(HAK_BUILD_DEBUG) + if ((hak->option.trait & HAK_TRAIT_DEBUG_GC) && !(hak->option.trait & HAK_TRAIT_NOGC)) hak_gc (hak, 1); #endif -#if defined(HCL_PROFILE_VM) +#if defined(HAK_PROFILE_VM) getrusage(RUSAGE_SELF, &ru); - HCL_INIT_NTIME (&rut, ru.ru_utime.tv_sec, HCL_USEC_TO_NSEC(ru.ru_utime.tv_usec)); + HAK_INIT_NTIME (&rut, ru.ru_utime.tv_sec, HAK_USEC_TO_NSEC(ru.ru_utime.tv_usec)); #endif - allocsize = HCL_SIZEOF(*gch) + size; + allocsize = HAK_SIZEOF(*gch) + size; - if (hcl->gci.bsz >= hcl->gci.threshold) + if (hak->gci.bsz >= hak->gci.threshold) { - hcl_gc (hcl, 0); - hcl->gci.threshold = hcl->gci.bsz + 100000; /* TODO: change this fomula */ + hak_gc (hak, 0); + hak->gci.threshold = hak->gci.bsz + 100000; /* TODO: change this fomula */ gc_called = 1; } - if (hcl->gci.lazy_sweep) hcl_gc_ms_sweep_lazy (hcl, allocsize); + if (hak->gci.lazy_sweep) hak_gc_ms_sweep_lazy (hak, allocsize); - gch = (hcl_gchdr_t*)hcl_callocheapmem_noseterr(hcl, hcl->heap, allocsize); + gch = (hak_gchdr_t*)hak_callocheapmem_noseterr(hak, hak->heap, allocsize); if (!gch) { - if (HCL_UNLIKELY(hcl->option.trait & HCL_TRAIT_NOGC)) goto calloc_heapmem_fail; + if (HAK_UNLIKELY(hak->option.trait & HAK_TRAIT_NOGC)) goto calloc_heapmem_fail; if (gc_called) goto sweep_the_rest; - hcl_gc (hcl, 0); - if (hcl->gci.lazy_sweep) hcl_gc_ms_sweep_lazy (hcl, allocsize); + hak_gc (hak, 0); + if (hak->gci.lazy_sweep) hak_gc_ms_sweep_lazy (hak, allocsize); - gch = (hcl_gchdr_t*)hcl_callocheapmem_noseterr(hcl, hcl->heap, allocsize); - if (HCL_UNLIKELY(!gch)) + gch = (hak_gchdr_t*)hak_callocheapmem_noseterr(hak, hak->heap, allocsize); + if (HAK_UNLIKELY(!gch)) { sweep_the_rest: - if (hcl->gci.lazy_sweep) + if (hak->gci.lazy_sweep) { - hcl_gc_ms_sweep_lazy (hcl, HCL_TYPE_MAX(hcl_oow_t)); /* sweep the rest */ - gch = (hcl_gchdr_t*)hcl_callocheapmem(hcl, hcl->heap, allocsize); - if (HCL_UNLIKELY(!gch)) return HCL_NULL; + hak_gc_ms_sweep_lazy (hak, HAK_TYPE_MAX(hak_oow_t)); /* sweep the rest */ + gch = (hak_gchdr_t*)hak_callocheapmem(hak, hak->heap, allocsize); + if (HAK_UNLIKELY(!gch)) return HAK_NULL; } else { calloc_heapmem_fail: - hcl_seterrnum (hcl, HCL_EOOMEM); - return HCL_NULL; + hak_seterrnum (hak, HAK_EOOMEM); + return HAK_NULL; } } } - if (hcl->gci.lazy_sweep && hcl->gci.ls.curr == hcl->gci.b) + if (hak->gci.lazy_sweep && hak->gci.ls.curr == hak->gci.b) { /* if the lazy sweeping point is at the beginning of the allocation block, - * hcl->gc.ls.prev must get updated */ - HCL_ASSERT (hcl, hcl->gci.ls.prev == HCL_NULL); - hcl->gci.ls.prev = gch; + * hak->gc.ls.prev must get updated */ + HAK_ASSERT (hak, hak->gci.ls.prev == HAK_NULL); + hak->gci.ls.prev = gch; } - gch->next = hcl->gci.b; - hcl->gci.b = gch; - hcl->gci.bsz += size; + gch->next = hak->gci.b; + hak->gci.b = gch; + hak->gci.bsz += size; -#if defined(HCL_PROFILE_VM) +#if defined(HAK_PROFILE_VM) getrusage(RUSAGE_SELF, &ru); - HCL_SUB_NTIME_SNS (&rut, &rut, ru.ru_utime.tv_sec, HCL_USEC_TO_NSEC(ru.ru_utime.tv_usec)); - HCL_SUB_NTIME (&hcl->gci.stat.alloc, &hcl->gci.stat.alloc, &rut); /* do subtraction because rut is negative */ + HAK_SUB_NTIME_SNS (&rut, &rut, ru.ru_utime.tv_sec, HAK_USEC_TO_NSEC(ru.ru_utime.tv_usec)); + HAK_SUB_NTIME (&hak->gci.stat.alloc, &hak->gci.stat.alloc, &rut); /* do subtraction because rut is negative */ #endif - return (hcl_uint8_t*)(gch + 1); + return (hak_uint8_t*)(gch + 1); } -static HCL_INLINE hcl_oop_t alloc_oop_array (hcl_t* hcl, hcl_oow_t size, int ngc) +static HAK_INLINE hak_oop_t alloc_oop_array (hak_t* hak, hak_oow_t size, int ngc) { - hcl_oop_oop_t hdr; - hcl_oow_t nbytes, nbytes_aligned; + hak_oop_oop_t hdr; + hak_oow_t nbytes, nbytes_aligned; - nbytes = size * HCL_SIZEOF(hcl_oop_t); + nbytes = size * HAK_SIZEOF(hak_oop_t); /* this isn't really necessary since nbytes must be * aligned already. */ - nbytes_aligned = HCL_ALIGN(nbytes, HCL_SIZEOF(hcl_oop_t)); + nbytes_aligned = HAK_ALIGN(nbytes, HAK_SIZEOF(hak_oop_t)); - if (HCL_UNLIKELY(ngc)) + if (HAK_UNLIKELY(ngc)) { - hdr = (hcl_oop_oop_t)hcl_callocmem(hcl, HCL_SIZEOF(hcl_obj_t) + nbytes_aligned); + hdr = (hak_oop_oop_t)hak_callocmem(hak, HAK_SIZEOF(hak_obj_t) + nbytes_aligned); } else { /* making the number of bytes to allocate a multiple of - * HCL_SIZEOF(hcl_oop_t) will guarantee the starting address + * HAK_SIZEOF(hak_oop_t) will guarantee the starting address * of the allocated space to be an even number. - * see HCL_OOP_IS_NUMERIC() and HCL_OOP_IS_POINTER() */ - hdr = (hcl_oop_oop_t)hcl_allocbytes(hcl, HCL_SIZEOF(hcl_obj_t) + nbytes_aligned); + * see HAK_OOP_IS_NUMERIC() and HAK_OOP_IS_POINTER() */ + hdr = (hak_oop_oop_t)hak_allocbytes(hak, HAK_SIZEOF(hak_obj_t) + nbytes_aligned); } - if (!hdr) return HCL_NULL; + if (!hdr) return HAK_NULL; - hdr->_flags = HCL_OBJ_MAKE_FLAGS(HCL_OBJ_TYPE_OOP, HCL_SIZEOF(hcl_oop_t), 0, 0, 0, ngc, 0); - HCL_OBJ_SET_SIZE (hdr, size); - /*HCL_OBJ_SET_CLASS (hdr, hcl->_nil);*/ + hdr->_flags = HAK_OBJ_MAKE_FLAGS(HAK_OBJ_TYPE_OOP, HAK_SIZEOF(hak_oop_t), 0, 0, 0, ngc, 0); + HAK_OBJ_SET_SIZE (hdr, size); + /*HAK_OBJ_SET_CLASS (hdr, hak->_nil);*/ - while (size > 0) hdr->slot[--size] = hcl->_nil; + while (size > 0) hdr->slot[--size] = hak->_nil; - return (hcl_oop_t)hdr; + return (hak_oop_t)hdr; } -hcl_oop_t hcl_allocoopobj (hcl_t* hcl, hcl_oow_t size) +hak_oop_t hak_allocoopobj (hak_t* hak, hak_oow_t size) { - return alloc_oop_array(hcl, size, 0); + return alloc_oop_array(hak, size, 0); } -hcl_oop_t hcl_allocoopobjwithtrailer (hcl_t* hcl, hcl_oow_t size, const hcl_oob_t* bptr, hcl_oow_t blen) +hak_oop_t hak_allocoopobjwithtrailer (hak_t* hak, hak_oow_t size, const hak_oob_t* bptr, hak_oow_t blen) { - hcl_oop_oop_t hdr; - hcl_oow_t nbytes, nbytes_aligned; - hcl_oow_t i; + hak_oop_oop_t hdr; + hak_oow_t nbytes, nbytes_aligned; + hak_oow_t i; - /* +1 for the trailer size of the hcl_oow_t type */ - nbytes = (size + 1) * HCL_SIZEOF(hcl_oop_t) + blen; - nbytes_aligned = HCL_ALIGN(nbytes, HCL_SIZEOF(hcl_oop_t)); + /* +1 for the trailer size of the hak_oow_t type */ + nbytes = (size + 1) * HAK_SIZEOF(hak_oop_t) + blen; + nbytes_aligned = HAK_ALIGN(nbytes, HAK_SIZEOF(hak_oop_t)); - hdr = (hcl_oop_oop_t)hcl_allocbytes(hcl, HCL_SIZEOF(hcl_obj_t) + nbytes_aligned); - if (HCL_UNLIKELY(!hdr)) return HCL_NULL; + hdr = (hak_oop_oop_t)hak_allocbytes(hak, HAK_SIZEOF(hak_obj_t) + nbytes_aligned); + if (HAK_UNLIKELY(!hdr)) return HAK_NULL; - hdr->_flags = HCL_OBJ_MAKE_FLAGS(HCL_OBJ_TYPE_OOP, HCL_SIZEOF(hcl_oop_t), 0, 0, 0, 0, 1); - HCL_OBJ_SET_SIZE (hdr, size); - /*HCL_OBJ_SET_CLASS (hdr, hcl->_nil);*/ + hdr->_flags = HAK_OBJ_MAKE_FLAGS(HAK_OBJ_TYPE_OOP, HAK_SIZEOF(hak_oop_t), 0, 0, 0, 0, 1); + HAK_OBJ_SET_SIZE (hdr, size); + /*HAK_OBJ_SET_CLASS (hdr, hak->_nil);*/ - for (i = 0; i < size; i++) hdr->slot[i] = hcl->_nil; + for (i = 0; i < size; i++) hdr->slot[i] = hak->_nil; /* [NOTE] this is not converted to a SMOOI object */ - hdr->slot[size] = (hcl_oop_t)blen; + hdr->slot[size] = (hak_oop_t)blen; - if (bptr) HCL_MEMCPY (&hdr->slot[size + 1], bptr, blen); - else HCL_MEMSET (&hdr->slot[size + 1], 0, blen); + if (bptr) HAK_MEMCPY (&hdr->slot[size + 1], bptr, blen); + else HAK_MEMSET (&hdr->slot[size + 1], 0, blen); - return (hcl_oop_t)hdr; + return (hak_oop_t)hdr; } -static HCL_INLINE hcl_oop_t alloc_numeric_array (hcl_t* hcl, const void* ptr, hcl_oow_t len, hcl_obj_type_t type, hcl_oow_t unit, int extra, int ngc) +static HAK_INLINE hak_oop_t alloc_numeric_array (hak_t* hak, const void* ptr, hak_oow_t len, hak_obj_type_t type, hak_oow_t unit, int extra, int ngc) { /* allocate a variable object */ - hcl_oop_t hdr; - hcl_oow_t xbytes, nbytes, nbytes_aligned; + hak_oop_t hdr; + hak_oow_t xbytes, nbytes, nbytes_aligned; xbytes = len * unit; /* 'extra' indicates an extra unit to append at the end. * it's useful to store a string with a terminating null */ nbytes = extra? xbytes + unit: xbytes; - nbytes_aligned = HCL_ALIGN(nbytes, HCL_SIZEOF(hcl_oop_t)); + nbytes_aligned = HAK_ALIGN(nbytes, HAK_SIZEOF(hak_oop_t)); /* TODO: check overflow in size calculation*/ /* making the number of bytes to allocate a multiple of - * HCL_SIZEOF(hcl_oop_t) will guarantee the starting address + * HAK_SIZEOF(hak_oop_t) will guarantee the starting address * of the allocated space to be an even number. - * see HCL_OOP_IS_NUMERIC() and HCL_OOP_IS_POINTER() */ - if (HCL_UNLIKELY(ngc)) - hdr = (hcl_oop_t)hcl_callocmem(hcl, HCL_SIZEOF(hcl_obj_t) + nbytes_aligned); + * see HAK_OOP_IS_NUMERIC() and HAK_OOP_IS_POINTER() */ + if (HAK_UNLIKELY(ngc)) + hdr = (hak_oop_t)hak_callocmem(hak, HAK_SIZEOF(hak_obj_t) + nbytes_aligned); else - hdr = (hcl_oop_t)hcl_allocbytes(hcl, HCL_SIZEOF(hcl_obj_t) + nbytes_aligned); - if (HCL_UNLIKELY(!hdr)) return HCL_NULL; + hdr = (hak_oop_t)hak_allocbytes(hak, HAK_SIZEOF(hak_obj_t) + nbytes_aligned); + if (HAK_UNLIKELY(!hdr)) return HAK_NULL; - hdr->_flags = HCL_OBJ_MAKE_FLAGS(type, unit, extra, 0, 0, ngc, 0); + hdr->_flags = HAK_OBJ_MAKE_FLAGS(type, unit, extra, 0, 0, ngc, 0); hdr->_size = len; - HCL_OBJ_SET_SIZE (hdr, len); - /*HCL_OBJ_SET_CLASS (hdr, hcl->_nil);*/ + HAK_OBJ_SET_SIZE (hdr, len); + /*HAK_OBJ_SET_CLASS (hdr, hak->_nil);*/ if (ptr) { /* copy data */ - HCL_MEMCPY (hdr + 1, ptr, xbytes); - HCL_MEMSET ((hcl_uint8_t*)(hdr + 1) + xbytes, 0, nbytes_aligned - xbytes); + HAK_MEMCPY (hdr + 1, ptr, xbytes); + HAK_MEMSET ((hak_uint8_t*)(hdr + 1) + xbytes, 0, nbytes_aligned - xbytes); } else { /* initialize with zeros when the string pointer is not given */ - HCL_MEMSET (hdr + 1, 0, nbytes_aligned); + HAK_MEMSET (hdr + 1, 0, nbytes_aligned); } return hdr; } -hcl_oop_t hcl_alloccharobj (hcl_t* hcl, const hcl_ooch_t* ptr, hcl_oow_t len) +hak_oop_t hak_alloccharobj (hak_t* hak, const hak_ooch_t* ptr, hak_oow_t len) { - return alloc_numeric_array(hcl, ptr, len, HCL_OBJ_TYPE_CHAR, HCL_SIZEOF(hcl_ooch_t), 1, 0); + return alloc_numeric_array(hak, ptr, len, HAK_OBJ_TYPE_CHAR, HAK_SIZEOF(hak_ooch_t), 1, 0); } -hcl_oop_t hcl_allocbyteobj (hcl_t* hcl, const hcl_oob_t* ptr, hcl_oow_t len) +hak_oop_t hak_allocbyteobj (hak_t* hak, const hak_oob_t* ptr, hak_oow_t len) { - return alloc_numeric_array(hcl, ptr, len, HCL_OBJ_TYPE_BYTE, HCL_SIZEOF(hcl_oob_t), 0, 0); + return alloc_numeric_array(hak, ptr, len, HAK_OBJ_TYPE_BYTE, HAK_SIZEOF(hak_oob_t), 0, 0); } -hcl_oop_t hcl_allochalfwordobj (hcl_t* hcl, const hcl_oohw_t* ptr, hcl_oow_t len) +hak_oop_t hak_allochalfwordobj (hak_t* hak, const hak_oohw_t* ptr, hak_oow_t len) { - return alloc_numeric_array(hcl, ptr, len, HCL_OBJ_TYPE_HALFWORD, HCL_SIZEOF(hcl_oohw_t), 0, 0); + return alloc_numeric_array(hak, ptr, len, HAK_OBJ_TYPE_HALFWORD, HAK_SIZEOF(hak_oohw_t), 0, 0); } -hcl_oop_t hcl_allocwordobj (hcl_t* hcl, const hcl_oow_t* ptr, hcl_oow_t len) +hak_oop_t hak_allocwordobj (hak_t* hak, const hak_oow_t* ptr, hak_oow_t len) { - return alloc_numeric_array(hcl, ptr, len, HCL_OBJ_TYPE_WORD, HCL_SIZEOF(hcl_oow_t), 0, 0); + return alloc_numeric_array(hak, ptr, len, HAK_OBJ_TYPE_WORD, HAK_SIZEOF(hak_oow_t), 0, 0); } /* ------------------------------------------------------------------------ * * COMMON OBJECTS * ------------------------------------------------------------------------ */ -hcl_oop_t hcl_hatchundef (hcl_t* hcl) +hak_oop_t hak_hatchundef (hak_t* hak) { /* create the undef object for bootstrapping. * this function doesn't set the class field */ - hcl_oop_t v; - v = hcl_allocoopobj(hcl, 0); - if (HCL_UNLIKELY(!v)) + hak_oop_t v; + v = hak_allocoopobj(hak, 0); + if (HAK_UNLIKELY(!v)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), "unable to make undef - %js", orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), "unable to make undef - %js", orgmsg); } else { - HCL_OBJ_SET_FLAGS_KERNEL(v, 1); + HAK_OBJ_SET_FLAGS_KERNEL(v, 1); } return v; } -hcl_oop_t hcl_hatchnil (hcl_t* hcl) +hak_oop_t hak_hatchnil (hak_t* hak) { /* create the nil object for bootstrapping. * this function doesn't set the class field */ - hcl_oop_t v; - v = hcl_allocoopobj(hcl, 0); - if (HCL_UNLIKELY(!v)) + hak_oop_t v; + v = hak_allocoopobj(hak, 0); + if (HAK_UNLIKELY(!v)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), "unable to make nil - %js", orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), "unable to make nil - %js", orgmsg); } else { - HCL_OBJ_SET_FLAGS_KERNEL(v, 1); + HAK_OBJ_SET_FLAGS_KERNEL(v, 1); } return v; } -hcl_oop_t hcl_makecons (hcl_t* hcl, hcl_oop_t car, hcl_oop_t cdr) +hak_oop_t hak_makecons (hak_t* hak, hak_oop_t car, hak_oop_t cdr) { -/* TODO: use hcl_instantiate() */ +/* TODO: use hak_instantiate() */ #if 0 - hcl_oop_cons_t cons; + hak_oop_cons_t cons; - hcl_pushvolat (hcl, &car); - hcl_pushvolat (hcl, &cdr); + hak_pushvolat (hak, &car); + hak_pushvolat (hak, &cdr); - cons = (hcl_oop_cons_t)hcl_allocoopobj(hcl, HCL_BRAND_CONS, 2); - if (HCL_LIKELY(cons)) + cons = (hak_oop_cons_t)hak_allocoopobj(hak, HAK_BRAND_CONS, 2); + if (HAK_LIKELY(cons)) { cons->car = car; cons->cdr = cdr; - HCL_OBJ_SET_CLASS (cons, (hcl_oop_t)hcl->c_cons); + HAK_OBJ_SET_CLASS (cons, (hak_oop_t)hak->c_cons); } - hcl_popvolats (hcl, 2); + hak_popvolats (hak, 2); - return (hcl_oop_t)cons; + return (hak_oop_t)cons; #else - hcl_oop_cons_t v; - hcl_pushvolat (hcl, &car); - hcl_pushvolat (hcl, &cdr); - v = (hcl_oop_cons_t)hcl_instantiate(hcl, hcl->c_cons, HCL_NULL, 0); - hcl_popvolats (hcl, 2); - if (HCL_UNLIKELY(!v)) + hak_oop_cons_t v; + hak_pushvolat (hak, &car); + hak_pushvolat (hak, &cdr); + v = (hak_oop_cons_t)hak_instantiate(hak, hak->c_cons, HAK_NULL, 0); + hak_popvolats (hak, 2); + if (HAK_UNLIKELY(!v)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), "unable to instantiate %O - %js", hcl->c_cons->name, orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), "unable to instantiate %O - %js", hak->c_cons->name, orgmsg); } else { v->car = car; v->cdr = cdr; } - return (hcl_oop_t)v; + return (hak_oop_t)v; #endif } -hcl_oop_t hcl_makearray (hcl_t* hcl, hcl_oow_t len) +hak_oop_t hak_makearray (hak_t* hak, hak_oow_t len) { #if 0 - hcl_oop_t v; - v = hcl_allocoopobj(hcl, HCL_BRAND_ARRAY, size); - if (HCL_LIKELY(v)) HCL_OBJ_SET_CLASS (v, (hcl_oop_t)hcl->c_array); + hak_oop_t v; + v = hak_allocoopobj(hak, HAK_BRAND_ARRAY, size); + if (HAK_LIKELY(v)) HAK_OBJ_SET_CLASS (v, (hak_oop_t)hak->c_array); return v; #else - hcl_oop_t v; - v = hcl_instantiate(hcl, hcl->c_array, HCL_NULL, len); - if (HCL_UNLIKELY(!v)) + hak_oop_t v; + v = hak_instantiate(hak, hak->c_array, HAK_NULL, len); + if (HAK_UNLIKELY(!v)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), - "unable to instantiate %O - %js", hcl->c_array->name, orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), + "unable to instantiate %O - %js", hak->c_array->name, orgmsg); } return v; #endif } -hcl_oop_t hcl_makechararray (hcl_t* hcl, const hcl_ooch_t* ptr, hcl_oow_t len) +hak_oop_t hak_makechararray (hak_t* hak, const hak_ooch_t* ptr, hak_oow_t len) { - hcl_oop_t v; - v = hcl_instantiate(hcl, hcl->c_character_array, ptr, len); - if (HCL_UNLIKELY(!v)) + hak_oop_t v; + v = hak_instantiate(hak, hak->c_character_array, ptr, len); + if (HAK_UNLIKELY(!v)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), - "unable to instantiate %O - %js", hcl->c_character_array->name, orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), + "unable to instantiate %O - %js", hak->c_character_array->name, orgmsg); } return v; } -hcl_oop_t hcl_makebytearray (hcl_t* hcl, const hcl_oob_t* ptr, hcl_oow_t len) +hak_oop_t hak_makebytearray (hak_t* hak, const hak_oob_t* ptr, hak_oow_t len) { #if 0 - hcl_oop_t v; - v = hcl_allocbyteobj(hcl, HCL_BRAND_BYTE_ARRAY, ptr, size); - if (HCL_LIKELY(v)) HCL_OBJ_SET_CLASS (v, (hcl_oop_t)hcl->c_byte_array); + hak_oop_t v; + v = hak_allocbyteobj(hak, HAK_BRAND_BYTE_ARRAY, ptr, size); + if (HAK_LIKELY(v)) HAK_OBJ_SET_CLASS (v, (hak_oop_t)hak->c_byte_array); return v; #else - hcl_oop_t v; - v = hcl_instantiate(hcl, hcl->c_byte_array, ptr, len); - if (HCL_UNLIKELY(!v)) + hak_oop_t v; + v = hak_instantiate(hak, hak->c_byte_array, ptr, len); + if (HAK_UNLIKELY(!v)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), - "unable to instantiate %O - %js", hcl->c_byte_array->name, orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), + "unable to instantiate %O - %js", hak->c_byte_array->name, orgmsg); } return v; #endif } -hcl_oop_t hcl_makebytestringwithbytes (hcl_t* hcl, const hcl_oob_t* ptr, hcl_oow_t len) +hak_oop_t hak_makebytestringwithbytes (hak_t* hak, const hak_oob_t* ptr, hak_oow_t len) { - hcl_oop_byte_t v; - v = (hcl_oop_byte_t)hcl_instantiate(hcl, hcl->c_byte_string, ptr, len); - if (HCL_UNLIKELY(!v)) + hak_oop_byte_t v; + v = (hak_oop_byte_t)hak_instantiate(hak, hak->c_byte_string, ptr, len); + if (HAK_UNLIKELY(!v)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), - "unable to instantiate %O with bytes - %js", hcl->c_byte_string->name, orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), + "unable to instantiate %O with bytes - %js", hak->c_byte_string->name, orgmsg); } - return (hcl_oop_t)v; + return (hak_oop_t)v; } -hcl_oop_t hcl_makebytestring (hcl_t* hcl, const hcl_ooch_t* ptr, hcl_oow_t len) +hak_oop_t hak_makebytestring (hak_t* hak, const hak_ooch_t* ptr, hak_oow_t len) { /* a byte string is a byte array with an extra null at the back. - * the input to this function, however, is the pointer to hcl_ooch_t data + * the input to this function, however, is the pointer to hak_ooch_t data * because this function is mainly used to convert a token to a byte string. - * the token in the compiler is stored as a hcl_ooch_t string. */ + * the token in the compiler is stored as a hak_ooch_t string. */ - hcl_oop_byte_t v; + hak_oop_byte_t v; - v = (hcl_oop_byte_t)hcl_instantiate(hcl, hcl->c_byte_string, HCL_NULL, len); - if (HCL_UNLIKELY(!v)) + v = (hak_oop_byte_t)hak_instantiate(hak, hak->c_byte_string, HAK_NULL, len); + if (HAK_UNLIKELY(!v)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), - "unable to instantiate %O - %js", hcl->c_byte_string->name, orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), + "unable to instantiate %O - %js", hak->c_byte_string->name, orgmsg); } else { - hcl_oow_t i; - hcl_oob_t b; + hak_oow_t i; + hak_oob_t b; for (i = 0; i < len; i++) { b = ptr[i] & 0xFF; - HCL_OBJ_SET_BYTE_VAL(v, i, b); + HAK_OBJ_SET_BYTE_VAL(v, i, b); } } - return (hcl_oop_t)v; + return (hak_oop_t)v; } -hcl_oop_t hcl_makestring (hcl_t* hcl, const hcl_ooch_t* ptr, hcl_oow_t len) +hak_oop_t hak_makestring (hak_t* hak, const hak_ooch_t* ptr, hak_oow_t len) { - hcl_oop_t v; - v = hcl_instantiate(hcl, hcl->c_string, ptr, len); - if (HCL_UNLIKELY(!v)) + hak_oop_t v; + v = hak_instantiate(hak, hak->c_string, ptr, len); + if (HAK_UNLIKELY(!v)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), - "unable to instantiate %O - %js", hcl->c_string->name, orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), + "unable to instantiate %O - %js", hak->c_string->name, orgmsg); } return v; } -hcl_oop_t hcl_makefpdec (hcl_t* hcl, hcl_oop_t value, hcl_ooi_t scale) +hak_oop_t hak_makefpdec (hak_t* hak, hak_oop_t value, hak_ooi_t scale) { - hcl_oop_fpdec_t f; + hak_oop_fpdec_t f; - HCL_ASSERT (hcl, hcl_isint(hcl, value)); + HAK_ASSERT (hak, hak_isint(hak, value)); if (scale <= 0) return value; /* if scale is 0 or less, return the value as it it */ - if (scale > HCL_SMOOI_MAX) + if (scale > HAK_SMOOI_MAX) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "fpdec scale too large - %zd", scale); - return HCL_NULL; + hak_seterrbfmt (hak, HAK_EINVAL, "fpdec scale too large - %zd", scale); + return HAK_NULL; } - hcl_pushvolat (hcl, &value); - f = (hcl_oop_fpdec_t)hcl_instantiate(hcl, hcl->c_fixed_point_decimal, HCL_NULL, 0); - hcl_popvolat (hcl); + hak_pushvolat (hak, &value); + f = (hak_oop_fpdec_t)hak_instantiate(hak, hak->c_fixed_point_decimal, HAK_NULL, 0); + hak_popvolat (hak); - if (HCL_UNLIKELY(!f)) + if (HAK_UNLIKELY(!f)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt ( - hcl, HCL_ERRNUM(hcl), "unable to instantiate %O - %js", - hcl->c_fixed_point_decimal->name, orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt ( + hak, HAK_ERRNUM(hak), "unable to instantiate %O - %js", + hak->c_fixed_point_decimal->name, orgmsg); } else { f->value = value; - f->scale = HCL_SMOOI_TO_OOP(scale); + f->scale = HAK_SMOOI_TO_OOP(scale); } - return (hcl_oop_t)f; + return (hak_oop_t)f; } -hcl_oop_t hcl_makeclass (hcl_t* hcl, hcl_oop_t class_name, hcl_oop_t superclass, hcl_ooi_t spec, hcl_ooi_t selfspec, hcl_oop_t ivars_str, hcl_oop_t cvars_str) +hak_oop_t hak_makeclass (hak_t* hak, hak_oop_t class_name, hak_oop_t superclass, hak_ooi_t spec, hak_ooi_t selfspec, hak_oop_t ivars_str, hak_oop_t cvars_str) { - hcl_oop_class_t c; + hak_oop_class_t c; - hcl_pushvolat (hcl, &class_name); - hcl_pushvolat (hcl, &superclass); - hcl_pushvolat (hcl, &ivars_str); - hcl_pushvolat (hcl, &cvars_str); - c = (hcl_oop_class_t)hcl_instantiate(hcl, hcl->c_class, HCL_NULL, HCL_CLASS_SELFSPEC_CLASSVARS(selfspec)); - hcl_popvolats (hcl, 4); - if (HCL_UNLIKELY(!c)) + hak_pushvolat (hak, &class_name); + hak_pushvolat (hak, &superclass); + hak_pushvolat (hak, &ivars_str); + hak_pushvolat (hak, &cvars_str); + c = (hak_oop_class_t)hak_instantiate(hak, hak->c_class, HAK_NULL, HAK_CLASS_SELFSPEC_CLASSVARS(selfspec)); + hak_popvolats (hak, 4); + if (HAK_UNLIKELY(!c)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), "unable to instantiate class %O - %js", class_name, orgmsg); } else { - hcl_ooi_t nivars_super; + hak_ooi_t nivars_super; - if (!HCL_IS_NIL(hcl, superclass)) + if (!HAK_IS_NIL(hak, superclass)) { - hcl_ooi_t superspec; - superspec = HCL_OOP_TO_SMOOI(((hcl_oop_class_t)superclass)->spec); - nivars_super = HCL_OOP_TO_SMOOI(((hcl_oop_class_t)superclass)->nivars_super) + HCL_CLASS_SPEC_NAMED_INSTVARS(superspec); + hak_ooi_t superspec; + superspec = HAK_OOP_TO_SMOOI(((hak_oop_class_t)superclass)->spec); + nivars_super = HAK_OOP_TO_SMOOI(((hak_oop_class_t)superclass)->nivars_super) + HAK_CLASS_SPEC_NAMED_INSTVARS(superspec); } else { nivars_super = 0; } - c->spec = HCL_SMOOI_TO_OOP(spec); - c->selfspec = HCL_SMOOI_TO_OOP(selfspec); + c->spec = HAK_SMOOI_TO_OOP(spec); + c->selfspec = HAK_SMOOI_TO_OOP(selfspec); c->name = class_name; c->superclass = superclass; - c->nivars_super = HCL_SMOOI_TO_OOP(nivars_super); - c->ibrand = HCL_SMOOI_TO_OOP(HCL_BRAND_INSTANCE); /* TODO: really need ibrand??? */ + c->nivars_super = HAK_SMOOI_TO_OOP(nivars_super); + c->ibrand = HAK_SMOOI_TO_OOP(HAK_BRAND_INSTANCE); /* TODO: really need ibrand??? */ /* TODO: remember ivars_str and vars_str? */ /* duplicate ivars_str and cvars_str and set it to c->ivarnames and c->cvarnames???? */ } - return (hcl_oop_t)c; + return (hak_oop_t)c; } struct decoded_spec_t { - hcl_obj_type_t type; - hcl_oow_t alloclen; + hak_obj_type_t type; + hak_oow_t alloclen; int flexi; }; typedef struct decoded_spec_t decoded_spec_t; -static HCL_INLINE int decode_spec (hcl_t* hcl, hcl_oop_class_t _class, hcl_oow_t num_flexi_fields, decoded_spec_t* dspec) +static HAK_INLINE int decode_spec (hak_t* hak, hak_oop_class_t _class, hak_oow_t num_flexi_fields, decoded_spec_t* dspec) { - hcl_oow_t spec; - hcl_oow_t num_fixed_fields; - hcl_obj_type_t indexed_type; + hak_oow_t spec; + hak_oow_t num_fixed_fields; + hak_obj_type_t indexed_type; - HCL_ASSERT (hcl, HCL_OOP_IS_POINTER(_class)); - HCL_ASSERT (hcl, HCL_CLASSOF(hcl, _class) == (hcl_oop_t)hcl->c_class); + HAK_ASSERT (hak, HAK_OOP_IS_POINTER(_class)); + HAK_ASSERT (hak, HAK_CLASSOF(hak, _class) == (hak_oop_t)hak->c_class); - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(_class->spec)); - spec = HCL_OOP_TO_SMOOI(_class->spec); + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(_class->spec)); + spec = HAK_OOP_TO_SMOOI(_class->spec); - num_fixed_fields = HCL_CLASS_SPEC_NAMED_INSTVARS(spec); - HCL_ASSERT (hcl, num_fixed_fields <= HCL_MAX_NAMED_INSTVARS); + num_fixed_fields = HAK_CLASS_SPEC_NAMED_INSTVARS(spec); + HAK_ASSERT (hak, num_fixed_fields <= HAK_MAX_NAMED_INSTVARS); - if (HCL_CLASS_SPEC_IS_INDEXED(spec)) + if (HAK_CLASS_SPEC_IS_INDEXED(spec)) { - indexed_type = (hcl_obj_type_t)HCL_CLASS_SPEC_INDEXED_TYPE(spec); + indexed_type = (hak_obj_type_t)HAK_CLASS_SPEC_INDEXED_TYPE(spec); /* the number of the fixed fields for a non-pointer object are supported. * the fixed fields of a pointer object holds named instance variables @@ -546,9 +546,9 @@ static HCL_INLINE int decode_spec (hcl_t* hcl, hcl_oop_class_t _class, hcl_oow_t * when it comes to spec decoding, there is no difference between a pointer * object and a non-pointer object */ - if (num_flexi_fields > HCL_MAX_INDEXED_INSTVARS(num_fixed_fields)) + if (num_flexi_fields > HAK_MAX_INDEXED_INSTVARS(num_fixed_fields)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "number of flexi-fields(%zu) too big for a class %O", num_flexi_fields, _class); + hak_seterrbfmt (hak, HAK_EINVAL, "number of flexi-fields(%zu) too big for a class %O", num_flexi_fields, _class); return -1; } } @@ -560,49 +560,49 @@ static HCL_INLINE int decode_spec (hcl_t* hcl, hcl_oop_class_t _class, hcl_oow_t /* for an object composed of non-oop fields, * the field can be accessed using a instance variable name. * the instructions for instance variable access must cater for this. - * for example, the Primitive class is HCL_OBJ_TYPE_WORD and not variable */ - /*indexed_type = HCL_OBJ_TYPE_OOP; <- no more fixed to OOP fields only. */ - indexed_type = (hcl_obj_type_t)HCL_CLASS_SPEC_INDEXED_TYPE(spec); + * for example, the Primitive class is HAK_OBJ_TYPE_WORD and not variable */ + /*indexed_type = HAK_OBJ_TYPE_OOP; <- no more fixed to OOP fields only. */ + indexed_type = (hak_obj_type_t)HAK_CLASS_SPEC_INDEXED_TYPE(spec); if (num_flexi_fields > 0) { - hcl_seterrbfmt (hcl, HCL_EPERM, "flexi-fields(%zu) disallowed for a class %O", num_flexi_fields, _class); + hak_seterrbfmt (hak, HAK_EPERM, "flexi-fields(%zu) disallowed for a class %O", num_flexi_fields, _class); return -1; } } - HCL_ASSERT (hcl, num_fixed_fields + num_flexi_fields <= HCL_OBJ_SIZE_MAX); - dspec->flexi = !!HCL_CLASS_SPEC_IS_INDEXED(spec); + HAK_ASSERT (hak, num_fixed_fields + num_flexi_fields <= HAK_OBJ_SIZE_MAX); + dspec->flexi = !!HAK_CLASS_SPEC_IS_INDEXED(spec); dspec->type = indexed_type; - dspec->alloclen = num_fixed_fields + num_flexi_fields + HCL_OOP_TO_SMOOI(_class->nivars_super); + dspec->alloclen = num_fixed_fields + num_flexi_fields + HAK_OOP_TO_SMOOI(_class->nivars_super); return 0; } -hcl_oop_t hcl_instantiate (hcl_t* hcl, hcl_oop_class_t _class, const void* vptr, hcl_oow_t vlen) +hak_oop_t hak_instantiate (hak_t* hak, hak_oop_class_t _class, const void* vptr, hak_oow_t vlen) { - hcl_oop_t oop; + hak_oop_t oop; decoded_spec_t dspec; - hcl_oow_t tmp_count = 0; + hak_oow_t tmp_count = 0; - HCL_ASSERT (hcl, hcl->_nil != HCL_NULL); + HAK_ASSERT (hak, hak->_nil != HAK_NULL); - if (decode_spec(hcl, _class, vlen, &dspec) <= -1) return HCL_NULL; + if (decode_spec(hak, _class, vlen, &dspec) <= -1) return HAK_NULL; - hcl_pushvolat (hcl, (hcl_oop_t*)&_class); tmp_count++; + hak_pushvolat (hak, (hak_oop_t*)&_class); tmp_count++; switch (dspec.type) { - case HCL_OBJ_TYPE_OOP: + case HAK_OBJ_TYPE_OOP: /* both the fixed part(named instance variables) and * the variable part(indexed instance variables) are allowed. */ - oop = hcl_allocoopobj(hcl, dspec.alloclen); - if (HCL_LIKELY(oop)) + oop = hak_allocoopobj(hak, dspec.alloclen); + if (HAK_LIKELY(oop)) { #if 0 /* initialize named instance variables with default values */ - if (_class->initv[0] != hcl->_nil) + if (_class->initv[0] != hak->_nil) { - hcl_oow_t i = HCL_OBJ_GET_SIZE(_class->initv[0]); + hak_oow_t i = HAK_OBJ_GET_SIZE(_class->initv[0]); /* [NOTE] i don't deep-copy initial values. * if you change the contents of compound values like arrays, @@ -612,90 +612,90 @@ hcl_oop_t hcl_instantiate (hcl_t* hcl, hcl_oop_class_t _class, const void* vptr, while (i > 0) { --i; - HCL_OBJ_SET_OOP_VAL (oop, i, HCL_OBJ_GET_OOP_VAL(_class->initv[0], i)); + HAK_OBJ_SET_OOP_VAL (oop, i, HAK_OBJ_GET_OOP_VAL(_class->initv[0], i)); } } #endif } - HCL_ASSERT (hcl, vptr == HCL_NULL); + HAK_ASSERT (hak, vptr == HAK_NULL); /* This function is not GC-safe. so i don't want to initialize the payload of a pointer object. The caller can call this function and initialize payloads then. if (oop && vptr && vlen > 0) { - hcl_oop_oop_t hdr = (hcl_oop_oop_t)oop; - HCL_MEMCPY (&hdr->slot[named_ivar], vptr, vlen * HCL_SIZEOF(hcl_oop_t)); + hak_oop_oop_t hdr = (hak_oop_oop_t)oop; + HAK_MEMCPY (&hdr->slot[named_ivar], vptr, vlen * HAK_SIZEOF(hak_oop_t)); } For the above code to work, it should protect the elements of - the vptr array with hcl_pushvolat(). So it might be better + the vptr array with hak_pushvolat(). So it might be better to disallow a non-NULL vptr when indexed_type is OOP. See the assertion above this comment block. */ break; - case HCL_OBJ_TYPE_CHAR: - oop = hcl_alloccharobj(hcl, (const hcl_ooch_t*)vptr, dspec.alloclen); + case HAK_OBJ_TYPE_CHAR: + oop = hak_alloccharobj(hak, (const hak_ooch_t*)vptr, dspec.alloclen); break; - case HCL_OBJ_TYPE_BYTE: - oop = hcl_allocbyteobj(hcl, (const hcl_oob_t*)vptr, dspec.alloclen); + case HAK_OBJ_TYPE_BYTE: + oop = hak_allocbyteobj(hak, (const hak_oob_t*)vptr, dspec.alloclen); break; - case HCL_OBJ_TYPE_HALFWORD: - oop = hcl_allochalfwordobj(hcl, (const hcl_oohw_t*)vptr, dspec.alloclen); + case HAK_OBJ_TYPE_HALFWORD: + oop = hak_allochalfwordobj(hak, (const hak_oohw_t*)vptr, dspec.alloclen); break; - case HCL_OBJ_TYPE_WORD: - oop = hcl_allocwordobj(hcl, (const hcl_oow_t*)vptr, dspec.alloclen); + case HAK_OBJ_TYPE_WORD: + oop = hak_allocwordobj(hak, (const hak_oow_t*)vptr, dspec.alloclen); break; - /* TODO: more types... HCL_OBJ_TYPE_INT... HCL_OBJ_TYPE_FLOAT, HCL_OBJ_TYPE_UINT16, etc*/ + /* TODO: more types... HAK_OBJ_TYPE_INT... HAK_OBJ_TYPE_FLOAT, HAK_OBJ_TYPE_UINT16, etc*/ default: - hcl_seterrnum (hcl, HCL_EINTERN); - oop = HCL_NULL; + hak_seterrnum (hak, HAK_EINTERN); + oop = HAK_NULL; break; } - if (HCL_LIKELY(oop)) + if (HAK_LIKELY(oop)) { - hcl_ooi_t spec; - HCL_OBJ_SET_CLASS (oop, (hcl_oop_t)_class); - spec = HCL_OOP_TO_SMOOI(_class->spec); - if (HCL_CLASS_SPEC_IS_IMMUTABLE(spec)) HCL_OBJ_SET_FLAGS_RDONLY (oop, 1); + hak_ooi_t spec; + HAK_OBJ_SET_CLASS (oop, (hak_oop_t)_class); + spec = HAK_OOP_TO_SMOOI(_class->spec); + if (HAK_CLASS_SPEC_IS_IMMUTABLE(spec)) HAK_OBJ_SET_FLAGS_RDONLY (oop, 1); #if 0 /* TODO: revive this part */ - if (HCL_CLASS_SPEC_IS_UNCOPYABLE(spec)) HCL_OBJ_SET_FLAGS_UNCOPYABLE (oop, 1); + if (HAK_CLASS_SPEC_IS_UNCOPYABLE(spec)) HAK_OBJ_SET_FLAGS_UNCOPYABLE (oop, 1); #endif - HCL_OBJ_SET_FLAGS_FLEXI(oop, dspec.flexi); + HAK_OBJ_SET_FLAGS_FLEXI(oop, dspec.flexi); } - hcl_popvolats (hcl, tmp_count); + hak_popvolats (hak, tmp_count); return oop; } -hcl_oop_t hcl_instantiatewithtrailer (hcl_t* hcl, hcl_oop_class_t _class, hcl_oow_t vlen, const hcl_oob_t* trptr, hcl_oow_t trlen) +hak_oop_t hak_instantiatewithtrailer (hak_t* hak, hak_oop_class_t _class, hak_oow_t vlen, const hak_oob_t* trptr, hak_oow_t trlen) { - hcl_oop_t oop; + hak_oop_t oop; decoded_spec_t dspec; - hcl_oow_t tmp_count = 0; + hak_oow_t tmp_count = 0; - HCL_ASSERT (hcl, hcl->_nil != HCL_NULL); + HAK_ASSERT (hak, hak->_nil != HAK_NULL); - if (decode_spec(hcl, _class, vlen, &dspec) <= -1) return HCL_NULL; + if (decode_spec(hak, _class, vlen, &dspec) <= -1) return HAK_NULL; - hcl_pushvolat (hcl, (hcl_oop_t*)&_class); tmp_count++; + hak_pushvolat (hak, (hak_oop_t*)&_class); tmp_count++; switch (dspec.type) { - case HCL_OBJ_TYPE_OOP: - oop = hcl_allocoopobjwithtrailer(hcl, dspec.alloclen, trptr, trlen); - if (HCL_LIKELY(oop)) + case HAK_OBJ_TYPE_OOP: + oop = hak_allocoopobjwithtrailer(hak, dspec.alloclen, trptr, trlen); + if (HAK_LIKELY(oop)) { /* initialize named instance variables with default values */ #if 0 /* TODO: revive this part */ - if (_class->initv[0] != hcl->_nil) + if (_class->initv[0] != hak->_nil) { - hcl_oow_t i = HCL_OBJ_GET_SIZE(_class->initv[0]); + hak_oow_t i = HAK_OBJ_GET_SIZE(_class->initv[0]); /* [NOTE] i don't deep-copy initial values. * if you change the contents of compound values like arrays, @@ -705,7 +705,7 @@ hcl_oop_t hcl_instantiatewithtrailer (hcl_t* hcl, hcl_oop_class_t _class, hcl_oo while (i > 0) { --i; - HCL_STORE_OOP (hcl, HCL_OBJ_GET_OOP_PTR(oop, i), HCL_OBJ_GET_OOP_VAL(_class->initv[0], i)); + HAK_STORE_OOP (hak, HAK_OBJ_GET_OOP_PTR(oop, i), HAK_OBJ_GET_OOP_VAL(_class->initv[0], i)); } } #endif @@ -715,31 +715,31 @@ hcl_oop_t hcl_instantiatewithtrailer (hcl_t* hcl, hcl_oop_class_t _class, hcl_oo default: #if 0 - HCL_DEBUG3 (hcl, "Not allowed to instantiate a non-pointer object of the %.*js class with trailer %zu\n", - HCL_OBJ_GET_SIZE(_class->name), - HCL_OBJ_GET_CHAR_SLOT(_class->name), + HAK_DEBUG3 (hak, "Not allowed to instantiate a non-pointer object of the %.*js class with trailer %zu\n", + HAK_OBJ_GET_SIZE(_class->name), + HAK_OBJ_GET_CHAR_SLOT(_class->name), trlen); #endif - hcl_seterrnum (hcl, HCL_EPERM); - oop = HCL_NULL; + hak_seterrnum (hak, HAK_EPERM); + oop = HAK_NULL; break; } - if (HCL_LIKELY(oop)) + if (HAK_LIKELY(oop)) { - hcl_ooi_t spec; - HCL_OBJ_SET_CLASS (oop, (hcl_oop_t)_class); - spec = HCL_OOP_TO_SMOOI(_class->spec); - if (HCL_CLASS_SPEC_IS_IMMUTABLE(spec)) HCL_OBJ_SET_FLAGS_RDONLY (oop, 1); + hak_ooi_t spec; + HAK_OBJ_SET_CLASS (oop, (hak_oop_t)_class); + spec = HAK_OOP_TO_SMOOI(_class->spec); + if (HAK_CLASS_SPEC_IS_IMMUTABLE(spec)) HAK_OBJ_SET_FLAGS_RDONLY (oop, 1); #if 0 /* TODO: revive this part */ - /* the object with trailer is to to uncopyable in hcl_allocoopobjwithtrailer() so no need to check/set it again here - if (HCL_CLASS_SPEC_IS_UNCOPYABLE(spec)) HCL_OBJ_SET_FLAGS_UNCOPYABLE (oop, 1); + /* the object with trailer is to to uncopyable in hak_allocoopobjwithtrailer() so no need to check/set it again here + if (HAK_CLASS_SPEC_IS_UNCOPYABLE(spec)) HAK_OBJ_SET_FLAGS_UNCOPYABLE (oop, 1); */ #endif - HCL_OBJ_SET_FLAGS_FLEXI(oop, dspec.flexi); + HAK_OBJ_SET_FLAGS_FLEXI(oop, dspec.flexi); } - hcl_popvolats (hcl, tmp_count); + hak_popvolats (hak, tmp_count); return oop; } @@ -747,63 +747,63 @@ hcl_oop_t hcl_instantiatewithtrailer (hcl_t* hcl, hcl_oop_class_t _class, hcl_oo * NGC HANDLING * ------------------------------------------------------------------------ */ -void hcl_freengcobj (hcl_t* hcl, hcl_oop_t obj) +void hak_freengcobj (hak_t* hak, hak_oop_t obj) { - if (HCL_OOP_IS_POINTER(obj) && HCL_OBJ_GET_FLAGS_NGC(obj)) hcl_freemem (hcl, obj); + if (HAK_OOP_IS_POINTER(obj) && HAK_OBJ_GET_FLAGS_NGC(obj)) hak_freemem (hak, obj); } -hcl_oop_t hcl_makengcbytearray (hcl_t* hcl, const hcl_oob_t* ptr, hcl_oow_t len) +hak_oop_t hak_makengcbytearray (hak_t* hak, const hak_oob_t* ptr, hak_oow_t len) { - return alloc_numeric_array(hcl, ptr, len, HCL_OBJ_TYPE_BYTE, HCL_SIZEOF(hcl_oob_t), 0, 1); + return alloc_numeric_array(hak, ptr, len, HAK_OBJ_TYPE_BYTE, HAK_SIZEOF(hak_oob_t), 0, 1); } -hcl_oop_t hcl_remakengcbytearray (hcl_t* hcl, hcl_oop_t obj, hcl_oow_t newsize) +hak_oop_t hak_remakengcbytearray (hak_t* hak, hak_oop_t obj, hak_oow_t newsize) { - hcl_oop_t tmp; + hak_oop_t tmp; - HCL_ASSERT (hcl, !obj || (HCL_OOP_IS_POINTER(obj) && HCL_OBJ_GET_FLAGS_NGC(obj))); + HAK_ASSERT (hak, !obj || (HAK_OOP_IS_POINTER(obj) && HAK_OBJ_GET_FLAGS_NGC(obj))); - /* no hcl_pushvolat() is needed because 'obj' is a non-GC object. */ + /* no hak_pushvolat() is needed because 'obj' is a non-GC object. */ /* TODO: improve this by using realloc */ - tmp = hcl_makengcbytearray(hcl, HCL_NULL, newsize); - if (HCL_LIKELY(tmp)) + tmp = hak_makengcbytearray(hak, HAK_NULL, newsize); + if (HAK_LIKELY(tmp)) { if (obj) { - hcl_oow_t cpsize; - cpsize = (newsize > HCL_OBJ_GET_SIZE(obj))? HCL_OBJ_GET_SIZE(obj): newsize; - HCL_MEMCPY (((hcl_oop_byte_t)tmp)->slot, ((hcl_oop_byte_t)obj)->slot, cpsize * HCL_SIZEOF(hcl_oob_t)); + hak_oow_t cpsize; + cpsize = (newsize > HAK_OBJ_GET_SIZE(obj))? HAK_OBJ_GET_SIZE(obj): newsize; + HAK_MEMCPY (((hak_oop_byte_t)tmp)->slot, ((hak_oop_byte_t)obj)->slot, cpsize * HAK_SIZEOF(hak_oob_t)); } - hcl_freengcobj (hcl, obj); + hak_freengcobj (hak, obj); } return tmp; } -hcl_oop_t hcl_makengcarray (hcl_t* hcl, hcl_oow_t len) +hak_oop_t hak_makengcarray (hak_t* hak, hak_oow_t len) { - return alloc_numeric_array(hcl, HCL_NULL, len, HCL_OBJ_TYPE_OOP, HCL_SIZEOF(hcl_oop_t), 0, 1); + return alloc_numeric_array(hak, HAK_NULL, len, HAK_OBJ_TYPE_OOP, HAK_SIZEOF(hak_oop_t), 0, 1); } -hcl_oop_t hcl_remakengcarray (hcl_t* hcl, hcl_oop_t obj, hcl_oow_t newsize) +hak_oop_t hak_remakengcarray (hak_t* hak, hak_oop_t obj, hak_oow_t newsize) { - hcl_oop_t tmp; + hak_oop_t tmp; - HCL_ASSERT (hcl, !obj || (HCL_OOP_IS_POINTER(obj) && HCL_OBJ_GET_FLAGS_NGC(obj))); + HAK_ASSERT (hak, !obj || (HAK_OOP_IS_POINTER(obj) && HAK_OBJ_GET_FLAGS_NGC(obj))); - /* no hcl_pushvolat() is needed because 'obj' is a non-GC object. */ + /* no hak_pushvolat() is needed because 'obj' is a non-GC object. */ /* TODO: improve this by using realloc */ - tmp = hcl_makengcarray(hcl, newsize); - if (HCL_LIKELY(tmp)) + tmp = hak_makengcarray(hak, newsize); + if (HAK_LIKELY(tmp)) { if (obj) { - hcl_oow_t cpsize; - cpsize = (newsize > HCL_OBJ_GET_SIZE(obj))? HCL_OBJ_GET_SIZE(obj): newsize; - HCL_MEMCPY (((hcl_oop_oop_t)tmp)->slot, ((hcl_oop_oop_t)obj)->slot, cpsize * HCL_SIZEOF(hcl_oop_t)); + hak_oow_t cpsize; + cpsize = (newsize > HAK_OBJ_GET_SIZE(obj))? HAK_OBJ_GET_SIZE(obj): newsize; + HAK_MEMCPY (((hak_oop_oop_t)tmp)->slot, ((hak_oop_oop_t)obj)->slot, cpsize * HAK_SIZEOF(hak_oop_t)); } - hcl_freengcobj (hcl, obj); + hak_freengcobj (hak, obj); } return tmp; } @@ -811,16 +811,16 @@ hcl_oop_t hcl_remakengcarray (hcl_t* hcl, hcl_oop_t obj, hcl_oow_t newsize) /* ------------------------------------------------------------------------ * * CONS * ------------------------------------------------------------------------ */ -hcl_oow_t hcl_countcons (hcl_t* hcl, hcl_oop_t cons) +hak_oow_t hak_countcons (hak_t* hak, hak_oop_t cons) { /* this function ignores the last cdr */ - hcl_oow_t count = 1; + hak_oow_t count = 1; - HCL_ASSERT (hcl, HCL_IS_CONS(hcl, cons)); + HAK_ASSERT (hak, HAK_IS_CONS(hak, cons)); do { - cons = HCL_CONS_CDR(cons); - if (!HCL_IS_CONS(hcl, cons)) break; + cons = HAK_CONS_CDR(cons); + if (!HAK_IS_CONS(hak, cons)) break; count++; } while (1); @@ -828,37 +828,37 @@ hcl_oow_t hcl_countcons (hcl_t* hcl, hcl_oop_t cons) return count; } -hcl_oop_t hcl_getlastconscdr (hcl_t* hcl, hcl_oop_t cons) +hak_oop_t hak_getlastconscdr (hak_t* hak, hak_oop_t cons) { - HCL_ASSERT (hcl, HCL_IS_CONS(hcl, cons)); + HAK_ASSERT (hak, HAK_IS_CONS(hak, cons)); do { - cons = HCL_CONS_CDR(cons); - if (!HCL_IS_CONS(hcl, cons)) break; + cons = HAK_CONS_CDR(cons); + if (!HAK_IS_CONS(hak, cons)) break; } while (1); return cons; } -hcl_oop_t hcl_reversecons (hcl_t* hcl, hcl_oop_t cons) +hak_oop_t hak_reversecons (hak_t* hak, hak_oop_t cons) { - hcl_oop_t ptr, prev, next; + hak_oop_t ptr, prev, next; /* Note: The non-nil cdr in the last cons cell gets lost. * e.g.) Reversing (1 2 3 . 4) results in (3 2 1) */ - HCL_ASSERT (hcl, HCL_IS_CONS(hcl, cons)); + HAK_ASSERT (hak, HAK_IS_CONS(hak, cons)); - prev = hcl->_nil; + prev = hak->_nil; ptr = cons; do { - next = HCL_CONS_CDR(ptr); - HCL_CONS_CDR(ptr) = prev; + next = HAK_CONS_CDR(ptr); + HAK_CONS_CDR(ptr) = prev; prev = ptr; - if (!HCL_IS_CONS(hcl, next)) break; + if (!HAK_IS_CONS(hak, next)) break; ptr = next; } while (1); @@ -870,45 +870,45 @@ hcl_oop_t hcl_reversecons (hcl_t* hcl, hcl_oop_t cons) /* ------------------------------------------------------------------------ * * OBJECT HASHING * ------------------------------------------------------------------------ */ -int hcl_hashobj (hcl_t* hcl, hcl_oop_t obj, hcl_oow_t* xhv) +int hak_hashobj (hak_t* hak, hak_oop_t obj, hak_oow_t* xhv) { - hcl_oow_t hv; + hak_oow_t hv; - if (obj == hcl->_nil) + if (obj == hak->_nil) { *xhv = 0; return 0; } - else if (obj == hcl->_true) + else if (obj == hak->_true) { *xhv = 1; return 0; } - else if (obj == hcl->_false) + else if (obj == hak->_false) { *xhv = 2; return 0; } - switch (HCL_OOP_GET_TAG(obj)) + switch (HAK_OOP_GET_TAG(obj)) { - case HCL_OOP_TAG_SMOOI: - hv = HCL_OOP_TO_SMOOI(obj); + case HAK_OOP_TAG_SMOOI: + hv = HAK_OOP_TO_SMOOI(obj); break; /* - case HCL_OOP_TAG_SMPTR: - hv = (hcl_oow_t)HCL_OOP_TO_SMPTR(obj); + case HAK_OOP_TAG_SMPTR: + hv = (hak_oow_t)HAK_OOP_TO_SMPTR(obj); break; */ - case HCL_OOP_TAG_CHAR: - hv = HCL_OOP_TO_CHAR(obj); + case HAK_OOP_TAG_CHAR: + hv = HAK_OOP_TO_CHAR(obj); break; /* - case HCL_OOP_TAG_ERROR: - hv = HCL_OOP_TO_ERROR(obj); + case HAK_OOP_TAG_ERROR: + hv = HAK_OOP_TO_ERROR(obj); break; */ @@ -916,38 +916,38 @@ int hcl_hashobj (hcl_t* hcl, hcl_oop_t obj, hcl_oow_t* xhv) { int type; - HCL_ASSERT (hcl, HCL_OOP_IS_POINTER(obj)); - type = HCL_OBJ_GET_FLAGS_TYPE(obj); + HAK_ASSERT (hak, HAK_OOP_IS_POINTER(obj)); + type = HAK_OBJ_GET_FLAGS_TYPE(obj); switch (type) { - case HCL_OBJ_TYPE_BYTE: - hv = hcl_hash_bytes(((hcl_oop_byte_t)obj)->slot, HCL_OBJ_GET_SIZE(obj)); + case HAK_OBJ_TYPE_BYTE: + hv = hak_hash_bytes(((hak_oop_byte_t)obj)->slot, HAK_OBJ_GET_SIZE(obj)); break; - case HCL_OBJ_TYPE_CHAR: - hv = hcl_hash_oochars(((hcl_oop_char_t)obj)->slot, HCL_OBJ_GET_SIZE(obj)); + case HAK_OBJ_TYPE_CHAR: + hv = hak_hash_oochars(((hak_oop_char_t)obj)->slot, HAK_OBJ_GET_SIZE(obj)); break; - case HCL_OBJ_TYPE_HALFWORD: - hv = hcl_hash_halfwords(((hcl_oop_halfword_t)obj)->slot, HCL_OBJ_GET_SIZE(obj)); + case HAK_OBJ_TYPE_HALFWORD: + hv = hak_hash_halfwords(((hak_oop_halfword_t)obj)->slot, HAK_OBJ_GET_SIZE(obj)); break; - case HCL_OBJ_TYPE_WORD: - hv = hcl_hash_words(((hcl_oop_word_t)obj)->slot, HCL_OBJ_GET_SIZE(obj)); + case HAK_OBJ_TYPE_WORD: + hv = hak_hash_words(((hak_oop_word_t)obj)->slot, HAK_OBJ_GET_SIZE(obj)); break; default: - /* HCL_OBJ_TYPE_OOP, ... */ - hcl_seterrbfmt(hcl, HCL_ENOIMPL, "no builtin hash implemented for %O", obj); /* TODO: better error code? */ + /* HAK_OBJ_TYPE_OOP, ... */ + hak_seterrbfmt(hak, HAK_ENOIMPL, "no builtin hash implemented for %O", obj); /* TODO: better error code? */ return -1; } break; } } - /* i assume that hcl_hashxxx() functions limits the return value to fall - * between 0 and HCL_SMOOI_MAX inclusive */ - HCL_ASSERT (hcl, hv >= 0 && hv <= HCL_SMOOI_MAX); + /* i assume that hak_hashxxx() functions limits the return value to fall + * between 0 and HAK_SMOOI_MAX inclusive */ + HAK_ASSERT (hak, hv >= 0 && hv <= HAK_SMOOI_MAX); *xhv = hv; return 0; } @@ -955,74 +955,74 @@ int hcl_hashobj (hcl_t* hcl, hcl_oop_t obj, hcl_oow_t* xhv) /* ------------------------------------------------------------------------ * * OBJECT EQUALITY * ------------------------------------------------------------------------ */ -int hcl_equalobjs (hcl_t* hcl, hcl_oop_t rcv, hcl_oop_t arg) +int hak_equalobjs (hak_t* hak, hak_oop_t rcv, hak_oop_t arg) { int rtag; if (rcv == arg) return 1; /* identical. so equal */ - rtag = HCL_OOP_GET_TAG(rcv); - if (rtag != HCL_OOP_GET_TAG(arg)) return 0; + rtag = HAK_OOP_GET_TAG(rcv); + if (rtag != HAK_OOP_GET_TAG(arg)) return 0; switch (rtag) { - case HCL_OOP_TAG_SMOOI: - return HCL_OOP_TO_SMOOI(rcv) == HCL_OOP_TO_SMOOI(arg)? 1: 0; + case HAK_OOP_TAG_SMOOI: + return HAK_OOP_TO_SMOOI(rcv) == HAK_OOP_TO_SMOOI(arg)? 1: 0; - case HCL_OOP_TAG_SMPTR: - return HCL_OOP_TO_SMPTR(rcv) == HCL_OOP_TO_SMPTR(arg)? 1: 0; + case HAK_OOP_TAG_SMPTR: + return HAK_OOP_TO_SMPTR(rcv) == HAK_OOP_TO_SMPTR(arg)? 1: 0; - case HCL_OOP_TAG_CHAR: - return HCL_OOP_TO_CHAR(rcv) == HCL_OOP_TO_CHAR(arg)? 1: 0; + case HAK_OOP_TAG_CHAR: + return HAK_OOP_TO_CHAR(rcv) == HAK_OOP_TO_CHAR(arg)? 1: 0; - case HCL_OOP_TAG_ERROR: - return HCL_OOP_TO_ERROR(rcv) == HCL_OOP_TO_ERROR(arg)? 1: 0; + case HAK_OOP_TAG_ERROR: + return HAK_OOP_TO_ERROR(rcv) == HAK_OOP_TO_ERROR(arg)? 1: 0; default: { - HCL_ASSERT (hcl, HCL_OOP_IS_POINTER(rcv)); + HAK_ASSERT (hak, HAK_OOP_IS_POINTER(rcv)); - if (HCL_OBJ_GET_CLASS(rcv) != HCL_OBJ_GET_CLASS(arg)) return 0; /* different class, not equal */ - HCL_ASSERT (hcl, HCL_OBJ_GET_FLAGS_TYPE(rcv) == HCL_OBJ_GET_FLAGS_TYPE(arg)); + if (HAK_OBJ_GET_CLASS(rcv) != HAK_OBJ_GET_CLASS(arg)) return 0; /* different class, not equal */ + HAK_ASSERT (hak, HAK_OBJ_GET_FLAGS_TYPE(rcv) == HAK_OBJ_GET_FLAGS_TYPE(arg)); - if (HCL_OBJ_GET_SIZE(rcv) != HCL_OBJ_GET_SIZE(arg)) return 0; /* different size, not equal */ + if (HAK_OBJ_GET_SIZE(rcv) != HAK_OBJ_GET_SIZE(arg)) return 0; /* different size, not equal */ - switch (HCL_OBJ_GET_FLAGS_TYPE(rcv)) + switch (HAK_OBJ_GET_FLAGS_TYPE(rcv)) { - case HCL_OBJ_TYPE_BYTE: - case HCL_OBJ_TYPE_CHAR: - case HCL_OBJ_TYPE_HALFWORD: - case HCL_OBJ_TYPE_WORD: - return (HCL_MEMCMP(HCL_OBJ_GET_BYTE_SLOT(rcv), HCL_OBJ_GET_BYTE_SLOT(arg), HCL_BYTESOF(hcl,rcv)) == 0)? 1: 0; + case HAK_OBJ_TYPE_BYTE: + case HAK_OBJ_TYPE_CHAR: + case HAK_OBJ_TYPE_HALFWORD: + case HAK_OBJ_TYPE_WORD: + return (HAK_MEMCMP(HAK_OBJ_GET_BYTE_SLOT(rcv), HAK_OBJ_GET_BYTE_SLOT(arg), HAK_BYTESOF(hak,rcv)) == 0)? 1: 0; default: { - hcl_oow_t i, size; + hak_oow_t i, size; - if (rcv == hcl->_nil) return arg == hcl->_nil? 1: 0; - if (rcv == hcl->_true) return arg == hcl->_true? 1: 0; - if (rcv == hcl->_false) return arg == hcl->_false? 1: 0; + if (rcv == hak->_nil) return arg == hak->_nil? 1: 0; + if (rcv == hak->_true) return arg == hak->_true? 1: 0; + if (rcv == hak->_false) return arg == hak->_false? 1: 0; - /* HCL_OBJ_TYPE_OOP, ... */ - HCL_ASSERT (hcl, HCL_OBJ_GET_FLAGS_TYPE(rcv) == HCL_OBJ_TYPE_OOP); + /* HAK_OBJ_TYPE_OOP, ... */ + HAK_ASSERT (hak, HAK_OBJ_GET_FLAGS_TYPE(rcv) == HAK_OBJ_TYPE_OOP); #if 0 - hcl_seterrbfmt (hcl, HCL_ENOIMPL, "no builtin comparison implemented for %O and %O", rcv, arg); /* TODO: better error code */ + hak_seterrbfmt (hak, HAK_ENOIMPL, "no builtin comparison implemented for %O and %O", rcv, arg); /* TODO: better error code */ return -1; #else - if (HCL_IS_PROCESS(hcl,rcv)) + if (HAK_IS_PROCESS(hak,rcv)) { /* the stack in a process object doesn't need to be * scanned in full. the slots above the stack pointer * are garbages. */ - size = HCL_PROCESS_NAMED_INSTVARS + - HCL_OOP_TO_SMOOI(((hcl_oop_process_t)rcv)->sp) + 1; - HCL_ASSERT (hcl, size <= HCL_OBJ_GET_SIZE(rcv)); + size = HAK_PROCESS_NAMED_INSTVARS + + HAK_OOP_TO_SMOOI(((hak_oop_process_t)rcv)->sp) + 1; + HAK_ASSERT (hak, size <= HAK_OBJ_GET_SIZE(rcv)); } else { - size = HCL_OBJ_GET_SIZE(rcv); + size = HAK_OBJ_GET_SIZE(rcv); } for (i = 0; i < size; i++) { @@ -1030,7 +1030,7 @@ int hcl_equalobjs (hcl_t* hcl, hcl_oop_t rcv, hcl_oop_t arg) /* TODO: remove recursion */ /* NOTE: even if the object implements the equality method, * this primitive method doesn't honor it. */ - n = hcl_equalobjs(hcl, ((hcl_oop_oop_t)rcv)->slot[i], ((hcl_oop_oop_t)arg)->slot[i]); + n = hak_equalobjs(hak, ((hak_oop_oop_t)rcv)->slot[i], ((hak_oop_oop_t)arg)->slot[i]); if (n <= 0) return n; } diff --git a/lib/opt-impl.h b/lib/opt-impl.h index 3531d80..41f7e6f 100644 --- a/lib/opt-impl.h +++ b/lib/opt-impl.h @@ -26,11 +26,11 @@ /* this file is supposed to be included by opt.c multiple times */ -#include -#include +#include +#include /* - * hcl_getopt is based on BSD getopt. + * hak_getopt is based on BSD getopt. * -------------------------------------------------------------------------- * * Copyright (c) 1987-2002 The Regents of the University of California. @@ -70,10 +70,10 @@ xci_t xgetopt (int argc, xch_t* const* argv, xopt_t* opt) xch_t* oli; /* option letter list index */ int dbldash = 0; - opt->arg = HCL_NULL; - opt->lngopt = HCL_NULL; + opt->arg = HAK_NULL; + opt->lngopt = HAK_NULL; - if (opt->cur == HCL_NULL) + if (opt->cur == HAK_NULL) { opt->cur = XEMSG; opt->ind = 1; @@ -118,7 +118,7 @@ xci_t xgetopt (int argc, xch_t* const* argv, xopt_t* opt) } } - if (dbldash && opt->lng != HCL_NULL) + if (dbldash && opt->lng != HAK_NULL) { const xopt_lng_t* o; xch_t* end = opt->cur; @@ -145,9 +145,9 @@ xci_t xgetopt (int argc, xch_t* const* argv, xopt_t* opt) if (*o->str != ':') { /* should not have an option argument */ - if (opt->arg != HCL_NULL) return BADARG; + if (opt->arg != HAK_NULL) return BADARG; } - else if (opt->arg == HCL_NULL) + else if (opt->arg == HAK_NULL) { /* check if it has a remaining argument * available */ @@ -161,13 +161,13 @@ xci_t xgetopt (int argc, xch_t* const* argv, xopt_t* opt) return o->val; } - /*if (*end == HCL_T('=')) *end = HCL_T('\0');*/ + /*if (*end == HAK_T('=')) *end = HAK_T('\0');*/ opt->lngopt = opt->cur; return BADCH; } if ((opt->opt = *opt->cur++) == ':' || - (oli = xfindcharincstr(opt->str, opt->opt)) == HCL_NULL) + (oli = xfindcharincstr(opt->str, opt->opt)) == HAK_NULL) { /* * if the user didn't specify '-' as an option, diff --git a/lib/opt.c b/lib/opt.c index 1a949e8..4871b43 100644 --- a/lib/opt.c +++ b/lib/opt.c @@ -22,14 +22,14 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include +#include +#include #define BADCH '?' #define BADARG ':' -static hcl_uch_t EMSG_UCH[] = { '\0' }; -static hcl_bch_t EMSG_BCH[] = { '\0' }; +static hak_uch_t EMSG_UCH[] = { '\0' }; +static hak_bch_t EMSG_BCH[] = { '\0' }; /* ------------------------------------------------------------ */ @@ -44,14 +44,14 @@ static hcl_bch_t EMSG_BCH[] = { '\0' }; #undef XCI_EOF #define XEMSG EMSG_UCH -#define xch_t hcl_uch_t -#define xci_t hcl_uci_t -#define xopt_t hcl_uopt_t -#define xopt_lng_t hcl_uopt_lng_t -#define xgetopt hcl_getuopt -#define xcompcharscstr hcl_comp_uchars_ucstr -#define xfindcharincstr hcl_find_uchar_in_ucstr -#define XCI_EOF HCL_BCI_EOF +#define xch_t hak_uch_t +#define xci_t hak_uci_t +#define xopt_t hak_uopt_t +#define xopt_lng_t hak_uopt_lng_t +#define xgetopt hak_getuopt +#define xcompcharscstr hak_comp_uchars_ucstr +#define xfindcharincstr hak_find_uchar_in_ucstr +#define XCI_EOF HAK_BCI_EOF #include "opt-impl.h" /* ------------------------------------------------------------ */ @@ -67,14 +67,14 @@ static hcl_bch_t EMSG_BCH[] = { '\0' }; #undef XCI_EOF #define XEMSG EMSG_BCH -#define xch_t hcl_bch_t -#define xci_t hcl_bci_t -#define xopt_t hcl_bopt_t -#define xopt_lng_t hcl_bopt_lng_t -#define xgetopt hcl_getbopt -#define xcompcharscstr hcl_comp_bchars_bcstr -#define xfindcharincstr hcl_find_bchar_in_bcstr -#define XCI_EOF HCL_UCI_EOF +#define xch_t hak_bch_t +#define xci_t hak_bci_t +#define xopt_t hak_bopt_t +#define xopt_lng_t hak_bopt_lng_t +#define xgetopt hak_getbopt +#define xcompcharscstr hak_comp_bchars_bcstr +#define xfindcharincstr hak_find_bchar_in_bcstr +#define XCI_EOF HAK_UCI_EOF #include "opt-impl.h" /* ------------------------------------------------------------ */ diff --git a/lib/poll-msw.h b/lib/poll-msw.h index bd68e01..337a1cf 100644 --- a/lib/poll-msw.h +++ b/lib/poll-msw.h @@ -1,7 +1,7 @@ #ifndef _POLL_MSW_H_ #define _POLL_MSW_H_ -#include +#include #if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0600) /* Event types that can be polled for. These bits may be set in `events' diff --git a/lib/prim.c b/lib/prim.c index ad5212f..de7bd2f 100644 --- a/lib/prim.c +++ b/lib/prim.c @@ -22,54 +22,54 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "hcl-prv.h" +#include "hak-prv.h" struct pf_t { - hcl_oow_t minargs; - hcl_oow_t maxargs; - hcl_pfimpl_t impl; + hak_oow_t minargs; + hak_oow_t maxargs; + hak_pfimpl_t impl; - hcl_oow_t namelen; - hcl_ooch_t name[32]; + hak_oow_t namelen; + hak_ooch_t name[32]; }; typedef struct pf_t pf_t; /* ------------------------------------------------------------------------- */ -hcl_oop_t hcl_makeprim (hcl_t* hcl, hcl_pfimpl_t primimpl, hcl_oow_t minargs, hcl_oow_t maxargs, hcl_mod_t* mod) +hak_oop_t hak_makeprim (hak_t* hak, hak_pfimpl_t primimpl, hak_oow_t minargs, hak_oow_t maxargs, hak_mod_t* mod) { - hcl_oop_prim_t v; /* in principle, hcl_oop_word_t with HCL_PRIM_NUM_WORDS elements */ + hak_oop_prim_t v; /* in principle, hak_oop_word_t with HAK_PRIM_NUM_WORDS elements */ - v = (hcl_oop_prim_t)hcl_instantiate(hcl, hcl->c_primitive, HCL_NULL, 0); - if (HCL_UNLIKELY(!v)) + v = (hak_oop_prim_t)hak_instantiate(hak, hak->c_primitive, HAK_NULL, 0); + if (HAK_UNLIKELY(!v)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), - "unable to instantiate %O - %js", hcl->c_primitive->name, orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), + "unable to instantiate %O - %js", hak->c_primitive->name, orgmsg); } else { - v->impl = (hcl_oow_t)primimpl; + v->impl = (hak_oow_t)primimpl; v->min_nargs = minargs; v->max_nargs = maxargs; - v->mod = (hcl_oow_t)mod; + v->mod = (hak_oow_t)mod; } - return (hcl_oop_t)v; + return (hak_oop_t)v; } /* ------------------------------------------------------------------------- */ -static void log_char_object (hcl_t* hcl, hcl_bitmask_t mask, hcl_oop_char_t msg) +static void log_char_object (hak_t* hak, hak_bitmask_t mask, hak_oop_char_t msg) { - hcl_ooi_t n; - hcl_oow_t rem; - const hcl_ooch_t* ptr; + hak_ooi_t n; + hak_oow_t rem; + const hak_ooch_t* ptr; - HCL_ASSERT (hcl, HCL_OBJ_GET_FLAGS_TYPE(msg) == HCL_OBJ_TYPE_CHAR); + HAK_ASSERT (hak, HAK_OBJ_GET_FLAGS_TYPE(msg) == HAK_OBJ_TYPE_CHAR); - rem = HCL_OBJ_GET_SIZE(msg); + rem = HAK_OBJ_GET_SIZE(msg); ptr = msg->slot; start_over: @@ -77,82 +77,82 @@ start_over: { if (*ptr == '\0') { - n = hcl_logbfmt (hcl, mask, "%jc", *ptr); - HCL_ASSERT (hcl, n == 1); + n = hak_logbfmt (hak, mask, "%jc", *ptr); + HAK_ASSERT (hak, n == 1); rem -= n; ptr += n; goto start_over; } - n = hcl_logbfmt (hcl, mask, "%.*js", rem, ptr); + n = hak_logbfmt (hak, mask, "%.*js", rem, ptr); if (n <= -1) break; if (n == 0) { /* to skip the unprinted character. * actually, this check is not needed because of '\0' skipping * at the beginning of the loop */ - n = hcl_logbfmt (hcl, mask, "%jc", *ptr); - HCL_ASSERT (hcl, n == 1); + n = hak_logbfmt (hak, mask, "%jc", *ptr); + HAK_ASSERT (hak, n == 1); } rem -= n; ptr += n; } } -static hcl_pfrc_t pf_log (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_log (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { /* TODO: accept log level */ - hcl_oop_t msg; - hcl_bitmask_t mask; - hcl_ooi_t k; + hak_oop_t msg; + hak_bitmask_t mask; + hak_ooi_t k; - /*level = HCL_STACK_GET(hcl, hcl->sp - nargs + 1); - if (!HCL_OOP_IS_SMOOI(level)) mask = HCL_LOG_APP | HCL_LOG_INFO; - else mask = HCL_LOG_APP | HCL_OOP_TO_SMOOI(level);*/ - mask = HCL_LOG_APP | HCL_LOG_FATAL; /* TODO: accept logging level .. */ + /*level = HAK_STACK_GET(hak, hak->sp - nargs + 1); + if (!HAK_OOP_IS_SMOOI(level)) mask = HAK_LOG_APP | HAK_LOG_INFO; + else mask = HAK_LOG_APP | HAK_OOP_TO_SMOOI(level);*/ + mask = HAK_LOG_APP | HAK_LOG_FATAL; /* TODO: accept logging level .. */ for (k = 0; k < nargs; k++) { - msg = HCL_STACK_GETARG (hcl, nargs, k); + msg = HAK_STACK_GETARG (hak, nargs, k); - if (msg == hcl->_nil || msg == hcl->_true || msg == hcl->_false) + if (msg == hak->_nil || msg == hak->_true || msg == hak->_false) { goto dump_object; } - else if (HCL_OOP_IS_CHAR(msg)) + else if (HAK_OOP_IS_CHAR(msg)) { - hcl_logbfmt (hcl, mask, "%jc", HCL_OOP_TO_CHAR(msg)); + hak_logbfmt (hak, mask, "%jc", HAK_OOP_TO_CHAR(msg)); } - else if (HCL_OOP_IS_POINTER(msg)) + else if (HAK_OOP_IS_POINTER(msg)) { - if (HCL_OBJ_GET_FLAGS_TYPE(msg) == HCL_OBJ_TYPE_CHAR) + if (HAK_OBJ_GET_FLAGS_TYPE(msg) == HAK_OBJ_TYPE_CHAR) { - log_char_object (hcl, mask, (hcl_oop_char_t)msg); + log_char_object (hak, mask, (hak_oop_char_t)msg); } - else if (HCL_OBJ_GET_FLAGS_TYPE(msg) == HCL_OBJ_TYPE_OOP) + else if (HAK_OBJ_GET_FLAGS_TYPE(msg) == HAK_OBJ_TYPE_OOP) { /* visit only 1-level down into an array-like object */ - hcl_oop_t inner; - hcl_oow_t i; + hak_oop_t inner; + hak_oow_t i; - if (HCL_OBJ_GET_CLASS(msg) != (hcl_oop_t)hcl->c_array) goto dump_object; + if (HAK_OBJ_GET_CLASS(msg) != (hak_oop_t)hak->c_array) goto dump_object; - for (i = 0; i < HCL_OBJ_GET_SIZE(msg); i++) + for (i = 0; i < HAK_OBJ_GET_SIZE(msg); i++) { - inner = ((hcl_oop_oop_t)msg)->slot[i]; + inner = ((hak_oop_oop_t)msg)->slot[i]; - if (i > 0) hcl_logbfmt (hcl, mask, " "); - if (HCL_OOP_IS_CHAR(inner)) + if (i > 0) hak_logbfmt (hak, mask, " "); + if (HAK_OOP_IS_CHAR(inner)) { - hcl_logbfmt (hcl, mask, "%jc", HCL_OOP_TO_CHAR(inner)); + hak_logbfmt (hak, mask, "%jc", HAK_OOP_TO_CHAR(inner)); } - else if (HCL_OOP_IS_POINTER(inner) && HCL_OBJ_GET_FLAGS_TYPE(inner) == HCL_OBJ_TYPE_CHAR) + else if (HAK_OOP_IS_POINTER(inner) && HAK_OBJ_GET_FLAGS_TYPE(inner) == HAK_OBJ_TYPE_CHAR) { - log_char_object (hcl, mask, (hcl_oop_char_t)inner); + log_char_object (hak, mask, (hak_oop_char_t)inner); } else { - hcl_logbfmt (hcl, mask, "%O", inner); + hak_logbfmt (hak, mask, "%O", inner); } } } @@ -161,107 +161,107 @@ static hcl_pfrc_t pf_log (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) else { dump_object: - hcl_logbfmt (hcl, mask, "%O", msg); + hak_logbfmt (hak, mask, "%O", msg); } } - HCL_STACK_SETRET (hcl, nargs, hcl->_nil); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, hak->_nil); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_logf (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_logf (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - if (hcl_logfmtcallstack(hcl, nargs) <= -1) + if (hak_logfmtcallstack(hak, nargs) <= -1) { - HCL_STACK_SETRETTOERRNUM (hcl, nargs); + HAK_STACK_SETRETTOERRNUM (hak, nargs); } else { /* TODO: better return code? */ - HCL_STACK_SETRET (hcl, nargs, hcl->_nil); + HAK_STACK_SETRET (hak, nargs, hak->_nil); } - return HCL_PF_SUCCESS; + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_printf (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_printf (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - if (hcl_prfmtcallstack(hcl, nargs) <= -1) + if (hak_prfmtcallstack(hak, nargs) <= -1) { - HCL_STACK_SETRETTOERRNUM (hcl, nargs); + HAK_STACK_SETRETTOERRNUM (hak, nargs); } else { /* TODO: better return code? */ - HCL_STACK_SETRET (hcl, nargs, hcl->_nil); + HAK_STACK_SETRET (hak, nargs, hak->_nil); } - return HCL_PF_SUCCESS; + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_sprintf (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_sprintf (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - if (hcl_strfmtcallstack(hcl, nargs) <= -1) + if (hak_strfmtcallstack(hak, nargs) <= -1) { - HCL_STACK_SETRETTOERRNUM (hcl, nargs); + HAK_STACK_SETRETTOERRNUM (hak, nargs); } else { - hcl_oop_t str; - str = hcl_makestring(hcl, hcl->sprintf.xbuf.ptr, hcl->sprintf.xbuf.len); - if (!str) return HCL_PF_FAILURE; + hak_oop_t str; + str = hak_makestring(hak, hak->sprintf.xbuf.ptr, hak->sprintf.xbuf.len); + if (!str) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, str); + HAK_STACK_SETRET (hak, nargs, str); } - return HCL_PF_SUCCESS; + return HAK_PF_SUCCESS; } /* ------------------------------------------------------------------------- */ -static hcl_oow_t move_udi_residue_bytes (hcl_io_udiarg_t* curinp) +static hak_oow_t move_udi_residue_bytes (hak_io_udiarg_t* curinp) { - hcl_oow_t cpl; + hak_oow_t cpl; - cpl = HCL_COUNTOF(curinp->rsd.buf) - curinp->rsd.len; + cpl = HAK_COUNTOF(curinp->rsd.buf) - curinp->rsd.len; if (cpl > 0) { - hcl_oow_t avail; + hak_oow_t avail; avail = curinp->b.len - curinp->b.pos; /* available in the read buffer */ if (cpl > avail) cpl = avail; - HCL_MEMCPY(&curinp->rsd.buf[curinp->rsd.len], &curinp->buf.b[curinp->b.pos], cpl); + HAK_MEMCPY(&curinp->rsd.buf[curinp->rsd.len], &curinp->buf.b[curinp->b.pos], cpl); curinp->rsd.len += cpl; curinp->b.pos += cpl; /* advance the position because the bytes moved to the residue buffer */ } return curinp->rsd.len; } -static int get_udi_char (hcl_t* hcl, hcl_ooch_t* ch) +static int get_udi_char (hak_t* hak, hak_ooch_t* ch) { - hcl_io_udiarg_t* curinp; - hcl_ooch_t c; - hcl_oow_t taken; + hak_io_udiarg_t* curinp; + hak_ooch_t c; + hak_oow_t taken; int x; - curinp = &hcl->io.udi_arg; + curinp = &hak->io.udi_arg; -#if defined(HCL_OOCH_IS_UCH) +#if defined(HAK_OOCH_IS_UCH) if (curinp->byte_oriented) { - hcl_cmgr_t* cmgr; - const hcl_uint8_t* inpptr; - hcl_oow_t inplen, n; + hak_cmgr_t* cmgr; + const hak_uint8_t* inpptr; + hak_oow_t inplen, n; - cmgr = HCL_CMGR(hcl); + cmgr = HAK_CMGR(hak); start_over: if (curinp->b.pos >= curinp->b.len) { - x = hcl->io.udi_rdr(hcl, HCL_IO_READ_BYTES, curinp); + x = hak->io.udi_rdr(hak, HAK_IO_READ_BYTES, curinp); if (x <= -1) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), "unable to read bytes from input stream - %js", orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), "unable to read bytes from input stream - %js", orgmsg); return -1; } @@ -270,7 +270,7 @@ static int get_udi_char (hcl_t* hcl, hcl_ooch_t* ch) /* got EOF from an included stream */ if (curinp->rsd.len > 0) { - hcl_seterrbfmt (hcl, HCL_EECERR, "incomplete byte sequence in input stream"); + hak_seterrbfmt (hak, HAK_EECERR, "incomplete byte sequence in input stream"); return -1; } curinp->eof_reached = 1; @@ -285,7 +285,7 @@ static int get_udi_char (hcl_t* hcl, hcl_ooch_t* ch) { /* there is data in the residue buffer. use the residue buffer to * locate a proper multi-byte sequence */ - HCL_ASSERT (hcl, curinp->b.pos == 0); + HAK_ASSERT (hak, curinp->b.pos == 0); inplen = move_udi_residue_bytes(curinp); inpptr = &curinp->rsd.buf[0]; } @@ -295,15 +295,15 @@ static int get_udi_char (hcl_t* hcl, hcl_ooch_t* ch) inpptr = &curinp->buf.b[curinp->b.pos]; } - n = cmgr->bctouc((const hcl_bch_t*)inpptr, inplen, &c); + n = cmgr->bctouc((const hak_bch_t*)inpptr, inplen, &c); if (n == 0) /* invalid sequence */ { - hcl_seterrbfmt (hcl, HCL_EECERR, "invalid byte sequence in input stream"); + hak_seterrbfmt (hak, HAK_EECERR, "invalid byte sequence in input stream"); return -1; } if (n > inplen) /* incomplete sequence */ { - HCL_ASSERT (hcl, curinp->rsd.len < HCL_COUNTOF(curinp->rsd.buf)); + HAK_ASSERT (hak, curinp->rsd.len < HAK_COUNTOF(curinp->rsd.buf)); move_udi_residue_bytes (curinp); goto start_over; } @@ -326,11 +326,11 @@ static int get_udi_char (hcl_t* hcl, hcl_ooch_t* ch) #endif if (curinp->b.pos >= curinp->b.len) { - x = hcl->io.udi_rdr(hcl, HCL_IO_READ, curinp); + x = hak->io.udi_rdr(hak, HAK_IO_READ, curinp); if (x <= -1) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), "unable to read input stream - %js", orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), "unable to read input stream - %js", orgmsg); return -1; } if (curinp->xlen <= 0) @@ -346,12 +346,12 @@ static int get_udi_char (hcl_t* hcl, hcl_ooch_t* ch) c = curinp->buf.c[curinp->b.pos]; taken = 1; -#if defined(HCL_OOCH_IS_UCH) +#if defined(HAK_OOCH_IS_UCH) } #endif curinp->b.pos += taken; -#if defined(HCL_OOCH_IS_UCH) +#if defined(HAK_OOCH_IS_UCH) curinp->rsd.len = 0; /* clear up the residue byte buffer. needed for byte reading only */ #endif @@ -359,28 +359,28 @@ static int get_udi_char (hcl_t* hcl, hcl_ooch_t* ch) return 1; } -static int get_udi_byte (hcl_t* hcl, hcl_uint8_t* bt) +static int get_udi_byte (hak_t* hak, hak_uint8_t* bt) { - hcl_io_udiarg_t* curinp; + hak_io_udiarg_t* curinp; int x; -#if defined(HCL_OOCH_IS_UCH) - if (!hcl->io.udi_arg.byte_oriented) +#if defined(HAK_OOCH_IS_UCH) + if (!hak->io.udi_arg.byte_oriented) { /* TODO: convert characters to bytes? but do we know the original encoding? */ - hcl_seterrbfmt (hcl, HCL_EPERM, "byte-oriented input prohibited on character-oriented stream"); + hak_seterrbfmt (hak, HAK_EPERM, "byte-oriented input prohibited on character-oriented stream"); return -1; } #endif - curinp = &hcl->io.udi_arg; + curinp = &hak->io.udi_arg; if (curinp->b.pos >= curinp->b.len) { - x = hcl->io.udi_rdr(hcl, HCL_IO_READ_BYTES, curinp); + x = hak->io.udi_rdr(hak, HAK_IO_READ_BYTES, curinp); if (x <= -1) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), "unable to read input stream - %js", orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), "unable to read input stream - %js", orgmsg); return -1; } if (curinp->xlen <= 0) @@ -398,82 +398,82 @@ static int get_udi_byte (hcl_t* hcl, hcl_uint8_t* bt) return 1; } -static hcl_pfrc_t pf_getbyte (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_getbyte (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t v; - hcl_uint8_t bt; + hak_oop_t v; + hak_uint8_t bt; int n; - n = get_udi_byte(hcl, &bt); - if (n <= -1) return HCL_PF_FAILURE; + n = get_udi_byte(hak, &bt); + if (n <= -1) return HAK_PF_FAILURE; /* return nil on EOF, or the actual character read */ - v = (n == 0)? hcl->_nil: HCL_SMOOI_TO_OOP(bt); - HCL_STACK_SETRET (hcl, nargs, v); - return HCL_PF_SUCCESS; + v = (n == 0)? hak->_nil: HAK_SMOOI_TO_OOP(bt); + HAK_STACK_SETRET (hak, nargs, v); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_getch (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_getch (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t v; - hcl_ooch_t ch; + hak_oop_t v; + hak_ooch_t ch; int n; - n = get_udi_char(hcl, &ch); - if (n <= -1) return HCL_PF_FAILURE; + n = get_udi_char(hak, &ch); + if (n <= -1) return HAK_PF_FAILURE; /* return nil on EOF, or the actual character read */ - v = (n == 0)? hcl->_nil: HCL_CHAR_TO_OOP(ch); - HCL_STACK_SETRET (hcl, nargs, v); - return HCL_PF_SUCCESS; + v = (n == 0)? hak->_nil: HAK_CHAR_TO_OOP(ch); + HAK_STACK_SETRET (hak, nargs, v); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_gets (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_gets (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_io_udiarg_t* curinp; - hcl_oop_t v; + hak_io_udiarg_t* curinp; + hak_oop_t v; - curinp = &hcl->io.udi_arg; + curinp = &hak->io.udi_arg; if (curinp->eof_reached) { - v = hcl->_nil; + v = hak->_nil; } else { int n; - hcl_ooch_t ch; - hcl_ooch_t buf[10]; - hcl_ooch_t* ptr; - hcl_oow_t len, capa; + hak_ooch_t ch; + hak_ooch_t buf[10]; + hak_ooch_t* ptr; + hak_oow_t len, capa; ptr = buf; len = 0; - capa = HCL_COUNTOF(buf); + capa = HAK_COUNTOF(buf); while (1) { - n = get_udi_char(hcl, &ch); - if (n <= -1) return HCL_PF_FAILURE; + n = get_udi_char(hak, &ch); + if (n <= -1) return HAK_PF_FAILURE; if (n == 0) break; if (len >= capa) { - hcl_ooch_t* tmp; - hcl_oow_t newcapa; + hak_ooch_t* tmp; + hak_oow_t newcapa; - newcapa = capa + HCL_COUNTOF(buf); + newcapa = capa + HAK_COUNTOF(buf); if (ptr == buf) { - tmp = (hcl_ooch_t*)hcl_allocmem(hcl, HCL_SIZEOF(*ptr) * newcapa); - if (HCL_UNLIKELY(!tmp)) return HCL_PF_FAILURE; - HCL_MEMCPY (tmp, buf, HCL_SIZEOF(buf)); + tmp = (hak_ooch_t*)hak_allocmem(hak, HAK_SIZEOF(*ptr) * newcapa); + if (HAK_UNLIKELY(!tmp)) return HAK_PF_FAILURE; + HAK_MEMCPY (tmp, buf, HAK_SIZEOF(buf)); } else { - tmp = (hcl_ooch_t*)hcl_reallocmem(hcl, ptr, HCL_SIZEOF(*ptr) * newcapa); - if (HCL_UNLIKELY(!tmp)) + tmp = (hak_ooch_t*)hak_reallocmem(hak, ptr, HAK_SIZEOF(*ptr) * newcapa); + if (HAK_UNLIKELY(!tmp)) { - hcl_freemem(hcl, ptr); - return HCL_PF_FAILURE; + hak_freemem(hak, ptr); + return HAK_PF_FAILURE; } } @@ -486,642 +486,642 @@ static hcl_pfrc_t pf_gets (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) if (len <= 0) { - HCL_ASSERT (hcl, ptr == buf); - v = hcl->_nil; + HAK_ASSERT (hak, ptr == buf); + v = hak->_nil; } else { - v = hcl_makestring(hcl, ptr, len); - if (ptr != buf) hcl_freemem(hcl, ptr); - if (HCL_UNLIKELY(!v)) return HCL_PF_FAILURE; + v = hak_makestring(hak, ptr, len); + if (ptr != buf) hak_freemem(hak, ptr); + if (HAK_UNLIKELY(!v)) return HAK_PF_FAILURE; } } - HCL_STACK_SETRET (hcl, nargs, v); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, v); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_scanf (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_scanf (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - if (hcl_scfmtcallstack(hcl, nargs) <= -1) + if (hak_scfmtcallstack(hak, nargs) <= -1) { - HCL_STACK_SETRETTOERRNUM (hcl, nargs); + HAK_STACK_SETRETTOERRNUM (hak, nargs); } else { /* TODO: better return code? */ - HCL_STACK_SETRET (hcl, nargs, hcl->_nil); + HAK_STACK_SETRET (hak, nargs, hak->_nil); } - return HCL_PF_SUCCESS; + return HAK_PF_SUCCESS; } /* ------------------------------------------------------------------------- */ -static hcl_pfrc_t pf_gc (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_gc (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_gc (hcl, 1); - HCL_STACK_SETRET (hcl, nargs, hcl->_nil); - return HCL_PF_SUCCESS; + hak_gc (hak, 1); + HAK_STACK_SETRET (hak, nargs, hak->_nil); + return HAK_PF_SUCCESS; } /* ------------------------------------------------------------------------- */ -static hcl_pfrc_t pf_eqv (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_eqv (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t a0, a1, rv; + hak_oop_t a0, a1, rv; - a0 = HCL_STACK_GETARG(hcl, nargs, 0); - a1 = HCL_STACK_GETARG(hcl, nargs, 1); + a0 = HAK_STACK_GETARG(hak, nargs, 0); + a1 = HAK_STACK_GETARG(hak, nargs, 1); - rv = (a0 == a1? hcl->_true: hcl->_false); + rv = (a0 == a1? hak->_true: hak->_false); - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_eql (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_eql (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { int n; - n = hcl_equalobjs(hcl, HCL_STACK_GETARG(hcl, nargs, 0), HCL_STACK_GETARG(hcl, nargs, 1)); - if (n <= -1) return HCL_PF_FAILURE; + n = hak_equalobjs(hak, HAK_STACK_GETARG(hak, nargs, 0), HAK_STACK_GETARG(hak, nargs, 1)); + if (n <= -1) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, (n? hcl->_true: hcl->_false)); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, (n? hak->_true: hak->_false)); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_eqk (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_eqk (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { /* equal kind? */ - hcl_oop_t a0, a1, rv; + hak_oop_t a0, a1, rv; - a0 = HCL_STACK_GETARG(hcl, nargs, 0); - a1 = HCL_STACK_GETARG(hcl, nargs, 1); + a0 = HAK_STACK_GETARG(hak, nargs, 0); + a1 = HAK_STACK_GETARG(hak, nargs, 1); - rv = (HCL_CLASSOF(hcl, a0) == HCL_CLASSOF(hcl, a1)? hcl->_true: hcl->_false); + rv = (HAK_CLASSOF(hak, a0) == HAK_CLASSOF(hak, a1)? hak->_true: hak->_false); - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_nqv (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_nqv (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t a0, a1, rv; + hak_oop_t a0, a1, rv; - a0 = HCL_STACK_GETARG(hcl, nargs, 0); - a1 = HCL_STACK_GETARG(hcl, nargs, 1); + a0 = HAK_STACK_GETARG(hak, nargs, 0); + a1 = HAK_STACK_GETARG(hak, nargs, 1); - rv = (a0 != a1? hcl->_true: hcl->_false); + rv = (a0 != a1? hak->_true: hak->_false); - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_nql (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_nql (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { int n; - n = hcl_equalobjs(hcl, HCL_STACK_GETARG(hcl, nargs, 0), HCL_STACK_GETARG(hcl, nargs, 1)); - if (n <= -1) return HCL_PF_FAILURE; + n = hak_equalobjs(hak, HAK_STACK_GETARG(hak, nargs, 0), HAK_STACK_GETARG(hak, nargs, 1)); + if (n <= -1) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, (!n? hcl->_true: hcl->_false)); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, (!n? hak->_true: hak->_false)); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_nqk (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_nqk (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { /* not equal kind? */ - hcl_oop_t a0, a1, rv; + hak_oop_t a0, a1, rv; - a0 = HCL_STACK_GETARG(hcl, nargs, 0); - a1 = HCL_STACK_GETARG(hcl, nargs, 1); + a0 = HAK_STACK_GETARG(hak, nargs, 0); + a1 = HAK_STACK_GETARG(hak, nargs, 1); - rv = (HCL_CLASSOF(hcl, a0) != HCL_CLASSOF(hcl, a1)? hcl->_true: hcl->_false); + rv = (HAK_CLASSOF(hak, a0) != HAK_CLASSOF(hak, a1)? hak->_true: hak->_false); - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } /* ------------------------------------------------------------------------- */ -static hcl_pfrc_t pf_is_nil (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_is_nil (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t rv; - rv = (HCL_STACK_GETARG(hcl, nargs, 0) == hcl->_nil)? hcl->_true: hcl->_false; - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + hak_oop_t rv; + rv = (HAK_STACK_GETARG(hak, nargs, 0) == hak->_nil)? hak->_true: hak->_false; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_is_boolean (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_is_boolean (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t rv, x; - x = HCL_STACK_GETARG(hcl, nargs, 0); - rv = (HCL_IS_TRUE(hcl, x) || HCL_IS_FALSE(hcl, x))? hcl->_true: hcl->_false; - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + hak_oop_t rv, x; + x = HAK_STACK_GETARG(hak, nargs, 0); + rv = (HAK_IS_TRUE(hak, x) || HAK_IS_FALSE(hak, x))? hak->_true: hak->_false; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_is_character (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_is_character (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t rv, x; - x = HCL_STACK_GETARG(hcl, nargs, 0); - rv = (HCL_OOP_IS_CHAR(x))? hcl->_true: hcl->_false; - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + hak_oop_t rv, x; + x = HAK_STACK_GETARG(hak, nargs, 0); + rv = (HAK_OOP_IS_CHAR(x))? hak->_true: hak->_false; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_is_error (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_is_error (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t rv, x; - x = HCL_STACK_GETARG(hcl, nargs, 0); - rv = (HCL_OOP_IS_ERROR(x))? hcl->_true: hcl->_false; - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + hak_oop_t rv, x; + x = HAK_STACK_GETARG(hak, nargs, 0); + rv = (HAK_OOP_IS_ERROR(x))? hak->_true: hak->_false; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_is_smptr (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_is_smptr (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t rv, x; - x = HCL_STACK_GETARG(hcl, nargs, 0); - rv = (HCL_OOP_IS_SMPTR(x))? hcl->_true: hcl->_false; - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + hak_oop_t rv, x; + x = HAK_STACK_GETARG(hak, nargs, 0); + rv = (HAK_OOP_IS_SMPTR(x))? hak->_true: hak->_false; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_is_integer (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_is_integer (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t rv, x; - x = HCL_STACK_GETARG(hcl, nargs, 0); - rv = (hcl_isint(hcl, x))? hcl->_true: hcl->_false; - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + hak_oop_t rv, x; + x = HAK_STACK_GETARG(hak, nargs, 0); + rv = (hak_isint(hak, x))? hak->_true: hak->_false; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_is_numeric(hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_is_numeric(hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t rv, x; - x = HCL_STACK_GETARG(hcl, nargs, 0); - rv = (hcl_isint(hcl, x) || HCL_IS_FPDEC(hcl, x))? hcl->_true: hcl->_false; - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + hak_oop_t rv, x; + x = HAK_STACK_GETARG(hak, nargs, 0); + rv = (hak_isint(hak, x) || HAK_IS_FPDEC(hak, x))? hak->_true: hak->_false; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_is_string (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_is_string (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t rv, x; - x = HCL_STACK_GETARG(hcl, nargs, 0); - rv = (HCL_IS_STRING(hcl, x))? hcl->_true: hcl->_false; - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + hak_oop_t rv, x; + x = HAK_STACK_GETARG(hak, nargs, 0); + rv = (HAK_IS_STRING(hak, x))? hak->_true: hak->_false; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_is_array (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_is_array (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t rv, x; - x = HCL_STACK_GETARG(hcl, nargs, 0); - rv = (HCL_IS_ARRAY(hcl, x))? hcl->_true: hcl->_false; - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + hak_oop_t rv, x; + x = HAK_STACK_GETARG(hak, nargs, 0); + rv = (HAK_IS_ARRAY(hak, x))? hak->_true: hak->_false; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_is_bytearray (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_is_bytearray (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t rv, x; - x = HCL_STACK_GETARG(hcl, nargs, 0); - rv = (HCL_IS_BYTEARRAY(hcl, x))? hcl->_true: hcl->_false; - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + hak_oop_t rv, x; + x = HAK_STACK_GETARG(hak, nargs, 0); + rv = (HAK_IS_BYTEARRAY(hak, x))? hak->_true: hak->_false; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_is_dictionary (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_is_dictionary (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t rv, x; - x = HCL_STACK_GETARG(hcl, nargs, 0); - rv = (HCL_IS_DIC(hcl, x))? hcl->_true: hcl->_false; - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + hak_oop_t rv, x; + x = HAK_STACK_GETARG(hak, nargs, 0); + rv = (HAK_IS_DIC(hak, x))? hak->_true: hak->_false; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_is_compiled_block (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_is_compiled_block (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t rv, x; - x = HCL_STACK_GETARG(hcl, nargs, 0); - rv = (HCL_IS_COMPILED_BLOCK(hcl, x))? hcl->_true: hcl->_false; - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + hak_oop_t rv, x; + x = HAK_STACK_GETARG(hak, nargs, 0); + rv = (HAK_IS_COMPILED_BLOCK(hak, x))? hak->_true: hak->_false; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_is_class (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_is_class (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t rv, x; - x = HCL_STACK_GETARG(hcl, nargs, 0); - rv = (HCL_IS_CLASS(hcl, x))? hcl->_true: hcl->_false; - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + hak_oop_t rv, x; + x = HAK_STACK_GETARG(hak, nargs, 0); + rv = (HAK_IS_CLASS(hak, x))? hak->_true: hak->_false; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_is_object (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_is_object (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t rv, x; - x = HCL_STACK_GETARG(hcl, nargs, 0); - /*rv = (HCL_IS_INSTANCE(hcl, x))? hcl->_true: hcl->_false;*/ - rv = (!HCL_IS_CLASS(hcl, x))? hcl->_true: hcl->_false; /* true if not a class object itself */ - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + hak_oop_t rv, x; + x = HAK_STACK_GETARG(hak, nargs, 0); + /*rv = (HAK_IS_INSTANCE(hak, x))? hak->_true: hak->_false;*/ + rv = (!HAK_IS_CLASS(hak, x))? hak->_true: hak->_false; /* true if not a class object itself */ + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } /* ------------------------------------------------------------------------- */ -static hcl_pfrc_t pf_not (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_not (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t arg, rv; + hak_oop_t arg, rv; - arg = HCL_STACK_GETARG(hcl, nargs, 0); - if (arg == hcl->_true) rv = hcl->_false; - else if (arg == hcl->_false) rv = hcl->_true; + arg = HAK_STACK_GETARG(hak, nargs, 0); + if (arg == hak->_true) rv = hak->_false; + else if (arg == hak->_false) rv = hak->_true; else { - hcl_seterrbfmt (hcl, HCL_EINVAL, "boolean parameter expected - %O", arg); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "boolean parameter expected - %O", arg); + return HAK_PF_FAILURE; } - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_and (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_and (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t arg, rv; - hcl_ooi_t i; + hak_oop_t arg, rv; + hak_ooi_t i; - rv = hcl->_true; + rv = hak->_true; for (i = 1; i < nargs; i++) { - arg = HCL_STACK_GETARG(hcl, nargs, i); - if (arg == hcl->_true) + arg = HAK_STACK_GETARG(hak, nargs, i); + if (arg == hak->_true) { /* do nothing */ } - else if (arg == hcl->_false) + else if (arg == hak->_false) { - rv = hcl->_false; + rv = hak->_false; break; } else { - hcl_seterrbfmt (hcl, HCL_EINVAL, "boolean parameter expected - %O", arg); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "boolean parameter expected - %O", arg); + return HAK_PF_FAILURE; } } - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_or (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_or (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t arg, rv; - hcl_ooi_t i; + hak_oop_t arg, rv; + hak_ooi_t i; - rv = hcl->_false; + rv = hak->_false; for (i = 1; i < nargs; i++) { - arg = HCL_STACK_GETARG(hcl, nargs, i); - if (arg == hcl->_true) + arg = HAK_STACK_GETARG(hak, nargs, i); + if (arg == hak->_true) { - rv = hcl->_true; + rv = hak->_true; break; } - else if (arg == hcl->_false) + else if (arg == hak->_false) { /* do nothing */ } else { - hcl_seterrbfmt (hcl, HCL_EINVAL, "boolean parameter expected - %O", arg); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "boolean parameter expected - %O", arg); + return HAK_PF_FAILURE; } } - HCL_STACK_SETRET (hcl, nargs, rv); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, rv); + return HAK_PF_SUCCESS; } /* ------------------------------------------------------------------------- */ -static hcl_pfrc_t pf_number_add (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_number_add (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_ooi_t i; - hcl_oop_t arg, ret; + hak_ooi_t i; + hak_oop_t arg, ret; - ret = HCL_STACK_GETARG(hcl, nargs, 0); + ret = HAK_STACK_GETARG(hak, nargs, 0); for (i = 1; i < nargs; i++) { - arg = HCL_STACK_GETARG(hcl, nargs, i); - /*ret = hcl_addints(hcl, ret, arg);*/ - ret = hcl_addnums(hcl, ret, arg); - if (!ret) return HCL_PF_FAILURE; + arg = HAK_STACK_GETARG(hak, nargs, i); + /*ret = hak_addints(hak, ret, arg);*/ + ret = hak_addnums(hak, ret, arg); + if (!ret) return HAK_PF_FAILURE; } - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_number_sub (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_number_sub (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_ooi_t i; - hcl_oop_t arg, ret; + hak_ooi_t i; + hak_oop_t arg, ret; - ret = HCL_STACK_GETARG(hcl, nargs, 0); + ret = HAK_STACK_GETARG(hak, nargs, 0); for (i = 1; i < nargs; i++) { - arg = HCL_STACK_GETARG(hcl, nargs, i); - /*ret = hcl_subints(hcl, ret, arg);*/ - ret = hcl_subnums(hcl, ret, arg); - if (!ret) return HCL_PF_FAILURE; + arg = HAK_STACK_GETARG(hak, nargs, i); + /*ret = hak_subints(hak, ret, arg);*/ + ret = hak_subnums(hak, ret, arg); + if (!ret) return HAK_PF_FAILURE; } - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_number_mul (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_number_mul (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_ooi_t i; - hcl_oop_t arg, ret; + hak_ooi_t i; + hak_oop_t arg, ret; - ret = HCL_STACK_GETARG(hcl, nargs, 0); + ret = HAK_STACK_GETARG(hak, nargs, 0); for (i = 1; i < nargs; i++) { - arg = HCL_STACK_GETARG(hcl, nargs, i); - /*ret = hcl_mulints(hcl, ret, arg);*/ - ret = hcl_mulnums(hcl, ret, arg); - if (!ret) return HCL_PF_FAILURE; + arg = HAK_STACK_GETARG(hak, nargs, i); + /*ret = hak_mulints(hak, ret, arg);*/ + ret = hak_mulnums(hak, ret, arg); + if (!ret) return HAK_PF_FAILURE; } - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_number_mlt (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_number_mlt (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_ooi_t i; - hcl_oop_t arg, ret; + hak_ooi_t i; + hak_oop_t arg, ret; - ret = HCL_STACK_GETARG(hcl, nargs, 0); + ret = HAK_STACK_GETARG(hak, nargs, 0); for (i = 1; i < nargs; i++) { - arg = HCL_STACK_GETARG(hcl, nargs, i); - ret = hcl_mltnums(hcl, ret, arg); - if (!ret) return HCL_PF_FAILURE; + arg = HAK_STACK_GETARG(hak, nargs, i); + ret = hak_mltnums(hak, ret, arg); + if (!ret) return HAK_PF_FAILURE; } - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_number_div (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_number_div (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_ooi_t i; - hcl_oop_t arg, ret; + hak_ooi_t i; + hak_oop_t arg, ret; - ret = HCL_STACK_GETARG(hcl, nargs, 0); + ret = HAK_STACK_GETARG(hak, nargs, 0); for (i = 1; i < nargs; i++) { - arg = HCL_STACK_GETARG(hcl, nargs, i); - ret = hcl_divnums(hcl, ret, arg); - if (!ret) return HCL_PF_FAILURE; + arg = HAK_STACK_GETARG(hak, nargs, i); + ret = hak_divnums(hak, ret, arg); + if (!ret) return HAK_PF_FAILURE; } - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_integer_quo (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_integer_quo (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_ooi_t i; - hcl_oop_t arg, ret; + hak_ooi_t i; + hak_oop_t arg, ret; - ret = HCL_STACK_GETARG(hcl, nargs, 0); + ret = HAK_STACK_GETARG(hak, nargs, 0); for (i = 1; i < nargs; i++) { - arg = HCL_STACK_GETARG(hcl, nargs, i); - ret = hcl_divints(hcl, ret, arg, 0, HCL_NULL); - if (!ret) return HCL_PF_FAILURE; + arg = HAK_STACK_GETARG(hak, nargs, i); + ret = hak_divints(hak, ret, arg, 0, HAK_NULL); + if (!ret) return HAK_PF_FAILURE; } - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_integer_rem (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_integer_rem (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_ooi_t i; - hcl_oop_t arg, ret, rem; + hak_ooi_t i; + hak_oop_t arg, ret, rem; - ret = HCL_STACK_GETARG(hcl, nargs, 0); + ret = HAK_STACK_GETARG(hak, nargs, 0); for (i = 1; i < nargs; i++) { - arg = HCL_STACK_GETARG(hcl, nargs, i); - ret = hcl_divints(hcl, ret, arg, 0, &rem); - if (!ret) return HCL_PF_FAILURE; + arg = HAK_STACK_GETARG(hak, nargs, i); + ret = hak_divints(hak, ret, arg, 0, &rem); + if (!ret) return HAK_PF_FAILURE; ret = rem; } - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_integer_mquo (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_integer_mquo (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_ooi_t i; - hcl_oop_t arg, ret; + hak_ooi_t i; + hak_oop_t arg, ret; - ret = HCL_STACK_GETARG(hcl, nargs, 0); + ret = HAK_STACK_GETARG(hak, nargs, 0); for (i = 1; i < nargs; i++) { - arg = HCL_STACK_GETARG(hcl, nargs, i); - ret = hcl_divints(hcl, ret, arg, 1, HCL_NULL); - if (!ret) return HCL_PF_FAILURE; + arg = HAK_STACK_GETARG(hak, nargs, i); + ret = hak_divints(hak, ret, arg, 1, HAK_NULL); + if (!ret) return HAK_PF_FAILURE; } - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_integer_mod (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_integer_mod (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_ooi_t i; - hcl_oop_t arg, ret, rem; + hak_ooi_t i; + hak_oop_t arg, ret, rem; - ret = HCL_STACK_GETARG(hcl, nargs, 0); + ret = HAK_STACK_GETARG(hak, nargs, 0); for (i = 1; i < nargs; i++) { - arg = HCL_STACK_GETARG(hcl, nargs, i); - ret = hcl_divints(hcl, ret, arg, 1, &rem); - if (!ret) return HCL_PF_FAILURE; + arg = HAK_STACK_GETARG(hak, nargs, i); + ret = hak_divints(hak, ret, arg, 1, &rem); + if (!ret) return HAK_PF_FAILURE; ret = rem; } - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_number_sqrt (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_number_sqrt (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t ret; - ret = hcl_sqrtnum(hcl, HCL_STACK_GETARG(hcl, nargs, 0)); - if (!ret) return HCL_PF_FAILURE; + hak_oop_t ret; + ret = hak_sqrtnum(hak, HAK_STACK_GETARG(hak, nargs, 0)); + if (!ret) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_number_abs (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_number_abs (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t ret; - ret = hcl_absnum(hcl, HCL_STACK_GETARG(hcl, nargs, 0)); - if (!ret) return HCL_PF_FAILURE; + hak_oop_t ret; + ret = hak_absnum(hak, HAK_STACK_GETARG(hak, nargs, 0)); + if (!ret) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_number_gt (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_number_gt (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t ret; - ret = hcl_gtnums(hcl, HCL_STACK_GETARG(hcl, nargs, 0), HCL_STACK_GETARG(hcl, nargs, 1)); - if (!ret) return HCL_PF_FAILURE; + hak_oop_t ret; + ret = hak_gtnums(hak, HAK_STACK_GETARG(hak, nargs, 0), HAK_STACK_GETARG(hak, nargs, 1)); + if (!ret) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_number_ge (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_number_ge (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t ret; - ret = hcl_genums(hcl, HCL_STACK_GETARG(hcl, nargs, 0), HCL_STACK_GETARG(hcl, nargs, 1)); - if (!ret) return HCL_PF_FAILURE; + hak_oop_t ret; + ret = hak_genums(hak, HAK_STACK_GETARG(hak, nargs, 0), HAK_STACK_GETARG(hak, nargs, 1)); + if (!ret) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_number_lt (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_number_lt (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t ret; - ret = hcl_ltnums(hcl, HCL_STACK_GETARG(hcl, nargs, 0), HCL_STACK_GETARG(hcl, nargs, 1)); - if (!ret) return HCL_PF_FAILURE; + hak_oop_t ret; + ret = hak_ltnums(hak, HAK_STACK_GETARG(hak, nargs, 0), HAK_STACK_GETARG(hak, nargs, 1)); + if (!ret) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_number_le (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_number_le (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t ret; - ret = hcl_lenums(hcl, HCL_STACK_GETARG(hcl, nargs, 0), HCL_STACK_GETARG(hcl, nargs, 1)); - if (!ret) return HCL_PF_FAILURE; + hak_oop_t ret; + ret = hak_lenums(hak, HAK_STACK_GETARG(hak, nargs, 0), HAK_STACK_GETARG(hak, nargs, 1)); + if (!ret) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_number_eq (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_number_eq (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t ret; - ret = hcl_eqnums(hcl, HCL_STACK_GETARG(hcl, nargs, 0), HCL_STACK_GETARG(hcl, nargs, 1)); - if (!ret) return HCL_PF_FAILURE; + hak_oop_t ret; + ret = hak_eqnums(hak, HAK_STACK_GETARG(hak, nargs, 0), HAK_STACK_GETARG(hak, nargs, 1)); + if (!ret) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_number_ne (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_number_ne (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t ret; - ret = hcl_nenums(hcl, HCL_STACK_GETARG(hcl, nargs, 0), HCL_STACK_GETARG(hcl, nargs, 1)); - if (!ret) return HCL_PF_FAILURE; + hak_oop_t ret; + ret = hak_nenums(hak, HAK_STACK_GETARG(hak, nargs, 0), HAK_STACK_GETARG(hak, nargs, 1)); + if (!ret) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_integer_band (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_integer_band (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t ret; - ret = hcl_bitandints(hcl, HCL_STACK_GETARG(hcl, nargs, 0), HCL_STACK_GETARG(hcl, nargs, 1)); - if (!ret) return HCL_PF_FAILURE; + hak_oop_t ret; + ret = hak_bitandints(hak, HAK_STACK_GETARG(hak, nargs, 0), HAK_STACK_GETARG(hak, nargs, 1)); + if (!ret) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_integer_bor (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_integer_bor (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t ret; - ret = hcl_bitorints(hcl, HCL_STACK_GETARG(hcl, nargs, 0), HCL_STACK_GETARG(hcl, nargs, 1)); - if (!ret) return HCL_PF_FAILURE; + hak_oop_t ret; + ret = hak_bitorints(hak, HAK_STACK_GETARG(hak, nargs, 0), HAK_STACK_GETARG(hak, nargs, 1)); + if (!ret) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_integer_bxor (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_integer_bxor (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t ret; - ret = hcl_bitxorints(hcl, HCL_STACK_GETARG(hcl, nargs, 0), HCL_STACK_GETARG(hcl, nargs, 1)); - if (!ret) return HCL_PF_FAILURE; + hak_oop_t ret; + ret = hak_bitxorints(hak, HAK_STACK_GETARG(hak, nargs, 0), HAK_STACK_GETARG(hak, nargs, 1)); + if (!ret) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_integer_bnot (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_integer_bnot (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t ret; - ret = hcl_bitinvint(hcl, HCL_STACK_GETARG(hcl, nargs, 0)); - if (!ret) return HCL_PF_FAILURE; + hak_oop_t ret; + ret = hak_bitinvint(hak, HAK_STACK_GETARG(hak, nargs, 0)); + if (!ret) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_integer_bshift (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_integer_bshift (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t ret; - ret = hcl_bitshiftint(hcl, HCL_STACK_GETARG(hcl, nargs, 0), HCL_STACK_GETARG(hcl, nargs, 1)); - if (!ret) return HCL_PF_FAILURE; + hak_oop_t ret; + ret = hak_bitshiftint(hak, HAK_STACK_GETARG(hak, nargs, 0), HAK_STACK_GETARG(hak, nargs, 1)); + if (!ret) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, ret); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ret); + return HAK_PF_SUCCESS; } /* ------------------------------------------------------------------------- */ -static hcl_pfrc_t pf_va_context (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_va_context (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - HCL_STACK_SETRET (hcl, nargs, (hcl_oop_t)hcl->active_context); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, (hak_oop_t)hak->active_context); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_va_count (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_va_count (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_context_t ctx; - hcl_ooi_t attr_mask, /*va,*/ fixed_nargs, nrvars, nlvars, nvaargs; + hak_oop_context_t ctx; + hak_ooi_t attr_mask, /*va,*/ fixed_nargs, nrvars, nlvars, nvaargs; if (nargs >= 1) { - ctx = (hcl_oop_context_t)HCL_STACK_GETARG(hcl, nargs, 0); - if (!HCL_IS_CONTEXT(hcl, ctx)) + ctx = (hak_oop_context_t)HAK_STACK_GETARG(hak, nargs, 0); + if (!HAK_IS_CONTEXT(hak, ctx)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "not a proper va context - %O", ctx); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "not a proper va context - %O", ctx); + return HAK_PF_FAILURE; } } else { - ctx = hcl->active_context; + ctx = hak->active_context; } - attr_mask = HCL_OOP_TO_SMOOI(ctx->attr_mask); + attr_mask = HAK_OOP_TO_SMOOI(ctx->attr_mask); /*va = GET_BLK_MASK_VA(attr_mask);*/ fixed_nargs = GET_BLK_MASK_NARGS(attr_mask); @@ -1132,45 +1132,45 @@ static hcl_pfrc_t pf_va_count (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) { }*/ - nvaargs = HCL_OBJ_GET_SIZE(ctx) - fixed_nargs - nrvars - nlvars - HCL_CONTEXT_NAMED_INSTVARS; - HCL_STACK_SETRET (hcl, nargs, HCL_SMOOI_TO_OOP(nvaargs)); - return HCL_PF_SUCCESS; + nvaargs = HAK_OBJ_GET_SIZE(ctx) - fixed_nargs - nrvars - nlvars - HAK_CONTEXT_NAMED_INSTVARS; + HAK_STACK_SETRET (hak, nargs, HAK_SMOOI_TO_OOP(nvaargs)); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_va_get (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_va_get (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_context_t ctx; - hcl_ooi_t attr_mask, /*va,*/ fixed_nargs, nrvars, nlvars, nvaargs; - hcl_oow_t index; - hcl_oop_t idx; + hak_oop_context_t ctx; + hak_ooi_t attr_mask, /*va,*/ fixed_nargs, nrvars, nlvars, nvaargs; + hak_oow_t index; + hak_oop_t idx; int n; if (nargs >= 2) { - ctx = (hcl_oop_context_t)HCL_STACK_GETARG(hcl, nargs, 1); - if (!HCL_IS_CONTEXT(hcl, ctx)) + ctx = (hak_oop_context_t)HAK_STACK_GETARG(hak, nargs, 1); + if (!HAK_IS_CONTEXT(hak, ctx)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "not a proper va context - %O", ctx); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "not a proper va context - %O", ctx); + return HAK_PF_FAILURE; } } else { - ctx = hcl->active_context; + ctx = hak->active_context; } - attr_mask = HCL_OOP_TO_SMOOI(ctx->attr_mask); + attr_mask = HAK_OOP_TO_SMOOI(ctx->attr_mask); /*va = GET_BLK_MASK_VA(attr_mask);*/ fixed_nargs = GET_BLK_MASK_NARGS(attr_mask); nrvars = GET_BLK_MASK_NRVARS(attr_mask); nlvars = GET_BLK_MASK_NLVARS(attr_mask); - idx = HCL_STACK_GETARG(hcl, nargs, 0); - n = hcl_inttooow(hcl, idx, &index); + idx = HAK_STACK_GETARG(hak, nargs, 0); + n = hak_inttooow(hak, idx, &index); if (n <= 0) { - if (n <= -1) hcl_seterrbfmt (hcl, HCL_EINVAL, "invalid index - %O", idx); - return HCL_PF_FAILURE; + if (n <= -1) hak_seterrbfmt (hak, HAK_EINVAL, "invalid index - %O", idx); + return HAK_PF_FAILURE; } /* @@ -1178,93 +1178,93 @@ static hcl_pfrc_t pf_va_get (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) { }*/ - nvaargs = HCL_OBJ_GET_SIZE(ctx) - fixed_nargs - nrvars - nlvars - HCL_CONTEXT_NAMED_INSTVARS; + nvaargs = HAK_OBJ_GET_SIZE(ctx) - fixed_nargs - nrvars - nlvars - HAK_CONTEXT_NAMED_INSTVARS; if (index >= nvaargs) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "va index(%zu) out of bounds for va of size %zd", index, nvaargs); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "va index(%zu) out of bounds for va of size %zd", index, nvaargs); + return HAK_PF_FAILURE; } - HCL_STACK_SETRET (hcl, nargs, ctx->slot[fixed_nargs + nrvars + nlvars + index]); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ctx->slot[fixed_nargs + nrvars + nlvars + index]); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_object_new (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_object_new (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t obj; - hcl_oop_t _class; - hcl_oow_t size = 0; + hak_oop_t obj; + hak_oop_t _class; + hak_oow_t size = 0; - _class = HCL_STACK_GETARG(hcl, nargs, 0); - if (!HCL_IS_CLASS(hcl, _class)) + _class = HAK_STACK_GETARG(hak, nargs, 0); + if (!HAK_IS_CLASS(hak, _class)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "not a class - %O", _class); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "not a class - %O", _class); + return HAK_PF_FAILURE; } if (nargs >= 2) { int n; - hcl_oop_t sz; + hak_oop_t sz; - sz = HCL_STACK_GETARG(hcl, nargs, 1); - n = hcl_inttooow(hcl, sz, &size); - if (n == 0) return HCL_PF_FAILURE; + sz = HAK_STACK_GETARG(hak, nargs, 1); + n = hak_inttooow(hak, sz, &size); + if (n == 0) return HAK_PF_FAILURE; if (n <= -1) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "invalid size - %O", sz); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "invalid size - %O", sz); + return HAK_PF_FAILURE; } } - obj = hcl_instantiate(hcl, (hcl_oop_class_t)_class, HCL_NULL, size); - if (HCL_UNLIKELY(!obj)) return HCL_PF_FAILURE; + obj = hak_instantiate(hak, (hak_oop_class_t)_class, HAK_NULL, size); + if (HAK_UNLIKELY(!obj)) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, obj); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, obj); + return HAK_PF_SUCCESS; } /* ------------------------------------------------------------------------- */ -static hcl_pfrc_t pf_system_get_sigfd (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_system_get_sigfd (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_ooi_t fd; - fd = hcl->vmprim.vm_getsigfd(hcl); - HCL_STACK_SETRET (hcl, nargs, HCL_SMOOI_TO_OOP(fd)); - return HCL_PF_SUCCESS; + hak_ooi_t fd; + fd = hak->vmprim.vm_getsigfd(hak); + HAK_STACK_SETRET (hak, nargs, HAK_SMOOI_TO_OOP(fd)); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_system_get_sig (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_system_get_sig (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_uint8_t sig; + hak_uint8_t sig; int n; - n = hcl->vmprim.vm_getsig(hcl, &sig); - if (n <= -1) return HCL_PF_FAILURE; + n = hak->vmprim.vm_getsig(hak, &sig); + if (n <= -1) return HAK_PF_FAILURE; - if (n == 0) HCL_STACK_SETRETTOERROR (hcl, nargs, HCL_ENOENT); - else HCL_STACK_SETRET (hcl, nargs, HCL_SMOOI_TO_OOP((hcl_ooi_t)sig)); + if (n == 0) HAK_STACK_SETRETTOERROR (hak, nargs, HAK_ENOENT); + else HAK_STACK_SETRET (hak, nargs, HAK_SMOOI_TO_OOP((hak_ooi_t)sig)); - return HCL_PF_SUCCESS; + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_system_set_sig (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_system_set_sig (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t tmp; - hcl_uint8_t sig; + hak_oop_t tmp; + hak_uint8_t sig; int n; - tmp = HCL_STACK_GETARG(hcl, nargs, 0); - HCL_PF_CHECK_ARGS (hcl, nargs, HCL_OOP_IS_SMOOI(tmp)); + tmp = HAK_STACK_GETARG(hak, nargs, 0); + HAK_PF_CHECK_ARGS (hak, nargs, HAK_OOP_IS_SMOOI(tmp)); - sig = (hcl_uint8_t)HCL_OOP_TO_SMOOI(tmp); - n = hcl->vmprim.vm_setsig(hcl, sig); - if (n <= -1) return HCL_PF_FAILURE; + sig = (hak_uint8_t)HAK_OOP_TO_SMOOI(tmp); + n = hak->vmprim.vm_setsig(hak, sig); + if (n <= -1) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, HCL_SMOOI_TO_OOP((hcl_ooi_t)sig)); + HAK_STACK_SETRET (hak, nargs, HAK_SMOOI_TO_OOP((hak_ooi_t)sig)); - return HCL_PF_SUCCESS; + return HAK_PF_SUCCESS; } /* ------------------------------------------------------------------------- */ @@ -1276,11 +1276,11 @@ static pf_t builtin_prims[] = { 0, 0, pf_getbyte, 7, { 'g','e','t','b','y','t','e' } }, { 0, 0, pf_getch, 5, { 'g','e','t','c','h' } }, { 0, 0, pf_gets, 4, { 'g','e','t','s' } }, - { 0, HCL_TYPE_MAX(hcl_oow_t), pf_log, 3, { 'l','o','g' } }, - { 1, HCL_TYPE_MAX(hcl_oow_t), pf_logf, 4, { 'l','o','g','f' } }, - { 1, HCL_TYPE_MAX(hcl_oow_t), pf_printf, 6, { 'p','r','i','n','t','f' } }, - { 1, HCL_TYPE_MAX(hcl_oow_t), pf_scanf, 5, { 's','c','a','n','f' } }, - { 1, HCL_TYPE_MAX(hcl_oow_t), pf_sprintf, 7, { 's','p','r','i','n','t','f' } }, + { 0, HAK_TYPE_MAX(hak_oow_t), pf_log, 3, { 'l','o','g' } }, + { 1, HAK_TYPE_MAX(hak_oow_t), pf_logf, 4, { 'l','o','g','f' } }, + { 1, HAK_TYPE_MAX(hak_oow_t), pf_printf, 6, { 'p','r','i','n','t','f' } }, + { 1, HAK_TYPE_MAX(hak_oow_t), pf_scanf, 5, { 's','c','a','n','f' } }, + { 1, HAK_TYPE_MAX(hak_oow_t), pf_sprintf, 7, { 's','p','r','i','n','t','f' } }, { 0, 0, pf_system_get_sigfd,16, { 's','y','s','t','e','m','-','g','e','t','-','s','i','g','f','d' } }, { 0, 0, pf_system_get_sig, 14, { 's','y','s','t','e','m','-','g','e','t','-','s','i','g' } }, @@ -1290,9 +1290,9 @@ static pf_t builtin_prims[] = { 1, 1, pf_not, 3, { 'n','o','t' } }, /* this is a long-circuit logical and the short-curcuit 'and' is treated as a special form */ - { 2, HCL_TYPE_MAX(hcl_oow_t), pf_and, 4, { '_','a','n','d' } }, + { 2, HAK_TYPE_MAX(hak_oow_t), pf_and, 4, { '_','a','n','d' } }, /* this is a long-cirtuit logical or. the short-circuit 'or' is treated as a special form */ - { 2, HCL_TYPE_MAX(hcl_oow_t), pf_or, 3, { '_','o','r' } }, + { 2, HAK_TYPE_MAX(hak_oow_t), pf_or, 3, { '_','o','r' } }, { 2, 2, pf_eqv, 4, { 'e','q','v','?' } }, { 2, 2, pf_eql, 4, { 'e','q','l','?' } }, @@ -1317,11 +1317,11 @@ static pf_t builtin_prims[] = { 1, 1, pf_is_object, 7, { 'o','b','j','e','c','t','?' } }, - { 1, HCL_TYPE_MAX(hcl_oow_t), pf_number_add, 1, { '+' } }, - { 1, HCL_TYPE_MAX(hcl_oow_t), pf_number_sub, 1, { '-' } }, - { 1, HCL_TYPE_MAX(hcl_oow_t), pf_number_mul, 1, { '*' } }, - { 1, HCL_TYPE_MAX(hcl_oow_t), pf_number_mlt, 3, { 'm','l','t' } }, - { 1, HCL_TYPE_MAX(hcl_oow_t), pf_number_div, 1, { '/' } }, + { 1, HAK_TYPE_MAX(hak_oow_t), pf_number_add, 1, { '+' } }, + { 1, HAK_TYPE_MAX(hak_oow_t), pf_number_sub, 1, { '-' } }, + { 1, HAK_TYPE_MAX(hak_oow_t), pf_number_mul, 1, { '*' } }, + { 1, HAK_TYPE_MAX(hak_oow_t), pf_number_mlt, 3, { 'm','l','t' } }, + { 1, HAK_TYPE_MAX(hak_oow_t), pf_number_div, 1, { '/' } }, { 1, 1, pf_number_sqrt, 4, { 's','q','r','t' } }, { 1, 1, pf_number_abs, 3, { 'a','b','s' } }, @@ -1340,10 +1340,10 @@ static pf_t builtin_prims[] = { 1, 1, pf_integer_bnot, 7, { 'b','i','t','-','n','o','t' } }, { 2, 2, pf_integer_bshift, 9, { 'b','i','t','-','s','h','i','f','t' } }, - { 1, HCL_TYPE_MAX(hcl_oow_t), pf_integer_quo, 3, { 'd','i','v' } }, - { 2, HCL_TYPE_MAX(hcl_oow_t), pf_integer_rem, 3, { 'r','e','m' } }, - { 1, HCL_TYPE_MAX(hcl_oow_t), pf_integer_mquo, 4, { 'm','d','i','v' } }, - { 2, HCL_TYPE_MAX(hcl_oow_t), pf_integer_mod, 3, { 'm','o','d' } }, + { 1, HAK_TYPE_MAX(hak_oow_t), pf_integer_quo, 3, { 'd','i','v' } }, + { 2, HAK_TYPE_MAX(hak_oow_t), pf_integer_rem, 3, { 'r','e','m' } }, + { 1, HAK_TYPE_MAX(hak_oow_t), pf_integer_mquo, 4, { 'm','d','i','v' } }, + { 2, HAK_TYPE_MAX(hak_oow_t), pf_integer_mod, 3, { 'm','o','d' } }, { 0, 0, pf_va_context, 10, { 'v','a','-','c','o','n','t','e','x','t' } }, { 0, 1, pf_va_count, 8, { 'v','a','-','c','o','u','n','t' } }, @@ -1351,63 +1351,63 @@ static pf_t builtin_prims[] = { 1, 2, pf_object_new, 10, { 'o','b','j','e','c','t','-','n','e','w' } }, - { 0, 0, hcl_pf_process_current, 15, { 'c','u','r','r','e','n','t','-','p','r','o','c','e','s','s'} }, - { 1, HCL_TYPE_MAX(hcl_oow_t), hcl_pf_process_fork, 4, { 'f','o','r','k'} }, - { 1, 1, hcl_pf_process_resume, 6, { 'r','e','s','u','m','e' } }, - { 0, 1, hcl_pf_process_suspend, 7, { 's','u','s','p','e','n','d' } }, - { 0, 1, hcl_pf_process_terminate, 9, { 't','e','r','m','i','n','a','t','e' } }, - { 0, 0, hcl_pf_process_terminate_all, 13, { 't','e','r','m','i','n','a','t','e','-','a','l','l' } }, - { 0, 0, hcl_pf_process_yield, 5, { 'y','i','e','l','d'} }, + { 0, 0, hak_pf_process_current, 15, { 'c','u','r','r','e','n','t','-','p','r','o','c','e','s','s'} }, + { 1, HAK_TYPE_MAX(hak_oow_t), hak_pf_process_fork, 4, { 'f','o','r','k'} }, + { 1, 1, hak_pf_process_resume, 6, { 'r','e','s','u','m','e' } }, + { 0, 1, hak_pf_process_suspend, 7, { 's','u','s','p','e','n','d' } }, + { 0, 1, hak_pf_process_terminate, 9, { 't','e','r','m','i','n','a','t','e' } }, + { 0, 0, hak_pf_process_terminate_all, 13, { 't','e','r','m','i','n','a','t','e','-','a','l','l' } }, + { 0, 0, hak_pf_process_yield, 5, { 'y','i','e','l','d'} }, - { 0, 0, hcl_pf_semaphore_new, 7, { 's','e','m','-','n','e','w'} }, - { 1, 1, hcl_pf_semaphore_wait, 8, { 's','e','m','-','w','a','i','t'} }, - { 1, 3, hcl_pf_semaphore_signal, 10, { 's','e','m','-','s','i','g','n','a','l'} }, - { 2, 2, hcl_pf_semaphore_signal_on_input, 19, { 's','e','m','-','s','i','g','n','a','l','-','o','n','-','i','n','p','u','t'} }, - { 2, 2, hcl_pf_semaphore_signal_on_output, 20, { 's','e','m','-','s','i','g','n','a','l','-','o','n','-','o','u','t','p','u','t'} }, - { 1, 1, hcl_pf_semaphore_unsignal, 12, { 's','e','m','-','u','n','s','i','g','n','a','l'} }, + { 0, 0, hak_pf_semaphore_new, 7, { 's','e','m','-','n','e','w'} }, + { 1, 1, hak_pf_semaphore_wait, 8, { 's','e','m','-','w','a','i','t'} }, + { 1, 3, hak_pf_semaphore_signal, 10, { 's','e','m','-','s','i','g','n','a','l'} }, + { 2, 2, hak_pf_semaphore_signal_on_input, 19, { 's','e','m','-','s','i','g','n','a','l','-','o','n','-','i','n','p','u','t'} }, + { 2, 2, hak_pf_semaphore_signal_on_output, 20, { 's','e','m','-','s','i','g','n','a','l','-','o','n','-','o','u','t','p','u','t'} }, + { 1, 1, hak_pf_semaphore_unsignal, 12, { 's','e','m','-','u','n','s','i','g','n','a','l'} }, - { 0, 0, hcl_pf_semaphore_group_new, 9, { 's','e','m','g','r','-','n','e','w'} }, - { 1, 2, hcl_pf_semaphore_group_add_semaphore, 9, { 's','e','m','g','r','-','a','d','d'} }, - { 1, 2, hcl_pf_semaphore_group_remove_semaphore, 12, { 's','e','m','g','r','-','r','e','m','o','v','e'} }, - { 1, 1, hcl_pf_semaphore_group_wait, 10, { 's','e','m','g','r','-','w','a','i','t'} } + { 0, 0, hak_pf_semaphore_group_new, 9, { 's','e','m','g','r','-','n','e','w'} }, + { 1, 2, hak_pf_semaphore_group_add_semaphore, 9, { 's','e','m','g','r','-','a','d','d'} }, + { 1, 2, hak_pf_semaphore_group_remove_semaphore, 12, { 's','e','m','g','r','-','r','e','m','o','v','e'} }, + { 1, 1, hak_pf_semaphore_group_wait, 10, { 's','e','m','g','r','-','w','a','i','t'} } }; -int hcl_addbuiltinprims (hcl_t* hcl) +int hak_addbuiltinprims (hak_t* hak) { - hcl_oow_t i; - hcl_oop_t prim, name; - hcl_oop_cons_t cons; + hak_oow_t i; + hak_oop_t prim, name; + hak_oop_cons_t cons; - for (i = 0; i < HCL_COUNTOF(builtin_prims); i++) + for (i = 0; i < HAK_COUNTOF(builtin_prims); i++) { - prim = hcl_makeprim(hcl, builtin_prims[i].impl, builtin_prims[i].minargs, builtin_prims[i].maxargs, HCL_NULL); - if (HCL_UNLIKELY(!prim)) + prim = hak_makeprim(hak, builtin_prims[i].impl, builtin_prims[i].minargs, builtin_prims[i].maxargs, HAK_NULL); + if (HAK_UNLIKELY(!prim)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), "unable to make primitive '%.*js' - %js", + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), "unable to make primitive '%.*js' - %js", builtin_prims[i].namelen, builtin_prims[i].name, orgmsg); return -1; } - hcl_pushvolat (hcl, &prim); - name = hcl_makesymbol(hcl, builtin_prims[i].name, builtin_prims[i].namelen); - hcl_popvolat (hcl); - if (HCL_UNLIKELY(!name)) + hak_pushvolat (hak, &prim); + name = hak_makesymbol(hak, builtin_prims[i].name, builtin_prims[i].namelen); + hak_popvolat (hak); + if (HAK_UNLIKELY(!name)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), "unable to make primitive name '%.*js' - %js", + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), "unable to make primitive name '%.*js' - %js", builtin_prims[i].namelen, builtin_prims[i].name, orgmsg); return -1; } - hcl_pushvolat (hcl, &name); - cons = hcl_putatsysdic(hcl, name, prim); - hcl_popvolat (hcl); - if (HCL_UNLIKELY(!cons)) + hak_pushvolat (hak, &name); + cons = hak_putatsysdic(hak, name, prim); + hak_popvolat (hak); + if (HAK_UNLIKELY(!cons)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), "unable to add primitive '%.*js' to system dictionary - %js", + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), "unable to add primitive '%.*js' to system dictionary - %js", builtin_prims[i].namelen, builtin_prims[i].name, orgmsg); return -1; } @@ -1415,7 +1415,7 @@ int hcl_addbuiltinprims (hcl_t* hcl) /* turn on the kernel bit in the symbol associated with a primitive * function. 'set' prevents this symbol from being used as a variable * name */ - HCL_OBJ_SET_FLAGS_KERNEL (name, 2); + HAK_OBJ_SET_FLAGS_KERNEL (name, 2); } return 0; diff --git a/lib/print.c b/lib/print.c index 75c5225..7a87505 100644 --- a/lib/print.c +++ b/lib/print.c @@ -22,7 +22,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "hcl-prv.h" +#include "hak-prv.h" #include @@ -41,38 +41,38 @@ typedef struct print_stack_t print_stack_t; struct print_stack_t { int type; - hcl_oop_t obj; - hcl_oop_t obj2; - hcl_oow_t idx; - hcl_oow_t idx2; + hak_oop_t obj; + hak_oop_t obj2; + hak_oow_t idx; + hak_oow_t idx2; }; -static HCL_INLINE int push (hcl_t* hcl, print_stack_t* info) +static HAK_INLINE int push (hak_t* hak, print_stack_t* info) { - if (hcl->p.s.size >= hcl->p.s.capa) + if (hak->p.s.size >= hak->p.s.capa) { print_stack_t* tmp; - hcl_oow_t new_capa; + hak_oow_t new_capa; - new_capa = HCL_ALIGN (hcl->p.s.capa + 1, PRINT_STACK_ALIGN); - tmp = (print_stack_t*)hcl_reallocmem(hcl, hcl->p.s.ptr, new_capa * HCL_SIZEOF(*info)); + new_capa = HAK_ALIGN (hak->p.s.capa + 1, PRINT_STACK_ALIGN); + tmp = (print_stack_t*)hak_reallocmem(hak, hak->p.s.ptr, new_capa * HAK_SIZEOF(*info)); if (!tmp) return -1; - hcl->p.s.ptr = tmp; - hcl->p.s.capa = new_capa; + hak->p.s.ptr = tmp; + hak->p.s.capa = new_capa; } - ((print_stack_t*)hcl->p.s.ptr)[hcl->p.s.size] = *info; - hcl->p.s.size++; + ((print_stack_t*)hak->p.s.ptr)[hak->p.s.size] = *info; + hak->p.s.size++; return 0; } -static HCL_INLINE void pop (hcl_t* hcl, print_stack_t* info) +static HAK_INLINE void pop (hak_t* hak, print_stack_t* info) { - HCL_ASSERT (hcl, hcl->p.s.size > 0); - hcl->p.s.size--; - *info = ((print_stack_t*)hcl->p.s.ptr)[hcl->p.s.size]; + HAK_ASSERT (hak, hak->p.s.size > 0); + hak->p.s.size--; + *info = ((print_stack_t*)hak->p.s.ptr)[hak->p.s.size]; } enum @@ -98,8 +98,8 @@ enum static struct { - hcl_oow_t len; - hcl_ooch_t ptr[20]; + hak_oow_t len; + hak_ooch_t ptr[20]; } word[] = { { 8, { '#','<','U','N','D','E','F','>' } }, @@ -122,20 +122,20 @@ static struct { 11, { '#','<','I','N','S','T','A','N','C','E','>' } } }; -static HCL_INLINE int print_single_char (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_ooch_t ch) +static HAK_INLINE int print_single_char (hak_t* hak, hak_fmtout_t* fmtout, hak_ooch_t ch) { - hcl_oochu_t chu = (hcl_oochu_t)ch; + hak_oochu_t chu = (hak_oochu_t)ch; if (chu == '\\' || chu == '\"') { - if (hcl_bfmt_out(hcl, fmtout, "\\%jc", chu) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, "\\%jc", chu) <= -1) return -1; } -#if defined(HCL_OOCH_IS_UCH) +#if defined(HAK_OOCH_IS_UCH) else if (chu < ' ') #else else if (chu < ' ' || chu >= 0x80) #endif { - hcl_oochu_t escaped; + hak_oochu_t escaped; switch (chu) { @@ -170,53 +170,53 @@ static HCL_INLINE int print_single_char (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_o if (escaped == chu) { - #if (HCL_SIZEOF_OOCH_T >= 4) + #if (HAK_SIZEOF_OOCH_T >= 4) if (chu >= 0x10000u) { - if (hcl_bfmt_out(fmtout, "\\U%08X", chu) <= -1) return -1; + if (hak_bfmt_out(fmtout, "\\U%08X", chu) <= -1) return -1; } else #endif { - #if (HCL_SIZEOF_OOCH_T >= 2) + #if (HAK_SIZEOF_OOCH_T >= 2) if (chu >= 0x100u) { - if (hcl_bfmt_out(hcl, fmtout, "\\u%04X", chu) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, "\\u%04X", chu) <= -1) return -1; } else #endif { - if (hcl_bfmt_out(hcl, fmtout, "\\x%02X", chu) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, "\\x%02X", chu) <= -1) return -1; } } } else { - if (hcl_bfmt_out(hcl, fmtout, "\\%jc", escaped) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, "\\%jc", escaped) <= -1) return -1; } } else { - if (hcl_bfmt_out(hcl, fmtout, "%jc", ch) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, "%jc", ch) <= -1) return -1; } return 0; } -static HCL_INLINE int print_single_byte_char (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_bch_t ch) +static HAK_INLINE int print_single_byte_char (hak_t* hak, hak_fmtout_t* fmtout, hak_bch_t ch) { - hcl_bchu_t chu = (hcl_bchu_t)ch; + hak_bchu_t chu = (hak_bchu_t)ch; if (chu == '\\' || chu == '\"') { - if (hcl_bfmt_out(hcl, fmtout, "\\%hc", chu) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, "\\%hc", chu) <= -1) return -1; } -#if defined(HCL_OOCH_IS_UCH) +#if defined(HAK_OOCH_IS_UCH) else if (chu < ' ') #else else if (chu < ' ' || chu >= 0x80) #endif { - hcl_bchu_t escaped; + hak_bchu_t escaped; switch (chu) { @@ -251,220 +251,220 @@ static HCL_INLINE int print_single_byte_char (hcl_t* hcl, hcl_fmtout_t* fmtout, if (escaped == chu) { - if (hcl_bfmt_out(hcl, fmtout, "\\x%02X", chu) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, "\\x%02X", chu) <= -1) return -1; } else { - if (hcl_bfmt_out(hcl, fmtout, "\\%hc", escaped) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, "\\%hc", escaped) <= -1) return -1; } } else { - if (hcl_bfmt_out(hcl, fmtout, "%hc", ch) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, "%hc", ch) <= -1) return -1; } return 0; } -int hcl_fmt_object (hcl_t* hcl, hcl_fmtout_t* fmtout, hcl_oop_t obj) +int hak_fmt_object (hak_t* hak, hak_fmtout_t* fmtout, hak_oop_t obj) { - hcl_oop_t cur; + hak_oop_t cur; print_stack_t ps; - hcl_oop_class_t _class; + hak_oop_class_t _class; int brand; int word_index; int json; - static const hcl_bch_t *opening_parens[][2] = + static const hak_bch_t *opening_parens[][2] = { /* navtive json */ - HCL_AID(HCL_CONCODE_XLIST) { "(", "(" }, - HCL_AID(HCL_CONCODE_MLIST) { "(", "(" }, - HCL_AID(HCL_CONCODE_ALIST) { "(", "(" }, - HCL_AID(HCL_CONCODE_BLIST) { "(", "(" }, - HCL_AID(HCL_CONCODE_BLOCK) { "{", "{" }, - HCL_AID(HCL_CONCODE_ARRAY) { "#[", "[" }, - HCL_AID(HCL_CONCODE_BYTEARRAY) { "#b[", "[" }, - HCL_AID(HCL_CONCODE_CHARARRAY) { "#c[", "[" }, - HCL_AID(HCL_CONCODE_DIC) { "#{", "{" }, - HCL_AID(HCL_CONCODE_QLIST) { "#(", "[" }, - HCL_AID(HCL_CONCODE_TUPLE) { "[", "[" } + HAK_AID(HAK_CONCODE_XLIST) { "(", "(" }, + HAK_AID(HAK_CONCODE_MLIST) { "(", "(" }, + HAK_AID(HAK_CONCODE_ALIST) { "(", "(" }, + HAK_AID(HAK_CONCODE_BLIST) { "(", "(" }, + HAK_AID(HAK_CONCODE_BLOCK) { "{", "{" }, + HAK_AID(HAK_CONCODE_ARRAY) { "#[", "[" }, + HAK_AID(HAK_CONCODE_BYTEARRAY) { "#b[", "[" }, + HAK_AID(HAK_CONCODE_CHARARRAY) { "#c[", "[" }, + HAK_AID(HAK_CONCODE_DIC) { "#{", "{" }, + HAK_AID(HAK_CONCODE_QLIST) { "#(", "[" }, + HAK_AID(HAK_CONCODE_TUPLE) { "[", "[" } }; - static const hcl_bch_t *closing_parens[][2] = + static const hak_bch_t *closing_parens[][2] = { - HCL_AID(HCL_CONCODE_XLIST) { ")", ")" }, - HCL_AID(HCL_CONCODE_MLIST) { ")", ")" }, - HCL_AID(HCL_CONCODE_ALIST) { ")", ")" }, - HCL_AID(HCL_CONCODE_BLIST) { ")", ")" }, - HCL_AID(HCL_CONCODE_BLOCK) { "}", "}" }, - HCL_AID(HCL_CONCODE_ARRAY) { "]", "]" }, - HCL_AID(HCL_CONCODE_BYTEARRAY) { "]", "]" }, - HCL_AID(HCL_CONCODE_CHARARRAY) { "]", "]" }, - HCL_AID(HCL_CONCODE_DIC) { "}", "}" }, - HCL_AID(HCL_CONCODE_QLIST) { ")", "]" }, - HCL_AID(HCL_CONCODE_TUPLE) { "]", "]" } + HAK_AID(HAK_CONCODE_XLIST) { ")", ")" }, + HAK_AID(HAK_CONCODE_MLIST) { ")", ")" }, + HAK_AID(HAK_CONCODE_ALIST) { ")", ")" }, + HAK_AID(HAK_CONCODE_BLIST) { ")", ")" }, + HAK_AID(HAK_CONCODE_BLOCK) { "}", "}" }, + HAK_AID(HAK_CONCODE_ARRAY) { "]", "]" }, + HAK_AID(HAK_CONCODE_BYTEARRAY) { "]", "]" }, + HAK_AID(HAK_CONCODE_CHARARRAY) { "]", "]" }, + HAK_AID(HAK_CONCODE_DIC) { "}", "}" }, + HAK_AID(HAK_CONCODE_QLIST) { ")", "]" }, + HAK_AID(HAK_CONCODE_TUPLE) { "]", "]" } }; - static const hcl_bch_t* breakers[][2] = + static const hak_bch_t* breakers[][2] = { { " ", "," }, /* item breaker */ { " ", ":" } /* key value breaker */ }; - json = !!(fmtout->mask & HCL_LOG_PREFER_JSON); + json = !!(fmtout->mask & HAK_LOG_PREFER_JSON); next: - _class = (hcl_oop_class_t)HCL_CLASSOF(hcl, obj); - brand = HCL_OOP_TO_SMOOI(_class->ibrand); + _class = (hak_oop_class_t)HAK_CLASSOF(hak, obj); + brand = HAK_OOP_TO_SMOOI(_class->ibrand); switch (brand) { - case HCL_BRAND_SMOOI: - if (hcl_bfmt_out(hcl, fmtout, "%zd", HCL_OOP_TO_SMOOI(obj)) <= -1) return -1; + case HAK_BRAND_SMOOI: + if (hak_bfmt_out(hak, fmtout, "%zd", HAK_OOP_TO_SMOOI(obj)) <= -1) return -1; goto done; - case HCL_BRAND_SMPTR: - if (hcl_bfmt_out(hcl, fmtout, "#p%zX", (hcl_oow_t)HCL_OOP_TO_SMPTR(obj)) <= -1) return -1; + case HAK_BRAND_SMPTR: + if (hak_bfmt_out(hak, fmtout, "#p%zX", (hak_oow_t)HAK_OOP_TO_SMPTR(obj)) <= -1) return -1; goto done; - case HCL_BRAND_ERROR: - if (hcl_bfmt_out(hcl, fmtout, "#e%zd", (hcl_ooi_t)HCL_OOP_TO_ERROR(obj)) <= -1) return -1; + case HAK_BRAND_ERROR: + if (hak_bfmt_out(hak, fmtout, "#e%zd", (hak_ooi_t)HAK_OOP_TO_ERROR(obj)) <= -1) return -1; goto done; - case HCL_BRAND_CHARACTER: + case HAK_BRAND_CHARACTER: { - hcl_ooch_t ch = HCL_OOP_TO_CHAR(obj); - if (hcl_bfmt_out(hcl, fmtout, "\'") <= -1 || - print_single_char(hcl, fmtout, ch) <= -1 || - hcl_bfmt_out(hcl, fmtout, "\'") <= -1) return -1; + hak_ooch_t ch = HAK_OOP_TO_CHAR(obj); + if (hak_bfmt_out(hak, fmtout, "\'") <= -1 || + print_single_char(hak, fmtout, ch) <= -1 || + hak_bfmt_out(hak, fmtout, "\'") <= -1) return -1; goto done; } - case HCL_BRAND_UNDEF: + case HAK_BRAND_UNDEF: word_index = WORD_UNDEF; goto print_word; - case HCL_BRAND_NIL: + case HAK_BRAND_NIL: word_index = WORD_NIL; goto print_word; - case HCL_BRAND_TRUE: + case HAK_BRAND_TRUE: word_index = WORD_TRUE; goto print_word; - case HCL_BRAND_FALSE: + case HAK_BRAND_FALSE: word_index = WORD_FALSE; goto print_word; - case HCL_BRAND_PBIGINT: - case HCL_BRAND_NBIGINT: + case HAK_BRAND_PBIGINT: + case HAK_BRAND_NBIGINT: { - hcl_oop_t tmp; + hak_oop_t tmp; - /* -1 to drive hcl_inttostr() to not create a new string object. + /* -1 to drive hak_inttostr() to not create a new string object. * not using the object memory. the result stays in the temporary * buffer */ - tmp = hcl_inttostr(hcl, obj, 10 | HCL_INTTOSTR_NONEWOBJ); + tmp = hak_inttostr(hak, obj, 10 | HAK_INTTOSTR_NONEWOBJ); if (!tmp) return -1; - HCL_ASSERT (hcl, (hcl_oop_t)tmp == hcl->_nil); - if (hcl_bfmt_out(hcl, fmtout, "%.*js", hcl->inttostr.xbuf.len, hcl->inttostr.xbuf.ptr) <= -1) return -1; + HAK_ASSERT (hak, (hak_oop_t)tmp == hak->_nil); + if (hak_bfmt_out(hak, fmtout, "%.*js", hak->inttostr.xbuf.len, hak->inttostr.xbuf.ptr) <= -1) return -1; break; } - case HCL_BRAND_FPDEC: + case HAK_BRAND_FPDEC: { - hcl_oop_fpdec_t f = (hcl_oop_fpdec_t)obj; - hcl_ooi_t scale; + hak_oop_fpdec_t f = (hak_oop_fpdec_t)obj; + hak_ooi_t scale; - scale = HCL_OOP_TO_SMOOI(f->scale); + scale = HAK_OOP_TO_SMOOI(f->scale); - if (f->value == HCL_SMOOI_TO_OOP(0)) + if (f->value == HAK_SMOOI_TO_OOP(0)) { if (scale == 0) { - if (hcl_bfmt_out(hcl, fmtout, "0.") <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, "0.") <= -1) return -1; } else { - if (hcl_bfmt_out(hcl, fmtout, "0.%0*d", scale, 0) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, "0.%0*d", scale, 0) <= -1) return -1; } } else { - hcl_oop_t tmp; - hcl_oow_t len, adj; + hak_oop_t tmp; + hak_oow_t len, adj; - tmp = hcl_inttostr(hcl, f->value, 10 | HCL_INTTOSTR_NONEWOBJ); + tmp = hak_inttostr(hak, f->value, 10 | HAK_INTTOSTR_NONEWOBJ); if (!tmp) return -1; - adj = (hcl->inttostr.xbuf.ptr[0] == '-'); - len = hcl->inttostr.xbuf.len - adj; + adj = (hak->inttostr.xbuf.ptr[0] == '-'); + len = hak->inttostr.xbuf.len - adj; if (len <= scale) { if (scale == len) { - if (hcl_bfmt_out(hcl, fmtout, "%.*js0.%.*js", - adj, hcl->inttostr.xbuf.ptr, - len, &hcl->inttostr.xbuf.ptr[adj]) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, "%.*js0.%.*js", + adj, hak->inttostr.xbuf.ptr, + len, &hak->inttostr.xbuf.ptr[adj]) <= -1) return -1; } else { - if (hcl_bfmt_out(hcl, fmtout, "%.*js0.%0*d%.*js", - adj, hcl->inttostr.xbuf.ptr, + if (hak_bfmt_out(hak, fmtout, "%.*js0.%0*d%.*js", + adj, hak->inttostr.xbuf.ptr, scale - len, 0, - len, &hcl->inttostr.xbuf.ptr[adj]) <= -1) return -1; + len, &hak->inttostr.xbuf.ptr[adj]) <= -1) return -1; } } else { - hcl_ooi_t ndigits; - ndigits = hcl->inttostr.xbuf.len - scale; - if (hcl_bfmt_out(hcl, fmtout, "%.*js.%.*js", ndigits, hcl->inttostr.xbuf.ptr, scale, &hcl->inttostr.xbuf.ptr[ndigits]) <= -1) return -1; + hak_ooi_t ndigits; + ndigits = hak->inttostr.xbuf.len - scale; + if (hak_bfmt_out(hak, fmtout, "%.*js.%.*js", ndigits, hak->inttostr.xbuf.ptr, scale, &hak->inttostr.xbuf.ptr[ndigits]) <= -1) return -1; } } break; } #if 0 - case HCL_BRAND_REAL: + case HAK_BRAND_REAL: { qse_char_t buf[256]; - hcl->prm.sprintf ( - hcl->prm.ctx, - buf, HCL_COUNTOF(buf), - HCL_T("%Lf"), + hak->prm.sprintf ( + hak->prm.ctx, + buf, HAK_COUNTOF(buf), + HAK_T("%Lf"), #ifdef __MINGW32__ - (double)HCL_RVAL(obj) + (double)HAK_RVAL(obj) #else - (long double)HCL_RVAL(obj) + (long double)HAK_RVAL(obj) #endif ); - OUTPUT_STR (hcl, buf); + OUTPUT_STR (hak, buf); break; } #endif - case HCL_BRAND_SYMBOL: + case HAK_BRAND_SYMBOL: /* Any needs for special action if SYNT(obj) is true? * I simply treat the syntax symbol as a normal symbol * for printing currently. */ /* TODO: escaping if needed */ - /*if (hcl_bfmt_out(hcl, fmtout, "#\"%.*js\"", HCL_OBJ_GET_SIZE(obj), HCL_OBJ_GET_CHAR_SLOT(obj)) <= -1) return -1;*/ - if (hcl_bfmt_out(hcl, fmtout, "%.*js", HCL_OBJ_GET_SIZE(obj), HCL_OBJ_GET_CHAR_SLOT(obj)) <= -1) return -1; + /*if (hak_bfmt_out(hak, fmtout, "#\"%.*js\"", HAK_OBJ_GET_SIZE(obj), HAK_OBJ_GET_CHAR_SLOT(obj)) <= -1) return -1;*/ + if (hak_bfmt_out(hak, fmtout, "%.*js", HAK_OBJ_GET_SIZE(obj), HAK_OBJ_GET_CHAR_SLOT(obj)) <= -1) return -1; break; - case HCL_BRAND_STRING: + case HAK_BRAND_STRING: { - hcl_ooch_t ch; - hcl_oow_t i; + hak_ooch_t ch; + hak_oow_t i; int escape = 0; - for (i = 0; i < HCL_OBJ_GET_SIZE(obj); i++) + for (i = 0; i < HAK_OBJ_GET_SIZE(obj); i++) { - ch = ((hcl_oop_char_t)obj)->slot[i]; + ch = ((hak_oop_char_t)obj)->slot[i]; if (ch < ' ' || ch == '\"' || ch == '\\') { escape = 1; @@ -474,30 +474,30 @@ next: if (escape) { - if (hcl_bfmt_out(hcl, fmtout, "\"") <= -1) return -1; - for (i = 0; i < HCL_OBJ_GET_SIZE(obj); i++) + if (hak_bfmt_out(hak, fmtout, "\"") <= -1) return -1; + for (i = 0; i < HAK_OBJ_GET_SIZE(obj); i++) { - ch = ((hcl_oop_char_t)obj)->slot[i]; - if (print_single_char(hcl, fmtout, ch) <= -1) return -1; + ch = ((hak_oop_char_t)obj)->slot[i]; + if (print_single_char(hak, fmtout, ch) <= -1) return -1; } - if (hcl_bfmt_out(hcl, fmtout, "\"") <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, "\"") <= -1) return -1; } else { - if (hcl_bfmt_out(hcl, fmtout, "\"%.*js\"", HCL_OBJ_GET_SIZE(obj), HCL_OBJ_GET_CHAR_SLOT(obj)) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, "\"%.*js\"", HAK_OBJ_GET_SIZE(obj), HAK_OBJ_GET_CHAR_SLOT(obj)) <= -1) return -1; } break; } - case HCL_BRAND_BYTE_STRING: + case HAK_BRAND_BYTE_STRING: { - hcl_bch_t ch; - hcl_oow_t i; + hak_bch_t ch; + hak_oow_t i; int escape = 0; - for (i = 0; i < HCL_OBJ_GET_SIZE(obj); i++) + for (i = 0; i < HAK_OBJ_GET_SIZE(obj); i++) { - ch = ((hcl_oop_byte_t)obj)->slot[i]; + ch = ((hak_oop_byte_t)obj)->slot[i]; if (ch < ' ' || ch == '\"' || ch == '\\') { escape = 1; @@ -507,31 +507,31 @@ next: if (escape) { - if (hcl_bfmt_out(hcl, fmtout, "b\"") <= -1) return -1; - for (i = 0; i < HCL_OBJ_GET_SIZE(obj); i++) + if (hak_bfmt_out(hak, fmtout, "b\"") <= -1) return -1; + for (i = 0; i < HAK_OBJ_GET_SIZE(obj); i++) { - ch = ((hcl_oop_byte_t)obj)->slot[i]; - if (print_single_byte_char(hcl, fmtout, ch) <= -1) return -1; + ch = ((hak_oop_byte_t)obj)->slot[i]; + if (print_single_byte_char(hak, fmtout, ch) <= -1) return -1; } - if (hcl_bfmt_out(hcl, fmtout, "\"") <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, "\"") <= -1) return -1; } else { - if (hcl_bfmt_out(hcl, fmtout, "b\"%.*hs\"", HCL_OBJ_GET_SIZE(obj), HCL_OBJ_GET_BYTE_SLOT(obj)) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, "b\"%.*hs\"", HAK_OBJ_GET_SIZE(obj), HAK_OBJ_GET_BYTE_SLOT(obj)) <= -1) return -1; } break; } - case HCL_BRAND_CONS: + case HAK_BRAND_CONS: { int concode; /* this part is to print a linked list of cells. ignore the * request to output in the json format */ - concode = HCL_OBJ_GET_FLAGS_CONCODE(obj); - if (hcl_bfmt_out(hcl, fmtout, opening_parens[concode][0]) <= -1) return -1; + concode = HAK_OBJ_GET_FLAGS_CONCODE(obj); + if (hak_bfmt_out(hak, fmtout, opening_parens[concode][0]) <= -1) return -1; cur = obj; /* TODO: for MLIST, print : after the first element. @@ -543,12 +543,12 @@ next: /* Push what to print next on to the stack * the variable p is */ ps.type = PRINT_STACK_CONS; - ps.obj = HCL_CONS_CDR(cur); + ps.obj = HAK_CONS_CDR(cur); ps.idx = concode; /* this is not an index but use this field to restore concode */ - x = push(hcl, &ps); + x = push(hak, &ps); if (x <= -1) return -1; - obj = HCL_CONS_CAR(cur); + obj = HAK_CONS_CAR(cur); /* Jump to the 'next' label so that the object * pointed to by 'obj' is printed. Once it * ends, a jump back to the 'resume' label @@ -556,27 +556,27 @@ next: goto next; resume_cons: - HCL_ASSERT (hcl, ps.type == PRINT_STACK_CONS); + HAK_ASSERT (hak, ps.type == PRINT_STACK_CONS); cur = ps.obj; /* Get back the CDR pushed */ concode = ps.idx; /* restore the concode */ - if (HCL_IS_NIL(hcl,cur)) + if (HAK_IS_NIL(hak,cur)) { /* The CDR part points to a NIL object, which * indicates the end of a list. break the loop */ break; } - if (!HCL_OOP_IS_POINTER(cur) || HCL_OBJ_GET_CLASS(cur) != (hcl_oop_t)hcl->c_cons) + if (!HAK_OOP_IS_POINTER(cur) || HAK_OBJ_GET_CLASS(cur) != (hak_oop_t)hak->c_cons) { /* The CDR part does not point to a pair. */ - if (hcl_bfmt_out(hcl, fmtout, " . ") <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, " . ") <= -1) return -1; - /* Push NIL so that the HCL_IS_NIL(hcl,p) test in + /* Push NIL so that the HAK_IS_NIL(hak,p) test in * the 'if' statement above breaks the loop * after the jump is maded back to the 'resume' * label. */ ps.type = PRINT_STACK_CONS; - ps.obj = hcl->_nil; - x = push(hcl, &ps); + ps.obj = hak->_nil; + x = push(hak, &ps); if (x <= -1) return -1; /* Make a jump to 'next' to print the CDR part */ @@ -585,23 +585,23 @@ next: } /* The CDR part points to a pair. proceed to it */ - if (hcl_bfmt_out(hcl, fmtout, breakers[0][0]) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, breakers[0][0]) <= -1) return -1; } while (1); - if (hcl_bfmt_out(hcl, fmtout, closing_parens[concode][0]) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, closing_parens[concode][0]) <= -1) return -1; break; } - case HCL_BRAND_ARRAY: + case HAK_BRAND_ARRAY: { - hcl_oow_t arridx; + hak_oow_t arridx; - if (hcl_bfmt_out(hcl, fmtout, opening_parens[HCL_CONCODE_ARRAY][json]) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, opening_parens[HAK_CONCODE_ARRAY][json]) <= -1) return -1; - if (HCL_OBJ_GET_SIZE(obj) <= 0) + if (HAK_OBJ_GET_SIZE(obj) <= 0) { - if (hcl_bfmt_out(hcl, fmtout, closing_parens[HCL_CONCODE_ARRAY][json]) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, closing_parens[HAK_CONCODE_ARRAY][json]) <= -1) return -1; break; } arridx = 0; @@ -613,23 +613,23 @@ next: /* Push what to print next on to the stack */ ps.idx = arridx + 1; - if (ps.idx >= HCL_OBJ_GET_SIZE(obj)) + if (ps.idx >= HAK_OBJ_GET_SIZE(obj)) { ps.type = PRINT_STACK_ARRAY_END; } else { - HCL_ASSERT (hcl, ps.type == PRINT_STACK_ARRAY); + HAK_ASSERT (hak, ps.type == PRINT_STACK_ARRAY); ps.obj = obj; } - x = push (hcl, &ps); + x = push (hak, &ps); if (x <= -1) return -1; - obj = ((hcl_oop_oop_t)obj)->slot[arridx]; + obj = ((hak_oop_oop_t)obj)->slot[arridx]; if (arridx > 0) { - if (hcl_bfmt_out(hcl, fmtout, breakers[0][json]) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, breakers[0][json]) <= -1) return -1; } /* Jump to the 'next' label so that the object * pointed to by 'obj' is printed. Once it @@ -638,7 +638,7 @@ next: goto next; resume_array: - HCL_ASSERT (hcl, ps.type == PRINT_STACK_ARRAY); + HAK_ASSERT (hak, ps.type == PRINT_STACK_ARRAY); arridx = ps.idx; obj = ps.obj; } @@ -646,57 +646,57 @@ next: break; } - case HCL_BRAND_BYTE_ARRAY: + case HAK_BRAND_BYTE_ARRAY: { - hcl_oow_t i; - if (hcl_bfmt_out(hcl, fmtout, opening_parens[HCL_CONCODE_BYTEARRAY][json]) <= -1) return -1; - if (HCL_OBJ_GET_SIZE(obj) > 0) + hak_oow_t i; + if (hak_bfmt_out(hak, fmtout, opening_parens[HAK_CONCODE_BYTEARRAY][json]) <= -1) return -1; + if (HAK_OBJ_GET_SIZE(obj) > 0) { - if (hcl_bfmt_out(hcl, fmtout, "%d", ((hcl_oop_byte_t)obj)->slot[0]) <= -1) return -1; - for (i = 1; i < HCL_OBJ_GET_SIZE(obj); i++) + if (hak_bfmt_out(hak, fmtout, "%d", ((hak_oop_byte_t)obj)->slot[0]) <= -1) return -1; + for (i = 1; i < HAK_OBJ_GET_SIZE(obj); i++) { - if (hcl_bfmt_out(hcl, fmtout, "%hs%d", breakers[0][json], ((hcl_oop_byte_t)obj)->slot[i]) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, "%hs%d", breakers[0][json], ((hak_oop_byte_t)obj)->slot[i]) <= -1) return -1; } } - if (hcl_bfmt_out(hcl, fmtout, closing_parens[HCL_CONCODE_BYTEARRAY][json]) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, closing_parens[HAK_CONCODE_BYTEARRAY][json]) <= -1) return -1; break; } - case HCL_BRAND_CHARACTER_ARRAY: + case HAK_BRAND_CHARACTER_ARRAY: { - hcl_oow_t i; - if (hcl_bfmt_out(hcl, fmtout, opening_parens[HCL_CONCODE_CHARARRAY][json]) <= -1) return -1; - if (HCL_OBJ_GET_SIZE(obj) > 0) + hak_oow_t i; + if (hak_bfmt_out(hak, fmtout, opening_parens[HAK_CONCODE_CHARARRAY][json]) <= -1) return -1; + if (HAK_OBJ_GET_SIZE(obj) > 0) { - if (hcl_bfmt_out(hcl, fmtout, "'%jc'", ((hcl_oop_char_t)obj)->slot[0]) <= -1) return -1; - for (i = 1; i < HCL_OBJ_GET_SIZE(obj); i++) + if (hak_bfmt_out(hak, fmtout, "'%jc'", ((hak_oop_char_t)obj)->slot[0]) <= -1) return -1; + for (i = 1; i < HAK_OBJ_GET_SIZE(obj); i++) { - if (hcl_bfmt_out(hcl, fmtout, "%hs'%jc'", breakers[0][json], ((hcl_oop_char_t)obj)->slot[i]) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, "%hs'%jc'", breakers[0][json], ((hak_oop_char_t)obj)->slot[i]) <= -1) return -1; } } - if (hcl_bfmt_out(hcl, fmtout, closing_parens[HCL_CONCODE_CHARARRAY][json]) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, closing_parens[HAK_CONCODE_CHARARRAY][json]) <= -1) return -1; break; } - case HCL_BRAND_DIC: + case HAK_BRAND_DIC: { - hcl_oow_t bucidx, bucsize, buctally; - hcl_oop_dic_t dic; + hak_oow_t bucidx, bucsize, buctally; + hak_oop_dic_t dic; - if (hcl_bfmt_out(hcl, fmtout, opening_parens[HCL_CONCODE_DIC][json]) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, opening_parens[HAK_CONCODE_DIC][json]) <= -1) return -1; - dic = (hcl_oop_dic_t)obj; - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(dic->tally)); - if (HCL_OOP_TO_SMOOI(dic->tally) <= 0) + dic = (hak_oop_dic_t)obj; + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(dic->tally)); + if (HAK_OOP_TO_SMOOI(dic->tally) <= 0) { - if (hcl_bfmt_out(hcl, fmtout, closing_parens[HCL_CONCODE_DIC][json]) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, closing_parens[HAK_CONCODE_DIC][json]) <= -1) return -1; break; } bucidx = 0; - bucsize = HCL_OBJ_GET_SIZE(dic->bucket); + bucsize = HAK_OBJ_GET_SIZE(dic->bucket); buctally = 0; ps.type = PRINT_STACK_DIC; - ps.obj2 = (hcl_oop_t)dic; + ps.obj2 = (hak_oop_t)dic; do { @@ -708,29 +708,29 @@ next: { /* skip an unoccupied slot in the bucket array */ obj = dic->bucket->slot[bucidx]; - if (!HCL_IS_NIL(hcl,obj)) break; + if (!HAK_IS_NIL(hak,obj)) break; bucidx++; } if (bucidx >= bucsize) { /* done. scanned the entire bucket */ - if (hcl_bfmt_out(hcl, fmtout, closing_parens[HCL_CONCODE_DIC][json]) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, closing_parens[HAK_CONCODE_DIC][json]) <= -1) return -1; break; } ps.idx = bucidx; /* no increment yet */ - HCL_ASSERT (hcl, ps.idx < bucsize); - HCL_ASSERT (hcl, ps.type == PRINT_STACK_DIC); + HAK_ASSERT (hak, ps.idx < bucsize); + HAK_ASSERT (hak, ps.type == PRINT_STACK_DIC); ps.obj = dic->bucket->slot[ps.idx]; ps.idx2 = buctally + 1; - x = push (hcl, &ps); + x = push (hak, &ps); if (x <= -1) return -1; - HCL_ASSERT (hcl, HCL_IS_CONS(hcl,obj)); - obj = HCL_CONS_CAR(obj); + HAK_ASSERT (hak, HAK_IS_CONS(hak,obj)); + obj = HAK_CONS_CAR(obj); } else { @@ -742,21 +742,21 @@ next: } else { - HCL_ASSERT (hcl, ps.type == PRINT_STACK_DIC); + HAK_ASSERT (hak, ps.type == PRINT_STACK_DIC); ps.obj = dic->bucket->slot[ps.idx]; } ps.idx2 = buctally + 1; - x = push (hcl, &ps); + x = push (hak, &ps); if (x <= -1) return -1; - HCL_ASSERT (hcl, HCL_IS_CONS(hcl,obj)); - obj = HCL_CONS_CDR(obj); + HAK_ASSERT (hak, HAK_IS_CONS(hak,obj)); + obj = HAK_CONS_CDR(obj); } if (buctally > 0) { - if (hcl_bfmt_out(hcl, fmtout, breakers[buctally & 1][json]) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, breakers[buctally & 1][json]) <= -1) return -1; } /* Jump to the 'next' label so that the object @@ -766,93 +766,93 @@ next: goto next; resume_dic: - HCL_ASSERT (hcl, ps.type == PRINT_STACK_DIC); + HAK_ASSERT (hak, ps.type == PRINT_STACK_DIC); bucidx = ps.idx; buctally = ps.idx2; obj = ps.obj; - dic = (hcl_oop_dic_t)ps.obj2; - bucsize = HCL_OBJ_GET_SIZE(dic->bucket); + dic = (hak_oop_dic_t)ps.obj2; + bucsize = HAK_OBJ_GET_SIZE(dic->bucket); } while (1); break; } - case HCL_BRAND_PRIM: + case HAK_BRAND_PRIM: word_index = WORD_PRIM; goto print_word; - case HCL_BRAND_FUNCTION: + case HAK_BRAND_FUNCTION: word_index = WORD_FUNCTION; goto print_word; - case HCL_BRAND_BLOCK: + case HAK_BRAND_BLOCK: word_index = WORD_BLOCK; goto print_word; - case HCL_BRAND_CONTEXT: + case HAK_BRAND_CONTEXT: word_index = WORD_CONTEXT; goto print_word; - case HCL_BRAND_PROCESS: + case HAK_BRAND_PROCESS: word_index = WORD_PROCESS; goto print_word; - case HCL_BRAND_PROCESS_SCHEDULER: + case HAK_BRAND_PROCESS_SCHEDULER: word_index = WORD_PROCESS_SCHEDULER; goto print_word; - case HCL_BRAND_SEMAPHORE: + case HAK_BRAND_SEMAPHORE: word_index = WORD_SEMAPHORE; goto print_word; - case HCL_BRAND_SEMAPHORE_GROUP: + case HAK_BRAND_SEMAPHORE_GROUP: word_index = WORD_SEMAPHORE_GROUP; goto print_word; - case HCL_BRAND_CLASS: + case HAK_BRAND_CLASS: { - hcl_oop_class_t _class = (hcl_oop_class_t)obj; - if (HCL_IS_NIL(hcl, _class->name)) + hak_oop_class_t _class = (hak_oop_class_t)obj; + if (HAK_IS_NIL(hak, _class->name)) { word_index = WORD_CLASS; goto print_word; } - HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl, _class->name)); - if (hcl_bfmt_out(hcl, fmtout, "%.*js", HCL_OBJ_GET_SIZE(_class->name), HCL_OBJ_GET_CHAR_SLOT(_class->name)) <= -1) return -1; + HAK_ASSERT (hak, HAK_IS_SYMBOL(hak, _class->name)); + if (hak_bfmt_out(hak, fmtout, "%.*js", HAK_OBJ_GET_SIZE(_class->name), HAK_OBJ_GET_CHAR_SLOT(_class->name)) <= -1) return -1; break; } - case HCL_BRAND_INSTANCE: + case HAK_BRAND_INSTANCE: { - hcl_oop_class_t _class = (hcl_oop_class_t)HCL_CLASSOF(hcl, obj); - HCL_ASSERT (hcl, HCL_IS_CLASS(hcl, _class)); - if (HCL_IS_NIL(hcl, _class->name)) + hak_oop_class_t _class = (hak_oop_class_t)HAK_CLASSOF(hak, obj); + HAK_ASSERT (hak, HAK_IS_CLASS(hak, _class)); + if (HAK_IS_NIL(hak, _class->name)) { word_index = WORD_INSTANCE; goto print_word; } - HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl, _class->name)); - if (hcl_bfmt_out(hcl, fmtout, "#INSTANCE OF %.*js", HCL_OBJ_GET_SIZE(_class->name), HCL_OBJ_GET_CHAR_SLOT(_class->name)) <= -1) return -1; + HAK_ASSERT (hak, HAK_IS_SYMBOL(hak, _class->name)); + if (hak_bfmt_out(hak, fmtout, "#INSTANCE OF %.*js", HAK_OBJ_GET_SIZE(_class->name), HAK_OBJ_GET_CHAR_SLOT(_class->name)) <= -1) return -1; break; } default: - HCL_DEBUG3 (hcl, "Internal error - unknown object brand %d at %s:%d\n", (int)brand, __FILE__, __LINE__); - HCL_ASSERT (hcl, "Unknown object brand" == HCL_NULL); - hcl_seterrbfmt (hcl, HCL_EINTERN, "unknown object brand %d", (int)brand); + HAK_DEBUG3 (hak, "Internal error - unknown object brand %d at %s:%d\n", (int)brand, __FILE__, __LINE__); + HAK_ASSERT (hak, "Unknown object brand" == HAK_NULL); + hak_seterrbfmt (hak, HAK_EINTERN, "unknown object brand %d", (int)brand); return -1; print_word: - if (hcl_bfmt_out(hcl, fmtout, "%.*js", word[word_index].len, word[word_index].ptr) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, "%.*js", word[word_index].len, word[word_index].ptr) <= -1) return -1; break; } done: /* if the printing stack is not empty, we still got more to print */ - while (hcl->p.s.size > 0) + while (hak->p.s.size > 0) { - pop (hcl, &ps); + pop (hak, &ps); switch (ps.type) { case PRINT_STACK_CONS: @@ -862,19 +862,19 @@ done: goto resume_array; case PRINT_STACK_ARRAY_END: - if (hcl_bfmt_out(hcl, fmtout, closing_parens[HCL_CONCODE_ARRAY][json]) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, closing_parens[HAK_CONCODE_ARRAY][json]) <= -1) return -1; break; case PRINT_STACK_DIC: goto resume_dic; case PRINT_STACK_DIC_END: - if (hcl_bfmt_out(hcl, fmtout, closing_parens[HCL_CONCODE_DIC][json]) <= -1) return -1; + if (hak_bfmt_out(hak, fmtout, closing_parens[HAK_CONCODE_DIC][json]) <= -1) return -1; break; default: - HCL_DEBUG3 (hcl, "Internal error - unknown print stack type %d at %s:%d\n", (int)ps.type, __FILE__, __LINE__); - hcl_seterrbfmt (hcl, HCL_EINTERN, "internal error - unknown print stack type %d", (int)ps.type); + HAK_DEBUG3 (hak, "Internal error - unknown print stack type %d at %s:%d\n", (int)ps.type, __FILE__, __LINE__); + hak_seterrbfmt (hak, HAK_EINTERN, "internal error - unknown print stack type %d", (int)ps.type); return -1; } } @@ -882,129 +882,129 @@ done: } #if 0 -int hcl_outfmtobj (hcl_t* hcl, hcl_bitmask_t mask, hcl_oop_t obj, hcl_outbfmt_t outbfmt) +int hak_outfmtobj (hak_t* hak, hak_bitmask_t mask, hak_oop_t obj, hak_outbfmt_t outbfmt) { int n; /* the printer stack must be empty. buggy if not. */ - HCL_ASSERT (hcl, hcl->p.s.size == 0); + HAK_ASSERT (hak, hak->p.s.size == 0); - hcl->p.e = obj; /* remember the head of the object to print */ - n = hcl_proutbfmt(hcl, mask, obj); - hcl->p.e = hcl->_nil; /* reset what's remembered */ + hak->p.e = obj; /* remember the head of the object to print */ + n = hak_proutbfmt(hak, mask, obj); + hak->p.e = hak->_nil; /* reset what's remembered */ /* clear the printing stack if an error has occurred for GC not to keep * the objects in the stack */ - if (n <= -1) hcl->p.s.size = 0; + if (n <= -1) hak->p.s.size = 0; /* the printer stack must get empty when done. buggy if not */ - HCL_ASSERT (hcl, hcl->p.s.size == 0); + HAK_ASSERT (hak, hak->p.s.size == 0); return n; } #endif -int hcl_print (hcl_t* hcl, hcl_oop_t obj) +int hak_print (hak_t* hak, hak_oop_t obj) { - HCL_ASSERT (hcl, hcl->io.udo_wrtr != HCL_NULL); - /*return hcl_outfmtobj(hcl, HCL_LOG_APP | HCL_LOG_FATAL, obj);*/ - return hcl_prbfmt(hcl, "%O", obj); + HAK_ASSERT (hak, hak->io.udo_wrtr != HAK_NULL); + /*return hak_outfmtobj(hak, HAK_LOG_APP | HAK_LOG_FATAL, obj);*/ + return hak_prbfmt(hak, "%O", obj); } -void hcl_dumpcnode (hcl_t* hcl, hcl_cnode_t* cnode, int newline) +void hak_dumpcnode (hak_t* hak, hak_cnode_t* cnode, int newline) { int t; /* TODO: this is incomplete function. make it complete */ if (cnode) { - t = HCL_CNODE_GET_TYPE(cnode); + t = HAK_CNODE_GET_TYPE(cnode); switch (t) { - case HCL_CNODE_CHARLIT: - case HCL_CNODE_BCHRLIT: - case HCL_CNODE_SYMBOL: - case HCL_CNODE_DSYMBOL: - case HCL_CNODE_STRLIT: - case HCL_CNODE_BSTRLIT: - case HCL_CNODE_SYMLIT: - case HCL_CNODE_NUMLIT: - case HCL_CNODE_RADNUMLIT: - case HCL_CNODE_FPDECLIT: - case HCL_CNODE_SMPTRLIT: - case HCL_CNODE_ERRLIT: + case HAK_CNODE_CHARLIT: + case HAK_CNODE_BCHRLIT: + case HAK_CNODE_SYMBOL: + case HAK_CNODE_DSYMBOL: + case HAK_CNODE_STRLIT: + case HAK_CNODE_BSTRLIT: + case HAK_CNODE_SYMLIT: + case HAK_CNODE_NUMLIT: + case HAK_CNODE_RADNUMLIT: + case HAK_CNODE_FPDECLIT: + case HAK_CNODE_SMPTRLIT: + case HAK_CNODE_ERRLIT: - case HCL_CNODE_NIL: - case HCL_CNODE_TRUE: - case HCL_CNODE_FALSE: - case HCL_CNODE_SELF: - case HCL_CNODE_SUPER: + case HAK_CNODE_NIL: + case HAK_CNODE_TRUE: + case HAK_CNODE_FALSE: + case HAK_CNODE_SELF: + case HAK_CNODE_SUPER: - case HCL_CNODE_CLASS: - case HCL_CNODE_FUN: - case HCL_CNODE_DO: - case HCL_CNODE_IF: - case HCL_CNODE_ELIF: - case HCL_CNODE_ELSE: - case HCL_CNODE_THROW: - case HCL_CNODE_TRY: - case HCL_CNODE_CATCH: - case HCL_CNODE_BREAK: - case HCL_CNODE_CONTINUE: - case HCL_CNODE_UNTIL: - case HCL_CNODE_WHILE: - case HCL_CNODE_RETURN: - case HCL_CNODE_REVERT: - case HCL_CNODE_AND: - case HCL_CNODE_OR: - case HCL_CNODE_PLUS: - case HCL_CNODE_SET: - case HCL_CNODE_SET_R: + case HAK_CNODE_CLASS: + case HAK_CNODE_FUN: + case HAK_CNODE_DO: + case HAK_CNODE_IF: + case HAK_CNODE_ELIF: + case HAK_CNODE_ELSE: + case HAK_CNODE_THROW: + case HAK_CNODE_TRY: + case HAK_CNODE_CATCH: + case HAK_CNODE_BREAK: + case HAK_CNODE_CONTINUE: + case HAK_CNODE_UNTIL: + case HAK_CNODE_WHILE: + case HAK_CNODE_RETURN: + case HAK_CNODE_REVERT: + case HAK_CNODE_AND: + case HAK_CNODE_OR: + case HAK_CNODE_PLUS: + case HAK_CNODE_SET: + case HAK_CNODE_SET_R: - case HCL_CNODE_ELLIPSIS: - case HCL_CNODE_TRPCOLONS: - case HCL_CNODE_DBLCOLONS: - case HCL_CNODE_COLON: - case HCL_CNODE_COLONGT: - case HCL_CNODE_COLONLT: - hcl_logbfmt (hcl, HCL_LOG_FATAL, " %.*js ", HCL_CNODE_GET_TOKLEN(cnode), HCL_CNODE_GET_TOKPTR(cnode)); + case HAK_CNODE_ELLIPSIS: + case HAK_CNODE_TRPCOLONS: + case HAK_CNODE_DBLCOLONS: + case HAK_CNODE_COLON: + case HAK_CNODE_COLONGT: + case HAK_CNODE_COLONLT: + hak_logbfmt (hak, HAK_LOG_FATAL, " %.*js ", HAK_CNODE_GET_TOKLEN(cnode), HAK_CNODE_GET_TOKPTR(cnode)); break; - case HCL_CNODE_CONS: + case HAK_CNODE_CONS: { - hcl_concode_t cc; + hak_concode_t cc; - hcl_logbfmt (hcl, HCL_LOG_FATAL, " ("); - hcl_dumpcnode (hcl, HCL_CNODE_CONS_CAR(cnode), 0); + hak_logbfmt (hak, HAK_LOG_FATAL, " ("); + hak_dumpcnode (hak, HAK_CNODE_CONS_CAR(cnode), 0); - cc = HCL_CNODE_CONS_CONCODE(cnode); + cc = HAK_CNODE_CONS_CONCODE(cnode); switch (cc) { - case HCL_CONCODE_ALIST: - hcl_logbfmt (hcl, HCL_LOG_FATAL, " := "); + case HAK_CONCODE_ALIST: + hak_logbfmt (hak, HAK_LOG_FATAL, " := "); break; - case HCL_CONCODE_BLIST: - case HCL_CONCODE_MLIST: - hcl_logbfmt (hcl, HCL_LOG_FATAL, ":"); + case HAK_CONCODE_BLIST: + case HAK_CONCODE_MLIST: + hak_logbfmt (hak, HAK_LOG_FATAL, ":"); break; } - hcl_dumpcnode (hcl, HCL_CNODE_CONS_CDR(cnode),0); - hcl_logbfmt (hcl, HCL_LOG_FATAL, ") "); + hak_dumpcnode (hak, HAK_CNODE_CONS_CDR(cnode),0); + hak_logbfmt (hak, HAK_LOG_FATAL, ") "); break; } - case HCL_CNODE_ELIST: - hcl_logbfmt (hcl, HCL_LOG_FATAL, " () ", HCL_CNODE_GET_TOKLEN(cnode), HCL_CNODE_GET_TOKPTR(cnode)); + case HAK_CNODE_ELIST: + hak_logbfmt (hak, HAK_LOG_FATAL, " () ", HAK_CNODE_GET_TOKLEN(cnode), HAK_CNODE_GET_TOKPTR(cnode)); break; - case HCL_CNODE_SHELL: - hcl_logbfmt (hcl, HCL_LOG_FATAL, " () ", HCL_CNODE_GET_TOKLEN(cnode), HCL_CNODE_GET_TOKPTR(cnode)); + case HAK_CNODE_SHELL: + hak_logbfmt (hak, HAK_LOG_FATAL, " () ", HAK_CNODE_GET_TOKLEN(cnode), HAK_CNODE_GET_TOKPTR(cnode)); break; } } - if (newline) hcl_logbfmt (hcl, HCL_LOG_FATAL, "\n"); + if (newline) hak_logbfmt (hak, HAK_LOG_FATAL, "\n"); } diff --git a/lib/rbt.c b/lib/rbt.c index 1671c03..472ef90 100644 --- a/lib/rbt.c +++ b/lib/rbt.c @@ -22,23 +22,23 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include "hcl-prv.h" +#include +#include "hak-prv.h" -#define copier_t hcl_rbt_copier_t -#define freeer_t hcl_rbt_freeer_t -#define comper_t hcl_rbt_comper_t -#define keeper_t hcl_rbt_keeper_t -#define walker_t hcl_rbt_walker_t -#define cbserter_t hcl_rbt_cbserter_t +#define copier_t hak_rbt_copier_t +#define freeer_t hak_rbt_freeer_t +#define comper_t hak_rbt_comper_t +#define keeper_t hak_rbt_keeper_t +#define walker_t hak_rbt_walker_t +#define cbserter_t hak_rbt_cbserter_t -#define KPTR(p) HCL_RBT_KPTR(p) -#define KLEN(p) HCL_RBT_KLEN(p) -#define VPTR(p) HCL_RBT_VPTR(p) -#define VLEN(p) HCL_RBT_VLEN(p) +#define KPTR(p) HAK_RBT_KPTR(p) +#define KLEN(p) HAK_RBT_KLEN(p) +#define VPTR(p) HAK_RBT_VPTR(p) +#define VLEN(p) HAK_RBT_VLEN(p) -#define KTOB(rbt,len) ((len)*(rbt)->scale[HCL_RBT_KEY]) -#define VTOB(rbt,len) ((len)*(rbt)->scale[HCL_RBT_VAL]) +#define KTOB(rbt,len) ((len)*(rbt)->scale[HAK_RBT_KEY]) +#define VTOB(rbt,len) ((len)*(rbt)->scale[HAK_RBT_VAL]) #define UPSERT 1 #define UPDATE 2 @@ -53,180 +53,180 @@ #define rotate_left(rbt,pivot) rotate(rbt,pivot,1); #define rotate_right(rbt,pivot) rotate(rbt,pivot,0); -HCL_INLINE hcl_rbt_pair_t* hcl_rbt_allocpair ( - hcl_rbt_t* rbt, void* kptr, hcl_oow_t klen, void* vptr, hcl_oow_t vlen) +HAK_INLINE hak_rbt_pair_t* hak_rbt_allocpair ( + hak_rbt_t* rbt, void* kptr, hak_oow_t klen, void* vptr, hak_oow_t vlen) { - hcl_rbt_pair_t* pair; + hak_rbt_pair_t* pair; - copier_t kcop = rbt->style->copier[HCL_RBT_KEY]; - copier_t vcop = rbt->style->copier[HCL_RBT_VAL]; + copier_t kcop = rbt->style->copier[HAK_RBT_KEY]; + copier_t vcop = rbt->style->copier[HAK_RBT_VAL]; - hcl_oow_t as = HCL_SIZEOF(hcl_rbt_pair_t); - if (kcop == HCL_RBT_COPIER_INLINE) as += HCL_ALIGN_POW2(KTOB(rbt,klen), HCL_SIZEOF_VOID_P); - if (vcop == HCL_RBT_COPIER_INLINE) as += VTOB(rbt,vlen); + hak_oow_t as = HAK_SIZEOF(hak_rbt_pair_t); + if (kcop == HAK_RBT_COPIER_INLINE) as += HAK_ALIGN_POW2(KTOB(rbt,klen), HAK_SIZEOF_VOID_P); + if (vcop == HAK_RBT_COPIER_INLINE) as += VTOB(rbt,vlen); - pair = (hcl_rbt_pair_t*)HCL_MMGR_ALLOC(HCL_MMGR(rbt->hcl), as); - if (pair == HCL_NULL) return HCL_NULL; + pair = (hak_rbt_pair_t*)HAK_MMGR_ALLOC(HAK_MMGR(rbt->hak), as); + if (pair == HAK_NULL) return HAK_NULL; - pair->color = HCL_RBT_RED; - pair->parent = HCL_NULL; + pair->color = HAK_RBT_RED; + pair->parent = HAK_NULL; pair->child[LEFT] = &rbt->xnil; pair->child[RIGHT] = &rbt->xnil; KLEN(pair) = klen; - if (kcop == HCL_RBT_COPIER_SIMPLE) + if (kcop == HAK_RBT_COPIER_SIMPLE) { KPTR(pair) = kptr; } - else if (kcop == HCL_RBT_COPIER_INLINE) + else if (kcop == HAK_RBT_COPIER_INLINE) { KPTR(pair) = pair + 1; - if (kptr) HCL_MEMCPY (KPTR(pair), kptr, KTOB(rbt,klen)); + if (kptr) HAK_MEMCPY (KPTR(pair), kptr, KTOB(rbt,klen)); } else { KPTR(pair) = kcop (rbt, kptr, klen); - if (KPTR(pair) == HCL_NULL) + if (KPTR(pair) == HAK_NULL) { - hcl_freemem (rbt->hcl, pair); - return HCL_NULL; + hak_freemem (rbt->hak, pair); + return HAK_NULL; } } VLEN(pair) = vlen; - if (vcop == HCL_RBT_COPIER_SIMPLE) + if (vcop == HAK_RBT_COPIER_SIMPLE) { VPTR(pair) = vptr; } - else if (vcop == HCL_RBT_COPIER_INLINE) + else if (vcop == HAK_RBT_COPIER_INLINE) { VPTR(pair) = pair + 1; - if (kcop == HCL_RBT_COPIER_INLINE) - VPTR(pair) = (hcl_oob_t*)VPTR(pair) + HCL_ALIGN_POW2(KTOB(rbt,klen), HCL_SIZEOF_VOID_P); - if (vptr) HCL_MEMCPY (VPTR(pair), vptr, VTOB(rbt,vlen)); + if (kcop == HAK_RBT_COPIER_INLINE) + VPTR(pair) = (hak_oob_t*)VPTR(pair) + HAK_ALIGN_POW2(KTOB(rbt,klen), HAK_SIZEOF_VOID_P); + if (vptr) HAK_MEMCPY (VPTR(pair), vptr, VTOB(rbt,vlen)); } else { VPTR(pair) = vcop (rbt, vptr, vlen); - if (VPTR(pair) != HCL_NULL) + if (VPTR(pair) != HAK_NULL) { - if (rbt->style->freeer[HCL_RBT_KEY] != HCL_NULL) - rbt->style->freeer[HCL_RBT_KEY] (rbt, KPTR(pair), KLEN(pair)); - hcl_freemem (rbt->hcl, pair); - return HCL_NULL; + if (rbt->style->freeer[HAK_RBT_KEY] != HAK_NULL) + rbt->style->freeer[HAK_RBT_KEY] (rbt, KPTR(pair), KLEN(pair)); + hak_freemem (rbt->hak, pair); + return HAK_NULL; } } return pair; } -HCL_INLINE void hcl_rbt_freepair (hcl_rbt_t* rbt, hcl_rbt_pair_t* pair) +HAK_INLINE void hak_rbt_freepair (hak_rbt_t* rbt, hak_rbt_pair_t* pair) { - if (rbt->style->freeer[HCL_RBT_KEY] != HCL_NULL) - rbt->style->freeer[HCL_RBT_KEY] (rbt, KPTR(pair), KLEN(pair)); - if (rbt->style->freeer[HCL_RBT_VAL] != HCL_NULL) - rbt->style->freeer[HCL_RBT_VAL] (rbt, VPTR(pair), VLEN(pair)); - hcl_freemem (rbt->hcl, pair); + if (rbt->style->freeer[HAK_RBT_KEY] != HAK_NULL) + rbt->style->freeer[HAK_RBT_KEY] (rbt, KPTR(pair), KLEN(pair)); + if (rbt->style->freeer[HAK_RBT_VAL] != HAK_NULL) + rbt->style->freeer[HAK_RBT_VAL] (rbt, VPTR(pair), VLEN(pair)); + hak_freemem (rbt->hak, pair); } -static hcl_rbt_style_t style[] = +static hak_rbt_style_t style[] = { { { - HCL_RBT_COPIER_DEFAULT, - HCL_RBT_COPIER_DEFAULT + HAK_RBT_COPIER_DEFAULT, + HAK_RBT_COPIER_DEFAULT }, { - HCL_RBT_FREEER_DEFAULT, - HCL_RBT_FREEER_DEFAULT + HAK_RBT_FREEER_DEFAULT, + HAK_RBT_FREEER_DEFAULT }, - HCL_RBT_COMPER_DEFAULT, - HCL_RBT_KEEPER_DEFAULT + HAK_RBT_COMPER_DEFAULT, + HAK_RBT_KEEPER_DEFAULT }, { { - HCL_RBT_COPIER_INLINE, - HCL_RBT_COPIER_INLINE + HAK_RBT_COPIER_INLINE, + HAK_RBT_COPIER_INLINE }, { - HCL_RBT_FREEER_DEFAULT, - HCL_RBT_FREEER_DEFAULT + HAK_RBT_FREEER_DEFAULT, + HAK_RBT_FREEER_DEFAULT }, - HCL_RBT_COMPER_DEFAULT, - HCL_RBT_KEEPER_DEFAULT + HAK_RBT_COMPER_DEFAULT, + HAK_RBT_KEEPER_DEFAULT }, { { - HCL_RBT_COPIER_INLINE, - HCL_RBT_COPIER_DEFAULT + HAK_RBT_COPIER_INLINE, + HAK_RBT_COPIER_DEFAULT }, { - HCL_RBT_FREEER_DEFAULT, - HCL_RBT_FREEER_DEFAULT + HAK_RBT_FREEER_DEFAULT, + HAK_RBT_FREEER_DEFAULT }, - HCL_RBT_COMPER_DEFAULT, - HCL_RBT_KEEPER_DEFAULT + HAK_RBT_COMPER_DEFAULT, + HAK_RBT_KEEPER_DEFAULT }, { { - HCL_RBT_COPIER_DEFAULT, - HCL_RBT_COPIER_INLINE + HAK_RBT_COPIER_DEFAULT, + HAK_RBT_COPIER_INLINE }, { - HCL_RBT_FREEER_DEFAULT, - HCL_RBT_FREEER_DEFAULT + HAK_RBT_FREEER_DEFAULT, + HAK_RBT_FREEER_DEFAULT }, - HCL_RBT_COMPER_DEFAULT, - HCL_RBT_KEEPER_DEFAULT + HAK_RBT_COMPER_DEFAULT, + HAK_RBT_KEEPER_DEFAULT } }; -const hcl_rbt_style_t* hcl_get_rbt_style (hcl_rbt_style_kind_t kind) +const hak_rbt_style_t* hak_get_rbt_style (hak_rbt_style_kind_t kind) { return &style[kind]; } -hcl_rbt_t* hcl_rbt_open (hcl_t* hcl, hcl_oow_t xtnsize, int kscale, int vscale) +hak_rbt_t* hak_rbt_open (hak_t* hak, hak_oow_t xtnsize, int kscale, int vscale) { - hcl_rbt_t* rbt; + hak_rbt_t* rbt; - rbt = (hcl_rbt_t*)hcl_allocmem(hcl, HCL_SIZEOF(hcl_rbt_t) + xtnsize); - if (!rbt) return HCL_NULL; + rbt = (hak_rbt_t*)hak_allocmem(hak, HAK_SIZEOF(hak_rbt_t) + xtnsize); + if (!rbt) return HAK_NULL; - if (hcl_rbt_init(rbt, hcl, kscale, vscale) <= -1) + if (hak_rbt_init(rbt, hak, kscale, vscale) <= -1) { - hcl_freemem (hcl, rbt); - return HCL_NULL; + hak_freemem (hak, rbt); + return HAK_NULL; } - HCL_MEMSET (rbt + 1, 0, xtnsize); + HAK_MEMSET (rbt + 1, 0, xtnsize); return rbt; } -void hcl_rbt_close (hcl_rbt_t* rbt) +void hak_rbt_close (hak_rbt_t* rbt) { - hcl_rbt_fini (rbt); - hcl_freemem (rbt->hcl, rbt); + hak_rbt_fini (rbt); + hak_freemem (rbt->hak, rbt); } -int hcl_rbt_init (hcl_rbt_t* rbt, hcl_t* hcl, int kscale, int vscale) +int hak_rbt_init (hak_rbt_t* rbt, hak_t* hak, int kscale, int vscale) { /* do not zero out the extension */ - HCL_MEMSET (rbt, 0, HCL_SIZEOF(*rbt)); - rbt->hcl = hcl; + HAK_MEMSET (rbt, 0, HAK_SIZEOF(*rbt)); + rbt->hak = hak; - rbt->scale[HCL_RBT_KEY] = (kscale < 1)? 1: kscale; - rbt->scale[HCL_RBT_VAL] = (vscale < 1)? 1: vscale; + rbt->scale[HAK_RBT_KEY] = (kscale < 1)? 1: kscale; + rbt->scale[HAK_RBT_VAL] = (vscale < 1)? 1: vscale; rbt->size = 0; rbt->style = &style[0]; /* self-initializing nil */ - HCL_MEMSET(&rbt->xnil, 0, HCL_SIZEOF(rbt->xnil)); - rbt->xnil.color = HCL_RBT_BLACK; + HAK_MEMSET(&rbt->xnil, 0, HAK_SIZEOF(rbt->xnil)); + rbt->xnil.color = HAK_RBT_BLACK; rbt->xnil.left = &rbt->xnil; rbt->xnil.right = &rbt->xnil; @@ -236,35 +236,35 @@ int hcl_rbt_init (hcl_rbt_t* rbt, hcl_t* hcl, int kscale, int vscale) return 0; } -void hcl_rbt_fini (hcl_rbt_t* rbt) +void hak_rbt_fini (hak_rbt_t* rbt) { - hcl_rbt_clear (rbt); + hak_rbt_clear (rbt); } -void* hcl_rbt_getxtn (hcl_rbt_t* rbt) +void* hak_rbt_getxtn (hak_rbt_t* rbt) { return (void*)(rbt + 1); } -const hcl_rbt_style_t* hcl_rbt_getstyle (const hcl_rbt_t* rbt) +const hak_rbt_style_t* hak_rbt_getstyle (const hak_rbt_t* rbt) { return rbt->style; } -void hcl_rbt_setstyle (hcl_rbt_t* rbt, const hcl_rbt_style_t* style) +void hak_rbt_setstyle (hak_rbt_t* rbt, const hak_rbt_style_t* style) { - HCL_ASSERT (rbt->hcl, style != HCL_NULL); + HAK_ASSERT (rbt->hak, style != HAK_NULL); rbt->style = style; } -hcl_oow_t hcl_rbt_getsize (const hcl_rbt_t* rbt) +hak_oow_t hak_rbt_getsize (const hak_rbt_t* rbt) { return rbt->size; } -hcl_rbt_pair_t* hcl_rbt_search (const hcl_rbt_t* rbt, const void* kptr, hcl_oow_t klen) +hak_rbt_pair_t* hak_rbt_search (const hak_rbt_t* rbt, const void* kptr, hak_oow_t klen) { - hcl_rbt_pair_t* pair = rbt->root; + hak_rbt_pair_t* pair = rbt->root; while (!IS_NIL(rbt,pair)) { @@ -275,10 +275,10 @@ hcl_rbt_pair_t* hcl_rbt_search (const hcl_rbt_t* rbt, const void* kptr, hcl_oow_ else /* if (n < 0) */ pair = pair->left; } - return HCL_NULL; + return HAK_NULL; } -static void rotate (hcl_rbt_t* rbt, hcl_rbt_pair_t* pivot, int leftwise) +static void rotate (hak_rbt_t* rbt, hak_rbt_pair_t* pivot, int leftwise) { /* * == leftwise rotation @@ -314,10 +314,10 @@ static void rotate (hcl_rbt_t* rbt, hcl_rbt_pair_t* pivot, int leftwise) * is the left child or the right child of its parent, */ - hcl_rbt_pair_t* parent, * z, * c; + hak_rbt_pair_t* parent, * z, * c; int cid1, cid2; - HCL_ASSERT (rbt->hcl, pivot != HCL_NULL); + HAK_ASSERT (rbt->hak, pivot != HAK_NULL); if (leftwise) { @@ -345,13 +345,13 @@ static void rotate (hcl_rbt_t* rbt, hcl_rbt_pair_t* pivot, int leftwise) } else { - HCL_ASSERT (rbt->hcl, parent->right == pivot); + HAK_ASSERT (rbt->hak, parent->right == pivot); parent->right = z; } } else { - HCL_ASSERT (rbt->hcl, rbt->root == pivot); + HAK_ASSERT (rbt->hak, rbt->root == pivot); rbt->root = z; } @@ -362,17 +362,17 @@ static void rotate (hcl_rbt_t* rbt, hcl_rbt_pair_t* pivot, int leftwise) if (!IS_NIL(rbt,c)) c->parent = pivot; } -static void adjust (hcl_rbt_t* rbt, hcl_rbt_pair_t* pair) +static void adjust (hak_rbt_t* rbt, hak_rbt_pair_t* pair) { while (pair != rbt->root) { - hcl_rbt_pair_t* tmp, * tmp2, * x_par; + hak_rbt_pair_t* tmp, * tmp2, * x_par; int leftwise; x_par = pair->parent; - if (x_par->color == HCL_RBT_BLACK) break; + if (x_par->color == HAK_RBT_BLACK) break; - HCL_ASSERT (rbt->hcl, x_par->parent != HCL_NULL); + HAK_ASSERT (rbt->hak, x_par->parent != HAK_NULL); if (x_par == x_par->parent->child[LEFT]) { @@ -387,11 +387,11 @@ static void adjust (hcl_rbt_t* rbt, hcl_rbt_pair_t* pair) leftwise = 0; } - if (tmp->color == HCL_RBT_RED) + if (tmp->color == HAK_RBT_RED) { - x_par->color = HCL_RBT_BLACK; - tmp->color = HCL_RBT_BLACK; - x_par->parent->color = HCL_RBT_RED; + x_par->color = HAK_RBT_BLACK; + tmp->color = HAK_RBT_BLACK; + x_par->parent->color = HAK_RBT_RED; pair = x_par->parent; } else @@ -403,51 +403,51 @@ static void adjust (hcl_rbt_t* rbt, hcl_rbt_pair_t* pair) x_par = pair->parent; } - x_par->color = HCL_RBT_BLACK; - x_par->parent->color = HCL_RBT_RED; + x_par->color = HAK_RBT_BLACK; + x_par->parent->color = HAK_RBT_RED; rotate (rbt, x_par->parent, !leftwise); } } } -static hcl_rbt_pair_t* change_pair_val ( - hcl_rbt_t* rbt, hcl_rbt_pair_t* pair, void* vptr, hcl_oow_t vlen) +static hak_rbt_pair_t* change_pair_val ( + hak_rbt_t* rbt, hak_rbt_pair_t* pair, void* vptr, hak_oow_t vlen) { if (VPTR(pair) == vptr && VLEN(pair) == vlen) { /* if the old value and the new value are the same, * it just calls the handler for this condition. * No value replacement occurs. */ - if (rbt->style->keeper != HCL_NULL) + if (rbt->style->keeper != HAK_NULL) { rbt->style->keeper (rbt, vptr, vlen); } } else { - copier_t vcop = rbt->style->copier[HCL_RBT_VAL]; + copier_t vcop = rbt->style->copier[HAK_RBT_VAL]; void* ovptr = VPTR(pair); - hcl_oow_t ovlen = VLEN(pair); + hak_oow_t ovlen = VLEN(pair); /* place the new value according to the copier */ - if (vcop == HCL_RBT_COPIER_SIMPLE) + if (vcop == HAK_RBT_COPIER_SIMPLE) { VPTR(pair) = vptr; VLEN(pair) = vlen; } - else if (vcop == HCL_RBT_COPIER_INLINE) + else if (vcop == HAK_RBT_COPIER_INLINE) { if (ovlen == vlen) { - if (vptr) HCL_MEMCPY (VPTR(pair), vptr, VTOB(rbt,vlen)); + if (vptr) HAK_MEMCPY (VPTR(pair), vptr, VTOB(rbt,vlen)); } else { /* need to reconstruct the pair */ - hcl_rbt_pair_t* p = hcl_rbt_allocpair (rbt, + hak_rbt_pair_t* p = hak_rbt_allocpair (rbt, KPTR(pair), KLEN(pair), vptr, vlen); - if (p == HCL_NULL) return HCL_NULL; + if (p == HAK_NULL) return HAK_NULL; p->color = pair->color; p->left = pair->left; @@ -462,7 +462,7 @@ static hcl_rbt_pair_t* change_pair_val ( } else { - HCL_ASSERT (rbt->hcl, pair->parent->right == pair); + HAK_ASSERT (rbt->hak, pair->parent->right == pair); pair->parent->right = p; } } @@ -471,34 +471,34 @@ static hcl_rbt_pair_t* change_pair_val ( if (pair == rbt->root) rbt->root = p; - hcl_rbt_freepair (rbt, pair); + hak_rbt_freepair (rbt, pair); return p; } } else { void* nvptr = vcop (rbt, vptr, vlen); - if (nvptr == HCL_NULL) return HCL_NULL; + if (nvptr == HAK_NULL) return HAK_NULL; VPTR(pair) = nvptr; VLEN(pair) = vlen; } /* free up the old value */ - if (rbt->style->freeer[HCL_RBT_VAL] != HCL_NULL) + if (rbt->style->freeer[HAK_RBT_VAL] != HAK_NULL) { - rbt->style->freeer[HCL_RBT_VAL] (rbt, ovptr, ovlen); + rbt->style->freeer[HAK_RBT_VAL] (rbt, ovptr, ovlen); } } return pair; } -static hcl_rbt_pair_t* insert ( - hcl_rbt_t* rbt, void* kptr, hcl_oow_t klen, void* vptr, hcl_oow_t vlen, int opt) +static hak_rbt_pair_t* insert ( + hak_rbt_t* rbt, void* kptr, hak_oow_t klen, void* vptr, hak_oow_t vlen, int opt) { - hcl_rbt_pair_t* x_cur = rbt->root; - hcl_rbt_pair_t* x_par = HCL_NULL; - hcl_rbt_pair_t* x_new; + hak_rbt_pair_t* x_cur = rbt->root; + hak_rbt_pair_t* x_par = HAK_NULL; + hak_rbt_pair_t* x_new; while (!IS_NIL(rbt,x_cur)) { @@ -517,7 +517,7 @@ static hcl_rbt_pair_t* insert ( case INSERT: /* return failure */ - return HCL_NULL; + return HAK_NULL; } } @@ -527,15 +527,15 @@ static hcl_rbt_pair_t* insert ( else /* if (n < 0) */ x_cur = x_cur->left; } - if (opt == UPDATE) return HCL_NULL; + if (opt == UPDATE) return HAK_NULL; - x_new = hcl_rbt_allocpair (rbt, kptr, klen, vptr, vlen); - if (x_new == HCL_NULL) return HCL_NULL; + x_new = hak_rbt_allocpair (rbt, kptr, klen, vptr, vlen); + if (x_new == HAK_NULL) return HAK_NULL; - if (x_par == HCL_NULL) + if (x_par == HAK_NULL) { /* the tree contains no pair */ - HCL_ASSERT (rbt->hcl, rbt->root == &rbt->xnil); + HAK_ASSERT (rbt->hak, rbt->root == &rbt->xnil); rbt->root = x_new; } else @@ -544,12 +544,12 @@ static hcl_rbt_pair_t* insert ( int n = rbt->style->comper (rbt, kptr, klen, KPTR(x_par), KLEN(x_par)); if (n > 0) { - HCL_ASSERT (rbt->hcl, x_par->right == &rbt->xnil); + HAK_ASSERT (rbt->hak, x_par->right == &rbt->xnil); x_par->right = x_new; } else { - HCL_ASSERT (rbt->hcl, x_par->left == &rbt->xnil); + HAK_ASSERT (rbt->hak, x_par->left == &rbt->xnil); x_par->left = x_new; } @@ -557,42 +557,42 @@ static hcl_rbt_pair_t* insert ( adjust (rbt, x_new); } - rbt->root->color = HCL_RBT_BLACK; + rbt->root->color = HAK_RBT_BLACK; rbt->size++; return x_new; } -hcl_rbt_pair_t* hcl_rbt_upsert ( - hcl_rbt_t* rbt, void* kptr, hcl_oow_t klen, void* vptr, hcl_oow_t vlen) +hak_rbt_pair_t* hak_rbt_upsert ( + hak_rbt_t* rbt, void* kptr, hak_oow_t klen, void* vptr, hak_oow_t vlen) { return insert (rbt, kptr, klen, vptr, vlen, UPSERT); } -hcl_rbt_pair_t* hcl_rbt_ensert ( - hcl_rbt_t* rbt, void* kptr, hcl_oow_t klen, void* vptr, hcl_oow_t vlen) +hak_rbt_pair_t* hak_rbt_ensert ( + hak_rbt_t* rbt, void* kptr, hak_oow_t klen, void* vptr, hak_oow_t vlen) { return insert (rbt, kptr, klen, vptr, vlen, ENSERT); } -hcl_rbt_pair_t* hcl_rbt_insert ( - hcl_rbt_t* rbt, void* kptr, hcl_oow_t klen, void* vptr, hcl_oow_t vlen) +hak_rbt_pair_t* hak_rbt_insert ( + hak_rbt_t* rbt, void* kptr, hak_oow_t klen, void* vptr, hak_oow_t vlen) { return insert (rbt, kptr, klen, vptr, vlen, INSERT); } -hcl_rbt_pair_t* hcl_rbt_update ( - hcl_rbt_t* rbt, void* kptr, hcl_oow_t klen, void* vptr, hcl_oow_t vlen) +hak_rbt_pair_t* hak_rbt_update ( + hak_rbt_t* rbt, void* kptr, hak_oow_t klen, void* vptr, hak_oow_t vlen) { return insert (rbt, kptr, klen, vptr, vlen, UPDATE); } -hcl_rbt_pair_t* hcl_rbt_cbsert ( - hcl_rbt_t* rbt, void* kptr, hcl_oow_t klen, cbserter_t cbserter, void* ctx) +hak_rbt_pair_t* hak_rbt_cbsert ( + hak_rbt_t* rbt, void* kptr, hak_oow_t klen, cbserter_t cbserter, void* ctx) { - hcl_rbt_pair_t* x_cur = rbt->root; - hcl_rbt_pair_t* x_par = HCL_NULL; - hcl_rbt_pair_t* x_new; + hak_rbt_pair_t* x_cur = rbt->root; + hak_rbt_pair_t* x_par = HAK_NULL; + hak_rbt_pair_t* x_new; while (!IS_NIL(rbt,x_cur)) { @@ -601,16 +601,16 @@ hcl_rbt_pair_t* hcl_rbt_cbsert ( { /* back up the contents of the current pair * in case it is reallocated */ - hcl_rbt_pair_t tmp; + hak_rbt_pair_t tmp; tmp = *x_cur; /* call the callback function to manipulate the pair */ x_new = cbserter (rbt, x_cur, kptr, klen, ctx); - if (x_new == HCL_NULL) + if (x_new == HAK_NULL) { /* error returned by the callback function */ - return HCL_NULL; + return HAK_NULL; } if (x_new != x_cur) @@ -632,7 +632,7 @@ hcl_rbt_pair_t* hcl_rbt_cbsert ( } else { - HCL_ASSERT (rbt->hcl, tmp.parent->right == x_cur); + HAK_ASSERT (rbt->hak, tmp.parent->right == x_cur); tmp.parent->right = x_new; } } @@ -651,13 +651,13 @@ hcl_rbt_pair_t* hcl_rbt_cbsert ( else /* if (n < 0) */ x_cur = x_cur->left; } - x_new = cbserter (rbt, HCL_NULL, kptr, klen, ctx); - if (x_new == HCL_NULL) return HCL_NULL; + x_new = cbserter (rbt, HAK_NULL, kptr, klen, ctx); + if (x_new == HAK_NULL) return HAK_NULL; - if (x_par == HCL_NULL) + if (x_par == HAK_NULL) { /* the tree contains no pair */ - HCL_ASSERT (rbt->hcl, rbt->root == &rbt->xnil); + HAK_ASSERT (rbt->hak, rbt->root == &rbt->xnil); rbt->root = x_new; } else @@ -666,12 +666,12 @@ hcl_rbt_pair_t* hcl_rbt_cbsert ( int n = rbt->style->comper (rbt, kptr, klen, KPTR(x_par), KLEN(x_par)); if (n > 0) { - HCL_ASSERT (rbt->hcl, x_par->right == &rbt->xnil); + HAK_ASSERT (rbt->hak, x_par->right == &rbt->xnil); x_par->right = x_new; } else { - HCL_ASSERT (rbt->hcl, x_par->left == &rbt->xnil); + HAK_ASSERT (rbt->hak, x_par->left == &rbt->xnil); x_par->left = x_new; } @@ -679,51 +679,51 @@ hcl_rbt_pair_t* hcl_rbt_cbsert ( adjust (rbt, x_new); } - rbt->root->color = HCL_RBT_BLACK; + rbt->root->color = HAK_RBT_BLACK; rbt->size++; return x_new; } -static void adjust_for_delete (hcl_rbt_t* rbt, hcl_rbt_pair_t* pair, hcl_rbt_pair_t* par) +static void adjust_for_delete (hak_rbt_t* rbt, hak_rbt_pair_t* pair, hak_rbt_pair_t* par) { - while (pair != rbt->root && pair->color == HCL_RBT_BLACK) + while (pair != rbt->root && pair->color == HAK_RBT_BLACK) { - hcl_rbt_pair_t* tmp; + hak_rbt_pair_t* tmp; if (pair == par->left) { tmp = par->right; - if (tmp->color == HCL_RBT_RED) + if (tmp->color == HAK_RBT_RED) { - tmp->color = HCL_RBT_BLACK; - par->color = HCL_RBT_RED; + tmp->color = HAK_RBT_BLACK; + par->color = HAK_RBT_RED; rotate_left (rbt, par); tmp = par->right; } - if (tmp->left->color == HCL_RBT_BLACK && - tmp->right->color == HCL_RBT_BLACK) + if (tmp->left->color == HAK_RBT_BLACK && + tmp->right->color == HAK_RBT_BLACK) { - if (!IS_NIL(rbt,tmp)) tmp->color = HCL_RBT_RED; + if (!IS_NIL(rbt,tmp)) tmp->color = HAK_RBT_RED; pair = par; par = pair->parent; } else { - if (tmp->right->color == HCL_RBT_BLACK) + if (tmp->right->color == HAK_RBT_BLACK) { if (!IS_NIL(rbt,tmp->left)) - tmp->left->color = HCL_RBT_BLACK; - tmp->color = HCL_RBT_RED; + tmp->left->color = HAK_RBT_BLACK; + tmp->color = HAK_RBT_RED; rotate_right (rbt, tmp); tmp = par->right; } tmp->color = par->color; - if (!IS_NIL(rbt,par)) par->color = HCL_RBT_BLACK; - if (tmp->right->color == HCL_RBT_RED) - tmp->right->color = HCL_RBT_BLACK; + if (!IS_NIL(rbt,par)) par->color = HAK_RBT_BLACK; + if (tmp->right->color == HAK_RBT_RED) + tmp->right->color = HAK_RBT_BLACK; rotate_left (rbt, par); pair = rbt->root; @@ -731,37 +731,37 @@ static void adjust_for_delete (hcl_rbt_t* rbt, hcl_rbt_pair_t* pair, hcl_rbt_pai } else { - HCL_ASSERT (rbt->hcl, pair == par->right); + HAK_ASSERT (rbt->hak, pair == par->right); tmp = par->left; - if (tmp->color == HCL_RBT_RED) + if (tmp->color == HAK_RBT_RED) { - tmp->color = HCL_RBT_BLACK; - par->color = HCL_RBT_RED; + tmp->color = HAK_RBT_BLACK; + par->color = HAK_RBT_RED; rotate_right (rbt, par); tmp = par->left; } - if (tmp->left->color == HCL_RBT_BLACK && - tmp->right->color == HCL_RBT_BLACK) + if (tmp->left->color == HAK_RBT_BLACK && + tmp->right->color == HAK_RBT_BLACK) { - if (!IS_NIL(rbt,tmp)) tmp->color = HCL_RBT_RED; + if (!IS_NIL(rbt,tmp)) tmp->color = HAK_RBT_RED; pair = par; par = pair->parent; } else { - if (tmp->left->color == HCL_RBT_BLACK) + if (tmp->left->color == HAK_RBT_BLACK) { if (!IS_NIL(rbt,tmp->right)) - tmp->right->color = HCL_RBT_BLACK; - tmp->color = HCL_RBT_RED; + tmp->right->color = HAK_RBT_BLACK; + tmp->color = HAK_RBT_RED; rotate_left (rbt, tmp); tmp = par->left; } tmp->color = par->color; - if (!IS_NIL(rbt,par)) par->color = HCL_RBT_BLACK; - if (tmp->left->color == HCL_RBT_RED) - tmp->left->color = HCL_RBT_BLACK; + if (!IS_NIL(rbt,par)) par->color = HAK_RBT_BLACK; + if (tmp->left->color == HAK_RBT_RED) + tmp->left->color = HAK_RBT_BLACK; rotate_right (rbt, par); pair = rbt->root; @@ -769,14 +769,14 @@ static void adjust_for_delete (hcl_rbt_t* rbt, hcl_rbt_pair_t* pair, hcl_rbt_pai } } - pair->color = HCL_RBT_BLACK; + pair->color = HAK_RBT_BLACK; } -static void delete_pair (hcl_rbt_t* rbt, hcl_rbt_pair_t* pair) +static void delete_pair (hak_rbt_t* rbt, hak_rbt_pair_t* pair) { - hcl_rbt_pair_t* x, * y, * par; + hak_rbt_pair_t* x, * y, * par; - HCL_ASSERT (rbt->hcl, pair && !IS_NIL(rbt,pair)); + HAK_ASSERT (rbt->hak, pair && !IS_NIL(rbt,pair)); if (IS_NIL(rbt,pair->left) || IS_NIL(rbt,pair->right)) { @@ -808,14 +808,14 @@ static void delete_pair (hcl_rbt_t* rbt, hcl_rbt_pair_t* pair) if (y == pair) { - if (y->color == HCL_RBT_BLACK && !IS_NIL(rbt,x)) + if (y->color == HAK_RBT_BLACK && !IS_NIL(rbt,x)) adjust_for_delete (rbt, x, par); - hcl_rbt_freepair (rbt, y); + hak_rbt_freepair (rbt, y); } else { - if (y->color == HCL_RBT_BLACK && !IS_NIL(rbt,x)) + if (y->color == HAK_RBT_BLACK && !IS_NIL(rbt,x)) adjust_for_delete (rbt, x, par); #if 1 @@ -852,55 +852,55 @@ static void delete_pair (hcl_rbt_t* rbt, hcl_rbt_pair_t* pair) if (y->right->parent == pair) y->right->parent = y; #endif - hcl_rbt_freepair (rbt, pair); + hak_rbt_freepair (rbt, pair); } rbt->size--; } -int hcl_rbt_delete (hcl_rbt_t* rbt, const void* kptr, hcl_oow_t klen) +int hak_rbt_delete (hak_rbt_t* rbt, const void* kptr, hak_oow_t klen) { - hcl_rbt_pair_t* pair; + hak_rbt_pair_t* pair; - pair = hcl_rbt_search (rbt, kptr, klen); - if (pair == HCL_NULL) return -1; + pair = hak_rbt_search (rbt, kptr, klen); + if (pair == HAK_NULL) return -1; delete_pair (rbt, pair); return 0; } -void hcl_rbt_clear (hcl_rbt_t* rbt) +void hak_rbt_clear (hak_rbt_t* rbt) { /* TODO: improve this */ while (!IS_NIL(rbt,rbt->root)) delete_pair (rbt, rbt->root); } #if 0 -static HCL_INLINE hcl_rbt_walk_t walk_recursively ( - hcl_rbt_t* rbt, walker_t walker, void* ctx, hcl_rbt_pair_t* pair) +static HAK_INLINE hak_rbt_walk_t walk_recursively ( + hak_rbt_t* rbt, walker_t walker, void* ctx, hak_rbt_pair_t* pair) { if (!IS_NIL(rbt,pair->left)) { - if (walk_recursively (rbt, walker, ctx, pair->left) == HCL_RBT_WALK_STOP) - return HCL_RBT_WALK_STOP; + if (walk_recursively (rbt, walker, ctx, pair->left) == HAK_RBT_WALK_STOP) + return HAK_RBT_WALK_STOP; } - if (walker (rbt, pair, ctx) == HCL_RBT_WALK_STOP) return HCL_RBT_WALK_STOP; + if (walker (rbt, pair, ctx) == HAK_RBT_WALK_STOP) return HAK_RBT_WALK_STOP; if (!IS_NIL(rbt,pair->right)) { - if (walk_recursively (rbt, walker, ctx, pair->right) == HCL_RBT_WALK_STOP) - return HCL_RBT_WALK_STOP; + if (walk_recursively (rbt, walker, ctx, pair->right) == HAK_RBT_WALK_STOP) + return HAK_RBT_WALK_STOP; } - return HCL_RBT_WALK_FORWARD; + return HAK_RBT_WALK_FORWARD; } #endif -static HCL_INLINE void walk (hcl_rbt_t* rbt, walker_t walker, void* ctx, int l, int r) +static HAK_INLINE void walk (hak_rbt_t* rbt, walker_t walker, void* ctx, int l, int r) { - hcl_rbt_pair_t* x_cur = rbt->root; - hcl_rbt_pair_t* prev = rbt->root->parent; + hak_rbt_pair_t* x_cur = rbt->root; + hak_rbt_pair_t* prev = rbt->root->parent; while (x_cur && !IS_NIL(rbt,x_cur)) { @@ -916,7 +916,7 @@ static HCL_INLINE void walk (hcl_rbt_t* rbt, walker_t walker, void* ctx, int l, } else { - if (walker (rbt, x_cur, ctx) == HCL_RBT_WALK_STOP) break; + if (walker (rbt, x_cur, ctx) == HAK_RBT_WALK_STOP) break; if (!IS_NIL(rbt,x_cur->child[r])) { @@ -936,7 +936,7 @@ static HCL_INLINE void walk (hcl_rbt_t* rbt, walker_t walker, void* ctx, int l, { /* the left child has been already traversed */ - if (walker (rbt, x_cur, ctx) == HCL_RBT_WALK_STOP) break; + if (walker (rbt, x_cur, ctx) == HAK_RBT_WALK_STOP) break; if (!IS_NIL(rbt,x_cur->child[r])) { @@ -954,7 +954,7 @@ static HCL_INLINE void walk (hcl_rbt_t* rbt, walker_t walker, void* ctx, int l, else { /* both the left child and the right child have been traversed */ - HCL_ASSERT (rbt->hcl, prev == x_cur->child[r]); + HAK_ASSERT (rbt->hak, prev == x_cur->child[r]); /* just move up to the parent */ prev = x_cur; x_cur = x_cur->parent; @@ -962,19 +962,19 @@ static HCL_INLINE void walk (hcl_rbt_t* rbt, walker_t walker, void* ctx, int l, } } -void hcl_rbt_walk (hcl_rbt_t* rbt, walker_t walker, void* ctx) +void hak_rbt_walk (hak_rbt_t* rbt, walker_t walker, void* ctx) { walk (rbt, walker, ctx, LEFT, RIGHT); } -void hcl_rbt_rwalk (hcl_rbt_t* rbt, walker_t walker, void* ctx) +void hak_rbt_rwalk (hak_rbt_t* rbt, walker_t walker, void* ctx) { walk (rbt, walker, ctx, RIGHT, LEFT); } -int hcl_rbt_dflcomp (const hcl_rbt_t* rbt, const void* kptr1, hcl_oow_t klen1, const void* kptr2, hcl_oow_t klen2) +int hak_rbt_dflcomp (const hak_rbt_t* rbt, const void* kptr1, hak_oow_t klen1, const void* kptr2, hak_oow_t klen2) { - hcl_oow_t min; + hak_oow_t min; int n, nn; if (klen1 < klen2) @@ -988,7 +988,7 @@ int hcl_rbt_dflcomp (const hcl_rbt_t* rbt, const void* kptr1, hcl_oow_t klen1, c nn = (klen1 == klen2)? 0: 1; } - n = HCL_MEMCMP (kptr1, kptr2, KTOB(rbt,min)); + n = HAK_MEMCMP (kptr1, kptr2, KTOB(rbt,min)); if (n == 0) n = nn; return n; } diff --git a/lib/read.c b/lib/read.c index 1e77dac..00c7884 100644 --- a/lib/read.c +++ b/lib/read.c @@ -22,10 +22,10 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "hcl-prv.h" +#include "hak-prv.h" -#define HCL_LANG_ENABLE_WIDE_DELIM -#define HCL_LANG_AUTO_FORGE_XLIST_ALWAYS +#define HAK_LANG_ENABLE_WIDE_DELIM +#define HAK_LANG_AUTO_FORGE_XLIST_ALWAYS #define BUFFER_ALIGN 128 #define BALIT_BUFFER_ALIGN 128 @@ -34,8 +34,8 @@ static struct voca_t { - hcl_oow_t len; - hcl_ooch_t str[11]; + hak_oow_t len; + hak_ooch_t str[11]; } vocas[] = { { 8, { '$','i','n','c','l','u','d','e' } }, @@ -185,35 +185,35 @@ enum list_flag_t static struct { int closer; - hcl_synerrnum_t synerr; + hak_synerrnum_t synerr; int voca_id; } cons_info[] = { - HCL_AID(HCL_CONCODE_XLIST) { HCL_TOK_RPAREN, HCL_SYNERR_RPAREN, VOCA_XLIST }, /* XLIST ( ) */ - HCL_AID(HCL_CONCODE_MLIST) { HCL_TOK_RPAREN, HCL_SYNERR_RPAREN, VOCA_MLIST }, /* MLIST (obj:message) */ - HCL_AID(HCL_CONCODE_ALIST) { HCL_TOK_RPAREN, HCL_SYNERR_RPAREN, VOCA_ALIST }, /* ALIST (var:=value) */ - HCL_AID(HCL_CONCODE_BLIST) { HCL_TOK_RPAREN, HCL_SYNERR_RPAREN, VOCA_BLIST }, /* BLIST (x + y) */ - HCL_AID(HCL_CONCODE_BLOCK) { HCL_TOK_RBRACE, HCL_SYNERR_RBRACE, VOCA_BLOCK }, /* BLOCK { } */ - HCL_AID(HCL_CONCODE_ARRAY) { HCL_TOK_RBRACK, HCL_SYNERR_RBRACK, VOCA_ARRAY }, /* ARRAY #[ ] */ - HCL_AID(HCL_CONCODE_BYTEARRAY) { HCL_TOK_RBRACK, HCL_SYNERR_RBRACK, VOCA_BYTEARRAY }, /* BYTEARRAY #b[ ] */ - HCL_AID(HCL_CONCODE_CHARARRAY) { HCL_TOK_RBRACK, HCL_SYNERR_RBRACK, VOCA_CHARARRAY }, /* CHARARRAY #c[ ] */ - HCL_AID(HCL_CONCODE_DIC) { HCL_TOK_RBRACE, HCL_SYNERR_RBRACE, VOCA_DIC }, /* DIC #{ } */ - HCL_AID(HCL_CONCODE_QLIST) { HCL_TOK_RPAREN, HCL_SYNERR_RPAREN, VOCA_QLIST }, /* QLIST #( ) */ - HCL_AID(HCL_CONCODE_TUPLE) { HCL_TOK_RBRACK, HCL_SYNERR_RBRACK, VOCA_TUPLE }, /* TUPLE [] */ + HAK_AID(HAK_CONCODE_XLIST) { HAK_TOK_RPAREN, HAK_SYNERR_RPAREN, VOCA_XLIST }, /* XLIST ( ) */ + HAK_AID(HAK_CONCODE_MLIST) { HAK_TOK_RPAREN, HAK_SYNERR_RPAREN, VOCA_MLIST }, /* MLIST (obj:message) */ + HAK_AID(HAK_CONCODE_ALIST) { HAK_TOK_RPAREN, HAK_SYNERR_RPAREN, VOCA_ALIST }, /* ALIST (var:=value) */ + HAK_AID(HAK_CONCODE_BLIST) { HAK_TOK_RPAREN, HAK_SYNERR_RPAREN, VOCA_BLIST }, /* BLIST (x + y) */ + HAK_AID(HAK_CONCODE_BLOCK) { HAK_TOK_RBRACE, HAK_SYNERR_RBRACE, VOCA_BLOCK }, /* BLOCK { } */ + HAK_AID(HAK_CONCODE_ARRAY) { HAK_TOK_RBRACK, HAK_SYNERR_RBRACK, VOCA_ARRAY }, /* ARRAY #[ ] */ + HAK_AID(HAK_CONCODE_BYTEARRAY) { HAK_TOK_RBRACK, HAK_SYNERR_RBRACK, VOCA_BYTEARRAY }, /* BYTEARRAY #b[ ] */ + HAK_AID(HAK_CONCODE_CHARARRAY) { HAK_TOK_RBRACK, HAK_SYNERR_RBRACK, VOCA_CHARARRAY }, /* CHARARRAY #c[ ] */ + HAK_AID(HAK_CONCODE_DIC) { HAK_TOK_RBRACE, HAK_SYNERR_RBRACE, VOCA_DIC }, /* DIC #{ } */ + HAK_AID(HAK_CONCODE_QLIST) { HAK_TOK_RPAREN, HAK_SYNERR_RPAREN, VOCA_QLIST }, /* QLIST #( ) */ + HAK_AID(HAK_CONCODE_TUPLE) { HAK_TOK_RBRACK, HAK_SYNERR_RBRACK, VOCA_TUPLE }, /* TUPLE [] */ /* VLIST's closer and synerr are not used. there is dedicated logic in feed_process_token(). only voca_id is used */ - HCL_AID(HCL_CONCODE_VLIST) { HCL_TOK_VBAR, HCL_SYNERR_VBAR, VOCA_VLIST } /* VLIST | | */ + HAK_AID(HAK_CONCODE_VLIST) { HAK_TOK_VBAR, HAK_SYNERR_VBAR, VOCA_VLIST } /* VLIST | | */ }; /* ----------------------------------------------------------------- */ -static int init_compiler (hcl_t* hcl); -static void feed_continue (hcl_t* hcl, hcl_flx_state_t state); -static int is_at_block_beginning (hcl_t* hcl); +static int init_compiler (hak_t* hak); +static void feed_continue (hak_t* hak, hak_flx_state_t state); +static int is_at_block_beginning (hak_t* hak); /* ----------------------------------------------------------------- */ -static HCL_INLINE int is_spacechar (hcl_ooci_t c) +static HAK_INLINE int is_spacechar (hak_ooci_t c) { #if 0 switch (c) @@ -230,22 +230,22 @@ static HCL_INLINE int is_spacechar (hcl_ooci_t c) return 0; } #else - return c != HCL_OOCI_EOF && hcl_is_ooch_space(c); + return c != HAK_OOCI_EOF && hak_is_ooch_space(c); #endif } -static HCL_INLINE int is_linebreak (hcl_ooci_t c) +static HAK_INLINE int is_linebreak (hak_ooci_t c) { /* TODO: different line end conventions? */ return c == '\n'; /* make sure this is one of the space chars in is_spacechar() */ } -static HCL_INLINE int is_digit_char (hcl_ooci_t c) +static HAK_INLINE int is_digit_char (hak_ooci_t c) { return (c >= '0' && c <= '9'); } -static HCL_INLINE int is_radixed_digit_char (hcl_ooci_t c, int radix) +static HAK_INLINE int is_radixed_digit_char (hak_ooci_t c, int radix) { if (c >= '0' && c <= '9') return (c - '0') < radix; if (c >= 'a' && c <= 'z') return (c - 'a' + 10) < radix; @@ -253,146 +253,146 @@ static HCL_INLINE int is_radixed_digit_char (hcl_ooci_t c, int radix) return 0; } -static HCL_INLINE int is_xdigit_char (hcl_ooci_t c) +static HAK_INLINE int is_xdigit_char (hak_ooci_t c) { /* TODO: support full unicode */ return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f'); } #if 0 -static HCL_INLINE int is_alphachar (hcl_ooci_t c) +static HAK_INLINE int is_alphachar (hak_ooci_t c) { /* TODO: support full unicode */ return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); } -static HCL_INLINE int is_alnumchar (hcl_ooci_t c) +static HAK_INLINE int is_alnumchar (hak_ooci_t c) { /* TODO: support full unicode */ return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9'); } #endif -static HCL_INLINE int is_delim_char (hcl_ooci_t c) +static HAK_INLINE int is_delim_char (hak_ooci_t c) { return c == '(' || c == ')' || c == '[' || c == ']' || c == '{' || c == '}' || c == '|' || c == ',' || c == '.' || c == ':' || c == ';' || /* the first characters of tokens in delim_token_tab up to this point */ -#if defined(HCL_OOCH_IS_UCH) && defined(HCL_LANG_ENABLE_WIDE_DELIM) +#if defined(HAK_OOCH_IS_UCH) && defined(HAK_LANG_ENABLE_WIDE_DELIM) c == L'\u201C' || c == L'\u201D' || /* “ ” */ c == L'\u2018' || c == L'\u2019' || /* ‘ ’ */ #endif - c == '#' || c == '\"' || c == '\'' || c == '\\' || is_spacechar(c) || c == HCL_OOCI_EOF; + c == '#' || c == '\"' || c == '\'' || c == '\\' || is_spacechar(c) || c == HAK_OOCI_EOF; } -int hcl_is_binop_char (hcl_ooci_t c) /* not static HCL_INLINE for shared use with comp.c via HCL_CNODE_IS_SYMBOL() */ +int hak_is_binop_char (hak_ooci_t c) /* not static HAK_INLINE for shared use with comp.c via HAK_CNODE_IS_SYMBOL() */ { return c == '&' || c == '*' || c == '+' || c == '-' || c == '/' || c == '%' || c == '<' || c == '>' || c == '=' || c == '@' || c == '|' || c == '~'; } -#define is_binop_char(c) hcl_is_binop_char(c) +#define is_binop_char(c) hak_is_binop_char(c) -static HCL_INLINE int is_lead_ident_char (hcl_ooci_t c) +static HAK_INLINE int is_lead_ident_char (hak_ooci_t c) { - return hcl_is_ooch_alpha(c) || c == '_'; + return hak_is_ooch_alpha(c) || c == '_'; } -static HCL_INLINE int is_ident_char (hcl_ooci_t c) +static HAK_INLINE int is_ident_char (hak_ooci_t c) { /* [NOTE] * '-' is prohibited as the last character of an identifier or an identifier segment. * see flx_plain_ident(). */ - return hcl_is_ooch_alnum(c) || c == '_' || c == '-' || c == '?'; + return hak_is_ooch_alnum(c) || c == '_' || c == '-' || c == '?'; } /* TODO: remove GET_CHAR(), GET_CHAR_TO(), get_char(), _get_char() */ -#define GET_CHAR(hcl) \ - do { if (get_char(hcl) <= -1) return -1; } while (0) +#define GET_CHAR(hak) \ + do { if (get_char(hak) <= -1) return -1; } while (0) -#define GET_CHAR_TO(hcl,c) \ +#define GET_CHAR_TO(hak,c) \ do { \ - if (get_char(hcl) <= -1) return -1; \ - c = (hcl)->c->lxc.c; \ + if (get_char(hak) <= -1) return -1; \ + c = (hak)->c->lxc.c; \ } while(0) -#define ADD_TOKEN_STR(hcl,s,l) \ - do { if (add_token_str(hcl, s, l) <= -1) return -1; } while (0) +#define ADD_TOKEN_STR(hak,s,l) \ + do { if (add_token_str(hak, s, l) <= -1) return -1; } while (0) -#define ADD_TOKEN_CHAR(hcl,c) \ - do { if (add_token_char(hcl, c) <= -1) return -1; } while (0) +#define ADD_TOKEN_CHAR(hak,c) \ + do { if (add_token_char(hak, c) <= -1) return -1; } while (0) -#define CLEAR_TOKEN_NAME(hcl) ((hcl)->c->tok.name.len = 0) -#define SET_TOKEN_TYPE(hcl,tv) ((hcl)->c->tok.type = (tv)) -#define SET_TOKEN_LOC(hcl,locv) ((hcl)->c->tok.loc = *(locv)) +#define CLEAR_TOKEN_NAME(hak) ((hak)->c->tok.name.len = 0) +#define SET_TOKEN_TYPE(hak,tv) ((hak)->c->tok.type = (tv)) +#define SET_TOKEN_LOC(hak,locv) ((hak)->c->tok.loc = *(locv)) -#define TOKEN_TYPE(hcl) ((hcl)->c->tok.type) -#define TOKEN_NAME(hcl) (&(hcl)->c->tok.name) -#define TOKEN_NAME_CAPA(hcl) ((hcl)->c->tok.name_capa) -#define TOKEN_NAME_LEN(hcl) ((hcl)->c->tok.name.len) -#define TOKEN_NAME_PTR(hcl) ((hcl)->c->tok.name.ptr) -#define TOKEN_NAME_CHAR(hcl,index) ((hcl)->c->tok.name.ptr[index]) -#define TOKEN_LOC(hcl) (&(hcl)->c->tok.loc) +#define TOKEN_TYPE(hak) ((hak)->c->tok.type) +#define TOKEN_NAME(hak) (&(hak)->c->tok.name) +#define TOKEN_NAME_CAPA(hak) ((hak)->c->tok.name_capa) +#define TOKEN_NAME_LEN(hak) ((hak)->c->tok.name.len) +#define TOKEN_NAME_PTR(hak) ((hak)->c->tok.name.ptr) +#define TOKEN_NAME_CHAR(hak,index) ((hak)->c->tok.name.ptr[index]) +#define TOKEN_LOC(hak) (&(hak)->c->tok.loc) -static HCL_INLINE int add_token_str (hcl_t* hcl, const hcl_ooch_t* ptr, hcl_oow_t len) +static HAK_INLINE int add_token_str (hak_t* hak, const hak_ooch_t* ptr, hak_oow_t len) { - hcl_oocs_t tmp; - tmp.ptr = (hcl_ooch_t*)ptr; + hak_oocs_t tmp; + tmp.ptr = (hak_ooch_t*)ptr; tmp.len = len; - return hcl_copy_string_to(hcl, &tmp, TOKEN_NAME(hcl), &TOKEN_NAME_CAPA(hcl), 1, '\0'); + return hak_copy_string_to(hak, &tmp, TOKEN_NAME(hak), &TOKEN_NAME_CAPA(hak), 1, '\0'); } -static HCL_INLINE int does_token_name_match (hcl_t* hcl, voca_id_t id) +static HAK_INLINE int does_token_name_match (hak_t* hak, voca_id_t id) { - return hcl->c->tok.name.len == vocas[id].len && - hcl_equal_oochars(hcl->c->tok.name.ptr, vocas[id].str, vocas[id].len); + return hak->c->tok.name.len == vocas[id].len && + hak_equal_oochars(hak->c->tok.name.ptr, vocas[id].str, vocas[id].len); } -static HCL_INLINE int add_token_char (hcl_t* hcl, hcl_ooch_t c) +static HAK_INLINE int add_token_char (hak_t* hak, hak_ooch_t c) { - hcl_oocs_t tmp; + hak_oocs_t tmp; tmp.ptr = &c; tmp.len = 1; - return hcl_copy_string_to(hcl, &tmp, TOKEN_NAME(hcl), &TOKEN_NAME_CAPA(hcl), 1, '\0'); + return hak_copy_string_to(hak, &tmp, TOKEN_NAME(hak), &TOKEN_NAME_CAPA(hak), 1, '\0'); } -static HCL_INLINE void unget_char (hcl_t* hcl, const hcl_lxc_t* c) +static HAK_INLINE void unget_char (hak_t* hak, const hak_lxc_t* c) { /* Make sure that the unget buffer is large enough */ - HCL_ASSERT(hcl, hcl->c->nungots < HCL_COUNTOF(hcl->c->ungot)); - hcl->c->ungot[hcl->c->nungots++] = *c; + HAK_ASSERT(hak, hak->c->nungots < HAK_COUNTOF(hak->c->ungot)); + hak->c->ungot[hak->c->nungots++] = *c; } -static int get_directive_token_type (hcl_t* hcl, hcl_tok_type_t* tok_type) +static int get_directive_token_type (hak_t* hak, hak_tok_type_t* tok_type) { - if (does_token_name_match(hcl, VOCA_INCLUDE)) + if (does_token_name_match(hak, VOCA_INCLUDE)) { - *tok_type = HCL_TOK_INCLUDE; + *tok_type = HAK_TOK_INCLUDE; return 0; } - else if (does_token_name_match(hcl, VOCA_PRAGMA)) + else if (does_token_name_match(hak, VOCA_PRAGMA)) { - *tok_type = HCL_TOK_PRAGMA; + *tok_type = HAK_TOK_PRAGMA; return 0; } return -1; } -static int _get_char (hcl_t* hcl, hcl_io_cciarg_t* inp) +static int _get_char (hak_t* hak, hak_io_cciarg_t* inp) { - hcl_ooci_t lc; + hak_ooci_t lc; if (inp->b.pos >= inp->b.len) { - if (hcl->c->cci_rdr(hcl, HCL_IO_READ, inp) <= -1) return -1; + if (hak->c->cci_rdr(hak, HAK_IO_READ, inp) <= -1) return -1; if (inp->xlen <= 0) { - inp->lxc.c = HCL_OOCI_EOF; + inp->lxc.c = HAK_OOCI_EOF; inp->lxc.l.line = inp->line; inp->lxc.l.colm = inp->colm; inp->lxc.l.file = inp->name; @@ -408,7 +408,7 @@ static int _get_char (hcl_t* hcl, hcl_io_cciarg_t* inp) { /* inp->lxc.c is a previous character. the new character * to be read is still in the buffer (inp->buf). - * hcl->cu->curinp->colm has been incremented when the previous + * hak->cu->curinp->colm has been incremented when the previous * character has been read. */ if (inp->line > 1 && inp->colm == 2 && inp->nl != inp->lxc.c) { @@ -439,80 +439,80 @@ static int _get_char (hcl_t* hcl, hcl_io_cciarg_t* inp) return 1; /* indicate that a normal character has been read */ } -static int get_char (hcl_t* hcl) +static int get_char (hak_t* hak) { int n; - if (hcl->c->nungots > 0) + if (hak->c->nungots > 0) { /* something in the unget buffer */ - hcl->c->lxc = hcl->c->ungot[--hcl->c->nungots]; + hak->c->lxc = hak->c->ungot[--hak->c->nungots]; return 0; } - n = _get_char(hcl, hcl->c->curinp); - if (n >= 0) hcl->c->lxc = hcl->c->curinp->lxc; + n = _get_char(hak, hak->c->curinp); + if (n >= 0) hak->c->lxc = hak->c->curinp->lxc; return n; } -static hcl_tok_type_t classify_ident_token (hcl_t* hcl, const hcl_oocs_t* v) +static hak_tok_type_t classify_ident_token (hak_t* hak, const hak_oocs_t* v) { - hcl_oow_t i; + hak_oow_t i; static struct { int voca_id; - hcl_tok_type_t type; + hak_tok_type_t type; } tab[] = { - { VOCA_KW_NIL, HCL_TOK_NIL }, - { VOCA_KW_TRUE, HCL_TOK_TRUE }, - { VOCA_KW_FALSE, HCL_TOK_FALSE }, - { VOCA_KW_SELF, HCL_TOK_SELF }, - { VOCA_KW_SUPER, HCL_TOK_SUPER }, + { VOCA_KW_NIL, HAK_TOK_NIL }, + { VOCA_KW_TRUE, HAK_TOK_TRUE }, + { VOCA_KW_FALSE, HAK_TOK_FALSE }, + { VOCA_KW_SELF, HAK_TOK_SELF }, + { VOCA_KW_SUPER, HAK_TOK_SUPER }, - { VOCA_KW_CLASS, HCL_TOK_CLASS }, - { VOCA_KW_FUN, HCL_TOK_FUN }, - { VOCA_KW_VAR, HCL_TOK_VAR }, - { VOCA_KW_DO, HCL_TOK_DO }, - { VOCA_KW_IF, HCL_TOK_IF }, - { VOCA_KW_ELIF, HCL_TOK_ELIF }, - { VOCA_KW_ELSE, HCL_TOK_ELSE }, - { VOCA_KW_THROW, HCL_TOK_THROW }, - { VOCA_KW_TRY, HCL_TOK_TRY }, - { VOCA_KW_CATCH, HCL_TOK_CATCH }, - { VOCA_KW_BREAK, HCL_TOK_BREAK }, - { VOCA_KW_CONTINUE, HCL_TOK_CONTINUE }, - { VOCA_KW_UNTIL, HCL_TOK_UNTIL }, - { VOCA_KW_WHILE, HCL_TOK_WHILE }, - { VOCA_KW_RETURN, HCL_TOK_RETURN }, - { VOCA_KW_REVERT, HCL_TOK_REVERT }, - { VOCA_KW_AND, HCL_TOK_AND }, - { VOCA_KW_OR, HCL_TOK_OR }, - { VOCA_KW_PLUS, HCL_TOK_PLUS }, - { VOCA_KW_SET, HCL_TOK_SET }, - { VOCA_KW_SET_R, HCL_TOK_SET_R } + { VOCA_KW_CLASS, HAK_TOK_CLASS }, + { VOCA_KW_FUN, HAK_TOK_FUN }, + { VOCA_KW_VAR, HAK_TOK_VAR }, + { VOCA_KW_DO, HAK_TOK_DO }, + { VOCA_KW_IF, HAK_TOK_IF }, + { VOCA_KW_ELIF, HAK_TOK_ELIF }, + { VOCA_KW_ELSE, HAK_TOK_ELSE }, + { VOCA_KW_THROW, HAK_TOK_THROW }, + { VOCA_KW_TRY, HAK_TOK_TRY }, + { VOCA_KW_CATCH, HAK_TOK_CATCH }, + { VOCA_KW_BREAK, HAK_TOK_BREAK }, + { VOCA_KW_CONTINUE, HAK_TOK_CONTINUE }, + { VOCA_KW_UNTIL, HAK_TOK_UNTIL }, + { VOCA_KW_WHILE, HAK_TOK_WHILE }, + { VOCA_KW_RETURN, HAK_TOK_RETURN }, + { VOCA_KW_REVERT, HAK_TOK_REVERT }, + { VOCA_KW_AND, HAK_TOK_AND }, + { VOCA_KW_OR, HAK_TOK_OR }, + { VOCA_KW_PLUS, HAK_TOK_PLUS }, + { VOCA_KW_SET, HAK_TOK_SET }, + { VOCA_KW_SET_R, HAK_TOK_SET_R } }; - for (i = 0; i < HCL_COUNTOF(tab); i++) + for (i = 0; i < HAK_COUNTOF(tab); i++) { int vid = tab[i].voca_id; - if (hcl_comp_oochars(v->ptr, v->len, vocas[vid].str, vocas[vid].len) == 0) return tab[i].type; + if (hak_comp_oochars(v->ptr, v->len, vocas[vid].str, vocas[vid].len) == 0) return tab[i].type; } - return HCL_TOK_IDENT; + return HAK_TOK_IDENT; } -static int is_sr_name_in_use (hcl_t* hcl, const hcl_ooch_t* sr_name) +static int is_sr_name_in_use (hak_t* hak, const hak_ooch_t* sr_name) { /* [NOTE] * this is very error prone. if there are changes in refernece * points of this sr_name in the source code, this function also * must be modifed. */ - hcl_io_cciarg_t* cur; + hak_io_cciarg_t* cur; - if (hcl->c->synerr.loc.file == sr_name) return 1; + if (hak->c->synerr.loc.file == sr_name) return 1; - cur = hcl->c->curinp; + cur = hak->c->curinp; while (cur) { if (cur->lxc.l.file == sr_name) return 1; @@ -521,122 +521,122 @@ static int is_sr_name_in_use (hcl_t* hcl, const hcl_ooch_t* sr_name) return 0; } -static void clear_sr_names (hcl_t* hcl) +static void clear_sr_names (hak_t* hak) { - hcl_link_t* cur; + hak_link_t* cur; - HCL_ASSERT(hcl, hcl->c != HCL_NULL); + HAK_ASSERT(hak, hak->c != HAK_NULL); - while (hcl->c->sr_names) + while (hak->c->sr_names) { - cur = hcl->c->sr_names; - hcl->c->sr_names = cur->link; - hcl_freemem(hcl, cur); + cur = hak->c->sr_names; + hak->c->sr_names = cur->link; + hak_freemem(hak, cur); } } -static const hcl_ooch_t* add_sr_name (hcl_t* hcl, const hcl_oocs_t* name) +static const hak_ooch_t* add_sr_name (hak_t* hak, const hak_oocs_t* name) { - hcl_link_t* link; - hcl_ooch_t* nptr; + hak_link_t* link; + hak_ooch_t* nptr; /* TODO: make search faster */ - link = hcl->c->sr_names; + link = hak->c->sr_names; while (link) { - nptr = (hcl_ooch_t*)(link + 1); - if (hcl_comp_oochars_oocstr(name->ptr, name->len, nptr) == 0) return nptr; + nptr = (hak_ooch_t*)(link + 1); + if (hak_comp_oochars_oocstr(name->ptr, name->len, nptr) == 0) return nptr; link = link->link; } - link = (hcl_link_t*)hcl_callocmem(hcl, HCL_SIZEOF(*link) + HCL_SIZEOF(hcl_ooch_t) * (name->len + 1)); - if (HCL_UNLIKELY(!link)) + link = (hak_link_t*)hak_callocmem(hak, HAK_SIZEOF(*link) + HAK_SIZEOF(hak_ooch_t) * (name->len + 1)); + if (HAK_UNLIKELY(!link)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "failed to source name [%.*js] - %js", name->len, name->ptr, orgmsg); - return HCL_NULL; + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "failed to source name [%.*js] - %js", name->len, name->ptr, orgmsg); + return HAK_NULL; } - nptr = (hcl_ooch_t*)(link + 1); + nptr = (hak_ooch_t*)(link + 1); - hcl_copy_oochars (nptr, name->ptr, name->len); + hak_copy_oochars (nptr, name->ptr, name->len); nptr[name->len] = '\0'; - link->link = hcl->c->sr_names; - hcl->c->sr_names = link; + link->link = hak->c->sr_names; + hak->c->sr_names = link; return nptr; } /* -------------------------------------------------------------------------- */ -static HCL_INLINE int enter_list (hcl_t* hcl, const hcl_loc_t* loc, int flagv) +static HAK_INLINE int enter_list (hak_t* hak, const hak_loc_t* loc, int flagv) { - hcl_rstl_t* rstl; - rstl = (hcl_rstl_t*)hcl_callocmem(hcl, HCL_SIZEOF(*rstl)); - if (HCL_UNLIKELY(!rstl)) + hak_rstl_t* rstl; + rstl = (hak_rstl_t*)hak_callocmem(hak, HAK_SIZEOF(*rstl)); + if (HAK_UNLIKELY(!rstl)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "failed to allocate reader stack node - %js", orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "failed to allocate reader stack node - %js", orgmsg); return -1; } rstl->loc = *loc; rstl->flagv = flagv; - rstl->prev = hcl->c->r.st; /* push */ - hcl->c->r.st = rstl; + rstl->prev = hak->c->r.st; /* push */ + hak->c->r.st = rstl; return 0; } -static HCL_INLINE hcl_cnode_t* leave_list (hcl_t* hcl, hcl_loc_t* list_loc, int* flagv, int* oldflagv) +static HAK_INLINE hak_cnode_t* leave_list (hak_t* hak, hak_loc_t* list_loc, int* flagv, int* oldflagv) { - hcl_rstl_t* rstl; - hcl_cnode_t* head, * tail; - hcl_oow_t count; - hcl_loc_t loc; + hak_rstl_t* rstl; + hak_cnode_t* head, * tail; + hak_oow_t count; + hak_loc_t loc; int fv; - hcl_concode_t concode; + hak_concode_t concode; /* the stack must not be empty - cannot leave a list without entering it */ - HCL_ASSERT(hcl, hcl->c->r.st != HCL_NULL); - rstl = hcl->c->r.st; /* get the stack top */ + HAK_ASSERT(hak, hak->c->r.st != HAK_NULL); + rstl = hak->c->r.st; /* get the stack top */ head = rstl->head; tail = rstl->tail; count = rstl->count; fv = rstl->flagv; loc = rstl->loc; - concode = (hcl_concode_t)LIST_FLAG_GET_CONCODE(fv); + concode = (hak_concode_t)LIST_FLAG_GET_CONCODE(fv); - hcl->c->r.st = rstl->prev; /* pop off */ - hcl_freemem(hcl, rstl); /* dispose of the stack node */ + hak->c->r.st = rstl->prev; /* pop off */ + hak_freemem(hak, rstl); /* dispose of the stack node */ if (fv & (COMMAED | COLONED | COLONEQED | BINOPED)) { /* no item after , : := or various binary operators */ - if (concode == HCL_CONCODE_MLIST) + if (concode == HAK_CONCODE_MLIST) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_CALLABLE, TOKEN_LOC(hcl), HCL_NULL, "missing message after receiver"); + hak_setsynerrbfmt(hak, HAK_SYNERR_CALLABLE, TOKEN_LOC(hak), HAK_NULL, "missing message after receiver"); } - else if (concode == HCL_CONCODE_ALIST) + else if (concode == HAK_CONCODE_ALIST) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_RVALUE, TOKEN_LOC(hcl), HCL_NULL, "missing rvalue after :="); + hak_setsynerrbfmt(hak, HAK_SYNERR_RVALUE, TOKEN_LOC(hak), HAK_NULL, "missing rvalue after :="); } - else if (concode == HCL_CONCODE_BLIST) + else if (concode == HAK_CONCODE_BLIST) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_NOVALUE, TOKEN_LOC(hcl), HCL_NULL, "missing expression after binary selector"); + hak_setsynerrbfmt(hak, HAK_SYNERR_NOVALUE, TOKEN_LOC(hak), HAK_NULL, "missing expression after binary selector"); } else { - hcl_synerrnum_t err; - err = (fv & COMMAED)? HCL_SYNERR_COMMANOVALUE: HCL_SYNERR_COLONNOVALUE; - hcl_setsynerr(hcl, err, TOKEN_LOC(hcl), HCL_NULL); + hak_synerrnum_t err; + err = (fv & COMMAED)? HAK_SYNERR_COMMANOVALUE: HAK_SYNERR_COLONNOVALUE; + hak_setsynerr(hak, err, TOKEN_LOC(hak), HAK_NULL); } goto oops; } *list_loc = loc; *oldflagv = fv; - if (!hcl->c->r.st) + if (!hak->c->r.st) { /* the stack is empty after popping. * it is back to the top level. @@ -646,39 +646,39 @@ static HCL_INLINE hcl_cnode_t* leave_list (hcl_t* hcl, hcl_loc_t* list_loc, int* else { /* restore the flag for the outer returning level */ - *flagv = hcl->c->r.st->flagv; + *flagv = hak->c->r.st->flagv; } if (head) { - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(head)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(head)); - if (concode == HCL_CONCODE_ALIST) /* assignment list */ + if (concode == HAK_CONCODE_ALIST) /* assignment list */ { /* sanitize/tranform (var := val) to (set var val) * - note ALIST doesn't contain the := symbol */ - hcl_cnode_t* lval; + hak_cnode_t* lval; #if defined(TRANSFORM_ALIST) - hcl_cnode_t* sym, * newhead; - hcl_oocs_t fake_tok, * fake_tok_ptr = HCL_NULL; + hak_cnode_t* sym, * newhead; + hak_oocs_t fake_tok, * fake_tok_ptr = HAK_NULL; #endif - lval = HCL_CNODE_CONS_CAR(head); - if (lval && HCL_CNODE_IS_ELIST(lval)) + lval = HAK_CNODE_CONS_CAR(head); + if (lval && HAK_CNODE_IS_ELIST(lval)) { /* invalid lvalue - for example, () := 20 */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_LVALUE, HCL_CNODE_GET_LOC(lval), HCL_CNODE_GET_TOK(lval), "bad lvalue - blank expression"); + hak_setsynerrbfmt(hak, HAK_SYNERR_LVALUE, HAK_CNODE_GET_LOC(lval), HAK_CNODE_GET_TOK(lval), "bad lvalue - blank expression"); goto oops; } - else if (lval && HCL_CNODE_IS_CONS_CONCODED(lval, HCL_CONCODE_TUPLE)) + else if (lval && HAK_CNODE_IS_CONS_CONCODED(lval, HAK_CONCODE_TUPLE)) { /* * fun f(a :: b c) { b := (a + 10); c := (a + 20) } * [x, y] := (f 9) ## this kind of expression - translate to set-r x y (f 9) */ - hcl_cnode_t* tmp; + hak_cnode_t* tmp; #if defined(TRANSFORM_ALIST) - hcl_cnode_t* rval; + hak_cnode_t* rval; #endif #if defined(TRANSFORM_ALIST) @@ -687,14 +687,14 @@ static HCL_INLINE hcl_cnode_t* leave_list (hcl_t* hcl, hcl_loc_t* list_loc, int* fake_tok_ptr = &fake_tok; #endif - for (tmp = lval; tmp && HCL_CNODE_IS_CONS(tmp); tmp = HCL_CNODE_CONS_CDR(tmp)) + for (tmp = lval; tmp && HAK_CNODE_IS_CONS(tmp); tmp = HAK_CNODE_CONS_CDR(tmp)) { /* check in advance if the array members are all plain symbols */ - hcl_cnode_t* lcar; - lcar = HCL_CNODE_CONS_CAR(tmp); - if (!HCL_CNODE_IS_SYMBOL_IDENT(lcar) && !HCL_CNODE_IS_DSYMBOL_CLA(lcar)) + hak_cnode_t* lcar; + lcar = HAK_CNODE_CONS_CAR(tmp); + if (!HAK_CNODE_IS_SYMBOL_IDENT(lcar) && !HAK_CNODE_IS_DSYMBOL_CLA(lcar)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_LVALUE, HCL_CNODE_GET_LOC(lval), HCL_CNODE_GET_TOK(lval), "bad lvalue - invalid element in tuple"); + hak_setsynerrbfmt(hak, HAK_SYNERR_LVALUE, HAK_CNODE_GET_LOC(lval), HAK_CNODE_GET_TOK(lval), "bad lvalue - invalid element in tuple"); goto oops; } } @@ -703,14 +703,14 @@ static HCL_INLINE hcl_cnode_t* leave_list (hcl_t* hcl, hcl_loc_t* list_loc, int* /* move the array item up to the main list and join the original lval to the end of it * For [x, y] := (f 9), x and y must be in the same level as set-r after translation. * so make it 'x y (f 9)' first and place set-r in front of it later. */ - rval = HCL_CNODE_CONS_CDR(head); - hcl_freesinglecnode(hcl, head); + rval = HAK_CNODE_CONS_CDR(head); + hak_freesinglecnode(hak, head); head = lval; - for (tmp = lval; tmp && HCL_CNODE_IS_CONS(tmp); tmp = HCL_CNODE_CONS_CDR(tmp)) + for (tmp = lval; tmp && HAK_CNODE_IS_CONS(tmp); tmp = HAK_CNODE_CONS_CDR(tmp)) { - if (!HCL_CNODE_CONS_CDR(tmp)) + if (!HAK_CNODE_CONS_CDR(tmp)) { - HCL_CNODE_CONS_CDR(tmp) = rval; + HAK_CNODE_CONS_CDR(tmp) = rval; break; } } @@ -718,9 +718,9 @@ static HCL_INLINE hcl_cnode_t* leave_list (hcl_t* hcl, hcl_loc_t* list_loc, int* } else { - if (!HCL_CNODE_IS_SYMBOL_IDENT(lval) && !HCL_CNODE_IS_DSYMBOL_CLA(lval)) + if (!HAK_CNODE_IS_SYMBOL_IDENT(lval) && !HAK_CNODE_IS_DSYMBOL_CLA(lval)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_LVALUE, HCL_CNODE_GET_LOC(lval), HCL_CNODE_GET_TOK(lval), "bad lvalue - invalid element"); + hak_setsynerrbfmt(hak, HAK_SYNERR_LVALUE, HAK_CNODE_GET_LOC(lval), HAK_CNODE_GET_TOK(lval), "bad lvalue - invalid element"); goto oops; } #if defined(TRANSFORM_ALIST) @@ -730,68 +730,68 @@ static HCL_INLINE hcl_cnode_t* leave_list (hcl_t* hcl, hcl_loc_t* list_loc, int* #endif } - HCL_ASSERT(hcl, count >= 2); /* the missing rvalue check has been done above */ + HAK_ASSERT(hak, count >= 2); /* the missing rvalue check has been done above */ if (count != 2) { - hcl_cnode_t* rval; - rval = HCL_CNODE_CONS_CDR(head); - rval = HCL_CNODE_CONS_CDR(rval); - rval = HCL_CNODE_CONS_CAR(rval); + hak_cnode_t* rval; + rval = HAK_CNODE_CONS_CDR(head); + rval = HAK_CNODE_CONS_CDR(rval); + rval = HAK_CNODE_CONS_CAR(rval); - hcl_setsynerrbfmt(hcl, HCL_SYNERR_RVALUE, HCL_CNODE_GET_LOC(rval), HCL_CNODE_GET_TOK(rval), "too many rvalues after :="); + hak_setsynerrbfmt(hak, HAK_SYNERR_RVALUE, HAK_CNODE_GET_LOC(rval), HAK_CNODE_GET_TOK(rval), "too many rvalues after :="); goto oops; } #if defined(TRANSFORM_ALIST) - sym = hcl_makecnodesymbol(hcl, 0, &loc, fake_tok_ptr); - if (HCL_UNLIKELY(!sym)) + sym = hak_makecnodesymbol(hak, 0, &loc, fake_tok_ptr); + if (HAK_UNLIKELY(!sym)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "failed to create symbol cnode for := - %js", orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "failed to create symbol cnode for := - %js", orgmsg); goto oops; } /* create a new head joined with set or set-r */ - newhead = hcl_makecnodecons(hcl, 0, &loc, fake_tok_ptr, sym, head); - if (HCL_UNLIKELY(!newhead)) + newhead = hak_makecnodecons(hak, 0, &loc, fake_tok_ptr, sym, head); + if (HAK_UNLIKELY(!newhead)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "failed to create cons cnode for := - %js", orgmsg); - hcl_freecnode(hcl, sym); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "failed to create cons cnode for := - %js", orgmsg); + hak_freecnode(hak, sym); goto oops; } head = newhead; - concode = HCL_CONCODE_XLIST; /* switch back to XLIST */ + concode = HAK_CONCODE_XLIST; /* switch back to XLIST */ #endif } - else if (concode == HCL_CONCODE_BLIST) + else if (concode == HAK_CONCODE_BLIST) { /* x binop y -> binop x y - BLIST contains BINOP in it */ - hcl_cnode_t* x, * binop; + hak_cnode_t* x, * binop; - /*x = HCL_CNODE_CONS_CAR(head);*/ - binop = HCL_CNODE_CONS_CDR(head); + /*x = HAK_CNODE_CONS_CAR(head);*/ + binop = HAK_CNODE_CONS_CDR(head); - HCL_ASSERT(hcl, binop && HCL_CNODE_IS_CONS(binop)); - HCL_ASSERT(hcl, count >= 2); /* the code in can_binop_list() ensures this condition */ + HAK_ASSERT(hak, binop && HAK_CNODE_IS_CONS(binop)); + HAK_ASSERT(hak, count >= 2); /* the code in can_binop_list() ensures this condition */ if (count < 3) { /* for example, 1 + */ - x = HCL_CNODE_CONS_CAR(binop); + x = HAK_CNODE_CONS_CAR(binop); /* with the transformation, the implementation supports two operands and a single binop in an expression. */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_NOVALUE, HCL_CNODE_GET_LOC(x), HCL_NULL, - "no operand after binary selector '%.*js'", HCL_CNODE_GET_TOKLEN(x), HCL_CNODE_GET_TOKPTR(x)); + hak_setsynerrbfmt(hak, HAK_SYNERR_NOVALUE, HAK_CNODE_GET_LOC(x), HAK_NULL, + "no operand after binary selector '%.*js'", HAK_CNODE_GET_TOKLEN(x), HAK_CNODE_GET_TOKPTR(x)); goto oops; } else if (count > 3) { /* for example, 1 + 1 1 */ - x = HCL_CNODE_CONS_CAR(tail); + x = HAK_CNODE_CONS_CAR(tail); /* with the transformation, the implementation supports two operands and a single binop in an expression. */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_NOVALUE, HCL_CNODE_GET_LOC(x), HCL_NULL, - "redundant operand '%.*js'", HCL_CNODE_GET_TOKLEN(x), HCL_CNODE_GET_TOKPTR(x)); + hak_setsynerrbfmt(hak, HAK_SYNERR_NOVALUE, HAK_CNODE_GET_LOC(x), HAK_NULL, + "redundant operand '%.*js'", HAK_CNODE_GET_TOKLEN(x), HAK_CNODE_GET_TOKPTR(x)); goto oops; } @@ -805,56 +805,56 @@ static HCL_INLINE hcl_cnode_t* leave_list (hcl_t* hcl, hcl_loc_t* list_loc, int* * * We keep this part commented out to have this trated as a message * send expression. */ - HCL_CNODE_CONS_CDR(head) = HCL_CNODE_CONS_CDR(binop); - HCL_CNODE_CONS_CDR(binop) = head; + HAK_CNODE_CONS_CDR(head) = HAK_CNODE_CONS_CDR(binop); + HAK_CNODE_CONS_CDR(binop) = head; head = binop; - concode = HCL_CONCODE_XLIST; + concode = HAK_CONCODE_XLIST; #endif } - HCL_CNODE_CONS_CONCODE(head) = concode; - if (fv & AUTO_FORGED) HCL_CNODE_GET_FLAGS(head) |= HCL_CNODE_AUTO_FORGED; + HAK_CNODE_CONS_CONCODE(head) = concode; + if (fv & AUTO_FORGED) HAK_CNODE_GET_FLAGS(head) |= HAK_CNODE_AUTO_FORGED; } else { /* the list is empty */ - head = hcl_makecnodeelist(hcl, ((fv & AUTO_FORGED)? HCL_CNODE_AUTO_FORGED: 0), &loc, concode); - if (HCL_UNLIKELY(!head)) + head = hak_makecnodeelist(hak, ((fv & AUTO_FORGED)? HAK_CNODE_AUTO_FORGED: 0), &loc, concode); + if (HAK_UNLIKELY(!head)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "failed to create empty list - %js", orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "failed to create empty list - %js", orgmsg); } } return head; oops: - if (head) hcl_freecnode(hcl, head); - return HCL_NULL; + if (head) hak_freecnode(hak, head); + return HAK_NULL; } -static HCL_INLINE int can_dot_list (hcl_t* hcl) +static HAK_INLINE int can_dot_list (hak_t* hak) { - hcl_rstl_t* rstl; + hak_rstl_t* rstl; - HCL_ASSERT(hcl, hcl->c->r.st != HCL_NULL); - rstl = hcl->c->r.st; + HAK_ASSERT(hak, hak->c->r.st != HAK_NULL); + rstl = hak->c->r.st; /* mark the state that a dot has appeared in the list */ if (rstl->count <= 0) return 0; - if (LIST_FLAG_GET_CONCODE(rstl->flagv) != HCL_CONCODE_QLIST) return 0; + if (LIST_FLAG_GET_CONCODE(rstl->flagv) != HAK_CONCODE_QLIST) return 0; rstl->flagv |= DOTTED; return 1; } -static HCL_INLINE int can_comma_list (hcl_t* hcl) +static HAK_INLINE int can_comma_list (hak_t* hak) { - hcl_rstl_t* rstl; - hcl_concode_t cc; + hak_rstl_t* rstl; + hak_concode_t cc; - HCL_ASSERT(hcl, hcl->c->r.st != HCL_NULL); - rstl = hcl->c->r.st; + HAK_ASSERT(hak, hak->c->r.st != HAK_NULL); + rstl = hak->c->r.st; if (rstl->count <= 0) return 0; @@ -863,13 +863,13 @@ static HCL_INLINE int can_comma_list (hcl_t* hcl) if (rstl->flagv & (COMMAED | COLONED | COLONEQED | BINOPED)) return 0; - cc = (hcl_concode_t)LIST_FLAG_GET_CONCODE(rstl->flagv); - if (cc == HCL_CONCODE_DIC) + cc = (hak_concode_t)LIST_FLAG_GET_CONCODE(rstl->flagv); + if (cc == HAK_CONCODE_DIC) { if (rstl->count & 1) return 0; } - else if (cc != HCL_CONCODE_ARRAY && cc != HCL_CONCODE_BYTEARRAY && - cc != HCL_CONCODE_CHARARRAY && cc != HCL_CONCODE_TUPLE) + else if (cc != HAK_CONCODE_ARRAY && cc != HAK_CONCODE_BYTEARRAY && + cc != HAK_CONCODE_CHARARRAY && cc != HAK_CONCODE_TUPLE) { return 0; } @@ -878,19 +878,19 @@ static HCL_INLINE int can_comma_list (hcl_t* hcl) return 1; } -static HCL_INLINE int can_colon_list (hcl_t* hcl) +static HAK_INLINE int can_colon_list (hak_t* hak) { - hcl_rstl_t* rstl; - hcl_concode_t cc; + hak_rstl_t* rstl; + hak_concode_t cc; - HCL_ASSERT(hcl, hcl->c->r.st != HCL_NULL); - rstl = hcl->c->r.st; - cc = (hcl_concode_t)LIST_FLAG_GET_CONCODE(rstl->flagv); + HAK_ASSERT(hak, hak->c->r.st != HAK_NULL); + rstl = hak->c->r.st; + cc = (hak_concode_t)LIST_FLAG_GET_CONCODE(rstl->flagv); if (rstl->count <= 0) return 0; /* not allowed at the list beginning */ /* mark the state that a colon has appeared in the list */ - if (cc == HCL_CONCODE_XLIST && HCL_CNODE_IS_FOR_LANG(HCL_CNODE_CONS_CAR(rstl->head))) + if (cc == HAK_CONCODE_XLIST && HAK_CNODE_IS_FOR_LANG(HAK_CNODE_CONS_CAR(rstl->head))) { /* allow a colon if the first element is 'class', 'fun', or some other keywords: * class :superclassame ... @@ -911,27 +911,27 @@ static HCL_INLINE int can_colon_list (hcl_t* hcl) * these class methods and class instantiation methods are supposed to be * implemented elsewhere because ':' has dual use while '::' or ':*' are * independent tokens */ - if (HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(rstl->head), HCL_CNODE_FUN)) + if (HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(rstl->head), HAK_CNODE_FUN)) { - hcl_cnode_t* tmp, * next; - next = HCL_CNODE_CONS_CDR(rstl->head); - HCL_ASSERT(hcl, next != HCL_NULL); - tmp = HCL_CNODE_CONS_CAR(next); /* second item */ + hak_cnode_t* tmp, * next; + next = HAK_CNODE_CONS_CDR(rstl->head); + HAK_ASSERT(hak, next != HAK_NULL); + tmp = HAK_CNODE_CONS_CAR(next); /* second item */ if (rstl->count == 2) { /* fun class:name() *... */ - if (HCL_CNODE_IS_SYMBOL(tmp)) return 2; + if (HAK_CNODE_IS_SYMBOL(tmp)) return 2; } else if (rstl->count == 3) { /* fun(#c) class:name() ... */ - if (HCL_CNODE_IS_CONS_CONCODED(tmp, HCL_CONCODE_XLIST) || - HCL_CNODE_IS_ELIST_CONCODED(tmp, HCL_CONCODE_XLIST)) + if (HAK_CNODE_IS_CONS_CONCODED(tmp, HAK_CONCODE_XLIST) || + HAK_CNODE_IS_ELIST_CONCODED(tmp, HAK_CONCODE_XLIST)) { - next = HCL_CNODE_CONS_CDR(next); - HCL_ASSERT(hcl, next != HCL_NULL); - tmp = HCL_CNODE_CONS_CAR(next); /* third item */ - if (HCL_CNODE_IS_SYMBOL(tmp)) return 2; + next = HAK_CNODE_CONS_CDR(next); + HAK_ASSERT(hak, next != HAK_NULL); + tmp = HAK_CNODE_CONS_CAR(next); /* third item */ + if (HAK_CNODE_IS_SYMBOL(tmp)) return 2; } } } @@ -943,9 +943,9 @@ static HCL_INLINE int can_colon_list (hcl_t* hcl) /* multiple single-colons - e.g. #{ "abc": : 20 } */ if (rstl->flagv & (COMMAED | COLONED | COLONEQED | BINOPED)) return 0; - if (cc == HCL_CONCODE_XLIST) + if (cc == HAK_CONCODE_XLIST) { - hcl_cnode_t* tmp; + hak_cnode_t* tmp; /* method defintion with fun - e.g. fun String:length() * ugly that this reader must know about the meaning of fun */ @@ -953,8 +953,8 @@ static HCL_INLINE int can_colon_list (hcl_t* hcl) /* ugly dual use of a colon sign. switch to MLIST if the first element * is delimited by a colon. e.g. (obj:new 10 20 30) */ - tmp = HCL_CNODE_CONS_CAR(rstl->head); - if (!HCL_CNODE_IS_FOR_DATA(tmp)) + tmp = HAK_CNODE_CONS_CAR(rstl->head); + if (!HAK_CNODE_IS_FOR_DATA(tmp)) { /* check if the first element can refer to or represent an object. * for example, '#[1 2 3]:at 1' is proper message send. @@ -963,10 +963,10 @@ static HCL_INLINE int can_colon_list (hcl_t* hcl) return 0; } - LIST_FLAG_SET_CONCODE(rstl->flagv, HCL_CONCODE_MLIST); + LIST_FLAG_SET_CONCODE(rstl->flagv, HAK_CONCODE_MLIST); rstl->flagv &= ~JSON; } - else if (cc != HCL_CONCODE_DIC) return 0; /* no allowed if not in a dictionary */ + else if (cc != HAK_CONCODE_DIC) return 0; /* no allowed if not in a dictionary */ /* dictionary */ if (!(rstl->count & 1)) return 0; /* not allwed after the value in a dictionary */ @@ -976,39 +976,39 @@ static HCL_INLINE int can_colon_list (hcl_t* hcl) return 1; } -static HCL_INLINE int can_coloneq_list (hcl_t* hcl) +static HAK_INLINE int can_coloneq_list (hak_t* hak) { - hcl_rstl_t* rstl; - hcl_concode_t cc; + hak_rstl_t* rstl; + hak_concode_t cc; - HCL_ASSERT(hcl, hcl->c->r.st != HCL_NULL); - rstl = hcl->c->r.st; + HAK_ASSERT(hak, hak->c->r.st != HAK_NULL); + rstl = hak->c->r.st; if (rstl->count <= 0 || rstl->count >= 2) return 0; /* allowed after the first item only */ /* repeated delimiters - e.g (a := := ...) (a : := ... ) */ if (rstl->flagv & (COMMAED | COLONED | COLONEQED | BINOPED)) return 0; - cc = (hcl_concode_t)LIST_FLAG_GET_CONCODE(rstl->flagv); + cc = (hak_concode_t)LIST_FLAG_GET_CONCODE(rstl->flagv); /* assignment only in XLIST */ - if (cc != HCL_CONCODE_XLIST) return 0; + if (cc != HAK_CONCODE_XLIST) return 0; - LIST_FLAG_SET_CONCODE(rstl->flagv, HCL_CONCODE_ALIST); + LIST_FLAG_SET_CONCODE(rstl->flagv, HAK_CONCODE_ALIST); rstl->flagv |= COLONEQED; return 1; } -static HCL_INLINE int can_binop_list (hcl_t* hcl) +static HAK_INLINE int can_binop_list (hak_t* hak) { - hcl_rstl_t* rstl; - hcl_concode_t cc; + hak_rstl_t* rstl; + hak_concode_t cc; - HCL_ASSERT(hcl, hcl->c->r.st != HCL_NULL); - rstl = hcl->c->r.st; - cc = (hcl_concode_t)LIST_FLAG_GET_CONCODE(rstl->flagv); + HAK_ASSERT(hak, hak->c->r.st != HAK_NULL); + rstl = hak->c->r.st; + cc = (hak_concode_t)LIST_FLAG_GET_CONCODE(rstl->flagv); - if (rstl->count <= 0 || cc == HCL_CONCODE_TUPLE || is_at_block_beginning(hcl)) + if (rstl->count <= 0 || cc == HAK_CONCODE_TUPLE || is_at_block_beginning(hak)) { /* allowed but it must be treated like a normal identifier. * in case of the tuple, chain_to_list() rejects binop symbols. @@ -1024,7 +1024,7 @@ static HCL_INLINE int can_binop_list (hcl_t* hcl) return 1; } - if (rstl->count >= 1 && cc == HCL_CONCODE_XLIST) + if (rstl->count >= 1 && cc == HAK_CONCODE_XLIST) { /* special case: * fun xxx::+() { } @@ -1032,16 +1032,16 @@ static HCL_INLINE int can_binop_list (hcl_t* hcl) */ /* TODO: this whole block is hacky. we may do proper parsing instead of checking the first element is 'fun' */ - if (HCL_CNODE_IS_TYPED(HCL_CNODE_CONS_CAR(rstl->head), HCL_CNODE_FUN)) return 1; + if (HAK_CNODE_IS_TYPED(HAK_CNODE_CONS_CAR(rstl->head), HAK_CNODE_FUN)) return 1; } /* repeated delimiters - e.g (a ++ ++ ...) (a : := ... ) */ if (rstl->flagv & (COMMAED | COLONED | COLONEQED | BINOPED)) return 0; - if (cc == HCL_CONCODE_BLIST) + if (cc == HAK_CONCODE_BLIST) { - hcl_cnode_t* wrap; - hcl_oocs_t fake_tok, * fake_tok_ptr = HCL_NULL; + hak_cnode_t* wrap; + hak_oocs_t fake_tok, * fake_tok_ptr = HAK_NULL; /* revised to BLIST in earlier call. * three elements before this binop. @@ -1061,8 +1061,8 @@ static HCL_INLINE int can_binop_list (hcl_t* hcl) * [TODO] * review this implentation such that the BINOPED flag isn't needed */ - /*HCL_ASSERT(hcl, rstl->count == 2 || rstl->count == 3); this condition is wrong, for say, 1 + 2 3 + 4 */ - HCL_ASSERT(hcl, rstl->count >= 2); + /*HAK_ASSERT(hak, rstl->count == 2 || rstl->count == 3); this condition is wrong, for say, 1 + 2 3 + 4 */ + HAK_ASSERT(hak, rstl->count >= 2); /* [TODO] this condition is a workaround for the failing repetition check. * 1 + + */ @@ -1077,10 +1077,10 @@ static HCL_INLINE int can_binop_list (hcl_t* hcl) /* dirty hack to create a wrapper cell containing the first three items. * TODO: do i have to do this on the caller side of can_binop_list()? */ - HCL_ASSERT(hcl, HCL_CNODE_IS_TYPED(rstl->head, HCL_CNODE_CONS)); - wrap = hcl_makecnodecons(hcl, 0, HCL_CNODE_GET_LOC(rstl->head), fake_tok_ptr, rstl->head, HCL_NULL); - if (HCL_UNLIKELY(!wrap)) return -1; - HCL_CNODE_CONS_CONCODE(rstl->head) = HCL_CONCODE_BLIST; + HAK_ASSERT(hak, HAK_CNODE_IS_TYPED(rstl->head, HAK_CNODE_CONS)); + wrap = hak_makecnodecons(hak, 0, HAK_CNODE_GET_LOC(rstl->head), fake_tok_ptr, rstl->head, HAK_NULL); + if (HAK_UNLIKELY(!wrap)) return -1; + HAK_CNODE_CONS_CONCODE(rstl->head) = HAK_CONCODE_BLIST; rstl->head = wrap; rstl->tail = wrap; @@ -1089,33 +1089,33 @@ static HCL_INLINE int can_binop_list (hcl_t* hcl) else { if (rstl->count >= 2) return 0; /* allowed after the first item only */ - if (cc != HCL_CONCODE_XLIST) return 0; + if (cc != HAK_CONCODE_XLIST) return 0; } - LIST_FLAG_SET_CONCODE(rstl->flagv, HCL_CONCODE_BLIST); /* switch to BLIST as long as a binary operator is seen */ + LIST_FLAG_SET_CONCODE(rstl->flagv, HAK_CONCODE_BLIST); /* switch to BLIST as long as a binary operator is seen */ rstl->flagv |= BINOPED; /* TODO: must remember the actual binop operator token */ return 2; } -static HCL_INLINE void clear_comma_colon_binop_flag (hcl_t* hcl) +static HAK_INLINE void clear_comma_colon_binop_flag (hak_t* hak) { - hcl_rstl_t* rstl; - HCL_ASSERT(hcl, hcl->c->r.st != HCL_NULL); - rstl = hcl->c->r.st; + hak_rstl_t* rstl; + HAK_ASSERT(hak, hak->c->r.st != HAK_NULL); + rstl = hak->c->r.st; rstl->flagv &= ~(COMMAED | COLONED | COLONEQED | BINOPED); } -static int chain_to_list (hcl_t* hcl, hcl_cnode_t* obj, hcl_loc_t* loc) +static int chain_to_list (hak_t* hak, hak_cnode_t* obj, hak_loc_t* loc) { - hcl_rstl_t* rstl; + hak_rstl_t* rstl; int flagv; /*int list_concode;*/ - HCL_ASSERT(hcl, hcl->c->r.st != HCL_NULL); - rstl = hcl->c->r.st; + HAK_ASSERT(hak, hak->c->r.st != HAK_NULL); + rstl = hak->c->r.st; flagv = rstl->flagv; - /*list_concode = (hcl_concode_t)LIST_FLAG_GET_CONCODE(flagv);*/ + /*list_concode = (hak_concode_t)LIST_FLAG_GET_CONCODE(flagv);*/ if (flagv & CLOSED) { @@ -1124,33 +1124,33 @@ static int chain_to_list (hcl_t* hcl, hcl_cnode_t* obj, hcl_loc_t* loc) * you can have only 1 item after the period. this condition * can only be triggered by a wrong qlist where a period is * allowed. so i can safely hard-code the error code to - * HCL_SYNERR_RPAREN */ - hcl_setsynerr(hcl, HCL_SYNERR_RPAREN, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + * HAK_SYNERR_RPAREN */ + hak_setsynerr(hak, HAK_SYNERR_RPAREN, TOKEN_LOC(hak), TOKEN_NAME(hak)); return -1; } else if (flagv & DOTTED) { - hcl_cnode_t* tail; + hak_cnode_t* tail; /* the list must not be empty to have reached the dotted state */ - HCL_ASSERT(hcl, rstl->head != HCL_NULL); - HCL_ASSERT(hcl, rstl->tail != HCL_NULL); - HCL_ASSERT(hcl, rstl->count > 0); + HAK_ASSERT(hak, rstl->head != HAK_NULL); + HAK_ASSERT(hak, rstl->tail != HAK_NULL); + HAK_ASSERT(hak, rstl->count > 0); /* chain the object via 'cdr' of the tail cell */ tail = rstl->tail; - HCL_ASSERT(hcl, tail != HCL_NULL); - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(tail)); + HAK_ASSERT(hak, tail != HAK_NULL); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(tail)); - if (HCL_CNODE_IS_CONS(obj) && HCL_CNODE_CONS_CONCODE(obj) != HCL_CONCODE_QLIST) + if (HAK_CNODE_IS_CONS(obj) && HAK_CNODE_CONS_CONCODE(obj) != HAK_CONCODE_QLIST) { - hcl_cnode_t* shell; + hak_cnode_t* shell; /* if the last element is another non-data list * for example, #( 1 2 . #[ 3 4 5 ]) * use a shell node to wrap the actual object list node head * for the compiler. */ - shell = hcl_makecnodeshell(hcl, 0, HCL_CNODE_GET_LOC(obj), obj); - if (HCL_UNLIKELY(!shell)) return -1; + shell = hak_makecnodeshell(hak, 0, HAK_CNODE_GET_LOC(obj), obj); + if (HAK_UNLIKELY(!shell)) return -1; tail->u.cons.cdr = shell; } else @@ -1167,22 +1167,22 @@ static int chain_to_list (hcl_t* hcl, hcl_cnode_t* obj, hcl_loc_t* loc) } else { - hcl_cnode_t* cons, * tail; - hcl_oocs_t fake_tok, * fake_tok_ptr = HCL_NULL; + hak_cnode_t* cons, * tail; + hak_oocs_t fake_tok, * fake_tok_ptr = HAK_NULL; int concode; if ((flagv & JSON) && rstl->count > 0 && !(flagv & (COMMAED | COLONED))) { /* there is no separator between array/dictionary elements * for instance, [1 2] { 10 20 } */ - hcl_setsynerr(hcl, HCL_SYNERR_NOSEP, TOKEN_LOC(hcl), HCL_NULL); + hak_setsynerr(hak, HAK_SYNERR_NOSEP, TOKEN_LOC(hak), HAK_NULL); return -1; } /* `loc` may be passed in if the added `obj` is a cons cell for another list */ - HCL_ASSERT(hcl, (loc && (HCL_CNODE_IS_CONS(obj) || HCL_CNODE_IS_ELIST(obj))) || (!loc && !HCL_CNODE_IS_CONS(obj))); - concode = HCL_CNODE_IS_CONS(obj)? HCL_CNODE_CONS_CONCODE(obj): - HCL_CNODE_IS_ELIST(obj)? HCL_CNODE_ELIST_CONCODE(obj): -1; + HAK_ASSERT(hak, (loc && (HAK_CNODE_IS_CONS(obj) || HAK_CNODE_IS_ELIST(obj))) || (!loc && !HAK_CNODE_IS_CONS(obj))); + concode = HAK_CNODE_IS_CONS(obj)? HAK_CNODE_CONS_CONCODE(obj): + HAK_CNODE_IS_ELIST(obj)? HAK_CNODE_ELIST_CONCODE(obj): -1; if (concode >= 0) { @@ -1192,16 +1192,16 @@ static int chain_to_list (hcl_t* hcl, hcl_cnode_t* obj, hcl_loc_t* loc) fake_tok_ptr = &fake_tok; } - cons = hcl_makecnodecons(hcl, 0, (loc? loc: HCL_CNODE_GET_LOC(obj)), fake_tok_ptr, obj, HCL_NULL); - if (HCL_UNLIKELY(!cons)) return -1; + cons = hak_makecnodecons(hak, 0, (loc? loc: HAK_CNODE_GET_LOC(obj)), fake_tok_ptr, obj, HAK_NULL); + if (HAK_UNLIKELY(!cons)) return -1; if (rstl->count <= 0) { /* the list head is not set yet. it is the first * element added to the list. let both head and tail * point to the new cons cell */ - HCL_ASSERT(hcl, rstl->tail == HCL_NULL); - HCL_ASSERT(hcl, rstl->head == HCL_NULL); + HAK_ASSERT(hak, rstl->tail == HAK_NULL); + HAK_ASSERT(hak, rstl->head == HAK_NULL); rstl->head = cons; rstl->tail = cons; @@ -1210,7 +1210,7 @@ static int chain_to_list (hcl_t* hcl, hcl_cnode_t* obj, hcl_loc_t* loc) { /* the new cons cell is not the first element. append it to the list */ tail = rstl->tail; - HCL_ASSERT(hcl, HCL_CNODE_IS_CONS(tail)); + HAK_ASSERT(hak, HAK_CNODE_IS_CONS(tail)); tail->u.cons.cdr = cons; rstl->tail = cons; } @@ -1225,7 +1225,7 @@ static int chain_to_list (hcl_t* hcl, hcl_cnode_t* obj, hcl_loc_t* loc) /* ------------------------------------------------------------------------ */ /* TODO: -hcl_cnodetoobj (hcl_t* hcl, hcl_cnode_t* x) +hak_cnodetoobj (hak_t* hak, hak_cnode_t* x) { * drop location information and compose object ?? * is it doable? can convert a dotted symbol to a proper value? @@ -1234,44 +1234,44 @@ hcl_cnodetoobj (hcl_t* hcl, hcl_cnode_t* x) /* ---------------------------------------------------------------------- */ -static int on_fed_cnode (hcl_t* hcl, hcl_cnode_t* obj) +static int on_fed_cnode (hak_t* hak, hak_cnode_t* obj) { /* the default handler for a cnode composed via feeding - just compile the object node. */ - return hcl_compile(hcl, obj, 0); + return hak_compile(hak, obj, 0); } /* ---------------------------------------------------------------------- */ -static void init_feed (hcl_t* hcl) +static void init_feed (hak_t* hak) { - HCL_MEMSET(&hcl->c->feed, 0, HCL_SIZEOF(hcl->c->feed)); - hcl->c->feed.lx.state = HCL_FLX_START; - hcl->c->feed.lx.loc.line = 1; - hcl->c->feed.lx.loc.colm = 1; - hcl->c->feed.lx.loc.file = HCL_NULL; - hcl->c->feed.on_cnode = on_fed_cnode; + HAK_MEMSET(&hak->c->feed, 0, HAK_SIZEOF(hak->c->feed)); + hak->c->feed.lx.state = HAK_FLX_START; + hak->c->feed.lx.loc.line = 1; + hak->c->feed.lx.loc.colm = 1; + hak->c->feed.lx.loc.file = HAK_NULL; + hak->c->feed.on_cnode = on_fed_cnode; } /* ------------------------------------------------------------------------ */ -static int feed_begin_include (hcl_t* hcl) +static int feed_begin_include (hak_t* hak) { - hcl_io_cciarg_t* arg; - const hcl_ooch_t* io_name; + hak_io_cciarg_t* arg; + const hak_ooch_t* io_name; - io_name = add_sr_name(hcl, TOKEN_NAME(hcl)); - if (HCL_UNLIKELY(!io_name)) + io_name = add_sr_name(hak, TOKEN_NAME(hak)); + if (HAK_UNLIKELY(!io_name)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "unable to include %.*js for name registration failure - %js", TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl), orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "unable to include %.*js for name registration failure - %js", TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak), orgmsg); return -1; } - arg = (hcl_io_cciarg_t*)hcl_callocmem(hcl, HCL_SIZEOF(*arg)); - if (HCL_UNLIKELY(!arg)) + arg = (hak_io_cciarg_t*)hak_callocmem(hak, HAK_SIZEOF(*arg)); + if (HAK_UNLIKELY(!arg)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "unable to include %.*js for memory allocation failure - %js", TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl), orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "unable to include %.*js for memory allocation failure - %js", TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak), orgmsg); goto oops; } @@ -1280,80 +1280,80 @@ static int feed_begin_include (hcl_t* hcl) arg->colm = 1; /*arg->nl = '\0';*/ /*arg->byte_oriented = 0;*/ - arg->includer = hcl->c->curinp; + arg->includer = hak->c->curinp; - if (hcl->c->cci_rdr(hcl, HCL_IO_OPEN, arg) <= -1) + if (hak->c->cci_rdr(hak, HAK_IO_OPEN, arg) <= -1) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_setsynerrbfmt(hcl, HCL_SYNERR_INCLUDE, TOKEN_LOC(hcl), TOKEN_NAME(hcl), "unable to include %js - %js", io_name, orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_setsynerrbfmt(hak, HAK_SYNERR_INCLUDE, TOKEN_LOC(hak), TOKEN_NAME(hak), "unable to include %js - %js", io_name, orgmsg); goto oops; } - if (arg->includer == &hcl->c->cci_arg) /* top-level include */ + if (arg->includer == &hak->c->cci_arg) /* top-level include */ { - /* TODO: remove hcl_readbasesrchar() and clean up this part. - * hcl_readbasesrchar(), if called in the middle of feeds, - * updates hcl->c->cci_arg's line and colm. so use a separate + /* TODO: remove hak_readbasesrchar() and clean up this part. + * hak_readbasesrchar(), if called in the middle of feeds, + * updates hak->c->cci_arg's line and colm. so use a separate * field to store the current feed location for now */ - hcl->c->feed.lx._oloc = hcl->c->feed.lx.loc; + hak->c->feed.lx._oloc = hak->c->feed.lx.loc; } else { - arg->includer->name = hcl->c->feed.lx.loc.file; - arg->includer->line = hcl->c->feed.lx.loc.line; - arg->includer->colm = hcl->c->feed.lx.loc.colm; + arg->includer->name = hak->c->feed.lx.loc.file; + arg->includer->line = hak->c->feed.lx.loc.line; + arg->includer->colm = hak->c->feed.lx.loc.colm; } - hcl->c->feed.lx.loc.file = arg->name; - hcl->c->feed.lx.loc.line = arg->line; - hcl->c->feed.lx.loc.colm = arg->colm; + hak->c->feed.lx.loc.file = arg->name; + hak->c->feed.lx.loc.line = arg->line; + hak->c->feed.lx.loc.colm = arg->colm; /* switch to the includee's stream */ - hcl->c->curinp = arg; - /* hcl->c->depth.incl++; */ + hak->c->curinp = arg; + /* hak->c->depth.incl++; */ return 0; oops: if (arg) { - hcl_freemem(hcl, arg); + hak_freemem(hak, arg); } return -1; } -static int feed_end_include (hcl_t* hcl) +static int feed_end_include (hak_t* hak) { int x; - hcl_io_cciarg_t* cur; + hak_io_cciarg_t* cur; - if (hcl->c->curinp == &hcl->c->cci_arg) return 0; /* no include */ + if (hak->c->curinp == &hak->c->cci_arg) return 0; /* no include */ /* if it is an included file, close it and * retry to read a character from an outer file */ - x = hcl->c->cci_rdr(hcl, HCL_IO_CLOSE, hcl->c->curinp); + x = hak->c->cci_rdr(hak, HAK_IO_CLOSE, hak->c->curinp); /* if closing has failed, still destroy the sio structure * first as normal and return the failure below. this way, - * the caller doesn't call HCL_IO_CLOSE on hcl->c->curinp again. */ + * the caller doesn't call HAK_IO_CLOSE on hak->c->curinp again. */ - cur = hcl->c->curinp; - hcl->c->curinp = hcl->c->curinp->includer; + cur = hak->c->curinp; + hak->c->curinp = hak->c->curinp->includer; - if (hcl->c->curinp == &hcl->c->cci_arg) + if (hak->c->curinp == &hak->c->cci_arg) { - hcl->c->feed.lx.loc = hcl->c->feed.lx._oloc; + hak->c->feed.lx.loc = hak->c->feed.lx._oloc; } else { - hcl->c->feed.lx.loc.file = hcl->c->curinp->name; - hcl->c->feed.lx.loc.line = hcl->c->curinp->line; - hcl->c->feed.lx.loc.colm = hcl->c->curinp->colm; + hak->c->feed.lx.loc.file = hak->c->curinp->name; + hak->c->feed.lx.loc.line = hak->c->curinp->line; + hak->c->feed.lx.loc.colm = hak->c->curinp->colm; } - HCL_ASSERT(hcl, cur->name != HCL_NULL); - hcl_freemem(hcl, cur); - /* hcl->parse.depth.incl--; */ + HAK_ASSERT(hak, cur->name != HAK_NULL); + hak_freemem(hak, cur); + /* hak->parse.depth.incl--; */ if (x != 0) { @@ -1361,45 +1361,45 @@ static int feed_end_include (hcl_t* hcl) return -1; } - hcl->c->lxc = hcl->c->curinp->lxc; + hak->c->lxc = hak->c->curinp->lxc; return 1; /* ended the included file successfully */ } -static void feed_reset_reader_state (hcl_t* hcl) +static void feed_reset_reader_state (hak_t* hak) { - hcl_frd_t* frd = &hcl->c->feed.rd; + hak_frd_t* frd = &hak->c->feed.rd; if (frd->obj) { - hcl_freecnode(hcl, frd->obj); - frd->obj = HCL_NULL; + hak_freecnode(hak, frd->obj); + frd->obj = HAK_NULL; } - HCL_MEMSET(frd, 0, HCL_SIZEOF(*frd)); + HAK_MEMSET(frd, 0, HAK_SIZEOF(*frd)); } -static void feed_clean_up_reader_stack (hcl_t* hcl) +static void feed_clean_up_reader_stack (hak_t* hak) { /* clean up the reader stack for a list */ - while (hcl->c->r.st) + while (hak->c->r.st) { - hcl_rstl_t* rstl; - rstl = hcl->c->r.st; - hcl->c->r.st = rstl->prev; - if (rstl->head) hcl_freecnode(hcl, rstl->head); - hcl_freemem(hcl, rstl); + hak_rstl_t* rstl; + rstl = hak->c->r.st; + hak->c->r.st = rstl->prev; + if (rstl->head) hak_freecnode(hak, rstl->head); + hak_freemem(hak, rstl); } } -static int is_at_block_beginning (hcl_t* hcl) +static int is_at_block_beginning (hak_t* hak) { - hcl_rstl_t* rstl; - rstl = hcl->c->r.st; - return !rstl || (LIST_FLAG_GET_CONCODE(rstl->flagv) == HCL_CONCODE_BLOCK && (hcl->c->feed.rd.flagv & AT_BEGINNING)); + hak_rstl_t* rstl; + rstl = hak->c->r.st; + return !rstl || (LIST_FLAG_GET_CONCODE(rstl->flagv) == HAK_CONCODE_BLOCK && (hak->c->feed.rd.flagv & AT_BEGINNING)); } -static int auto_forge_xlist_if_at_block_beginning (hcl_t* hcl, hcl_frd_t* frd) +static int auto_forge_xlist_if_at_block_beginning (hak_t* hak, hak_frd_t* frd) { - if (is_at_block_beginning(hcl)) + if (is_at_block_beginning(hak)) { int forged_flagv; @@ -1407,18 +1407,18 @@ static int auto_forge_xlist_if_at_block_beginning (hcl_t* hcl, hcl_frd_t* frd) * or ALIST after more tokens are processed. so handling of MLIST * or ALIST is needed at this phase */ forged_flagv = AUTO_FORGED; - LIST_FLAG_SET_CONCODE(forged_flagv, HCL_CONCODE_XLIST); + LIST_FLAG_SET_CONCODE(forged_flagv, HAK_CONCODE_XLIST); /* this portion is similar to the code below the start_list label */ - if (frd->level >= HCL_TYPE_MAX(int)) /* the nesting level too deep */ + if (frd->level >= HAK_TYPE_MAX(int)) /* the nesting level too deep */ { - hcl_setsynerr(hcl, HCL_SYNERR_NESTING, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + hak_setsynerr(hak, HAK_SYNERR_NESTING, TOKEN_LOC(hak), TOKEN_NAME(hak)); return -1; } /* since the actual list opener doesn't exist, the location of the * first element wil be the location of the list */ - if (enter_list(hcl, TOKEN_LOC(hcl), forged_flagv) <= -1) return -1; + if (enter_list(hak, TOKEN_LOC(hak), forged_flagv) <= -1) return -1; frd->level++; /* level after the forged list has been added */ /* a new list has been created automatically. unlike normal list creation * by an explicit symbol such as a left parenthesis, a left brace, etc, @@ -1430,45 +1430,45 @@ static int auto_forge_xlist_if_at_block_beginning (hcl_t* hcl, hcl_frd_t* frd) return 0; } -static hcl_cnode_type_t kw_to_cnode_type (int tok_type) +static hak_cnode_type_t kw_to_cnode_type (int tok_type) { - static hcl_cnode_type_t mapping[] = { - HCL_CNODE_NIL, - HCL_CNODE_TRUE, - HCL_CNODE_FALSE, - HCL_CNODE_SELF, - HCL_CNODE_SUPER, + static hak_cnode_type_t mapping[] = { + HAK_CNODE_NIL, + HAK_CNODE_TRUE, + HAK_CNODE_FALSE, + HAK_CNODE_SELF, + HAK_CNODE_SUPER, - HCL_CNODE_CLASS, - HCL_CNODE_FUN, - HCL_CNODE_VAR, - HCL_CNODE_DO, - HCL_CNODE_IF, - HCL_CNODE_ELIF, - HCL_CNODE_ELSE, - HCL_CNODE_THROW, - HCL_CNODE_TRY, - HCL_CNODE_CATCH, - HCL_CNODE_BREAK, - HCL_CNODE_CONTINUE, - HCL_CNODE_UNTIL, - HCL_CNODE_WHILE, - HCL_CNODE_RETURN, - HCL_CNODE_REVERT, - HCL_CNODE_AND, - HCL_CNODE_OR, - HCL_CNODE_PLUS, - HCL_CNODE_SET, - HCL_CNODE_SET_R + HAK_CNODE_CLASS, + HAK_CNODE_FUN, + HAK_CNODE_VAR, + HAK_CNODE_DO, + HAK_CNODE_IF, + HAK_CNODE_ELIF, + HAK_CNODE_ELSE, + HAK_CNODE_THROW, + HAK_CNODE_TRY, + HAK_CNODE_CATCH, + HAK_CNODE_BREAK, + HAK_CNODE_CONTINUE, + HAK_CNODE_UNTIL, + HAK_CNODE_WHILE, + HAK_CNODE_RETURN, + HAK_CNODE_REVERT, + HAK_CNODE_AND, + HAK_CNODE_OR, + HAK_CNODE_PLUS, + HAK_CNODE_SET, + HAK_CNODE_SET_R }; - return mapping[tok_type - HCL_TOK_NIL]; + return mapping[tok_type - HAK_TOK_NIL]; } -static int feed_process_token (hcl_t* hcl) +static int feed_process_token (hak_t* hak) { - hcl_frd_t* frd = &hcl->c->feed.rd; - hcl_loc_t* list_loc = HCL_NULL; + hak_frd_t* frd = &hak->c->feed.rd; + hak_loc_t* list_loc = HAK_NULL; int rbrace_again = 0; int oops_ret = -1; /* TODO: frd->obj and frd->list_loc can become local variables in this function.. */ @@ -1476,25 +1476,25 @@ static int feed_process_token (hcl_t* hcl) /* this function composes an s-expression non-recursively * by manipulating its own stack. */ -/*hcl_logbfmt(hcl, HCL_LOG_STDERR, "TOKEN [%d] EOL[%d]=> [%.*js] type=%d LOC=%d.%d\n", TOKEN_TYPE(hcl), HCL_TOK_EOL, TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl), TOKEN_TYPE(hcl), TOKEN_LOC(hcl)->line, TOKEN_LOC(hcl)->colm);*/ +/*hak_logbfmt(hak, HAK_LOG_STDERR, "TOKEN [%d] EOL[%d]=> [%.*js] type=%d LOC=%d.%d\n", TOKEN_TYPE(hak), HAK_TOK_EOL, TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak), TOKEN_TYPE(hak), TOKEN_LOC(hak)->line, TOKEN_LOC(hak)->colm);*/ if (frd->expect_include_file) { /* the #include directive is an exception to the general expression rule. * use this exceptional code block to divert the major token processing */ - if (TOKEN_TYPE(hcl) == HCL_TOK_EOL) + if (TOKEN_TYPE(hak) == HAK_TOK_EOL) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_STRING, TOKEN_LOC(hcl), HCL_NULL, + hak_setsynerrbfmt(hak, HAK_SYNERR_STRING, TOKEN_LOC(hak), HAK_NULL, "%.*js target not specified", vocas[VOCA_INCLUDE].len, vocas[VOCA_INCLUDE].str); goto oops; } - else if (TOKEN_TYPE(hcl) != HCL_TOK_STRLIT) + else if (TOKEN_TYPE(hak) != HAK_TOK_STRLIT) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_STRING, TOKEN_LOC(hcl), HCL_NULL, + hak_setsynerrbfmt(hak, HAK_SYNERR_STRING, TOKEN_LOC(hak), HAK_NULL, "%.*js target expected in place of '%.*js'", vocas[VOCA_INCLUDE].len, vocas[VOCA_INCLUDE].str, - TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl)); + TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak)); goto oops; } @@ -1508,25 +1508,25 @@ static int feed_process_token (hcl_t* hcl) goto ok; } - if (frd->expect_vlist_item && TOKEN_TYPE(hcl) != HCL_TOK_IDENT && TOKEN_TYPE(hcl) != HCL_TOK_VBAR) + if (frd->expect_vlist_item && TOKEN_TYPE(hak) != HAK_TOK_IDENT && TOKEN_TYPE(hak) != HAK_TOK_VBAR) { - if (TOKEN_TYPE(hcl) == HCL_TOK_EOL) goto ok; /* ignore EOL inside vlist */ + if (TOKEN_TYPE(hak) == HAK_TOK_EOL) goto ok; /* ignore EOL inside vlist */ /* vlist also has special requirement that it can only contain variable names. */ - hcl_setsynerr(hcl, HCL_SYNERR_VARNAME, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + hak_setsynerr(hak, HAK_SYNERR_VARNAME, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto oops; } - switch (TOKEN_TYPE(hcl)) + switch (TOKEN_TYPE(hak)) { default: - hcl_setsynerr(hcl, HCL_SYNERR_ILTOK, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + hak_setsynerr(hak, HAK_SYNERR_ILTOK, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto oops; - case HCL_TOK_EOF: - if (hcl_feedpending(hcl)) + case HAK_TOK_EOF: + if (hak_feedpending(hak)) { - hcl_setsynerr(hcl, HCL_SYNERR_EOF, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + hak_setsynerr(hak, HAK_SYNERR_EOF, TOKEN_LOC(hak), TOKEN_NAME(hak)); } else { @@ -1535,24 +1535,24 @@ static int feed_process_token (hcl_t* hcl) } goto oops; - case HCL_TOK_INCLUDE: + case HAK_TOK_INCLUDE: /* TODO: should i limit where #include can be specified? * disallow it inside a list literal or an array literal? */ frd->expect_include_file = 1; goto ok; - case HCL_TOK_PRAGMA: + case HAK_TOK_PRAGMA: /* TODO: implement this */ - hcl_setsynerr(hcl, HCL_SYNERR_ILTOK, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + hak_setsynerr(hak, HAK_SYNERR_ILTOK, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto oops; - case HCL_TOK_VBAR: + case HAK_TOK_VBAR: if (frd->expect_vlist_item) { /* closer */ int oldflagv; frd->expect_vlist_item = 0; - frd->obj = leave_list(hcl, &frd->list_loc, &frd->flagv, &oldflagv); + frd->obj = leave_list(hak, &frd->list_loc, &frd->flagv, &oldflagv); frd->level--; frd->flagv |= AT_BEGINNING; list_loc = &frd->list_loc; @@ -1567,75 +1567,75 @@ static int feed_process_token (hcl_t* hcl) * it allows only variable names. * it prohibits nesting of other lists */ - if (hcl->c->r.st && (hcl->c->r.st->flagv & DATA_LIST)) + if (hak->c->r.st && (hak->c->r.st->flagv & DATA_LIST)) { /* if the outer list is a data list */ - hcl_setsynerr(hcl, HCL_SYNERR_VBARBANNED, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + hak_setsynerr(hak, HAK_SYNERR_VBARBANNED, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto oops; } /* neither a data list nor an executable list. handle this specially using * a dedicated frd->expect_vlist_item variable */ frd->flagv = 0; - LIST_FLAG_SET_CONCODE(frd->flagv, HCL_CONCODE_VLIST); + LIST_FLAG_SET_CONCODE(frd->flagv, HAK_CONCODE_VLIST); frd->expect_vlist_item = 1; goto start_list; } - case HCL_TOK_LBRACK: /* [ */ - if (auto_forge_xlist_if_at_block_beginning(hcl, frd) <= -1) goto oops; + case HAK_TOK_LBRACK: /* [ */ + if (auto_forge_xlist_if_at_block_beginning(hak, frd) <= -1) goto oops; frd->flagv = DATA_LIST; - LIST_FLAG_SET_CONCODE(frd->flagv, HCL_CONCODE_TUPLE); + LIST_FLAG_SET_CONCODE(frd->flagv, HAK_CONCODE_TUPLE); goto start_list; - case HCL_TOK_APAREN: /* #[ */ + case HAK_TOK_APAREN: /* #[ */ /* #[] is a data list. so let's treat it like other literal * expressions(e.g. 1, "abc"). when it's placed at the block beginning, * create the outer XLIST. */ - if (auto_forge_xlist_if_at_block_beginning(hcl, frd) <= -1) goto oops; + if (auto_forge_xlist_if_at_block_beginning(hak, frd) <= -1) goto oops; frd->flagv = DATA_LIST; - LIST_FLAG_SET_CONCODE(frd->flagv, HCL_CONCODE_ARRAY); + LIST_FLAG_SET_CONCODE(frd->flagv, HAK_CONCODE_ARRAY); goto start_list; - case HCL_TOK_BAPAREN: /* #b[ */ - if (auto_forge_xlist_if_at_block_beginning(hcl, frd) <= -1) goto oops; + case HAK_TOK_BAPAREN: /* #b[ */ + if (auto_forge_xlist_if_at_block_beginning(hak, frd) <= -1) goto oops; frd->flagv = DATA_LIST; - LIST_FLAG_SET_CONCODE(frd->flagv, HCL_CONCODE_BYTEARRAY); + LIST_FLAG_SET_CONCODE(frd->flagv, HAK_CONCODE_BYTEARRAY); goto start_list; - case HCL_TOK_CAPAREN: /* #c[ */ - if (auto_forge_xlist_if_at_block_beginning(hcl, frd) <= -1) goto oops; + case HAK_TOK_CAPAREN: /* #c[ */ + if (auto_forge_xlist_if_at_block_beginning(hak, frd) <= -1) goto oops; frd->flagv = DATA_LIST; - LIST_FLAG_SET_CONCODE(frd->flagv, HCL_CONCODE_CHARARRAY); + LIST_FLAG_SET_CONCODE(frd->flagv, HAK_CONCODE_CHARARRAY); goto start_list; - case HCL_TOK_LBRACE: /* { */ + case HAK_TOK_LBRACE: /* { */ /* this is a block opener itself. auto xlist forge at the block beginning only */ frd->flagv = 0; - LIST_FLAG_SET_CONCODE(frd->flagv, HCL_CONCODE_BLOCK); + LIST_FLAG_SET_CONCODE(frd->flagv, HAK_CONCODE_BLOCK); goto start_list; - case HCL_TOK_DLPAREN: /* #{ */ - if (auto_forge_xlist_if_at_block_beginning(hcl, frd) <= -1) goto oops; + case HAK_TOK_DLPAREN: /* #{ */ + if (auto_forge_xlist_if_at_block_beginning(hak, frd) <= -1) goto oops; frd->flagv = DATA_LIST; - LIST_FLAG_SET_CONCODE(frd->flagv, HCL_CONCODE_DIC); + LIST_FLAG_SET_CONCODE(frd->flagv, HAK_CONCODE_DIC); goto start_list; - case HCL_TOK_QLPAREN: /* #( */ - if (auto_forge_xlist_if_at_block_beginning(hcl, frd) <= -1) goto oops; + case HAK_TOK_QLPAREN: /* #( */ + if (auto_forge_xlist_if_at_block_beginning(hak, frd) <= -1) goto oops; frd->flagv = DATA_LIST; - LIST_FLAG_SET_CONCODE(frd->flagv, HCL_CONCODE_QLIST); + LIST_FLAG_SET_CONCODE(frd->flagv, HAK_CONCODE_QLIST); goto start_list; - #if defined(HCL_TOK_LPARCOLON) - case HCL_TOK_LPARCOLON: /* (: */ + #if defined(HAK_TOK_LPARCOLON) + case HAK_TOK_LPARCOLON: /* (: */ frd->flagv = 0; - LIST_FLAG_SET_CONCODE(frd->flagv, HCL_CONCODE_MLIST); + LIST_FLAG_SET_CONCODE(frd->flagv, HAK_CONCODE_MLIST); goto start_list; #endif - case HCL_TOK_LPAREN: /* ( */ -#if defined(HCL_LANG_AUTO_FORGE_XLIST_ALWAYS) + case HAK_TOK_LPAREN: /* ( */ +#if defined(HAK_LANG_AUTO_FORGE_XLIST_ALWAYS) /* with this feature on, you must not enclose an expression with () * at the beginning of the top-level or at the beginning of a the block level. * If you do enclose an expression with an outer () there, it is interpreted as @@ -1651,169 +1651,169 @@ static int feed_process_token (hcl_t* hcl) * (x 10) 50 ## explicit outer () must not be used here * } */ - if (auto_forge_xlist_if_at_block_beginning(hcl, frd) <= -1) goto oops; + if (auto_forge_xlist_if_at_block_beginning(hak, frd) <= -1) goto oops; #endif frd->flagv = 0; - LIST_FLAG_SET_CONCODE(frd->flagv, HCL_CONCODE_XLIST); + LIST_FLAG_SET_CONCODE(frd->flagv, HAK_CONCODE_XLIST); start_list: - if (frd->level >= HCL_TYPE_MAX(int)) + if (frd->level >= HAK_TYPE_MAX(int)) { /* the nesting level has become too deep */ - hcl_setsynerr(hcl, HCL_SYNERR_NESTING, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + hak_setsynerr(hak, HAK_SYNERR_NESTING, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto oops; } /* push some data to simulate recursion into * a list literal or an array literal */ - if (enter_list(hcl, TOKEN_LOC(hcl), frd->flagv) <= -1) goto oops; + if (enter_list(hak, TOKEN_LOC(hak), frd->flagv) <= -1) goto oops; frd->level++; frd->flagv |= AT_BEGINNING; /* the reader is now at the beginning of a list */ /* read the next token */ goto ok; - case HCL_TOK_DOT: - if (frd->level <= 0 || !can_dot_list(hcl)) + case HAK_TOK_DOT: + if (frd->level <= 0 || !can_dot_list(hak)) { /* cannot have a period: * 1. at the top frd->level - not inside () * 2. at the beginning of a list * 3. inside an array, byte-array, dictionary, xlist */ - hcl_setsynerr(hcl, HCL_SYNERR_DOTBANNED, TOKEN_LOC(hcl), HCL_NULL); + hak_setsynerr(hak, HAK_SYNERR_DOTBANNED, TOKEN_LOC(hak), HAK_NULL); goto oops; } goto ok; - case HCL_TOK_COLON: + case HAK_TOK_COLON: { int n; - if (frd->level <= 0 || !(n = can_colon_list(hcl))) + if (frd->level <= 0 || !(n = can_colon_list(hak))) { - hcl_setsynerr(hcl, HCL_SYNERR_COLONBANNED, TOKEN_LOC(hcl), HCL_NULL); + hak_setsynerr(hak, HAK_SYNERR_COLONBANNED, TOKEN_LOC(hak), HAK_NULL); goto oops; } if (n == 2) { /* this is colon between the class name and the function name for * out-of-class method defintion */ - frd->obj = hcl_makecnodecolon(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + frd->obj = hak_makecnodecolon(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto auto_xlist; } goto ok; } - case HCL_TOK_COLONEQ: - if (frd->level <= 0 || !can_coloneq_list(hcl)) + case HAK_TOK_COLONEQ: + if (frd->level <= 0 || !can_coloneq_list(hak)) { - hcl_setsynerr(hcl, HCL_SYNERR_COLONEQBANNED, TOKEN_LOC(hcl), HCL_NULL); + hak_setsynerr(hak, HAK_SYNERR_COLONEQBANNED, TOKEN_LOC(hak), HAK_NULL); goto oops; } goto ok; - case HCL_TOK_BINOP: + case HAK_TOK_BINOP: { int can = 0; if (frd->level <= 0) { - HCL_ASSERT(hcl, hcl->c->r.st == HCL_NULL); - /*if (hcl->c->r.st) goto banned_binop;*/ + HAK_ASSERT(hak, hak->c->r.st == HAK_NULL); + /*if (hak->c->r.st) goto banned_binop;*/ /* very first even before entering a list including an auto-forged list */ can = 1; } - else if (!(can = can_binop_list(hcl))) + else if (!(can = can_binop_list(hak))) { /*banned_binop:*/ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BANNED, TOKEN_LOC(hcl), HCL_NULL, - "prohibited binary selector '%.*js'", TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl)); + hak_setsynerrbfmt(hak, HAK_SYNERR_BANNED, TOKEN_LOC(hak), HAK_NULL, + "prohibited binary selector '%.*js'", TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak)); goto oops; } else if (can <= -1) goto oops; if (can == 1) goto ident; /* if binop is the first in the list */ - HCL_ASSERT(hcl, can == 2); + HAK_ASSERT(hak, can == 2); #if 0 /* TODO: ... */ - frd->obj = hcl_makecnodebinop(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + frd->obj = hak_makecnodebinop(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto ok; #else goto ident; #endif } - case HCL_TOK_COMMA: - if (frd->level <= 0 || !can_comma_list(hcl)) + case HAK_TOK_COMMA: + if (frd->level <= 0 || !can_comma_list(hak)) { - hcl_setsynerr(hcl, HCL_SYNERR_COMMABANNED, TOKEN_LOC(hcl), HCL_NULL); + hak_setsynerr(hak, HAK_SYNERR_COMMABANNED, TOKEN_LOC(hak), HAK_NULL); goto oops; } goto ok; - case HCL_TOK_EOL: /* EOL returned only under a certain condition */ - case HCL_TOK_SEMICOLON: + case HAK_TOK_EOL: /* EOL returned only under a certain condition */ + case HAK_TOK_SEMICOLON: { int oldflagv; int concode; - hcl_rstl_t* rstl; + hak_rstl_t* rstl; semicolon: /* the parent list(rstl) must be inspected instead of the current * feed/read status pointed to by frd. */ - rstl = hcl->c->r.st; + rstl = hak->c->r.st; if (!rstl) goto ok; /* redundant eol/semicolon */ concode = LIST_FLAG_GET_CONCODE(rstl->flagv); if (!(rstl->flagv & AUTO_FORGED)) { - if (TOKEN_TYPE(hcl) == HCL_TOK_EOL) goto ok; - if (concode == HCL_CONCODE_BLOCK) goto ok; + if (TOKEN_TYPE(hak) == HAK_TOK_EOL) goto ok; + if (concode == HAK_CONCODE_BLOCK) goto ok; - hcl_setsynerr(hcl, HCL_SYNERR_SEMICOLON, TOKEN_LOC(hcl), HCL_NULL); + hak_setsynerr(hak, HAK_SYNERR_SEMICOLON, TOKEN_LOC(hak), HAK_NULL); goto oops; } /* if auto-forged */ #if 0 /* TODO: remove this part if the assertion is confirmed true in the #else part... */ - if (concode != HCL_CONCODE_XLIST && concode != HCL_CONCODE_MLIST && concode != HCL_CONCODE_ALIST && concode != HCL_CONCODE_BLIST) + if (concode != HAK_CONCODE_XLIST && concode != HAK_CONCODE_MLIST && concode != HAK_CONCODE_ALIST && concode != HAK_CONCODE_BLIST) { - hcl_setsynerr(hcl, HCL_SYNERR_UNBALPBB, TOKEN_LOC(hcl), HCL_NULL); + hak_setsynerr(hak, HAK_SYNERR_UNBALPBB, TOKEN_LOC(hak), HAK_NULL); goto oops; } #else - HCL_ASSERT(hcl, concode == HCL_CONCODE_XLIST || concode == HCL_CONCODE_MLIST || concode == HCL_CONCODE_ALIST || concode == HCL_CONCODE_BLIST); + HAK_ASSERT(hak, concode == HAK_CONCODE_XLIST || concode == HAK_CONCODE_MLIST || concode == HAK_CONCODE_ALIST || concode == HAK_CONCODE_BLIST); #endif - frd->obj = leave_list(hcl, &frd->list_loc, &frd->flagv, &oldflagv); + frd->obj = leave_list(hak, &frd->list_loc, &frd->flagv, &oldflagv); frd->level--; frd->flagv |= AT_BEGINNING; /* the current one is over. move on the beginning for the next expression */ list_loc = &frd->list_loc; break; } - case HCL_TOK_RPAREN: /* xlist (), qlist #() */ - case HCL_TOK_RBRACK: /* bytearray #b[], array #[] */ - case HCL_TOK_RBRACE: /* dictionary #{}, block {} */ + case HAK_TOK_RPAREN: /* xlist (), qlist #() */ + case HAK_TOK_RBRACK: /* bytearray #b[], array #[] */ + case HAK_TOK_RBRACE: /* dictionary #{}, block {} */ { int oldflagv; int concode; - hcl_rstl_t* rstl; + hak_rstl_t* rstl; if (frd->level <= 0) { - hcl_setsynerr(hcl, HCL_SYNERR_UNBALPBB, TOKEN_LOC(hcl), HCL_NULL); + hak_setsynerr(hak, HAK_SYNERR_UNBALPBB, TOKEN_LOC(hak), HAK_NULL); goto oops; } - if (TOKEN_TYPE(hcl) == HCL_TOK_RBRACE) + if (TOKEN_TYPE(hak) == HAK_TOK_RBRACE) { - rstl = hcl->c->r.st; /* check the parent, not the current */ + rstl = hak->c->r.st; /* check the parent, not the current */ if (rstl && (rstl->flagv & AUTO_FORGED)) { #if 0 /* the auto-forged list has not been terminated. it must be terminated closed first */ - hcl_setsynerrbfmt(hcl, HCL_SYNERR_SEMICOLON, TOKEN_LOC(hcl), TOKEN_NAME(hcl), "semicolon expected"); + hak_setsynerrbfmt(hak, HAK_SYNERR_SEMICOLON, TOKEN_LOC(hak), TOKEN_NAME(hak), "semicolon expected"); goto oops; #else /* if the expression inside {} is an auto-forged xlist expression and there is no semicolon provided, @@ -1826,17 +1826,17 @@ static int feed_process_token (hcl_t* hcl) rbrace_ok: concode = LIST_FLAG_GET_CONCODE(frd->flagv); - if (concode == HCL_CONCODE_XLIST && (frd->flagv & AUTO_FORGED)) + if (concode == HAK_CONCODE_XLIST && (frd->flagv & AUTO_FORGED)) { /* the auto-created xlist can't be terminated with the regular closing symbol * it must end with the semicolon */ - hcl_setsynerr(hcl, HCL_SYNERR_UNBALPBB, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + hak_setsynerr(hak, HAK_SYNERR_UNBALPBB, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto oops; } - if (cons_info[concode].closer != TOKEN_TYPE(hcl)) + if (cons_info[concode].closer != TOKEN_TYPE(hak)) { - hcl_setsynerr(hcl, cons_info[concode].synerr, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + hak_setsynerr(hak, cons_info[concode].synerr, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto oops; } #if 0 @@ -1859,12 +1859,12 @@ static int feed_process_token (hcl_t* hcl) * with no opening(left) parenthesis, which is * indicated by frd->level<=0. */ - hcl_setsynerr(hcl, HCL_SYNERR_LPAREN, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + hak_setsynerr(hak, HAK_SYNERR_LPAREN, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto oops; } #endif - frd->obj = leave_list(hcl, &frd->list_loc, &frd->flagv, &oldflagv); - if (HCL_LIKELY(frd->obj)) + frd->obj = leave_list(hak, &frd->list_loc, &frd->flagv, &oldflagv); + if (HAK_LIKELY(frd->obj)) { frd->level--; frd->flagv |= AT_BEGINNING; @@ -1873,155 +1873,155 @@ static int feed_process_token (hcl_t* hcl) break; } - case HCL_TOK_NIL: - case HCL_TOK_TRUE: - case HCL_TOK_FALSE: - case HCL_TOK_SELF: - case HCL_TOK_SUPER: + case HAK_TOK_NIL: + case HAK_TOK_TRUE: + case HAK_TOK_FALSE: + case HAK_TOK_SELF: + case HAK_TOK_SUPER: - case HCL_TOK_CLASS: - case HCL_TOK_FUN: - case HCL_TOK_VAR: - case HCL_TOK_DO: - case HCL_TOK_IF: - case HCL_TOK_ELIF: - case HCL_TOK_ELSE: - case HCL_TOK_THROW: - case HCL_TOK_TRY: - case HCL_TOK_CATCH: - case HCL_TOK_BREAK: - case HCL_TOK_CONTINUE: - case HCL_TOK_UNTIL: - case HCL_TOK_WHILE: - case HCL_TOK_RETURN: - case HCL_TOK_REVERT: - case HCL_TOK_AND: - case HCL_TOK_OR: - case HCL_TOK_PLUS: - case HCL_TOK_SET: - case HCL_TOK_SET_R: - frd->obj = hcl_makecnode(hcl, kw_to_cnode_type(TOKEN_TYPE(hcl)), 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + case HAK_TOK_CLASS: + case HAK_TOK_FUN: + case HAK_TOK_VAR: + case HAK_TOK_DO: + case HAK_TOK_IF: + case HAK_TOK_ELIF: + case HAK_TOK_ELSE: + case HAK_TOK_THROW: + case HAK_TOK_TRY: + case HAK_TOK_CATCH: + case HAK_TOK_BREAK: + case HAK_TOK_CONTINUE: + case HAK_TOK_UNTIL: + case HAK_TOK_WHILE: + case HAK_TOK_RETURN: + case HAK_TOK_REVERT: + case HAK_TOK_AND: + case HAK_TOK_OR: + case HAK_TOK_PLUS: + case HAK_TOK_SET: + case HAK_TOK_SET_R: + frd->obj = hak_makecnode(hak, kw_to_cnode_type(TOKEN_TYPE(hak)), 0, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto auto_xlist; - case HCL_TOK_ELLIPSIS: - frd->obj = hcl_makecnodeellipsis(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + case HAK_TOK_ELLIPSIS: + frd->obj = hak_makecnodeellipsis(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto auto_xlist; - case HCL_TOK_TRPCOLONS: - frd->obj = hcl_makecnodetrpcolons(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + case HAK_TOK_TRPCOLONS: + frd->obj = hak_makecnodetrpcolons(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto auto_xlist; - case HCL_TOK_DBLCOLONS: - frd->obj = hcl_makecnodedblcolons(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + case HAK_TOK_DBLCOLONS: + frd->obj = hak_makecnodedblcolons(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto auto_xlist; - case HCL_TOK_COLONGT: - frd->obj = hcl_makecnodecolongt(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + case HAK_TOK_COLONGT: + frd->obj = hak_makecnodecolongt(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto auto_xlist; - case HCL_TOK_COLONLT: - frd->obj = hcl_makecnodecolonlt(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + case HAK_TOK_COLONLT: + frd->obj = hak_makecnodecolonlt(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto auto_xlist; - case HCL_TOK_SMPTRLIT: + case HAK_TOK_SMPTRLIT: { - hcl_oow_t i; - hcl_oow_t v = 0; + hak_oow_t i; + hak_oow_t v = 0; /* 0pNNNN */ - HCL_ASSERT(hcl, TOKEN_NAME_LEN(hcl) >= 3); - for (i = 2; i < TOKEN_NAME_LEN(hcl); i++) + HAK_ASSERT(hak, TOKEN_NAME_LEN(hak) >= 3); + for (i = 2; i < TOKEN_NAME_LEN(hak); i++) { - HCL_ASSERT(hcl, is_xdigit_char(TOKEN_NAME_CHAR(hcl, i))); - v = v * 16 + HCL_CHAR_TO_NUM(TOKEN_NAME_CHAR(hcl, i), 16); + HAK_ASSERT(hak, is_xdigit_char(TOKEN_NAME_CHAR(hak, i))); + v = v * 16 + HAK_CHAR_TO_NUM(TOKEN_NAME_CHAR(hak, i), 16); } - if (!HCL_IN_SMPTR_RANGE(v)) + if (!HAK_IN_SMPTR_RANGE(v)) { - hcl_setsynerr(hcl, HCL_SYNERR_SMPTRLIT, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + hak_setsynerr(hak, HAK_SYNERR_SMPTRLIT, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto oops; } - frd->obj = hcl_makecnodesmptrlit(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl), v); + frd->obj = hak_makecnodesmptrlit(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak), v); goto auto_xlist; } - case HCL_TOK_ERRLIT: + case HAK_TOK_ERRLIT: { - hcl_oow_t i; - hcl_ooi_t v = 0; + hak_oow_t i; + hak_ooi_t v = 0; - HCL_ASSERT(hcl, TOKEN_NAME_LEN(hcl) >= 3); - for (i = 2; i < TOKEN_NAME_LEN(hcl); i++) + HAK_ASSERT(hak, TOKEN_NAME_LEN(hak) >= 3); + for (i = 2; i < TOKEN_NAME_LEN(hak); i++) { - HCL_ASSERT(hcl, is_digit_char(TOKEN_NAME_CHAR(hcl, i))); - v = v * 10 + HCL_CHAR_TO_NUM(TOKEN_NAME_CHAR(hcl, i), 10); + HAK_ASSERT(hak, is_digit_char(TOKEN_NAME_CHAR(hak, i))); + v = v * 10 + HAK_CHAR_TO_NUM(TOKEN_NAME_CHAR(hak, i), 10); - if (v > HCL_ERROR_MAX) + if (v > HAK_ERROR_MAX) { - hcl_setsynerr(hcl, HCL_SYNERR_ERRLIT, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + hak_setsynerr(hak, HAK_SYNERR_ERRLIT, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto oops; } } - frd->obj = hcl_makecnodeerrlit(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl), v); + frd->obj = hak_makecnodeerrlit(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak), v); goto auto_xlist; } - case HCL_TOK_CHARLIT: - frd->obj = hcl_makecnodecharlit(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl), TOKEN_NAME_CHAR(hcl, 0)); + case HAK_TOK_CHARLIT: + frd->obj = hak_makecnodecharlit(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak), TOKEN_NAME_CHAR(hak, 0)); goto auto_xlist; - case HCL_TOK_BCHRLIT: - frd->obj = hcl_makecnodebchrlit(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl), (hcl_oob_t)TOKEN_NAME_CHAR(hcl, 0)); + case HAK_TOK_BCHRLIT: + frd->obj = hak_makecnodebchrlit(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak), (hak_oob_t)TOKEN_NAME_CHAR(hak, 0)); goto auto_xlist; - case HCL_TOK_STRLIT: - frd->obj = hcl_makecnodestrlit(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + case HAK_TOK_STRLIT: + frd->obj = hak_makecnodestrlit(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto auto_xlist; - case HCL_TOK_BSTRLIT: - frd->obj = hcl_makecnodebstrlit(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + case HAK_TOK_BSTRLIT: + frd->obj = hak_makecnodebstrlit(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto auto_xlist; - case HCL_TOK_SYMLIT: - frd->obj = hcl_makecnodesymlit(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + case HAK_TOK_SYMLIT: + frd->obj = hak_makecnodesymlit(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto auto_xlist; - case HCL_TOK_NUMLIT: - frd->obj = hcl_makecnodenumlit(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + case HAK_TOK_NUMLIT: + frd->obj = hak_makecnodenumlit(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto auto_xlist; - case HCL_TOK_RADNUMLIT: - frd->obj = hcl_makecnoderadnumlit(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + case HAK_TOK_RADNUMLIT: + frd->obj = hak_makecnoderadnumlit(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto auto_xlist; - case HCL_TOK_FPDECLIT: - frd->obj = hcl_makecnodefpdeclit(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + case HAK_TOK_FPDECLIT: + frd->obj = hak_makecnodefpdeclit(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto auto_xlist; /* - case HCL_TOK_REAL: - frd->obj = hcl_makecnoderealnum(hcl, HCL_TOK_RVAL(hcl)); + case HAK_TOK_REAL: + frd->obj = hak_makecnoderealnum(hak, HAK_TOK_RVAL(hak)); break; */ - case HCL_TOK_IDENT: + case HAK_TOK_IDENT: ident: - frd->obj = hcl_makecnodesymbol(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); + frd->obj = hak_makecnodesymbol(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak)); goto auto_xlist; - case HCL_TOK_IDENT_DOTTED: - frd->obj = hcl_makecnodedsymbol(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl), 0); + case HAK_TOK_IDENT_DOTTED: + frd->obj = hak_makecnodedsymbol(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak), 0); goto auto_xlist; - case HCL_TOK_IDENT_DOTTED_CLA: - frd->obj = hcl_makecnodedsymbol(hcl, 0, TOKEN_LOC(hcl), TOKEN_NAME(hcl), 1); + case HAK_TOK_IDENT_DOTTED_CLA: + frd->obj = hak_makecnodedsymbol(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak), 1); goto auto_xlist; auto_xlist: if (!frd->obj) goto oops; /* TODO: ugly... resturcture this check and the check 5 lines down */ - if (auto_forge_xlist_if_at_block_beginning(hcl, frd) <= -1) goto oops; + if (auto_forge_xlist_if_at_block_beginning(hak, frd) <= -1) goto oops; break; } @@ -2033,13 +2033,13 @@ static int feed_process_token (hcl_t* hcl) { int oldflagv; - HCL_ASSERT(hcl, frd->level > 0); + HAK_ASSERT(hak, frd->level > 0); /* if so, append the element read into the quote list */ - if (chain_to_list(hcl, obj) <= -1) goto oops; + if (chain_to_list(hak, obj) <= -1) goto oops; /* exit out of the quoted list. the quoted list can have one element only. */ - obj = leave_list(hcl, &flagv, &oldflagv); + obj = leave_list(hak, &flagv, &oldflagv); /* one frd->level up toward the top */ frd->level--; @@ -2052,46 +2052,46 @@ static int feed_process_token (hcl_t* hcl) int n; /* upon exit, we must be at the top level */ - HCL_ASSERT(hcl, frd->flagv & AT_BEGINNING); + HAK_ASSERT(hak, frd->flagv & AT_BEGINNING); - HCL_ASSERT(hcl, hcl->c->r.st == HCL_NULL); - HCL_ASSERT(hcl, frd->obj != HCL_NULL); + HAK_ASSERT(hak, hak->c->r.st == HAK_NULL); + HAK_ASSERT(hak, frd->obj != HAK_NULL); - n = hcl->c->feed.on_cnode(hcl, frd->obj); - hcl_freecnode(hcl, frd->obj); /* not needed any more */ - frd->obj = HCL_NULL; + n = hak->c->feed.on_cnode(hak, frd->obj); + hak_freecnode(hak, frd->obj); /* not needed any more */ + frd->obj = HAK_NULL; if (n <= -1) goto oops; } else { /* if not, append the element read into the current list. * if we are not at the top frd->level, we must be in a list */ - if (chain_to_list(hcl, frd->obj, list_loc) <= -1) goto oops; + if (chain_to_list(hak, frd->obj, list_loc) <= -1) goto oops; /* because it has been chained to the list, it belongs to the current stack top. * mark that obj is not stand-alone by nullifying it. without this, if a jump * is made to oops, the momory block pointed to by obj may get freed twice. */ - frd->obj = HCL_NULL; + frd->obj = HAK_NULL; - clear_comma_colon_binop_flag(hcl); + clear_comma_colon_binop_flag(hak); } ok: if (rbrace_again) { rbrace_again = 0; - list_loc = HCL_NULL; + list_loc = HAK_NULL; goto rbrace_ok; } return 0; oops: - feed_reset_reader_state(hcl); + feed_reset_reader_state(hak); /* clean up the reader stack for a list */ - feed_clean_up_reader_stack(hcl); - feed_continue(hcl, HCL_FLX_START); + feed_clean_up_reader_stack(hak); + feed_continue(hak, HAK_FLX_START); return oops_ret; } @@ -2100,8 +2100,8 @@ oops: struct delim_token_t { const char* t_value; - hcl_oow_t t_len; - hcl_tok_type_t t_type; + hak_oow_t t_len; + hak_tok_type_t t_type; }; typedef struct delim_token_t delim_token_t; @@ -2123,36 +2123,36 @@ static delim_token_t delim_token_tab[] = * however, # is included in is_delim_char(). */ - { "(", 1, HCL_TOK_LPAREN }, -#if defined(HCL_TOK_LPARCOLON) - { "(:", 2, HCL_TOK_LPARCOLON }, + { "(", 1, HAK_TOK_LPAREN }, +#if defined(HAK_TOK_LPARCOLON) + { "(:", 2, HAK_TOK_LPARCOLON }, #endif - { ")", 1, HCL_TOK_RPAREN }, + { ")", 1, HAK_TOK_RPAREN }, - { "[", 1, HCL_TOK_LBRACK }, - { "]", 1, HCL_TOK_RBRACK }, + { "[", 1, HAK_TOK_LBRACK }, + { "]", 1, HAK_TOK_RBRACK }, - { "{", 1, HCL_TOK_LBRACE }, - { "}", 1, HCL_TOK_RBRACE }, + { "{", 1, HAK_TOK_LBRACE }, + { "}", 1, HAK_TOK_RBRACE }, - { "|", 1, HCL_TOK_VBAR }, - { ",", 1, HCL_TOK_COMMA }, + { "|", 1, HAK_TOK_VBAR }, + { ",", 1, HAK_TOK_COMMA }, - { ".", 1, HCL_TOK_DOT }, - { "..", 2, HCL_TOK_DBLDOTS }, - { "...", 3, HCL_TOK_ELLIPSIS }, /* for variable arguments */ + { ".", 1, HAK_TOK_DOT }, + { "..", 2, HAK_TOK_DBLDOTS }, + { "...", 3, HAK_TOK_ELLIPSIS }, /* for variable arguments */ - { ":", 1, HCL_TOK_COLON }, /* key-value separator in dictionary or for method call or definition */ - { ":=", 2, HCL_TOK_COLONEQ }, /* assignment */ - { ":>", 2, HCL_TOK_COLONGT }, - { ":<", 2, HCL_TOK_COLONLT }, - { "::", 2, HCL_TOK_DBLCOLONS }, /* superclass, class variables, class methods */ - { ":::", 3, HCL_TOK_TRPCOLONS }, + { ":", 1, HAK_TOK_COLON }, /* key-value separator in dictionary or for method call or definition */ + { ":=", 2, HAK_TOK_COLONEQ }, /* assignment */ + { ":>", 2, HAK_TOK_COLONGT }, + { ":<", 2, HAK_TOK_COLONLT }, + { "::", 2, HAK_TOK_DBLCOLONS }, /* superclass, class variables, class methods */ + { ":::", 3, HAK_TOK_TRPCOLONS }, - { ";", 1, HCL_TOK_SEMICOLON } + { ";", 1, HAK_TOK_SEMICOLON } }; -static int find_delim_token_char (hcl_t* hcl, const hcl_ooci_t c, int row_start, int row_end, int col, hcl_flx_dt_t* dt) +static int find_delim_token_char (hak_t* hak, const hak_ooci_t c, int row_start, int row_end, int col, hak_flx_dt_t* dt) { int found = 0, i; @@ -2171,91 +2171,91 @@ static int find_delim_token_char (hcl_t* hcl, const hcl_ooci_t c, int row_start, return found; } -static HCL_INLINE int feed_wrap_up (hcl_t* hcl, hcl_tok_type_t type) +static HAK_INLINE int feed_wrap_up (hak_t* hak, hak_tok_type_t type) { int n; - SET_TOKEN_TYPE(hcl, type); + SET_TOKEN_TYPE(hak, type); - n = feed_process_token(hcl); + n = feed_process_token(hak); - hcl->c->feed.lx.state = HCL_FLX_START; + hak->c->feed.lx.state = HAK_FLX_START; return n; } -static int feed_wrap_up_with_char (hcl_t* hcl, hcl_ooci_t c, hcl_tok_type_t type) +static int feed_wrap_up_with_char (hak_t* hak, hak_ooci_t c, hak_tok_type_t type) { - ADD_TOKEN_CHAR(hcl, c); - return feed_wrap_up(hcl, type); + ADD_TOKEN_CHAR(hak, c); + return feed_wrap_up(hak, type); } -static int feed_wrap_up_with_str (hcl_t* hcl, const hcl_ooch_t* str, hcl_oow_t len, hcl_tok_type_t type) +static int feed_wrap_up_with_str (hak_t* hak, const hak_ooch_t* str, hak_oow_t len, hak_tok_type_t type) { - ADD_TOKEN_STR(hcl, str, len); - return feed_wrap_up(hcl, type); + ADD_TOKEN_STR(hak, str, len); + return feed_wrap_up(hak, type); } -static void feed_continue (hcl_t* hcl, hcl_flx_state_t state) +static void feed_continue (hak_t* hak, hak_flx_state_t state) { - hcl->c->feed.lx.state = state; + hak->c->feed.lx.state = state; } -static int feed_continue_with_char (hcl_t* hcl, hcl_ooci_t c, hcl_flx_state_t state) +static int feed_continue_with_char (hak_t* hak, hak_ooci_t c, hak_flx_state_t state) { - ADD_TOKEN_CHAR(hcl, c); - hcl->c->feed.lx.state = state; + ADD_TOKEN_CHAR(hak, c); + hak->c->feed.lx.state = state; return 0; } -#define FEED_WRAP_UP(hcl, type) do { if (feed_wrap_up(hcl, type) <= -1) return -1; } while(0) -#define FEED_WRAP_UP_WITH_CHAR(hcl, c, type) do { if (feed_wrap_up_with_char(hcl, c, type) <= -1) return -1; } while(0) -#define FEED_WRAP_UP_WITH_CHARS(hcl, str, len, type) do { if (feed_wrap_up_with_str(hcl, str, len, type) <= -1) return -1; } while(0) -#define FEED_CONTINUE(hcl, state) (feed_continue(hcl, state)) -#define FEED_CONTINUE_WITH_CHAR(hcl, c, state) do { if (feed_continue_with_char(hcl, c, state) <= -1) return -1; } while(0) +#define FEED_WRAP_UP(hak, type) do { if (feed_wrap_up(hak, type) <= -1) return -1; } while(0) +#define FEED_WRAP_UP_WITH_CHAR(hak, c, type) do { if (feed_wrap_up_with_char(hak, c, type) <= -1) return -1; } while(0) +#define FEED_WRAP_UP_WITH_CHARS(hak, str, len, type) do { if (feed_wrap_up_with_str(hak, str, len, type) <= -1) return -1; } while(0) +#define FEED_CONTINUE(hak, state) (feed_continue(hak, state)) +#define FEED_CONTINUE_WITH_CHAR(hak, c, state) do { if (feed_continue_with_char(hak, c, state) <= -1) return -1; } while(0) /* ------------------------------------------------------------------------ */ /* short-cuts to basic lexer data */ -#define FLX_STATE(hcl) ((hcl)->c->feed.lx.state) -#define FLX_LOC(hcl) (&((hcl)->c->feed.lx.loc)) +#define FLX_STATE(hak) ((hak)->c->feed.lx.state) +#define FLX_LOC(hak) (&((hak)->c->feed.lx.loc)) /* short-cuts to lexer state data */ -#define FLX_DT(hcl) (&((hcl)->c->feed.lx.u.dt)) -#define FLX_DI(hcl) (&((hcl)->c->feed.lx.u.di)) -#define FLX_HC(hcl) (&((hcl)->c->feed.lx.u.hc)) -#define FLX_HBC(hcl) (&((hcl)->c->feed.lx.u.hbc)) -#define FLX_HN(hcl) (&((hcl)->c->feed.lx.u.hn)) -#define FLX_HI(hcl) (&((hcl)->c->feed.lx.u.hi)) -#define FLX_PI(hcl) (&((hcl)->c->feed.lx.u.pi)) -#define FLX_BINOP(hcl) (&((hcl)->c->feed.lx.u.binop)) -#define FLX_PN(hcl) (&((hcl)->c->feed.lx.u.pn)) -#define FLX_QT(hcl) (&((hcl)->c->feed.lx.u.qt)) -#define FLX_ST(hcl) (&((hcl)->c->feed.lx.u.st)) -#define FLX_BCP(hcl) (&((hcl)->c->feed.lx.u.bcp)) +#define FLX_DT(hak) (&((hak)->c->feed.lx.u.dt)) +#define FLX_DI(hak) (&((hak)->c->feed.lx.u.di)) +#define FLX_HC(hak) (&((hak)->c->feed.lx.u.hc)) +#define FLX_HBC(hak) (&((hak)->c->feed.lx.u.hbc)) +#define FLX_HN(hak) (&((hak)->c->feed.lx.u.hn)) +#define FLX_HI(hak) (&((hak)->c->feed.lx.u.hi)) +#define FLX_PI(hak) (&((hak)->c->feed.lx.u.pi)) +#define FLX_BINOP(hak) (&((hak)->c->feed.lx.u.binop)) +#define FLX_PN(hak) (&((hak)->c->feed.lx.u.pn)) +#define FLX_QT(hak) (&((hak)->c->feed.lx.u.qt)) +#define FLX_ST(hak) (&((hak)->c->feed.lx.u.st)) +#define FLX_BCP(hak) (&((hak)->c->feed.lx.u.bcp)) -static HCL_INLINE void init_flx_di (hcl_flx_di_t* di) +static HAK_INLINE void init_flx_di (hak_flx_di_t* di) { - HCL_MEMSET(di, 0, HCL_SIZEOF(*di)); + HAK_MEMSET(di, 0, HAK_SIZEOF(*di)); } -static HCL_INLINE void init_flx_hc (hcl_flx_hc_t* hc) +static HAK_INLINE void init_flx_hc (hak_flx_hc_t* hc) { - HCL_MEMSET(hc, 0, HCL_SIZEOF(*hc)); + HAK_MEMSET(hc, 0, HAK_SIZEOF(*hc)); } -static HCL_INLINE void init_flx_hi (hcl_flx_hi_t* hi) +static HAK_INLINE void init_flx_hi (hak_flx_hi_t* hi) { - HCL_MEMSET(hi, 0, HCL_SIZEOF(*hi)); + HAK_MEMSET(hi, 0, HAK_SIZEOF(*hi)); } -static HCL_INLINE void init_flx_hbc (hcl_flx_hbc_t* hbc, hcl_ooch_t start_c) +static HAK_INLINE void init_flx_hbc (hak_flx_hbc_t* hbc, hak_ooch_t start_c) { - HCL_MEMSET(hbc, 0, HCL_SIZEOF(*hbc)); + HAK_MEMSET(hbc, 0, HAK_SIZEOF(*hbc)); hbc->start_c = start_c; } -static HCL_INLINE void init_flx_qt (hcl_flx_qt_t* qt, hcl_tok_type_t tok_type, hcl_synerrnum_t synerr_code, hcl_ooch_t end_char, hcl_ooch_t esc_char, hcl_oow_t min_len, hcl_oow_t max_len, int is_byte) +static HAK_INLINE void init_flx_qt (hak_flx_qt_t* qt, hak_tok_type_t tok_type, hak_synerrnum_t synerr_code, hak_ooch_t end_char, hak_ooch_t esc_char, hak_oow_t min_len, hak_oow_t max_len, int is_byte) { - HCL_MEMSET(qt, 0, HCL_SIZEOF(*qt)); + HAK_MEMSET(qt, 0, HAK_SIZEOF(*qt)); qt->tok_type = tok_type; qt->synerr_code = synerr_code; qt->end_char = end_char; @@ -2265,163 +2265,163 @@ static HCL_INLINE void init_flx_qt (hcl_flx_qt_t* qt, hcl_tok_type_t tok_type, h qt->is_byte = is_byte; } -static HCL_INLINE void init_flx_pi (hcl_flx_pi_t* pi) +static HAK_INLINE void init_flx_pi (hak_flx_pi_t* pi) { - HCL_MEMSET(pi, 0, HCL_SIZEOF(*pi)); + HAK_MEMSET(pi, 0, HAK_SIZEOF(*pi)); } -static HCL_INLINE void init_flx_binop (hcl_flx_binop_t* binop) +static HAK_INLINE void init_flx_binop (hak_flx_binop_t* binop) { - HCL_MEMSET(binop, 0, HCL_SIZEOF(*binop)); + HAK_MEMSET(binop, 0, HAK_SIZEOF(*binop)); } -static HCL_INLINE void init_flx_pn (hcl_flx_pn_t* pn, hcl_ooch_t start_digit) +static HAK_INLINE void init_flx_pn (hak_flx_pn_t* pn, hak_ooch_t start_digit) { - HCL_MEMSET(pn, 0, HCL_SIZEOF(*pn)); + HAK_MEMSET(pn, 0, HAK_SIZEOF(*pn)); pn->start_digit = start_digit; pn->radix = 10; pn->radix_cand = 0; pn->radix_cand_overflown = 0; - pn->tok_type = HCL_TOK_NUMLIT; + pn->tok_type = HAK_TOK_NUMLIT; } -static HCL_INLINE void init_flx_st (hcl_flx_st_t* st, hcl_ooch_t sign_c) +static HAK_INLINE void init_flx_st (hak_flx_st_t* st, hak_ooch_t sign_c) { - HCL_MEMSET(st, 0, HCL_SIZEOF(*st)); + HAK_MEMSET(st, 0, HAK_SIZEOF(*st)); st->sign_c = sign_c; } -static HCL_INLINE void init_flx_bcp (hcl_flx_bcp_t* bcp, hcl_ooch_t start_c) +static HAK_INLINE void init_flx_bcp (hak_flx_bcp_t* bcp, hak_ooch_t start_c) { - HCL_MEMSET(bcp, 0, HCL_SIZEOF(*bcp)); + HAK_MEMSET(bcp, 0, HAK_SIZEOF(*bcp)); bcp->start_c = start_c; } -static void reset_flx_token (hcl_t* hcl) +static void reset_flx_token (hak_t* hak) { /* clear the token name, reset its location */ - SET_TOKEN_TYPE(hcl, HCL_TOK_EOF); /* is it correct? */ - CLEAR_TOKEN_NAME(hcl); - SET_TOKEN_LOC(hcl, &hcl->c->feed.lx.loc); + SET_TOKEN_TYPE(hak, HAK_TOK_EOF); /* is it correct? */ + CLEAR_TOKEN_NAME(hak); + SET_TOKEN_LOC(hak, &hak->c->feed.lx.loc); } -static int flx_start (hcl_t* hcl, hcl_ooci_t c) +static int flx_start (hak_t* hak, hak_ooci_t c) { - HCL_ASSERT(hcl, FLX_STATE(hcl) == HCL_FLX_START); + HAK_ASSERT(hak, FLX_STATE(hak) == HAK_FLX_START); if (is_spacechar(c)) { - if ((hcl->option.trait & HCL_TRAIT_LANG_ENABLE_EOL) && is_linebreak(c)) + if ((hak->option.trait & HAK_TRAIT_LANG_ENABLE_EOL) && is_linebreak(c)) { - reset_flx_token(hcl); - FEED_WRAP_UP_WITH_CHAR(hcl, c, HCL_TOK_EOL); + reset_flx_token(hak); + FEED_WRAP_UP_WITH_CHAR(hak, c, HAK_TOK_EOL); } goto consumed; /* skip spaces */ } - reset_flx_token(hcl); + reset_flx_token(hak); - if (find_delim_token_char(hcl, c, 0, HCL_COUNTOF(delim_token_tab) - 1, 0, FLX_DT(hcl))) + if (find_delim_token_char(hak, c, 0, HAK_COUNTOF(delim_token_tab) - 1, 0, FLX_DT(hak))) { /* the character is one of the first character of a delimiter token such as (, [, :, etc */ - if (FLX_DT(hcl)->row_start == FLX_DT(hcl)->row_end && - FLX_DT(hcl)->col_next == delim_token_tab[FLX_DT(hcl)->row_start].t_len) + if (FLX_DT(hak)->row_start == FLX_DT(hak)->row_end && + FLX_DT(hak)->col_next == delim_token_tab[FLX_DT(hak)->row_start].t_len) { /* single character delimiter token */ - FEED_WRAP_UP_WITH_CHAR(hcl, c, delim_token_tab[FLX_DT(hcl)->row_start].t_type); + FEED_WRAP_UP_WITH_CHAR(hak, c, delim_token_tab[FLX_DT(hak)->row_start].t_type); } else { - FEED_CONTINUE_WITH_CHAR(hcl, c, HCL_FLX_DELIM_TOKEN); /* consume c and move to HCL_FLX_DELIM_TOKEN state */ + FEED_CONTINUE_WITH_CHAR(hak, c, HAK_FLX_DELIM_TOKEN); /* consume c and move to HAK_FLX_DELIM_TOKEN state */ } goto consumed; } switch (c) { - case HCL_OOCI_EOF: + case HAK_OOCI_EOF: /* only EOF of the top-level stream is supposed to be fed in. * the internal logic discard EOFs of included streams */ - FEED_WRAP_UP_WITH_CHARS(hcl, vocas[VOCA_EOF].str, vocas[VOCA_EOF].len, HCL_TOK_EOF); + FEED_WRAP_UP_WITH_CHARS(hak, vocas[VOCA_EOF].str, vocas[VOCA_EOF].len, HAK_TOK_EOF); goto consumed; case '\\': - FEED_CONTINUE_WITH_CHAR(hcl, c, HCL_FLX_BACKSLASHED); + FEED_CONTINUE_WITH_CHAR(hak, c, HAK_FLX_BACKSLASHED); goto consumed; /* this part is never hit because the semicolon sign is part of delim_tok_tab{} TODO: remove this part once the language spec is finalized to not require this case ';': - FEED_CONTINUE_WITH_CHAR(hcl, c, HCL_FLX_COMMENT); + FEED_CONTINUE_WITH_CHAR(hak, c, HAK_FLX_COMMENT); goto consumed; */ case '$': - init_flx_di (FLX_DI(hcl)); - FEED_CONTINUE_WITH_CHAR(hcl, c, HCL_FLX_DOLLARED_IDENT); + init_flx_di (FLX_DI(hak)); + FEED_CONTINUE_WITH_CHAR(hak, c, HAK_FLX_DOLLARED_IDENT); goto consumed; case '#': /* no state date to initialize. just change the state */ - FEED_CONTINUE_WITH_CHAR(hcl, c, HCL_FLX_HMARKED_TOKEN); + FEED_CONTINUE_WITH_CHAR(hak, c, HAK_FLX_HMARKED_TOKEN); goto consumed; case '\"': - init_flx_qt (FLX_QT(hcl), HCL_TOK_STRLIT, HCL_SYNERR_STRLIT, c, '\\', 0, HCL_TYPE_MAX(hcl_oow_t), 0); - FEED_CONTINUE(hcl, HCL_FLX_QUOTED_TOKEN); /* discard the quote itself. move on the the QUOTED_TOKEN state */ + init_flx_qt (FLX_QT(hak), HAK_TOK_STRLIT, HAK_SYNERR_STRLIT, c, '\\', 0, HAK_TYPE_MAX(hak_oow_t), 0); + FEED_CONTINUE(hak, HAK_FLX_QUOTED_TOKEN); /* discard the quote itself. move on the the QUOTED_TOKEN state */ goto consumed; case '\'': - init_flx_qt (FLX_QT(hcl), HCL_TOK_CHARLIT, HCL_SYNERR_CHARLIT, c, '\\', 1, 1, 0); - FEED_CONTINUE(hcl, HCL_FLX_QUOTED_TOKEN); /* discard the quote itself. move on the the QUOTED_TOKEN state */ + init_flx_qt (FLX_QT(hak), HAK_TOK_CHARLIT, HAK_SYNERR_CHARLIT, c, '\\', 1, 1, 0); + FEED_CONTINUE(hak, HAK_FLX_QUOTED_TOKEN); /* discard the quote itself. move on the the QUOTED_TOKEN state */ goto consumed; -#if defined(HCL_OOCH_IS_UCH) && defined(HCL_LANG_ENABLE_WIDE_DELIM) +#if defined(HAK_OOCH_IS_UCH) && defined(HAK_LANG_ENABLE_WIDE_DELIM) case L'\u201C': /* “ ” */ - init_flx_qt (FLX_QT(hcl), HCL_TOK_STRLIT, HCL_SYNERR_STRLIT, L'\u201D', '\\', 0, HCL_TYPE_MAX(hcl_oow_t), 0); - FEED_CONTINUE(hcl, HCL_FLX_QUOTED_TOKEN); /* discard the quote itself. move on the the QUOTED_TOKEN state */ + init_flx_qt (FLX_QT(hak), HAK_TOK_STRLIT, HAK_SYNERR_STRLIT, L'\u201D', '\\', 0, HAK_TYPE_MAX(hak_oow_t), 0); + FEED_CONTINUE(hak, HAK_FLX_QUOTED_TOKEN); /* discard the quote itself. move on the the QUOTED_TOKEN state */ goto consumed; case L'\u2018': /* ‘ ’ */ - init_flx_qt (FLX_QT(hcl), HCL_TOK_CHARLIT, HCL_SYNERR_CHARLIT, L'\u2019', '\\', 1, 1, 0); - FEED_CONTINUE(hcl, HCL_FLX_QUOTED_TOKEN); /* discard the quote itself. move on the the QUOTED_TOKEN state */ + init_flx_qt (FLX_QT(hak), HAK_TOK_CHARLIT, HAK_SYNERR_CHARLIT, L'\u2019', '\\', 1, 1, 0); + FEED_CONTINUE(hak, HAK_FLX_QUOTED_TOKEN); /* discard the quote itself. move on the the QUOTED_TOKEN state */ goto consumed; #endif case '+': case '-': - init_flx_st (FLX_ST(hcl), c); - FEED_CONTINUE_WITH_CHAR(hcl, c, HCL_FLX_SIGNED_TOKEN); + init_flx_st (FLX_ST(hak), c); + FEED_CONTINUE_WITH_CHAR(hak, c, HAK_FLX_SIGNED_TOKEN); goto consumed; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': - init_flx_pn (FLX_PN(hcl), c); - FEED_CONTINUE(hcl, HCL_FLX_PLAIN_NUMBER); + init_flx_pn (FLX_PN(hak), c); + FEED_CONTINUE(hak, HAK_FLX_PLAIN_NUMBER); goto not_consumed; case 'B': /* for charcter/string prefixed with B,b,C,c */ case 'b': case 'C': case 'c': - init_flx_bcp(FLX_BCP(hcl), c); - FEED_CONTINUE_WITH_CHAR(hcl, c, HCL_FLX_BC_PREFIX); + init_flx_bcp(FLX_BCP(hak), c); + FEED_CONTINUE_WITH_CHAR(hak, c, HAK_FLX_BC_PREFIX); goto consumed; default: if (is_binop_char(c)) { - init_flx_binop (FLX_BINOP(hcl)); - FEED_CONTINUE(hcl, HCL_FLX_BINOP); + init_flx_binop (FLX_BINOP(hak)); + FEED_CONTINUE(hak, HAK_FLX_BINOP); } else if (is_lead_ident_char(c)) { - init_flx_pi (FLX_PI(hcl)); - FEED_CONTINUE(hcl, HCL_FLX_PLAIN_IDENT); + init_flx_pi (FLX_PI(hak)); + FEED_CONTINUE(hak, HAK_FLX_PLAIN_IDENT); } else { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BACKSLASH, TOKEN_LOC(hcl), HCL_NULL, "invalid token character - %c", c); + hak_setsynerrbfmt(hak, HAK_SYNERR_BACKSLASH, TOKEN_LOC(hak), HAK_NULL, "invalid token character - %c", c); return -1; } goto not_consumed; @@ -2434,53 +2434,53 @@ not_consumed: return 0; } -static int flx_backslashed (hcl_t* hcl, hcl_ooci_t c) +static int flx_backslashed (hak_t* hak, hak_ooci_t c) { if (is_linebreak(c)) { - FEED_CONTINUE(hcl, HCL_FLX_START); + FEED_CONTINUE(hak, HAK_FLX_START); return 1; /* consumed */ } - hcl_setsynerrbfmt(hcl, HCL_SYNERR_BACKSLASH, TOKEN_LOC(hcl), TOKEN_NAME(hcl), "stray backslash"); + hak_setsynerrbfmt(hak, HAK_SYNERR_BACKSLASH, TOKEN_LOC(hak), TOKEN_NAME(hak), "stray backslash"); return -1; } -static int flx_comment (hcl_t* hcl, hcl_ooci_t c) +static int flx_comment (hak_t* hak, hak_ooci_t c) { if (is_linebreak(c)) { - FEED_CONTINUE(hcl, HCL_FLX_START); + FEED_CONTINUE(hak, HAK_FLX_START); /* don't consume the line break together with the comment text * if a comment text is located at the back of the line in the * LANG_ENABLE_EOL mode. * TODO: Consider removing this check because not consuming it * in another mode doesn't cause a problem. */ - if ((hcl->option.trait & HCL_TRAIT_LANG_ENABLE_EOL)) return 0; /* not consumed */ + if ((hak->option.trait & HAK_TRAIT_LANG_ENABLE_EOL)) return 0; /* not consumed */ } return 1; /* consumed */ } -static int flx_delim_token (hcl_t* hcl, hcl_ooci_t c) +static int flx_delim_token (hak_t* hak, hak_ooci_t c) { - if (find_delim_token_char(hcl, c, FLX_DT(hcl)->row_start, FLX_DT(hcl)->row_end, FLX_DT(hcl)->col_next, FLX_DT(hcl))) + if (find_delim_token_char(hak, c, FLX_DT(hak)->row_start, FLX_DT(hak)->row_end, FLX_DT(hak)->col_next, FLX_DT(hak))) { - if (FLX_DT(hcl)->row_start == FLX_DT(hcl)->row_end && - FLX_DT(hcl)->col_next == delim_token_tab[FLX_DT(hcl)->row_start].t_len) + if (FLX_DT(hak)->row_start == FLX_DT(hak)->row_end && + FLX_DT(hak)->col_next == delim_token_tab[FLX_DT(hak)->row_start].t_len) { - /* complete token and switch to the HCL_FLX_START state */ - FEED_WRAP_UP_WITH_CHAR(hcl, c, delim_token_tab[FLX_DT(hcl)->row_start].t_type); + /* complete token and switch to the HAK_FLX_START state */ + FEED_WRAP_UP_WITH_CHAR(hak, c, delim_token_tab[FLX_DT(hak)->row_start].t_type); } else { - ADD_TOKEN_CHAR(hcl, c); + ADD_TOKEN_CHAR(hak, c); } goto consumed; } else { /* the longest match so far */ - FEED_WRAP_UP(hcl, delim_token_tab[FLX_DT(hcl)->row_start].t_type); + FEED_WRAP_UP(hak, delim_token_tab[FLX_DT(hak)->row_start].t_type); goto not_consumed; } @@ -2491,32 +2491,32 @@ not_consumed: return 0; } -static int flx_dollared_ident (hcl_t* hcl, hcl_ooci_t c) +static int flx_dollared_ident (hak_t* hak, hak_ooci_t c) { - hcl_flx_di_t* di = FLX_DI(hcl); + hak_flx_di_t* di = FLX_DI(hak); /* di->char_count doesn't include the first '$' */ if (is_delim_char(c)) { - hcl_tok_type_t tok_type; + hak_tok_type_t tok_type; if (di->char_count == 0) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ILTOK, FLX_LOC(hcl), HCL_NULL, + hak_setsynerrbfmt(hak, HAK_SYNERR_ILTOK, FLX_LOC(hak), HAK_NULL, "no valid character after dollar sign"); return -1; } - if (get_directive_token_type(hcl, &tok_type) <= -1) + if (get_directive_token_type(hak, &tok_type) <= -1) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ILTOK, TOKEN_LOC(hcl), TOKEN_NAME(hcl), - "invalid dollar-prefixed identifier '%.*js'", TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl)); + hak_setsynerrbfmt(hak, HAK_SYNERR_ILTOK, TOKEN_LOC(hak), TOKEN_NAME(hak), + "invalid dollar-prefixed identifier '%.*js'", TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak)); return -1; } else { - FEED_WRAP_UP(hcl, tok_type); + FEED_WRAP_UP(hak, tok_type); goto not_consumed; } } @@ -2526,23 +2526,23 @@ static int flx_dollared_ident (hcl_t* hcl, hcl_ooci_t c) { if (!is_lead_ident_char(c)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ILTOK, TOKEN_LOC(hcl), HCL_NULL, + hak_setsynerrbfmt(hak, HAK_SYNERR_ILTOK, TOKEN_LOC(hak), HAK_NULL, "'%c' prohibited as first character after '%.*js'", - c, TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl)); + c, TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak)); return -1; } } - ADD_TOKEN_CHAR(hcl, c); + ADD_TOKEN_CHAR(hak, c); di->char_count++; goto consumed; } else { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_ILTOK, TOKEN_LOC(hcl), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_ILTOK, TOKEN_LOC(hak), HAK_NULL, "invalid dollar-prefixed identifier character '%jc' after '%.*js'", c, - TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl)); + TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak)); return -1; } @@ -2553,7 +2553,7 @@ not_consumed: return 0; } -static int flx_hmarked_token (hcl_t* hcl, hcl_ooci_t c) +static int flx_hmarked_token (hak_t* hak, hak_ooci_t c) { /* * #xXXXX hexadecimal @@ -2586,8 +2586,8 @@ static int flx_hmarked_token (hcl_t* hcl, hcl_ooci_t c) if (is_binop_char(c)) { - reset_flx_token(hcl); - FEED_CONTINUE_WITH_CHAR(hcl, c, HCL_FLX_HMARKED_BINOP); + reset_flx_token(hak); + FEED_CONTINUE_WITH_CHAR(hak, c, HAK_FLX_HMARKED_BINOP); goto consumed; } @@ -2598,18 +2598,18 @@ static int flx_hmarked_token (hcl_t* hcl, hcl_ooci_t c) /* ## comment start * #! also comment start. * ; comment start */ - FEED_CONTINUE_WITH_CHAR(hcl, c, HCL_FLX_COMMENT); + FEED_CONTINUE_WITH_CHAR(hak, c, HAK_FLX_COMMENT); goto consumed; /* --------------------------- */ #if 0 case 'x': /* hexadecimal number */ - init_flx_hn (FLX_HN(hcl), HCL_TOK_RADNUMLIT, HCL_SYNERR_NUMLIT, 16); + init_flx_hn (FLX_HN(hak), HAK_TOK_RADNUMLIT, HAK_SYNERR_NUMLIT, 16); goto radixed_number; case 'o': /* octal number */ - init_flx_hn (FLX_HN(hcl), HCL_TOK_RADNUMLIT, HCL_SYNERR_NUMLIT, 8); + init_flx_hn (FLX_HN(hak), HAK_TOK_RADNUMLIT, HAK_SYNERR_NUMLIT, 8); goto radixed_number; #endif @@ -2618,40 +2618,40 @@ static int flx_hmarked_token (hcl_t* hcl, hcl_ooci_t c) case 'c': /* character array */ case 'C': /* #b[ -> byte array, #c[ -> character array */ - init_flx_hbc(FLX_HBC(hcl), c); - FEED_CONTINUE_WITH_CHAR(hcl, c, HCL_FLX_HMARKED_BC); + init_flx_hbc(FLX_HBC(hak), c); + FEED_CONTINUE_WITH_CHAR(hak, c, HAK_FLX_HMARKED_BC); break; /* --------------------------- */ case '\\': - init_flx_hc(FLX_HC(hcl)); - FEED_CONTINUE_WITH_CHAR(hcl, c, HCL_FLX_HMARKED_CHAR); + init_flx_hc(FLX_HC(hak)); + FEED_CONTINUE_WITH_CHAR(hak, c, HAK_FLX_HMARKED_CHAR); goto consumed; /* --------------------------- */ case '[': /* #[ */ - FEED_WRAP_UP_WITH_CHAR(hcl, c, HCL_TOK_APAREN); + FEED_WRAP_UP_WITH_CHAR(hak, c, HAK_TOK_APAREN); goto consumed; case '(': /* #( */ - FEED_WRAP_UP_WITH_CHAR(hcl, c, HCL_TOK_QLPAREN); + FEED_WRAP_UP_WITH_CHAR(hak, c, HAK_TOK_QLPAREN); goto consumed; case '{': /* #{ */ - FEED_WRAP_UP_WITH_CHAR(hcl, c, HCL_TOK_DLPAREN); + FEED_WRAP_UP_WITH_CHAR(hak, c, HAK_TOK_DLPAREN); goto consumed; case '"': /* #" - double-quoted symbol */ - reset_flx_token(hcl); - init_flx_qt(FLX_QT(hcl), HCL_TOK_SYMLIT, HCL_SYNERR_SYMLIT, c, '\\', 0, HCL_TYPE_MAX(hcl_oow_t), 0); - FEED_CONTINUE(hcl, HCL_FLX_QUOTED_TOKEN); /* discard prefix, quote and move on */ + reset_flx_token(hak); + init_flx_qt(FLX_QT(hak), HAK_TOK_SYMLIT, HAK_SYNERR_SYMLIT, c, '\\', 0, HAK_TYPE_MAX(hak_oow_t), 0); + FEED_CONTINUE(hak, HAK_FLX_QUOTED_TOKEN); /* discard prefix, quote and move on */ goto consumed; /* --------------------------- */ default: - init_flx_hi(FLX_HI(hcl)); - reset_flx_token(hcl); /* to discard the leading '#' */ - FEED_CONTINUE(hcl, HCL_FLX_HMARKED_IDENT); + init_flx_hi(FLX_HI(hak)); + reset_flx_token(hak); /* to discard the leading '#' */ + FEED_CONTINUE(hak, HAK_FLX_HMARKED_IDENT); goto not_consumed; } @@ -2662,93 +2662,93 @@ not_consumed: return 0; } -static int flx_hmarked_char (hcl_t* hcl, hcl_ooci_t c) +static int flx_hmarked_char (hak_t* hak, hak_ooci_t c) { - hcl_flx_hc_t* hc = FLX_HC(hcl); + hak_flx_hc_t* hc = FLX_HC(hak); if (is_delim_char(c)) { if (hc->char_count == 0) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_CHARLIT, TOKEN_LOC(hcl), TOKEN_NAME(hcl), - "no valid character in character literal %.*js", TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl)); + hak_setsynerrbfmt(hak, HAK_SYNERR_CHARLIT, TOKEN_LOC(hak), TOKEN_NAME(hak), + "no valid character in character literal %.*js", TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak)); return -1; } - if (TOKEN_NAME_LEN(hcl) >= 4) + if (TOKEN_NAME_LEN(hak) >= 4) { int max_digit_count = 0; - if (TOKEN_NAME_CHAR(hcl, 2) == 'x') + if (TOKEN_NAME_CHAR(hak, 2) == 'x') { - hcl_oow_t i; + hak_oow_t i; max_digit_count = 2; hexcharlit: - if (TOKEN_NAME_LEN(hcl) - 3 > max_digit_count) + if (TOKEN_NAME_LEN(hak) - 3 > max_digit_count) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_CHARLIT, TOKEN_LOC(hcl), TOKEN_NAME(hcl), - "invalid hexadecimal character character literal %.*js", TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl)); + hak_setsynerrbfmt(hak, HAK_SYNERR_CHARLIT, TOKEN_LOC(hak), TOKEN_NAME(hak), + "invalid hexadecimal character character literal %.*js", TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak)); return -1; } c = 0; - for (i = 3; i < TOKEN_NAME_LEN(hcl); i++) + for (i = 3; i < TOKEN_NAME_LEN(hak); i++) { - if (!is_xdigit_char(TOKEN_NAME_CHAR(hcl, i))) + if (!is_xdigit_char(TOKEN_NAME_CHAR(hak, i))) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_CHARLIT, TOKEN_LOC(hcl), TOKEN_NAME(hcl), - "invalid hexadecimal character character literal %.*js", TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl)); + hak_setsynerrbfmt(hak, HAK_SYNERR_CHARLIT, TOKEN_LOC(hak), TOKEN_NAME(hak), + "invalid hexadecimal character character literal %.*js", TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak)); return -1; } - c = c * 16 + HCL_CHAR_TO_NUM(TOKEN_NAME_CHAR(hcl, i), 16); /* don't care if it is for 'p' */ + c = c * 16 + HAK_CHAR_TO_NUM(TOKEN_NAME_CHAR(hak, i), 16); /* don't care if it is for 'p' */ } } - #if (HCL_SIZEOF_OOCH_T >= 2) - else if (TOKEN_NAME_CHAR(hcl, 2) == 'u') + #if (HAK_SIZEOF_OOCH_T >= 2) + else if (TOKEN_NAME_CHAR(hak, 2) == 'u') { max_digit_count = 4; goto hexcharlit; } #endif - #if (HCL_SIZEOF_OOCH_T >= 4) - else if (TOKEN_NAME_CHAR(hcl, 2) == 'U') + #if (HAK_SIZEOF_OOCH_T >= 4) + else if (TOKEN_NAME_CHAR(hak, 2) == 'U') { max_digit_count = 8; goto hexcharlit; } #endif - else if (does_token_name_match(hcl, VOCA_CHAR_BACKSPACE)) c = '\b'; - else if (does_token_name_match(hcl, VOCA_CHAR_LINEFEED)) c = '\n'; - else if (does_token_name_match(hcl, VOCA_CHAR_NEWLINE)) c = '\n'; /* TODO: convert it to host newline convention. how to handle if it's composed of 2 letters like \r\n? */ - else if (does_token_name_match(hcl, VOCA_CHAR_NUL)) c = '\0'; /* null character. not the object null */ - else if (does_token_name_match(hcl, VOCA_CHAR_PAGE)) c = '\f'; - else if (does_token_name_match(hcl, VOCA_CHAR_RETURN)) c = '\r'; - else if (does_token_name_match(hcl, VOCA_CHAR_RUBOUT)) c = '\x7F'; /* DEL */ - else if (does_token_name_match(hcl, VOCA_CHAR_SPACE)) c = ' '; - else if (does_token_name_match(hcl, VOCA_CHAR_TAB)) c = '\t'; - else if (does_token_name_match(hcl, VOCA_CHAR_VTAB)) c = '\v'; + else if (does_token_name_match(hak, VOCA_CHAR_BACKSPACE)) c = '\b'; + else if (does_token_name_match(hak, VOCA_CHAR_LINEFEED)) c = '\n'; + else if (does_token_name_match(hak, VOCA_CHAR_NEWLINE)) c = '\n'; /* TODO: convert it to host newline convention. how to handle if it's composed of 2 letters like \r\n? */ + else if (does_token_name_match(hak, VOCA_CHAR_NUL)) c = '\0'; /* null character. not the object null */ + else if (does_token_name_match(hak, VOCA_CHAR_PAGE)) c = '\f'; + else if (does_token_name_match(hak, VOCA_CHAR_RETURN)) c = '\r'; + else if (does_token_name_match(hak, VOCA_CHAR_RUBOUT)) c = '\x7F'; /* DEL */ + else if (does_token_name_match(hak, VOCA_CHAR_SPACE)) c = ' '; + else if (does_token_name_match(hak, VOCA_CHAR_TAB)) c = '\t'; + else if (does_token_name_match(hak, VOCA_CHAR_VTAB)) c = '\v'; else { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_CHARLIT, TOKEN_LOC(hcl), TOKEN_NAME(hcl), - "invalid character literal %.*js", TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl)); + hak_setsynerrbfmt(hak, HAK_SYNERR_CHARLIT, TOKEN_LOC(hak), TOKEN_NAME(hak), + "invalid character literal %.*js", TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak)); return -1; } } else { - HCL_ASSERT(hcl, TOKEN_NAME_LEN(hcl) == 3); - c = TOKEN_NAME_CHAR(hcl, 2); + HAK_ASSERT(hak, TOKEN_NAME_LEN(hak) == 3); + c = TOKEN_NAME_CHAR(hak, 2); } /* reset the token name to the converted character */ - CLEAR_TOKEN_NAME(hcl); - ADD_TOKEN_CHAR(hcl, c); - FEED_WRAP_UP(hcl, HCL_TOK_CHARLIT); + CLEAR_TOKEN_NAME(hak); + ADD_TOKEN_CHAR(hak, c); + FEED_WRAP_UP(hak, HAK_TOK_CHARLIT); goto not_consumed; } else { - ADD_TOKEN_CHAR(hcl, c); + ADD_TOKEN_CHAR(hak, c); hc->char_count++; goto consumed; } @@ -2760,25 +2760,25 @@ not_consumed: return 0; } -static int flx_hmarked_bc (hcl_t* hcl, hcl_ooci_t c) +static int flx_hmarked_bc (hak_t* hak, hak_ooci_t c) { - hcl_flx_hbc_t* hb = FLX_HBC(hcl); + hak_flx_hbc_t* hb = FLX_HBC(hak); if (c == '[') { /* #b[ - byte array starter */ /* TODO: more types.. #c[ #w[ .. #u32[ ... etc */ /* char-array word-array 32bit-int-array etc */ - hcl_tok_type_t tt; - tt = (hb->start_c == 'b' || hb->start_c == 'B')? HCL_TOK_BAPAREN: HCL_TOK_CAPAREN; - FEED_WRAP_UP_WITH_CHAR(hcl, c, tt); + hak_tok_type_t tt; + tt = (hb->start_c == 'b' || hb->start_c == 'B')? HAK_TOK_BAPAREN: HAK_TOK_CAPAREN; + FEED_WRAP_UP_WITH_CHAR(hak, c, tt); goto consumed; } else { - hcl_ooch_t start_c = hb->start_c; - reset_flx_token(hcl); - FEED_CONTINUE_WITH_CHAR(hcl, start_c, HCL_FLX_HMARKED_IDENT); + hak_ooch_t start_c = hb->start_c; + reset_flx_token(hak); + FEED_CONTINUE_WITH_CHAR(hak, start_c, HAK_FLX_HMARKED_IDENT); goto not_consumed; } @@ -2789,24 +2789,24 @@ not_consumed: return 0; } -static int flx_hmarked_binop (hcl_t* hcl, hcl_ooci_t c) +static int flx_hmarked_binop (hak_t* hak, hak_ooci_t c) { if (is_binop_char(c)) { - ADD_TOKEN_CHAR(hcl, c); + ADD_TOKEN_CHAR(hak, c); goto consumed; } else if (is_delim_char(c)) { - FEED_WRAP_UP(hcl, HCL_TOK_SYMLIT); + FEED_WRAP_UP(hak, HAK_TOK_SYMLIT); goto not_consumed; } else { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_SYMLIT, - TOKEN_LOC(hcl), HCL_NULL /* no token name as incomplete */, + hak_setsynerrbfmt(hak, HAK_SYNERR_SYMLIT, + TOKEN_LOC(hak), HAK_NULL /* no token name as incomplete */, "invalid binary selector character '%jc' after #%.*js", - c, TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl)); + c, TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak)); return -1; } @@ -2817,9 +2817,9 @@ not_consumed: return 0; } -static int flx_hmarked_ident (hcl_t* hcl, hcl_ooci_t c) +static int flx_hmarked_ident (hak_t* hak, hak_ooci_t c) { - hcl_flx_hi_t* hi = FLX_HI(hcl); + hak_flx_hi_t* hi = FLX_HI(hak); /* hi->char_count doesn't include the first '#' */ @@ -2827,12 +2827,12 @@ static int flx_hmarked_ident (hcl_t* hcl, hcl_ooci_t c) { if (hi->char_count == 0) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_SYMLIT, FLX_LOC(hcl), HCL_NULL, + hak_setsynerrbfmt(hak, HAK_SYNERR_SYMLIT, FLX_LOC(hak), HAK_NULL, "no valid character after hash sign"); return -1; } - FEED_WRAP_UP(hcl, HCL_TOK_SYMLIT); + FEED_WRAP_UP(hak, HAK_TOK_SYMLIT); goto not_consumed; } else if (is_ident_char(c)) @@ -2841,22 +2841,22 @@ static int flx_hmarked_ident (hcl_t* hcl, hcl_ooci_t c) { if (!is_lead_ident_char(c)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ILTOK, TOKEN_LOC(hcl), HCL_NULL, + hak_setsynerrbfmt(hak, HAK_SYNERR_ILTOK, TOKEN_LOC(hak), HAK_NULL, "'%c' prohibited as first character of symbol", c); return -1; } } - ADD_TOKEN_CHAR(hcl, c); + ADD_TOKEN_CHAR(hak, c); hi->char_count++; goto consumed; } else { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_ILTOK, TOKEN_LOC(hcl), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_ILTOK, TOKEN_LOC(hak), HAK_NULL, "invalid symbol character '%jc' after '%.*js'", c, - TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl)); + TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak)); return -1; } @@ -2867,37 +2867,37 @@ not_consumed: return 0; } -static int flx_plain_ident (hcl_t* hcl, hcl_ooci_t c) /* identifier */ +static int flx_plain_ident (hak_t* hak, hak_ooci_t c) /* identifier */ { - hcl_flx_pi_t* pi = FLX_PI(hcl); + hak_flx_pi_t* pi = FLX_PI(hak); if (is_delim_char(c)) /* [NOTE] . is one of the delimiter character */ { - hcl_oow_t start; - hcl_oocs_t seg; - hcl_tok_type_t tok_type; + hak_oow_t start; + hak_oocs_t seg; + hak_tok_type_t tok_type; if (pi->seg_len == 0) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ILTOK, TOKEN_LOC(hcl), HCL_NULL, - "blank segment after '%.*js'", TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl)); + hak_setsynerrbfmt(hak, HAK_SYNERR_ILTOK, TOKEN_LOC(hak), HAK_NULL, + "blank segment after '%.*js'", TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak)); return -1; } - start = TOKEN_NAME_LEN(hcl) - pi->seg_len; - seg.ptr = &TOKEN_NAME_CHAR(hcl, start); + start = TOKEN_NAME_LEN(hak) - pi->seg_len; + seg.ptr = &TOKEN_NAME_CHAR(hak, start); seg.len = pi->seg_len; if (seg.ptr[seg.len - 1] == '-') { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ILTOK, TOKEN_LOC(hcl), TOKEN_NAME(hcl), + hak_setsynerrbfmt(hak, HAK_SYNERR_ILTOK, TOKEN_LOC(hak), TOKEN_NAME(hak), "'%c' prohibited as last character of identifier or identifier segment", seg.ptr[seg.len - 1]); return -1; } - tok_type = classify_ident_token(hcl, &seg); - if (tok_type != HCL_TOK_IDENT) + tok_type = classify_ident_token(hak, &seg); + if (tok_type != HAK_TOK_IDENT) { - if (pi->seg_count == 0 && (tok_type == HCL_TOK_SELF || tok_type == HCL_TOK_SUPER)) + if (pi->seg_count == 0 && (tok_type == HAK_TOK_SELF || tok_type == HAK_TOK_SUPER)) { /* allowed if it begins with self. or super. */ pi->is_cla = 1; /* mark that it's prefixed with self or super */ @@ -2916,7 +2916,7 @@ static int flx_plain_ident (hcl_t* hcl, hcl_ooci_t c) /* identifier */ if (c == '.') { /* move on to the next segment */ - ADD_TOKEN_CHAR(hcl, c); + ADD_TOKEN_CHAR(hak, c); pi->char_count++; goto consumed; } @@ -2926,21 +2926,21 @@ static int flx_plain_ident (hcl_t* hcl, hcl_ooci_t c) /* identifier */ { if (pi->seg_count == 1) { - FEED_WRAP_UP(hcl, pi->last_non_ident_type); + FEED_WRAP_UP(hak, pi->last_non_ident_type); goto not_consumed; } else { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ILTOK, TOKEN_LOC(hcl), TOKEN_NAME(hcl), "wrong multi-segment identifier"); + hak_setsynerrbfmt(hak, HAK_SYNERR_ILTOK, TOKEN_LOC(hak), TOKEN_NAME(hak), "wrong multi-segment identifier"); return -1; } } /* if single-segmented, perform classification(call classify_ident_token()) again * bcause self and super as the first segment have not been marked as a non-identifier above */ - tok_type = (pi->seg_count == 1? classify_ident_token(hcl, TOKEN_NAME(hcl)): - (pi->is_cla? HCL_TOK_IDENT_DOTTED_CLA: HCL_TOK_IDENT_DOTTED)); - FEED_WRAP_UP(hcl, tok_type); + tok_type = (pi->seg_count == 1? classify_ident_token(hak, TOKEN_NAME(hak)): + (pi->is_cla? HAK_TOK_IDENT_DOTTED_CLA: HAK_TOK_IDENT_DOTTED)); + FEED_WRAP_UP(hak, tok_type); goto not_consumed; } else if (is_ident_char(c)) @@ -2949,24 +2949,24 @@ static int flx_plain_ident (hcl_t* hcl, hcl_ooci_t c) /* identifier */ { if (!is_lead_ident_char(c)) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_ILTOK, TOKEN_LOC(hcl), HCL_NULL, + hak_setsynerrbfmt(hak, HAK_SYNERR_ILTOK, TOKEN_LOC(hak), HAK_NULL, "'%c' prohibited as first character of identifier or identifier segment after '%.*js'", - c, TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl)); + c, TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak)); return -1; } } - ADD_TOKEN_CHAR(hcl, c); + ADD_TOKEN_CHAR(hak, c); pi->char_count++; pi->seg_len++; goto consumed; } else { - hcl_setsynerrbfmt ( - hcl, HCL_SYNERR_ILTOK, TOKEN_LOC(hcl), HCL_NULL, + hak_setsynerrbfmt ( + hak, HAK_SYNERR_ILTOK, TOKEN_LOC(hak), HAK_NULL, "invalid identifier character '%jc' after '%.*js'", c, - TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl)); + TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak)); return -1; } @@ -2977,20 +2977,20 @@ not_consumed: return 0; } -static int flx_binop (hcl_t* hcl, hcl_ooci_t c) /* binary operator/selector */ +static int flx_binop (hak_t* hak, hak_ooci_t c) /* binary operator/selector */ { #if 0 - hcl_flx_binop_t* binop = FLX_BINOP(hcl); + hak_flx_binop_t* binop = FLX_BINOP(hak); #endif if (is_binop_char(c)) { - ADD_TOKEN_CHAR(hcl, c); + ADD_TOKEN_CHAR(hak, c); goto consumed; } else { - FEED_WRAP_UP(hcl, HCL_TOK_BINOP); + FEED_WRAP_UP(hak, HAK_TOK_BINOP); goto not_consumed; } @@ -3001,17 +3001,17 @@ not_consumed: return 0; } -static int flx_plain_number (hcl_t* hcl, hcl_ooci_t c) /* number */ +static int flx_plain_number (hak_t* hak, hak_ooci_t c) /* number */ { - hcl_flx_pn_t* pn = FLX_PN(hcl); + hak_flx_pn_t* pn = FLX_PN(hak); if (is_radixed_digit_char(c, pn->radix)) { - ADD_TOKEN_CHAR(hcl, c); + ADD_TOKEN_CHAR(hak, c); pn->digit_count[pn->fpdec]++; - if (pn->tok_type == HCL_TOK_NUMLIT) + if (pn->tok_type == HAK_TOK_NUMLIT) { - hcl_oow_t cand = pn->radix_cand * 10 + (c - '0'); + hak_oow_t cand = pn->radix_cand * 10 + (c - '0'); if (cand < pn->radix_cand) pn->radix_cand_overflown = 1; pn->radix_cand = cand; } @@ -3023,64 +3023,64 @@ static int flx_plain_number (hcl_t* hcl, hcl_ooci_t c) /* number */ { if (pn->radix != 10) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_NUMLIT, FLX_LOC(hcl), HCL_NULL, + hak_setsynerrbfmt(hak, HAK_SYNERR_NUMLIT, FLX_LOC(hak), HAK_NULL, "invalid use of decimal point after radixed number '%.*js'", - TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl)); + TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak)); return -1; } pn->fpdec = 1; - pn->tok_type = HCL_TOK_FPDECLIT; - ADD_TOKEN_CHAR(hcl, c); + pn->tok_type = HAK_TOK_FPDECLIT; + ADD_TOKEN_CHAR(hak, c); goto consumed; } if (pn->digit_count[0] == 0) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_NUMLIT, TOKEN_LOC(hcl), HCL_NULL, + hak_setsynerrbfmt(hak, HAK_SYNERR_NUMLIT, TOKEN_LOC(hak), HAK_NULL, "invalid numeric literal with no digit after '%.*js'", - TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl)); + TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak)); return -1; } else if (pn->fpdec && pn->digit_count[1] == 0) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_NUMLIT, TOKEN_LOC(hcl), HCL_NULL, + hak_setsynerrbfmt(hak, HAK_SYNERR_NUMLIT, TOKEN_LOC(hak), HAK_NULL, "invalid numeric literal with no digit after decimal point '%.*js'", - TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl)); + TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak)); return -1; } - FEED_WRAP_UP(hcl, pn->tok_type); + FEED_WRAP_UP(hak, pn->tok_type); goto not_consumed; } else { - if (!pn->fpdec && pn->digit_count[0] == 1 && pn->start_digit == '0' && pn->tok_type == HCL_TOK_NUMLIT) + if (!pn->fpdec && pn->digit_count[0] == 1 && pn->start_digit == '0' && pn->tok_type == HAK_TOK_NUMLIT) { /* prefixed with 0 */ switch (c) { case 'x': - pn->tok_type = HCL_TOK_RADNUMLIT; + pn->tok_type = HAK_TOK_RADNUMLIT; pn->radix = 16; break; case 'o': - pn->tok_type = HCL_TOK_RADNUMLIT; + pn->tok_type = HAK_TOK_RADNUMLIT; pn->radix = 8; break; case 'b': - pn->tok_type = HCL_TOK_RADNUMLIT; + pn->tok_type = HAK_TOK_RADNUMLIT; pn->radix = 2; break; case 'p': - pn->tok_type = HCL_TOK_SMPTRLIT; + pn->tok_type = HAK_TOK_SMPTRLIT; pn->radix = 16; break; case 'e': - pn->tok_type = HCL_TOK_ERRLIT; + pn->tok_type = HAK_TOK_ERRLIT; pn->radix = 10; break; @@ -3088,33 +3088,33 @@ static int flx_plain_number (hcl_t* hcl, hcl_ooci_t c) /* number */ goto other_char; } - ADD_TOKEN_CHAR(hcl, c); + ADD_TOKEN_CHAR(hak, c); pn->digit_count[0] = 0; goto consumed; } other_char: - if (!pn->fpdec && pn->tok_type == HCL_TOK_NUMLIT && pn->digit_count[0] > 0 && c == 'r') + if (!pn->fpdec && pn->tok_type == HAK_TOK_NUMLIT && pn->digit_count[0] > 0 && c == 'r') { /* 16rABCD */ if (pn->radix_cand_overflown || pn->radix_cand < 2 || pn->radix_cand > 36) { - hcl_setsynerrbfmt(hcl, HCL_SYNERR_NUMLIT, TOKEN_LOC(hcl), HCL_NULL, + hak_setsynerrbfmt(hak, HAK_SYNERR_NUMLIT, TOKEN_LOC(hak), HAK_NULL, "unsupported radix '%.*js' before '%jc'", - TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl), c); + TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak), c); return -1; } - pn->tok_type = HCL_TOK_RADNUMLIT; + pn->tok_type = HAK_TOK_RADNUMLIT; pn->radix = pn->radix_cand; - ADD_TOKEN_CHAR(hcl, c); + ADD_TOKEN_CHAR(hak, c); pn->digit_count[0] = 0; goto consumed; } - hcl_setsynerrbfmt(hcl, HCL_SYNERR_NUMLIT, TOKEN_LOC(hcl), HCL_NULL, + hak_setsynerrbfmt(hak, HAK_SYNERR_NUMLIT, TOKEN_LOC(hak), HAK_NULL, "invalid numeric literal character '%jc' after '%.*js'", - c, TOKEN_NAME_LEN(hcl), TOKEN_NAME_PTR(hcl)); + c, TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak)); return -1; } @@ -3125,16 +3125,16 @@ not_consumed: return 0; } -static int flx_quoted_token (hcl_t* hcl, hcl_ooci_t c) /* string, character */ +static int flx_quoted_token (hak_t* hak, hak_ooci_t c) /* string, character */ { - hcl_flx_qt_t* qt = FLX_QT(hcl); - hcl_loc_t synerr_loc = *TOKEN_LOC(hcl); + hak_flx_qt_t* qt = FLX_QT(hak); + hak_loc_t synerr_loc = *TOKEN_LOC(hak); - if (c == HCL_OOCI_EOF) goto invalid_token; + if (c == HAK_OOCI_EOF) goto invalid_token; if (qt->is_byte && c > 0xFF) { - synerr_loc = *FLX_LOC(hcl); + synerr_loc = *FLX_LOC(hak); goto invalid_token; } @@ -3149,14 +3149,14 @@ static int flx_quoted_token (hcl_t* hcl, hcl_ooci_t c) /* string, character */ { /* should i limit the max to 0xFF/0377? * if (qt->c_acc > 0377) qt->c_acc = 0377;*/ - ADD_TOKEN_CHAR(hcl, qt->c_acc); + ADD_TOKEN_CHAR(hak, qt->c_acc); qt->escaped = 0; } goto consumed; } else { - ADD_TOKEN_CHAR(hcl, qt->c_acc); + ADD_TOKEN_CHAR(hak, qt->c_acc); qt->escaped = 0; } } @@ -3168,7 +3168,7 @@ static int flx_quoted_token (hcl_t* hcl, hcl_ooci_t c) /* string, character */ qt->digit_count++; if (qt->digit_count >= qt->escaped) { - ADD_TOKEN_CHAR(hcl, qt->c_acc); + ADD_TOKEN_CHAR(hak, qt->c_acc); qt->escaped = 0; } goto consumed; @@ -3179,7 +3179,7 @@ static int flx_quoted_token (hcl_t* hcl, hcl_ooci_t c) /* string, character */ qt->digit_count++; if (qt->digit_count >= qt->escaped) { - ADD_TOKEN_CHAR(hcl, qt->c_acc); + ADD_TOKEN_CHAR(hak, qt->c_acc); qt->escaped = 0; } goto consumed; @@ -3190,19 +3190,19 @@ static int flx_quoted_token (hcl_t* hcl, hcl_ooci_t c) /* string, character */ qt->digit_count++; if (qt->digit_count >= qt->escaped) { - ADD_TOKEN_CHAR(hcl, qt->c_acc); + ADD_TOKEN_CHAR(hak, qt->c_acc); qt->escaped = 0; } goto consumed; } else { - hcl_ooch_t rc; + hak_ooch_t rc; rc = (qt->escaped == 2)? 'x': (qt->escaped == 4)? 'u': 'U'; if (qt->digit_count == 0) - ADD_TOKEN_CHAR(hcl, rc); - else ADD_TOKEN_CHAR(hcl, qt->c_acc); + ADD_TOKEN_CHAR(hak, rc); + else ADD_TOKEN_CHAR(hak, qt->c_acc); qt->escaped = 0; } @@ -3215,10 +3215,10 @@ static int flx_quoted_token (hcl_t* hcl, hcl_ooci_t c) /* string, character */ /* qt->tok_type + qt->is_byte assumes that the token types for * byte-string and byte-character literals are 1 greater than * string and character literals. see the definition of - * hcl_tok_type_t in hcl-prv.h. - * qt->is_byte is always 0 for HCL_TOK_SYMLIT. */ - FEED_WRAP_UP(hcl, (hcl_tok_type_t)(qt->tok_type + qt->is_byte)); /* HCL_TOK_STRLIT or HCL_TOK_CHARLIT */ - if (TOKEN_NAME_LEN(hcl) < qt->min_len) goto invalid_token; + * hak_tok_type_t in hak-prv.h. + * qt->is_byte is always 0 for HAK_TOK_SYMLIT. */ + FEED_WRAP_UP(hak, (hak_tok_type_t)(qt->tok_type + qt->is_byte)); /* HAK_TOK_STRLIT or HAK_TOK_CHARLIT */ + if (TOKEN_NAME_LEN(hak) < qt->min_len) goto invalid_token; goto consumed; } @@ -3253,13 +3253,13 @@ static int flx_quoted_token (hcl_t* hcl, hcl_ooci_t c) /* string, character */ qt->c_acc = 0; goto consumed; } - #if (HCL_SIZEOF_OOCH_T >= 2) + #if (HAK_SIZEOF_OOCH_T >= 2) else if (c == 'u' && !qt->is_byte) { #if 0 if (qt->is_byte) { - synerr_loc = *FLX_LOC(hcl); + synerr_loc = *FLX_LOC(hak); goto invalid_token; } #endif @@ -3269,13 +3269,13 @@ static int flx_quoted_token (hcl_t* hcl, hcl_ooci_t c) /* string, character */ goto consumed; } #endif - #if (HCL_SIZEOF_OOCH_T >= 4) + #if (HAK_SIZEOF_OOCH_T >= 4) else if (c == 'U' && !qt->is_byte) { #if 0 if (qt->is_byte) { - synerr_loc = *FLX_LOC(hcl); + synerr_loc = *FLX_LOC(hak); goto invalid_token; } #endif @@ -3292,60 +3292,60 @@ static int flx_quoted_token (hcl_t* hcl, hcl_ooci_t c) /* string, character */ * an unhandled escape sequence can be handled * outside this function since the escape character * is preserved.*/ - ADD_TOKEN_CHAR(hcl, qt->esc_char); + ADD_TOKEN_CHAR(hak, qt->esc_char); } qt->escaped = 0; } - ADD_TOKEN_CHAR(hcl, c); + ADD_TOKEN_CHAR(hak, c); consumed: - if (TOKEN_NAME_LEN(hcl) > qt->max_len) goto invalid_token; + if (TOKEN_NAME_LEN(hak) > qt->max_len) goto invalid_token; return 1; invalid_token: - hcl_setsynerr(hcl, qt->synerr_code, &synerr_loc, HCL_NULL); + hak_setsynerr(hak, qt->synerr_code, &synerr_loc, HAK_NULL); return -1; } -static int flx_signed_token (hcl_t* hcl, hcl_ooci_t c) +static int flx_signed_token (hak_t* hak, hak_ooci_t c) { - hcl_flx_st_t* st = FLX_ST(hcl); + hak_flx_st_t* st = FLX_ST(hak); - HCL_ASSERT(hcl, st->char_count == 0); + HAK_ASSERT(hak, st->char_count == 0); if (is_digit_char(c)) { /* the sign is not part of the pn->digit_count[0] but is * in the current token buffer. pn->digit_count[0] doesn't * include the sign and calling init_flx_pn() to make it 0 * is good enough. */ - init_flx_pn(FLX_PN(hcl), c); - FEED_CONTINUE(hcl, HCL_FLX_PLAIN_NUMBER); + init_flx_pn(FLX_PN(hak), c); + FEED_CONTINUE(hak, HAK_FLX_PLAIN_NUMBER); goto not_consumed; } else { #if 0 - init_flx_pi(FLX_PI(hcl)); + init_flx_pi(FLX_PI(hak)); /* the sign is already in the token name buffer. * adjust the state data for the sign. */ - HCL_ASSERT(hcl, TOKEN_NAME_LEN(hcl) == 1); - FLX_PI(hcl)->char_count++; - FLX_PI(hcl)->seg_len++; + HAK_ASSERT(hak, TOKEN_NAME_LEN(hak) == 1); + FLX_PI(hak)->char_count++; + FLX_PI(hak)->seg_len++; /* let refeeding of 'c' happen at the next iteration */ - FEED_CONTINUE(hcl, HCL_FLX_PLAIN_IDENT); + FEED_CONTINUE(hak, HAK_FLX_PLAIN_IDENT); goto not_consumed; #else /* the leading sign must be + or - and must be one of the binop chars. */ - HCL_ASSERT(hcl, is_binop_char(st->sign_c));/* must be + or - and they must be one of the binop chars. */ + HAK_ASSERT(hak, is_binop_char(st->sign_c));/* must be + or - and they must be one of the binop chars. */ /* switch to binop mode */ - init_flx_binop(FLX_BINOP(hcl)); - HCL_ASSERT(hcl, TOKEN_NAME_LEN(hcl) == 1); - FEED_CONTINUE(hcl, HCL_FLX_BINOP); + init_flx_binop(FLX_BINOP(hak)); + HAK_ASSERT(hak, TOKEN_NAME_LEN(hak) == 1); + FEED_CONTINUE(hak, HAK_FLX_BINOP); goto not_consumed; #endif } @@ -3357,38 +3357,38 @@ not_consumed: return 0; } -static int flx_bc_prefix (hcl_t* hcl, hcl_ooci_t c) +static int flx_bc_prefix (hak_t* hak, hak_ooci_t c) { - hcl_flx_bcp_t* bcp = FLX_BCP(hcl); + hak_flx_bcp_t* bcp = FLX_BCP(hak); if (c == '\"') /* b" B" c" C" */ { int is_byte = (bcp->start_c == 'b' || bcp->start_c == 'B'); - reset_flx_token(hcl); - init_flx_qt(FLX_QT(hcl), HCL_TOK_STRLIT, HCL_SYNERR_STRLIT, c, '\\', 0, HCL_TYPE_MAX(hcl_oow_t), is_byte); - FEED_CONTINUE(hcl, HCL_FLX_QUOTED_TOKEN); /* discard prefix, quote and move on */ + reset_flx_token(hak); + init_flx_qt(FLX_QT(hak), HAK_TOK_STRLIT, HAK_SYNERR_STRLIT, c, '\\', 0, HAK_TYPE_MAX(hak_oow_t), is_byte); + FEED_CONTINUE(hak, HAK_FLX_QUOTED_TOKEN); /* discard prefix, quote and move on */ goto consumed; } else if (c == '\'') /* b' B' c' C' */ { int is_byte = (bcp->start_c == 'b' || bcp->start_c == 'B'); - reset_flx_token(hcl); - init_flx_qt(FLX_QT(hcl), HCL_TOK_CHARLIT, HCL_SYNERR_CHARLIT, c, '\\', 1, 1, is_byte); - FEED_CONTINUE(hcl, HCL_FLX_QUOTED_TOKEN); /* dicard prefix, quote, and move on */ + reset_flx_token(hak); + init_flx_qt(FLX_QT(hak), HAK_TOK_CHARLIT, HAK_SYNERR_CHARLIT, c, '\\', 1, 1, is_byte); + FEED_CONTINUE(hak, HAK_FLX_QUOTED_TOKEN); /* dicard prefix, quote, and move on */ goto consumed; } else { /* not followed by a quote. switch to the plain identifier */ - init_flx_pi(FLX_PI(hcl)); + init_flx_pi(FLX_PI(hak)); /* the prefix is already in the token buffer. just adjust state data */ - FLX_PI(hcl)->char_count++; - FLX_PI(hcl)->seg_len++; + FLX_PI(hak)->char_count++; + FLX_PI(hak)->seg_len++; /* refeed c */ - FEED_CONTINUE(hcl, HCL_FLX_PLAIN_IDENT); + FEED_CONTINUE(hak, HAK_FLX_PLAIN_IDENT); goto not_consumed; } @@ -3403,100 +3403,100 @@ not_consumed: /* ------------------------------------------------------------------------ */ -static int feed_char (hcl_t* hcl, hcl_ooci_t c) +static int feed_char (hak_t* hak, hak_ooci_t c) { -/*hcl_logbfmt(hcl, HCL_LOG_STDERR, "FEED->[%jc] %d STATE->%d\n", c, c, FLX_STATE(hcl));*/ +/*hak_logbfmt(hak, HAK_LOG_STDERR, "FEED->[%jc] %d STATE->%d\n", c, c, FLX_STATE(hak));*/ - switch (FLX_STATE(hcl)) + switch (FLX_STATE(hak)) { - case HCL_FLX_START: return flx_start(hcl, c); - case HCL_FLX_BACKSLASHED: return flx_backslashed(hcl, c); - case HCL_FLX_COMMENT: return flx_comment(hcl, c); - case HCL_FLX_DELIM_TOKEN: return flx_delim_token(hcl, c); - case HCL_FLX_DOLLARED_IDENT: return flx_dollared_ident(hcl, c); - case HCL_FLX_HMARKED_TOKEN: return flx_hmarked_token(hcl, c); - case HCL_FLX_HMARKED_BC: return flx_hmarked_bc(hcl, c); - case HCL_FLX_HMARKED_BINOP: return flx_hmarked_binop(hcl, c); - case HCL_FLX_HMARKED_CHAR: return flx_hmarked_char(hcl, c); - case HCL_FLX_HMARKED_IDENT: return flx_hmarked_ident(hcl, c); + case HAK_FLX_START: return flx_start(hak, c); + case HAK_FLX_BACKSLASHED: return flx_backslashed(hak, c); + case HAK_FLX_COMMENT: return flx_comment(hak, c); + case HAK_FLX_DELIM_TOKEN: return flx_delim_token(hak, c); + case HAK_FLX_DOLLARED_IDENT: return flx_dollared_ident(hak, c); + case HAK_FLX_HMARKED_TOKEN: return flx_hmarked_token(hak, c); + case HAK_FLX_HMARKED_BC: return flx_hmarked_bc(hak, c); + case HAK_FLX_HMARKED_BINOP: return flx_hmarked_binop(hak, c); + case HAK_FLX_HMARKED_CHAR: return flx_hmarked_char(hak, c); + case HAK_FLX_HMARKED_IDENT: return flx_hmarked_ident(hak, c); - case HCL_FLX_PLAIN_IDENT: return flx_plain_ident(hcl, c); - case HCL_FLX_BINOP: return flx_binop(hcl, c); - case HCL_FLX_PLAIN_NUMBER: return flx_plain_number(hcl, c); - case HCL_FLX_QUOTED_TOKEN: return flx_quoted_token(hcl, c); - case HCL_FLX_SIGNED_TOKEN: return flx_signed_token(hcl, c); - case HCL_FLX_BC_PREFIX: return flx_bc_prefix(hcl, c); + case HAK_FLX_PLAIN_IDENT: return flx_plain_ident(hak, c); + case HAK_FLX_BINOP: return flx_binop(hak, c); + case HAK_FLX_PLAIN_NUMBER: return flx_plain_number(hak, c); + case HAK_FLX_QUOTED_TOKEN: return flx_quoted_token(hak, c); + case HAK_FLX_SIGNED_TOKEN: return flx_signed_token(hak, c); + case HAK_FLX_BC_PREFIX: return flx_bc_prefix(hak, c); default: /* unknown state */ break; } - HCL_ASSERT(hcl, !"internal error - this must never happen"); - hcl_seterrbfmt(hcl, HCL_EINTERN, "internal error - unknown flx state - %d", FLX_STATE(hcl)); + HAK_ASSERT(hak, !"internal error - this must never happen"); + hak_seterrbfmt(hak, HAK_EINTERN, "internal error - unknown flx state - %d", FLX_STATE(hak)); return -1; } -static void feed_update_lx_loc (hcl_t* hcl, hcl_ooci_t ch) +static void feed_update_lx_loc (hak_t* hak, hak_ooci_t ch) { if (is_linebreak(ch)) { - hcl->c->feed.lx.loc.line++; - hcl->c->feed.lx.loc.colm = 1; + hak->c->feed.lx.loc.line++; + hak->c->feed.lx.loc.colm = 1; } else { - hcl->c->feed.lx.loc.colm++; + hak->c->feed.lx.loc.colm++; } } -static hcl_oow_t move_cci_residue_bytes (hcl_io_cciarg_t* curinp) +static hak_oow_t move_cci_residue_bytes (hak_io_cciarg_t* curinp) { - hcl_oow_t cpl; + hak_oow_t cpl; - cpl = HCL_COUNTOF(curinp->rsd.buf) - curinp->rsd.len; + cpl = HAK_COUNTOF(curinp->rsd.buf) - curinp->rsd.len; if (cpl > 0) { - hcl_oow_t avail; + hak_oow_t avail; avail = curinp->b.len - curinp->b.pos; /* available in the read buffer */ if (cpl > avail) cpl = avail; - HCL_MEMCPY(&curinp->rsd.buf[curinp->rsd.len], &curinp->buf.b[curinp->b.pos], cpl); + HAK_MEMCPY(&curinp->rsd.buf[curinp->rsd.len], &curinp->buf.b[curinp->b.pos], cpl); curinp->rsd.len += cpl; curinp->b.pos += cpl; /* advance the position because the bytes moved to the residue buffer */ } return curinp->rsd.len; } -static int feed_from_includee (hcl_t* hcl) +static int feed_from_includee (hak_t* hak) { int x; - hcl_ooch_t c; - hcl_io_cciarg_t* curinp; + hak_ooch_t c; + hak_io_cciarg_t* curinp; - HCL_ASSERT(hcl, hcl->c->curinp != HCL_NULL && hcl->c->curinp != &hcl->c->cci_arg); + HAK_ASSERT(hak, hak->c->curinp != HAK_NULL && hak->c->curinp != &hak->c->cci_arg); - curinp = hcl->c->curinp; + curinp = hak->c->curinp; do { - hcl_oow_t taken; + hak_oow_t taken; - #if defined(HCL_OOCH_IS_UCH) + #if defined(HAK_OOCH_IS_UCH) if (curinp->byte_oriented) { - hcl_cmgr_t* cmgr; - const hcl_uint8_t* inpptr; - hcl_oow_t inplen, n; + hak_cmgr_t* cmgr; + const hak_uint8_t* inpptr; + hak_oow_t inplen, n; - cmgr = HCL_CMGR(hcl); + cmgr = HAK_CMGR(hak); start_over: if (curinp->b.pos >= curinp->b.len) { - x = hcl->c->cci_rdr(hcl, HCL_IO_READ_BYTES, curinp); + x = hak->c->cci_rdr(hak, HAK_IO_READ_BYTES, curinp); if (x <= -1) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "unable to read bytes from %js - %js", curinp->name, orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "unable to read bytes from %js - %js", curinp->name, orgmsg); goto oops; } @@ -3505,11 +3505,11 @@ static int feed_from_includee (hcl_t* hcl) /* got EOF from an included stream */ if (curinp->rsd.len > 0) { - hcl_seterrbfmt(hcl, HCL_EECERR, "incomplete byte sequence in %js", curinp->name); + hak_seterrbfmt(hak, HAK_EECERR, "incomplete byte sequence in %js", curinp->name); goto oops; } - feed_end_include(hcl); - curinp = hcl->c->curinp; + feed_end_include(hak); + curinp = hak->c->curinp; continue; } @@ -3521,7 +3521,7 @@ static int feed_from_includee (hcl_t* hcl) { /* there is data in the residue buffer. use the residue buffer to * locate a proper multi-byte sequence */ - HCL_ASSERT(hcl, curinp->b.pos == 0); + HAK_ASSERT(hak, curinp->b.pos == 0); inplen = move_cci_residue_bytes(curinp); inpptr = &curinp->rsd.buf[0]; } @@ -3531,16 +3531,16 @@ static int feed_from_includee (hcl_t* hcl) inpptr = &curinp->buf.b[curinp->b.pos]; } - n = cmgr->bctouc((const hcl_bch_t*)inpptr, inplen, &c); + n = cmgr->bctouc((const hak_bch_t*)inpptr, inplen, &c); if (n == 0) /* invalid sequence */ { /* TODO: more accurate location of the invalid byte sequence */ - hcl_seterrbfmt(hcl, HCL_EECERR, "invalid byte sequence in %js", curinp->name); + hak_seterrbfmt(hak, HAK_EECERR, "invalid byte sequence in %js", curinp->name); goto oops; } if (n > inplen) /* incomplete sequence */ { - HCL_ASSERT(hcl, curinp->rsd.len < HCL_COUNTOF(curinp->rsd.buf)); + HAK_ASSERT(hak, curinp->rsd.len < HAK_COUNTOF(curinp->rsd.buf)); move_cci_residue_bytes (curinp); goto start_over; } @@ -3563,19 +3563,19 @@ static int feed_from_includee (hcl_t* hcl) #endif if (curinp->b.pos >= curinp->b.len) { - x = hcl->c->cci_rdr(hcl, HCL_IO_READ, curinp); + x = hak->c->cci_rdr(hak, HAK_IO_READ, curinp); if (x <= -1) { /* TODO: more accurate location of failure */ - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "unable to read %js - %js", curinp->name, orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "unable to read %js - %js", curinp->name, orgmsg); goto oops; } if (curinp->xlen <= 0) { /* got EOF from an included stream */ - feed_end_include(hcl); - curinp = hcl->c->curinp; + feed_end_include(hak); + curinp = hak->c->curinp; continue; } @@ -3585,100 +3585,100 @@ static int feed_from_includee (hcl_t* hcl) c = curinp->buf.c[curinp->b.pos]; taken = 1; - #if defined(HCL_OOCH_IS_UCH) + #if defined(HAK_OOCH_IS_UCH) } #endif - x = feed_char(hcl, c); + x = feed_char(hak, c); if (x <= -1) goto oops; if (x >= 1) { /* consumed */ - feed_update_lx_loc(hcl, c); + feed_update_lx_loc(hak, c); curinp->b.pos += taken; - #if defined(HCL_OOCH_IS_UCH) + #if defined(HAK_OOCH_IS_UCH) curinp->rsd.len = 0; /* clear up the residue byte buffer. needed for byte reading only */ #endif } - if (hcl->c->feed.rd.do_include_file) + if (hak->c->feed.rd.do_include_file) { /* feed_process_token(), called for the "filename" token for the #include - * directive, sets hcl->c->feed.rd.do_include_file to 1 instead of attepmting + * directive, sets hak->c->feed.rd.do_include_file to 1 instead of attepmting * to include the file. the file inclusion is attempted here after the return - * value of feed_char() is used to advance the hcl->c->curinp->b.pos pointer. */ - hcl->c->feed.rd.do_include_file = 0; /* clear this regardless of inclusion result */ - if (feed_begin_include(hcl) <= -1) goto oops; - curinp = hcl->c->curinp; + * value of feed_char() is used to advance the hak->c->curinp->b.pos pointer. */ + hak->c->feed.rd.do_include_file = 0; /* clear this regardless of inclusion result */ + if (feed_begin_include(hak) <= -1) goto oops; + curinp = hak->c->curinp; } } - while (curinp != &hcl->c->cci_arg); + while (curinp != &hak->c->cci_arg); return 0; oops: - while (feed_end_include(hcl) >= 1) /* loop */; /* roll back the entire inclusion chain */ + while (feed_end_include(hak) >= 1) /* loop */; /* roll back the entire inclusion chain */ return -1; } -int hcl_beginfeed (hcl_t* hcl, hcl_on_cnode_t on_cnode) +int hak_beginfeed (hak_t* hak, hak_on_cnode_t on_cnode) { - /* if the fed data contains #include, you must call hcl_attachccio() first. + /* if the fed data contains #include, you must call hak_attachccio() first. * file includsion requires the ccio handler to be implemented. */ - if (!hcl->c && init_compiler(hcl) <= -1) return -1; + if (!hak->c && init_compiler(hak) <= -1) return -1; - init_feed(hcl); - if (on_cnode) hcl->c->feed.on_cnode = on_cnode; - /* if you pass HCL_NULL for on_cnode, hcl->c->feed.on_cnode resets + init_feed(hak); + if (on_cnode) hak->c->feed.on_cnode = on_cnode; + /* if you pass HAK_NULL for on_cnode, hak->c->feed.on_cnode resets * back to the default handler in init_feed() */ return 0; } -int hcl_endfeed (hcl_t* hcl) +int hak_endfeed (hak_t* hak) { - return hcl_feed(hcl, HCL_NULL, 0); + return hak_feed(hak, HAK_NULL, 0); } -int hcl_feedpending (hcl_t* hcl) +int hak_feedpending (hak_t* hak) { - return !(hcl->c->r.st == HCL_NULL && FLX_STATE(hcl) == HCL_FLX_START); + return !(hak->c->r.st == HAK_NULL && FLX_STATE(hak) == HAK_FLX_START); } -void hcl_getfeedloc (hcl_t* hcl, hcl_loc_t* loc) +void hak_getfeedloc (hak_t* hak, hak_loc_t* loc) { - *loc = hcl->c->feed.lx.loc; + *loc = hak->c->feed.lx.loc; } -void hcl_resetfeedloc (hcl_t* hcl) +void hak_resetfeedloc (hak_t* hak) { - hcl->c->feed.lx.loc.line = 1; - hcl->c->feed.lx.loc.colm = 1; - hcl->c->feed.lx.loc.file = HCL_NULL; + hak->c->feed.lx.loc.line = 1; + hak->c->feed.lx.loc.colm = 1; + hak->c->feed.lx.loc.file = HAK_NULL; } -void hcl_resetfeed (hcl_t* hcl) +void hak_resetfeed (hak_t* hak) { - feed_reset_reader_state(hcl); - feed_clean_up_reader_stack(hcl); - feed_continue(hcl, HCL_FLX_START); - hcl_resetfeedloc(hcl); + feed_reset_reader_state(hak); + feed_clean_up_reader_stack(hak); + feed_continue(hak, HAK_FLX_START); + hak_resetfeedloc(hak); } -int hcl_feed (hcl_t* hcl, const hcl_ooch_t* data, hcl_oow_t len) +int hak_feed (hak_t* hak, const hak_ooch_t* data, hak_oow_t len) { /* TODO: need to return the number of processed characters? * need to stop after the first complete expression? */ - hcl_oow_t i; + hak_oow_t i; int x; - HCL_ASSERT(hcl, hcl->c != HCL_NULL); + HAK_ASSERT(hak, hak->c != HAK_NULL); -#if defined(HCL_OOCH_IS_UCH) - if (hcl->c->feed.rsd.len > 0 && !hcl->c->feed.rsd.no_check) +#if defined(HAK_OOCH_IS_UCH) + if (hak->c->feed.rsd.len > 0 && !hak->c->feed.rsd.no_check) { - hcl_seterrbfmt(hcl, HCL_EPERM, "feed disallowed for incomplete sequence pending more feeding"); + hak_seterrbfmt(hak, HAK_EPERM, "feed disallowed for incomplete sequence pending more feeding"); return -1; } #endif @@ -3687,27 +3687,27 @@ int hcl_feed (hcl_t* hcl, const hcl_ooch_t* data, hcl_oow_t len) { for (i = 0; i < len; ) { - x = feed_char(hcl, data[i]); + x = feed_char(hak, data[i]); if (x <= -1) { - feed_update_lx_loc(hcl, data[i]); /* update the location upon an error too */ + feed_update_lx_loc(hak, data[i]); /* update the location upon an error too */ goto oops; /* TODO: return the number of processed characters via an argument? */ } if (x > 0) { /* consumed */ - feed_update_lx_loc(hcl, data[i]); + feed_update_lx_loc(hak, data[i]); i += x; /* x is supposed to be 1. otherwise, some characters may get skipped. */ } - if (hcl->c->feed.rd.do_include_file) + if (hak->c->feed.rd.do_include_file) { - hcl->c->feed.rd.do_include_file = 0; /* done regardless of inclusion result */ - if (feed_begin_include(hcl) <= -1) goto oops; + hak->c->feed.rd.do_include_file = 0; /* done regardless of inclusion result */ + if (feed_begin_include(hak) <= -1) goto oops; } - if (hcl->c->curinp && hcl->c->curinp != &hcl->c->cci_arg && feed_from_includee(hcl) <= -1) + if (hak->c->curinp && hak->c->curinp != &hak->c->cci_arg && feed_from_includee(hak) <= -1) { /* TODO: return the number of processed characters via an argument? */ goto oops; @@ -3720,7 +3720,7 @@ int hcl_feed (hcl_t* hcl, const hcl_ooch_t* data, hcl_oow_t len) { for (i = 0; i < 1;) /* weird loop in case feed_char() returns 0 */ { - x = feed_char(hcl, HCL_OOCI_EOF); + x = feed_char(hak, HAK_OOCI_EOF); if (x <= -1) goto oops; i += x; } @@ -3729,7 +3729,7 @@ int hcl_feed (hcl_t* hcl, const hcl_ooch_t* data, hcl_oow_t len) return 0; oops: - feed_reset_reader_state(hcl); + feed_reset_reader_state(hak); /* if enter_list() is in feed_process_token(), the stack grows. * leave_list() pops an element off the stack. the stack can be @@ -3740,43 +3740,43 @@ oops: * ^ ^ * leave_list() error in flx_hmarked_ident() before a full cnode is processed */ - feed_clean_up_reader_stack(hcl); - feed_continue(hcl, HCL_FLX_START); + feed_clean_up_reader_stack(hak); + feed_continue(hak, HAK_FLX_START); return -1; } -int hcl_feedbchars (hcl_t* hcl, const hcl_bch_t* data, hcl_oow_t len) +int hak_feedbchars (hak_t* hak, const hak_bch_t* data, hak_oow_t len) { -#if defined(HCL_OOCH_IS_UCH) - hcl_uch_t outbuf[128]; - hcl_oow_t inlen, outlen, inpos, brwlen; +#if defined(HAK_OOCH_IS_UCH) + hak_uch_t outbuf[128]; + hak_oow_t inlen, outlen, inpos, brwlen; int n; - HCL_ASSERT(hcl, hcl->c != HCL_NULL); + HAK_ASSERT(hak, hak->c != HAK_NULL); inpos = 0; - if (hcl->c->feed.rsd.len > 0) /* residue length greater than 0 */ + if (hak->c->feed.rsd.len > 0) /* residue length greater than 0 */ { - hcl_oow_t rsdlen; + hak_oow_t rsdlen; /* handle the residue bytes from the previous feeding */ - rsdlen = hcl->c->feed.rsd.len; /* original residue length*/ - brwlen = HCL_COUNTOF(hcl->c->feed.rsd.buf) - rsdlen; + rsdlen = hak->c->feed.rsd.len; /* original residue length*/ + brwlen = HAK_COUNTOF(hak->c->feed.rsd.buf) - rsdlen; if (len < brwlen) brwlen = len; - HCL_MEMCPY(&hcl->c->feed.rsd.buf[rsdlen], data, brwlen); - hcl->c->feed.rsd.len += brwlen; + HAK_MEMCPY(&hak->c->feed.rsd.buf[rsdlen], data, brwlen); + hak->c->feed.rsd.len += brwlen; - inlen = hcl->c->feed.rsd.len; + inlen = hak->c->feed.rsd.len; outlen = 1; /* ensure that it can only convert 1 character */ - n = hcl_conv_bchars_to_uchars_with_cmgr(hcl->c->feed.rsd.buf, &inlen, outbuf, &outlen, HCL_CMGR(hcl), 0); + n = hak_conv_bchars_to_uchars_with_cmgr(hak->c->feed.rsd.buf, &inlen, outbuf, &outlen, HAK_CMGR(hak), 0); if (outlen > 0) { int x; - hcl->c->feed.rsd.no_check = 1; - x = hcl_feed(hcl, outbuf, outlen); - hcl->c->feed.rsd.no_check = 0; + hak->c->feed.rsd.no_check = 1; + x = hak_feed(hak, outbuf, outlen); + hak->c->feed.rsd.no_check = 0; if (x <= -1) return -1; } @@ -3786,12 +3786,12 @@ int hcl_feedbchars (hcl_t* hcl, const hcl_bch_t* data, hcl_oow_t len) { /* n == -3. invalid sequence. more feeding is required */ /* n == -2. there were extra bytes for the second character in the input */ - HCL_ASSERT(hcl, (n == -3 && inlen == 0 && outlen == 0) || (n == -2 && inlen > 0)); + HAK_ASSERT(hak, (n == -3 && inlen == 0 && outlen == 0) || (n == -2 && inlen > 0)); /* nothing to do. carry on */ } else { - hcl_seterrnum(hcl, (n == -2)? HCL_EBUFFULL: HCL_EECERR); + hak_seterrnum(hak, (n == -2)? HAK_EBUFFULL: HAK_EECERR); return -1; } } @@ -3802,16 +3802,16 @@ int hcl_feedbchars (hcl_t* hcl, const hcl_bch_t* data, hcl_oow_t len) */ if (inlen < rsdlen) { - HCL_ASSERT(hcl, inlen == 0); - HCL_ASSERT(hcl, brwlen == len); + HAK_ASSERT(hak, inlen == 0); + HAK_ASSERT(hak, brwlen == len); /* brwlen needs no change */ - /* hcl->c->feed.rsd.len nees no change */ + /* hak->c->feed.rsd.len nees no change */ } else { - HCL_ASSERT(hcl, inlen > rsdlen); + HAK_ASSERT(hak, inlen > rsdlen); brwlen = inlen - rsdlen; /* actual bytes borrowed and converted */ - hcl->c->feed.rsd.len = 0; + hak->c->feed.rsd.len = 0; } inpos += brwlen; len -= brwlen; @@ -3820,12 +3820,12 @@ int hcl_feedbchars (hcl_t* hcl, const hcl_bch_t* data, hcl_oow_t len) while (len > 0) { inlen = len; - outlen = HCL_COUNTOF(outbuf); + outlen = HAK_COUNTOF(outbuf); - /* hcl_convbtouchars() does not differentiate between illegal character and incomplete sequence. - * use a lower-level function that hcl_convbtouchars() uses */ - n = hcl_conv_bchars_to_uchars_with_cmgr(&data[inpos], &inlen, outbuf, &outlen, HCL_CMGR(hcl), 0); - if (outlen > 0 && hcl_feed(hcl, outbuf, outlen) <= -1) return -1; + /* hak_convbtouchars() does not differentiate between illegal character and incomplete sequence. + * use a lower-level function that hak_convbtouchars() uses */ + n = hak_conv_bchars_to_uchars_with_cmgr(&data[inpos], &inlen, outbuf, &outlen, HAK_CMGR(hak), 0); + if (outlen > 0 && hak_feed(hak, outbuf, outlen) <= -1) return -1; if (n <= -1) { @@ -3833,16 +3833,16 @@ int hcl_feedbchars (hcl_t* hcl, const hcl_bch_t* data, hcl_oow_t len) if (n == -2 || n == -3) { - hcl_oow_t rsdlen; - HCL_ASSERT(hcl, len > inlen); + hak_oow_t rsdlen; + HAK_ASSERT(hak, len > inlen); rsdlen = len - inlen; - HCL_ASSERT(hcl, rsdlen <= HCL_COUNTOF(hcl->c->feed.rsd.buf)); - HCL_MEMCPY(hcl->c->feed.rsd.buf, &data[inpos + inlen], rsdlen); - hcl->c->feed.rsd.len = len - inlen; + HAK_ASSERT(hak, rsdlen <= HAK_COUNTOF(hak->c->feed.rsd.buf)); + HAK_MEMCPY(hak->c->feed.rsd.buf, &data[inpos + inlen], rsdlen); + hak->c->feed.rsd.len = len - inlen; break; } - hcl_seterrnum(hcl, HCL_EECERR); + hak_seterrnum(hak, HAK_EECERR); return -1; } @@ -3853,26 +3853,26 @@ int hcl_feedbchars (hcl_t* hcl, const hcl_bch_t* data, hcl_oow_t len) return 0; #else - return hcl_feed(hcl, data, len); + return hak_feed(hak, data, len); #endif } -int hcl_feeduchars (hcl_t* hcl, const hcl_uch_t* data, hcl_oow_t len) +int hak_feeduchars (hak_t* hak, const hak_uch_t* data, hak_oow_t len) { -#if defined(HCL_OOCH_IS_UCH) - return hcl_feed(hcl, data, len); +#if defined(HAK_OOCH_IS_UCH) + return hak_feed(hak, data, len); #else - hcl_bch_t outbuf[HCL_BCSIZE_MAX * 128]; - hcl_oow_t inlen, outlen, inpos; + hak_bch_t outbuf[HAK_BCSIZE_MAX * 128]; + hak_oow_t inlen, outlen, inpos; int n; inpos = 0; while (len > 0) { inlen = len; - outlen = HCL_COUNTOF(outbuf); - n = hcl_convutobchars(hcl, &data[inpos], &inlen, outbuf, &outlen); - if (outlen > 0 && hcl_feed(hcl, outbuf, outlen) <= -1) return -1; + outlen = HAK_COUNTOF(outbuf); + n = hak_convutobchars(hak, &data[inpos], &inlen, outbuf, &outlen); + if (outlen > 0 && hak_feed(hak, outbuf, outlen) <= -1) return -1; inpos += inlen; len -= inlen; if (n <= -1) return -1; @@ -3882,11 +3882,11 @@ int hcl_feeduchars (hcl_t* hcl, const hcl_uch_t* data, hcl_oow_t len) } /* -hcl_setopt (ON_EXPRESSION CALLBACK??? ); +hak_setopt (ON_EXPRESSION CALLBACK??? ); -hcl_feed(hcl, "(hello) (10)", 12); +hak_feed(hak, "(hello) (10)", 12); > on_token > on_expression > on_eof @@ -3907,218 +3907,218 @@ default callback for on_eof? /* TODO: rename compiler to something else that can include reader, udo_wrtr, and compiler * move compiler intialization/finalization here to more common place */ -static void gc_compiler_cb (hcl_t* hcl) +static void gc_compiler_cb (hak_t* hak) { - if (hcl->c) + if (hak->c) { - hcl->c->r.s = hcl_moveoop(hcl, hcl->c->r.s); - hcl->c->r.e = hcl_moveoop(hcl, hcl->c->r.e); + hak->c->r.s = hak_moveoop(hak, hak->c->r.s); + hak->c->r.e = hak_moveoop(hak, hak->c->r.e); } } -static void fini_compiler_cb (hcl_t* hcl) +static void fini_compiler_cb (hak_t* hak) { - /* called before the hcl object is closed */ - if (hcl->c) + /* called before the hak object is closed */ + if (hak->c) { - if (hcl->c->cfs.ptr) + if (hak->c->cfs.ptr) { - hcl_freemem(hcl, hcl->c->cfs.ptr); - hcl->c->cfs.ptr = HCL_NULL; - hcl->c->cfs.top = -1; - hcl->c->cfs.capa = 0; + hak_freemem(hak, hak->c->cfs.ptr); + hak->c->cfs.ptr = HAK_NULL; + hak->c->cfs.top = -1; + hak->c->cfs.capa = 0; } - if (hcl->c->tv.s.ptr) + if (hak->c->tv.s.ptr) { - hcl_freemem(hcl, hcl->c->tv.s.ptr); - hcl->c->tv.s.ptr = HCL_NULL; - hcl->c->tv.s.len = 0; - hcl->c->tv.capa = 0; - hcl->c->tv.wcount = 0; + hak_freemem(hak, hak->c->tv.s.ptr); + hak->c->tv.s.ptr = HAK_NULL; + hak->c->tv.s.len = 0; + hak->c->tv.capa = 0; + hak->c->tv.wcount = 0; } - HCL_ASSERT(hcl, hcl->c->tv.capa == 0); - HCL_ASSERT(hcl, hcl->c->tv.wcount == 0); + HAK_ASSERT(hak, hak->c->tv.capa == 0); + HAK_ASSERT(hak, hak->c->tv.wcount == 0); - if (hcl->c->ctlblk.info) + if (hak->c->ctlblk.info) { - hcl_freemem(hcl, hcl->c->ctlblk.info); - hcl->c->ctlblk.info = HCL_NULL; - hcl->c->ctlblk.info_capa = 0; - hcl->c->ctlblk.depth = -1; + hak_freemem(hak, hak->c->ctlblk.info); + hak->c->ctlblk.info = HAK_NULL; + hak->c->ctlblk.info_capa = 0; + hak->c->ctlblk.depth = -1; } - if (hcl->c->clsblk.info) + if (hak->c->clsblk.info) { - hcl_freemem(hcl, hcl->c->clsblk.info); - hcl->c->clsblk.info = HCL_NULL; - hcl->c->clsblk.info_capa = 0; - hcl->c->clsblk.depth = -1; + hak_freemem(hak, hak->c->clsblk.info); + hak->c->clsblk.info = HAK_NULL; + hak->c->clsblk.info_capa = 0; + hak->c->clsblk.depth = -1; } - if (hcl->c->funblk.info) + if (hak->c->funblk.info) { - hcl_freemem(hcl, hcl->c->funblk.info); - hcl->c->funblk.info = HCL_NULL; - hcl->c->funblk.info_capa = 0; - hcl->c->funblk.depth = -1; + hak_freemem(hak, hak->c->funblk.info); + hak->c->funblk.info = HAK_NULL; + hak->c->funblk.info_capa = 0; + hak->c->funblk.depth = -1; } - clear_sr_names(hcl); - if (hcl->c->tok.name.ptr) hcl_freemem(hcl, hcl->c->tok.name.ptr); + clear_sr_names(hak); + if (hak->c->tok.name.ptr) hak_freemem(hak, hak->c->tok.name.ptr); - hcl_detachccio(hcl); + hak_detachccio(hak); - hcl_freemem(hcl, hcl->c); - hcl->c = HCL_NULL; + hak_freemem(hak, hak->c); + hak->c = HAK_NULL; } } -static void fini_compiler (hcl_t* hcl) +static void fini_compiler (hak_t* hak) { /* unlike fini_compiler_cb(), this is to be used in some error handling * between init_compiler success and subquent operation failure */ - if (hcl->c) + if (hak->c) { - hcl_deregcb(hcl, hcl->c->cbp); - fini_compiler_cb(hcl); + hak_deregcb(hak, hak->c->cbp); + fini_compiler_cb(hak); } } -static int init_compiler (hcl_t* hcl) +static int init_compiler (hak_t* hak) { - hcl_cb_t cb, * cbp = HCL_NULL; + hak_cb_t cb, * cbp = HAK_NULL; - HCL_ASSERT(hcl, hcl->c == HCL_NULL); + HAK_ASSERT(hak, hak->c == HAK_NULL); - HCL_MEMSET(&cb, 0, HCL_SIZEOF(cb)); + HAK_MEMSET(&cb, 0, HAK_SIZEOF(cb)); cb.on_gc = gc_compiler_cb; cb.on_fini = fini_compiler_cb; - cbp = hcl_regcb(hcl, &cb); - if (HCL_UNLIKELY(!cbp)) return -1; + cbp = hak_regcb(hak, &cb); + if (HAK_UNLIKELY(!cbp)) return -1; - hcl->c = (hcl_compiler_t*)hcl_callocmem(hcl, HCL_SIZEOF(*hcl->c)); - if (HCL_UNLIKELY(!hcl->c)) + hak->c = (hak_compiler_t*)hak_callocmem(hak, HAK_SIZEOF(*hak->c)); + if (HAK_UNLIKELY(!hak->c)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt(hcl, HCL_ERRNUM(hcl), "failed to allocate compiler - %js", orgmsg); - hcl_deregcb(hcl, cbp); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt(hak, HAK_ERRNUM(hak), "failed to allocate compiler - %js", orgmsg); + hak_deregcb(hak, cbp); return -1; } - hcl->c->ilchr_ucs.ptr = &hcl->c->ilchr; - hcl->c->ilchr_ucs.len = 1; + hak->c->ilchr_ucs.ptr = &hak->c->ilchr; + hak->c->ilchr_ucs.len = 1; - hcl->c->r.s = hcl->_nil; - hcl->c->r.e = hcl->_nil; + hak->c->r.s = hak->_nil; + hak->c->r.e = hak->_nil; - hcl->c->cfs.top = -1; - hcl->c->ctlblk.depth = -1; - hcl->c->clsblk.depth = -1; - hcl->c->funblk.depth = -1; + hak->c->cfs.top = -1; + hak->c->ctlblk.depth = -1; + hak->c->clsblk.depth = -1; + hak->c->funblk.depth = -1; - init_feed(hcl); - hcl->c->cbp = cbp; + init_feed(hak); + hak->c->cbp = cbp; /* initialize the internal cons to represent a cell pointing to `null` in the `car` part */ - hcl->c->fake_cnode.nil.cn_type = HCL_CNODE_NIL; - hcl->c->fake_cnode.nil.cn_tok.ptr = vocas[VOCA_KW_NIL].str; - hcl->c->fake_cnode.nil.cn_tok.len = vocas[VOCA_KW_NIL].len; + hak->c->fake_cnode.nil.cn_type = HAK_CNODE_NIL; + hak->c->fake_cnode.nil.cn_tok.ptr = vocas[VOCA_KW_NIL].str; + hak->c->fake_cnode.nil.cn_tok.len = vocas[VOCA_KW_NIL].len; - hcl->c->fake_cnode.cons_to_nil.cn_type = HCL_CNODE_CONS; - hcl->c->fake_cnode.cons_to_nil.u.cons.car = &hcl->c->fake_cnode.nil; - hcl->c->fake_cnode.cons_to_nil.u.cons.cdr = HCL_NULL; + hak->c->fake_cnode.cons_to_nil.cn_type = HAK_CNODE_CONS; + hak->c->fake_cnode.cons_to_nil.u.cons.car = &hak->c->fake_cnode.nil; + hak->c->fake_cnode.cons_to_nil.u.cons.cdr = HAK_NULL; return 0; } -int hcl_attachccio (hcl_t* hcl, hcl_io_impl_t cci_rdr) +int hak_attachccio (hak_t* hak, hak_io_impl_t cci_rdr) { int n; int inited_compiler = 0; - hcl_io_cciarg_t new_cciarg; + hak_io_cciarg_t new_cciarg; - if (!hcl->c) + if (!hak->c) { - if (init_compiler(hcl) <= -1) return -1; + if (init_compiler(hak) <= -1) return -1; inited_compiler = 1; } if (cci_rdr) { - /* The name field and the includer field are HCL_NULL + /* The name field and the includer field are HAK_NULL * for the main stream */ - HCL_MEMSET(&new_cciarg, 0, HCL_SIZEOF(new_cciarg)); + HAK_MEMSET(&new_cciarg, 0, HAK_SIZEOF(new_cciarg)); new_cciarg.line = 1; new_cciarg.colm = 1; /* open the top-level source input stream */ - n = cci_rdr(hcl, HCL_IO_OPEN, &new_cciarg); + n = cci_rdr(hak, HAK_IO_OPEN, &new_cciarg); if (n <= -1) goto oops; - if (hcl->c->cci_rdr) + if (hak->c->cci_rdr) { /* close the old source input stream */ - hcl->c->cci_rdr(hcl, HCL_IO_CLOSE, &hcl->c->cci_arg); + hak->c->cci_rdr(hak, HAK_IO_CLOSE, &hak->c->cci_arg); } - hcl->c->cci_rdr = cci_rdr; - hcl->c->cci_arg = new_cciarg; + hak->c->cci_rdr = cci_rdr; + hak->c->cci_arg = new_cciarg; /* clear unneeded source stream names */ - /*clear_sr_names(hcl); <---- TODO: tricky to clean up here */ + /*clear_sr_names(hak); <---- TODO: tricky to clean up here */ /* initialize some other key fields */ - hcl->c->nungots = 0; + hak->c->nungots = 0; /* the source stream is open. set it as the current input stream */ - hcl->c->curinp = &hcl->c->cci_arg; + hak->c->curinp = &hak->c->cci_arg; } return 0; oops: - if (inited_compiler) fini_compiler(hcl); + if (inited_compiler) fini_compiler(hak); return -1; } -void hcl_detachccio (hcl_t* hcl) +void hak_detachccio (hak_t* hak) { /* an error occurred and control has reached here * probably, some included files might not have been * closed. close them */ - if (hcl->c) + if (hak->c) { - if (hcl->c->cci_rdr) + if (hak->c->cci_rdr) { - while (hcl->c->curinp != &hcl->c->cci_arg) + while (hak->c->curinp != &hak->c->cci_arg) { - hcl_io_cciarg_t* prev; + hak_io_cciarg_t* prev; /* nothing much to do about a close error */ - hcl->c->cci_rdr(hcl, HCL_IO_CLOSE, hcl->c->curinp); + hak->c->cci_rdr(hak, HAK_IO_CLOSE, hak->c->curinp); - prev = hcl->c->curinp->includer; - HCL_ASSERT(hcl, hcl->c->curinp->name != HCL_NULL); - hcl_freemem(hcl, hcl->c->curinp); - hcl->c->curinp = prev; + prev = hak->c->curinp->includer; + HAK_ASSERT(hak, hak->c->curinp->name != HAK_NULL); + hak_freemem(hak, hak->c->curinp); + hak->c->curinp = prev; } - hcl->c->cci_rdr(hcl, HCL_IO_CLOSE, hcl->c->curinp); - hcl->c->cci_rdr = HCL_NULL; /* ready for another attachment */ + hak->c->cci_rdr(hak, HAK_IO_CLOSE, hak->c->curinp); + hak->c->cci_rdr = HAK_NULL; /* ready for another attachment */ } } } -int hcl_attachudio (hcl_t* hcl, hcl_io_impl_t udi_rdr, hcl_io_impl_t udo_wrtr) +int hak_attachudio (hak_t* hak, hak_io_impl_t udi_rdr, hak_io_impl_t udo_wrtr) { int n; - hcl_io_udiarg_t new_udiarg; - hcl_io_udoarg_t new_udoarg; + hak_io_udiarg_t new_udiarg; + hak_io_udoarg_t new_udoarg; if (udi_rdr) { - HCL_MEMSET(&new_udiarg, 0, HCL_SIZEOF(new_udiarg)); - n = udi_rdr(hcl, HCL_IO_OPEN, &new_udiarg); + HAK_MEMSET(&new_udiarg, 0, HAK_SIZEOF(new_udiarg)); + n = udi_rdr(hak, HAK_IO_OPEN, &new_udiarg); if (n <= -1) { goto oops; @@ -4128,35 +4128,35 @@ int hcl_attachudio (hcl_t* hcl, hcl_io_impl_t udi_rdr, hcl_io_impl_t udo_wrtr) if (udo_wrtr) { /* open the new output stream */ - HCL_MEMSET(&new_udoarg, 0, HCL_SIZEOF(new_udoarg)); - n = udo_wrtr(hcl, HCL_IO_OPEN, &new_udoarg); + HAK_MEMSET(&new_udoarg, 0, HAK_SIZEOF(new_udoarg)); + n = udo_wrtr(hak, HAK_IO_OPEN, &new_udoarg); if (n <= -1) { - if (udi_rdr) udi_rdr(hcl, HCL_IO_CLOSE, &new_udiarg); + if (udi_rdr) udi_rdr(hak, HAK_IO_CLOSE, &new_udiarg); goto oops; } } if (udi_rdr) { - if (hcl->io.udi_rdr) + if (hak->io.udi_rdr) { /* close the old input stream */ - hcl->io.udi_rdr(hcl, HCL_IO_CLOSE, &hcl->io.udi_arg); + hak->io.udi_rdr(hak, HAK_IO_CLOSE, &hak->io.udi_arg); } - hcl->io.udi_rdr = udi_rdr; - hcl->io.udi_arg = new_udiarg; + hak->io.udi_rdr = udi_rdr; + hak->io.udi_arg = new_udiarg; } if (udo_wrtr) { - if (hcl->io.udo_wrtr) + if (hak->io.udo_wrtr) { /* close the old output stream */ - hcl->io.udo_wrtr(hcl, HCL_IO_CLOSE, &hcl->io.udo_arg); + hak->io.udo_wrtr(hak, HAK_IO_CLOSE, &hak->io.udo_arg); } - hcl->io.udo_wrtr = udo_wrtr; - hcl->io.udo_arg = new_udoarg; + hak->io.udo_wrtr = udo_wrtr; + hak->io.udo_arg = new_udoarg; } return 0; @@ -4166,39 +4166,39 @@ oops: } -void hcl_detachudio (hcl_t* hcl) +void hak_detachudio (hak_t* hak) { - if (hcl->io.udi_rdr) + if (hak->io.udi_rdr) { - hcl->io.udi_rdr(hcl, HCL_IO_CLOSE, &hcl->io.udi_arg); - hcl->io.udi_rdr = HCL_NULL; /* ready for another attachment */ + hak->io.udi_rdr(hak, HAK_IO_CLOSE, &hak->io.udi_arg); + hak->io.udi_rdr = HAK_NULL; /* ready for another attachment */ } - if (hcl->io.udo_wrtr) + if (hak->io.udo_wrtr) { - hcl->io.udo_wrtr(hcl, HCL_IO_CLOSE, &hcl->io.udo_arg); - hcl->io.udo_wrtr = HCL_NULL; /* ready for another attachment */ + hak->io.udo_wrtr(hak, HAK_IO_CLOSE, &hak->io.udo_arg); + hak->io.udo_wrtr = HAK_NULL; /* ready for another attachment */ } } -void hcl_flushudio (hcl_t* hcl) +void hak_flushudio (hak_t* hak) { - if (hcl->io.udo_wrtr) hcl->io.udo_wrtr(hcl, HCL_IO_FLUSH, &hcl->io.udo_arg); + if (hak->io.udo_wrtr) hak->io.udo_wrtr(hak, HAK_IO_FLUSH, &hak->io.udo_arg); } -/* TODO: discard the following three functions - hcl_setbasesrloc, hcl_readbasesrchar */ -void hcl_setbasesrloc (hcl_t* hcl, hcl_oow_t line, hcl_oow_t colm) +/* TODO: discard the following three functions - hak_setbasesrloc, hak_readbasesrchar */ +void hak_setbasesrloc (hak_t* hak, hak_oow_t line, hak_oow_t colm) { - hcl->c->cci_arg.line = line; - hcl->c->cci_arg.colm = colm; + hak->c->cci_arg.line = line; + hak->c->cci_arg.colm = colm; } -hcl_lxc_t* hcl_readbasesrchar (hcl_t* hcl) +hak_lxc_t* hak_readbasesrchar (hak_t* hak) { /* read a character using the base input stream. the caller must care extra * care when using this function. this function reads the main stream regardless * of the inclusion status and ignores the ungot characters. */ - int n = _get_char(hcl, &hcl->c->cci_arg); - if (n <= -1) return HCL_NULL; - return &hcl->c->cci_arg.lxc; + int n = _get_char(hak, &hak->c->cci_arg); + if (n <= -1) return HAK_NULL; + return &hak->c->cci_arg.lxc; } diff --git a/lib/std.c b/lib/std.c index 61695d8..664d3fa 100644 --- a/lib/std.c +++ b/lib/std.c @@ -26,8 +26,8 @@ # define _GNU_SOURCE #endif -#include "hcl-prv.h" -#include +#include "hak-prv.h" +#include #include #include @@ -61,7 +61,7 @@ # include # include # include -# if defined(HCL_HAVE_CFG_H) && defined(HCL_ENABLE_LIBLTDL) +# if defined(HAK_HAVE_CFG_H) && defined(HAK_ENABLE_LIBLTDL) # include # define USE_LTDL # else @@ -180,7 +180,7 @@ # include # endif -# if defined(HCL_ENABLE_LIBLTDL) +# if defined(HAK_ENABLE_LIBLTDL) # include # define USE_LTDL # elif defined(HAVE_DLFCN_H) @@ -253,42 +253,42 @@ # endif #endif -#if !defined(HCL_DEFAULT_PFMODDIR) -# define HCL_DEFAULT_PFMODDIR "" +#if !defined(HAK_DEFAULT_PFMODDIR) +# define HAK_DEFAULT_PFMODDIR "" #endif -#if !defined(HCL_DEFAULT_PFMODPREFIX) +#if !defined(HAK_DEFAULT_PFMODPREFIX) # if defined(_WIN32) -# define HCL_DEFAULT_PFMODPREFIX "hcl-" +# define HAK_DEFAULT_PFMODPREFIX "hak-" # elif defined(__OS2__) -# define HCL_DEFAULT_PFMODPREFIX "hcl" +# define HAK_DEFAULT_PFMODPREFIX "hak" # elif defined(__DOS__) -# define HCL_DEFAULT_PFMODPREFIX "hcl" +# define HAK_DEFAULT_PFMODPREFIX "hak" # else -# define HCL_DEFAULT_PFMODPREFIX "libhcl-" +# define HAK_DEFAULT_PFMODPREFIX "libhak-" # endif #endif -#if !defined(HCL_DEFAULT_PFMODPOSTFIX) +#if !defined(HAK_DEFAULT_PFMODPOSTFIX) # if defined(_WIN32) -# define HCL_DEFAULT_PFMODPOSTFIX "" +# define HAK_DEFAULT_PFMODPOSTFIX "" # elif defined(__OS2__) -# define HCL_DEFAULT_PFMODPOSTFIX "" +# define HAK_DEFAULT_PFMODPOSTFIX "" # elif defined(__DOS__) -# define HCL_DEFAULT_PFMODPOSTFIX "" +# define HAK_DEFAULT_PFMODPOSTFIX "" # else # if defined(USE_DLFCN) -# define HCL_DEFAULT_PFMODPOSTFIX ".so" +# define HAK_DEFAULT_PFMODPOSTFIX ".so" # elif defined(USE_MACH_O_DYLD) -# define HCL_DEFAULT_PFMODPOSTFIX ".dylib" +# define HAK_DEFAULT_PFMODPOSTFIX ".dylib" # else -# define HCL_DEFAULT_PFMODPOSTFIX "" +# define HAK_DEFAULT_PFMODPOSTFIX "" # endif # endif #endif #if defined(USE_THREAD) -# define MUTEX_INIT(x) pthread_mutex_init((x), HCL_NULL) +# define MUTEX_INIT(x) pthread_mutex_init((x), HAK_NULL) # define MUTEX_DESTROY(x) pthread_mutex_destroy(x) # define MUTEX_LOCK(x) pthread_mutex_lock(x) # define MUTEX_UNLOCK(x) pthread_mutex_unlock(x) @@ -310,12 +310,12 @@ struct select_fd_t typedef struct xtn_t xtn_t; struct xtn_t { - hcl_t* next; - hcl_t* prev; + hak_t* next; + hak_t* prev; - /* hcl_attachiostdwithbcstr() and hcl_attachiostdwithucstr() + /* hak_attachiostdwithbcstr() and hak_attachiostdwithucstr() * set these two field and reset them at the end. - * since hcl_attachio() callls the open handler, these fields + * since hak_attachio() callls the open handler, these fields * are valid only inside the open handelr */ const char* cci_path; /* main source file */ const char* udi_path; /* runtime input file */ @@ -324,8 +324,8 @@ struct xtn_t int vm_running; int rcv_tick; - hcl_cmgr_t* input_cmgr; - hcl_cmgr_t* log_cmgr; + hak_cmgr_t* input_cmgr; + hak_cmgr_t* log_cmgr; struct { @@ -334,8 +334,8 @@ struct xtn_t struct { - hcl_bch_t buf[4096]; - hcl_oow_t len; + hak_bch_t buf[4096]; + hak_oow_t len; } out; } log; @@ -346,10 +346,10 @@ struct xtn_t #elif defined(__OS2__) ULONG tc_last; ULONG tc_overflow; - hcl_ntime_t tc_last_ret; + hak_ntime_t tc_last_ret; #elif defined(__DOS__) clock_t tc_last; - hcl_ntime_t tc_last_ret; + hak_ntime_t tc_last_ret; #endif #if defined(USE_DEVPOLL) @@ -388,8 +388,8 @@ struct xtn_t #elif defined(USE_KQUEUE) struct { - hcl_oow_t* ptr; - hcl_oow_t capa; + hak_oow_t* ptr; + hak_oow_t capa; } reg; struct kevent buf[64]; #elif defined(USE_EPOLL) @@ -400,8 +400,8 @@ struct xtn_t struct { struct pollfd* ptr; - hcl_oow_t capa; - hcl_oow_t len; + hak_oow_t capa; + hak_oow_t len; #if defined(USE_THREAD) pthread_mutex_t pmtx; #endif @@ -422,7 +422,7 @@ struct xtn_t struct select_fd_t buf[FD_SETSIZE]; #endif - hcl_oow_t len; + hak_oow_t len; #if defined(USE_THREAD) pthread_mutex_t mtx; @@ -434,42 +434,42 @@ struct xtn_t } ev; }; -#define GET_XTN(hcl) ((xtn_t*)((hcl_uint8_t*)HCL_XTN(hcl) - HCL_SIZEOF(xtn_t))) +#define GET_XTN(hak) ((xtn_t*)((hak_uint8_t*)HAK_XTN(hak) - HAK_SIZEOF(xtn_t))) -static hcl_t* g_hcl = HCL_NULL; +static hak_t* g_hak = HAK_NULL; /* ----------------------------------------------------------------- * BASIC MEMORY MANAGER * ----------------------------------------------------------------- */ -static void* sys_allocmem (hcl_mmgr_t* mmgr, hcl_oow_t size) +static void* sys_allocmem (hak_mmgr_t* mmgr, hak_oow_t size) { return malloc(size); } -static void* sys_reallocmem (hcl_mmgr_t* mmgr, void* ptr, hcl_oow_t size) +static void* sys_reallocmem (hak_mmgr_t* mmgr, void* ptr, hak_oow_t size) { return realloc(ptr, size); } -static void sys_freemem (hcl_mmgr_t* mmgr, void* ptr) +static void sys_freemem (hak_mmgr_t* mmgr, void* ptr) { free (ptr); } -static hcl_mmgr_t sys_mmgr = +static hak_mmgr_t sys_mmgr = { sys_allocmem, sys_reallocmem, sys_freemem, - HCL_NULL + HAK_NULL }; /* ----------------------------------------------------------------- * HEAP ALLOCATION * ----------------------------------------------------------------- */ -static int get_huge_page_size (hcl_t* hcl, hcl_oow_t* page_size) +static int get_huge_page_size (hak_t* hak, hak_oow_t* page_size) { FILE* fp; char buf[256]; @@ -485,7 +485,7 @@ static int get_huge_page_size (hcl_t* hcl, hcl_oow_t* page_size) { unsigned long int tmp; tmp = strtoul(&buf[13], NULL, 10); - if (tmp == HCL_TYPE_MAX(unsigned long int) && errno == ERANGE) goto oops; + if (tmp == HAK_TYPE_MAX(unsigned long int) && errno == ERANGE) goto oops; *page_size = tmp * 1024; /* KBytes to Bytes */ fclose (fp); @@ -498,14 +498,14 @@ oops: return -1; } -static void* alloc_heap (hcl_t* hcl, hcl_oow_t* size) +static void* alloc_heap (hak_t* hak, hak_oow_t* size) { #if defined(_WIN32) - hcl_oow_t* ptr; - hcl_oow_t req_size, align, aligned_size; + hak_oow_t* ptr; + hak_oow_t req_size, align, aligned_size; HINSTANCE k32; SIZE_T (*k32_GetLargePageMinimum) (void); - HANDLE token = HCL_NULL; + HANDLE token = HAK_NULL; TOKEN_PRIVILEGES new_state, prev_state; TOKEN_PRIVILEGES* prev_state_ptr; DWORD prev_state_reqsize = 0; @@ -528,18 +528,18 @@ static void* alloc_heap (hcl_t* hcl, hcl_oow_t* size) align = si.dwPageSize; }*/ - req_size = HCL_SIZEOF(hcl_oow_t) + size; - aligned_size = HCL_ALIGN(req_size, align); + req_size = HAK_SIZEOF(hak_oow_t) + size; + aligned_size = HAK_ALIGN(req_size, align); if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &token)) goto oops; - if (!LookupPrivilegeValue(HCL_NULL, TEXT("SeLockMemoryPrivilege"), &new_state.Privileges[0].Luid)) goto oops; + if (!LookupPrivilegeValue(HAK_NULL, TEXT("SeLockMemoryPrivilege"), &new_state.Privileges[0].Luid)) goto oops; new_state.PrivilegeCount = 1; new_state.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; prev_state_ptr = &prev_state; - if (!AdjustTokenPrivileges(token, FALSE, &new_state, HCL_SIZEOF(prev_state), prev_state_ptr, &prev_state_reqsize) || GetLastError() != ERROR_SUCCESS) + if (!AdjustTokenPrivileges(token, FALSE, &new_state, HAK_SIZEOF(prev_state), prev_state_ptr, &prev_state_reqsize) || GetLastError() != ERROR_SUCCESS) { - if (prev_state_reqsize >= HCL_SIZEOF(prev_state)) + if (prev_state_reqsize >= HAK_SIZEOF(prev_state)) { /* GetLastError() == ERROR_INSUFFICIENT_BUFFER */ prev_state_ptr = (TOKEN_PRIVILEGES*)HeapAlloc(GetProcessHeap(), 0, prev_state_reqsize); @@ -553,18 +553,18 @@ static void* alloc_heap (hcl_t* hcl, hcl_oow_t* size) #if !defined(MEM_LARGE_PAGES) # define MEM_LARGE_PAGES (0x20000000) #endif - ptr = VirtualAlloc(HCL_NULL, aligned_size, MEM_COMMIT | MEM_RESERVE | MEM_LARGE_PAGES, PAGE_READWRITE); + ptr = VirtualAlloc(HAK_NULL, aligned_size, MEM_COMMIT | MEM_RESERVE | MEM_LARGE_PAGES, PAGE_READWRITE); if (!ptr) { SYSTEM_INFO si; GetSystemInfo (&si); align = si.dwPageSize; - aligned_size = HCL_ALIGN(req_size, align); - ptr = VirtualAlloc(HCL_NULL, aligned_size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); + aligned_size = HAK_ALIGN(req_size, align); + ptr = VirtualAlloc(HAK_NULL, aligned_size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); if (!ptr) goto oops; } - AdjustTokenPrivileges (token, FALSE, prev_state_ptr, 0, HCL_NULL, 0); + AdjustTokenPrivileges (token, FALSE, prev_state_ptr, 0, HAK_NULL, 0); CloseHandle (token); if (prev_state_ptr && prev_state_ptr != &prev_state) HeapFree (GetProcessHeap(), 0, prev_state_ptr); @@ -572,31 +572,31 @@ static void* alloc_heap (hcl_t* hcl, hcl_oow_t* size) return ptr; oops: - hcl_seterrwithsyserr (hcl, 1, GetLastError()); + hak_seterrwithsyserr (hak, 1, GetLastError()); if (token) { - if (token_adjusted) AdjustTokenPrivileges (token, FALSE, prev_state_ptr, 0, HCL_NULL, 0); + if (token_adjusted) AdjustTokenPrivileges (token, FALSE, prev_state_ptr, 0, HAK_NULL, 0); CloseHandle (token); } if (prev_state_ptr && prev_state_ptr != &prev_state) HeapFree (GetProcessHeap(), 0, prev_state_ptr); - return HCL_NULL; + return HAK_NULL; #elif defined(HAVE_MMAP) && defined(HAVE_MUNMAP) && defined(MAP_ANONYMOUS) - /* It's called via hcl_makeheap() when HCL creates a GC heap. + /* It's called via hak_makeheap() when HAK creates a GC heap. * The heap is large in size. I can use a different memory allocation * function instead of an ordinary malloc. - * upon failure, it doesn't require to set error information as hcl_makeheap() - * set the error number to HCL_EOOMEM. */ + * upon failure, it doesn't require to set error information as hak_makeheap() + * set the error number to HAK_EOOMEM. */ #if !defined(MAP_HUGETLB) && (defined(__amd64__) || defined(__x86_64__)) # define MAP_HUGETLB 0x40000 #endif - hcl_oow_t* ptr; + hak_oow_t* ptr; int flags; - hcl_oow_t req_size, align, aligned_size; + hak_oow_t req_size, align, aligned_size; - req_size = HCL_SIZEOF(hcl_oow_t) + *size; + req_size = HAK_SIZEOF(hak_oow_t) + *size; flags = MAP_PRIVATE | MAP_ANONYMOUS; #if defined(MAP_UNINITIALIZED) @@ -604,7 +604,7 @@ oops: #endif #if defined(MAP_HUGETLB) - if (get_huge_page_size(hcl, &align) <= -1) align = 2 * 1024 * 1024; /* default to 2MB */ + if (get_huge_page_size(hak, &align) <= -1) align = 2 * 1024 * 1024; /* default to 2MB */ if (req_size > align / 2) { /* if the requested size is large enough, attempt HUGETLB */ @@ -618,49 +618,49 @@ oops: align = sysconf(_SC_PAGESIZE); #endif - aligned_size = HCL_ALIGN_POW2(req_size, align); - ptr = (hcl_oow_t*)mmap(NULL, aligned_size, PROT_READ | PROT_WRITE, flags, -1, 0); + aligned_size = HAK_ALIGN_POW2(req_size, align); + ptr = (hak_oow_t*)mmap(NULL, aligned_size, PROT_READ | PROT_WRITE, flags, -1, 0); #if defined(MAP_HUGETLB) if (ptr == MAP_FAILED && (flags & MAP_HUGETLB)) { flags &= ~MAP_HUGETLB; align = sysconf(_SC_PAGESIZE); - aligned_size = HCL_ALIGN_POW2(req_size, align); - ptr = (hcl_oow_t*)mmap(NULL, aligned_size, PROT_READ | PROT_WRITE, flags, -1, 0); + aligned_size = HAK_ALIGN_POW2(req_size, align); + ptr = (hak_oow_t*)mmap(NULL, aligned_size, PROT_READ | PROT_WRITE, flags, -1, 0); if (ptr == MAP_FAILED) { - hcl_seterrwithsyserr (hcl, 0, errno); - return HCL_NULL; + hak_seterrwithsyserr (hak, 0, errno); + return HAK_NULL; } } #else if (ptr == MAP_FAILED) { - hcl_seterrwithsyserr (hcl, 0, errno); - return HCL_NULL; + hak_seterrwithsyserr (hak, 0, errno); + return HAK_NULL; } #endif *ptr = aligned_size; - *size = aligned_size - HCL_SIZEOF(hcl_oow_t); + *size = aligned_size - HAK_SIZEOF(hak_oow_t); return (void*)(ptr + 1); #else - return HCL_MMGR_ALLOC(hcl->_mmgr, *size); + return HAK_MMGR_ALLOC(hak->_mmgr, *size); #endif } -static void free_heap (hcl_t* hcl, void* ptr) +static void free_heap (hak_t* hak, void* ptr) { #if defined(_WIN32) VirtualFree (ptr, 0, MEM_RELEASE); /* release the entire region */ #elif defined(HAVE_MMAP) && defined(HAVE_MUNMAP) - hcl_oow_t* actual_ptr; - actual_ptr = (hcl_oow_t*)ptr - 1; + hak_oow_t* actual_ptr; + actual_ptr = (hak_oow_t*)ptr - 1; munmap (actual_ptr, *actual_ptr); #else - HCL_MMGR_FREE(hcl->_mmgr, ptr); + HAK_MMGR_FREE(hak->_mmgr, ptr); #endif } @@ -677,11 +677,11 @@ enum logfd_flag_t LOGFD_STDOUT_TTY = (1 << 3) }; -static int write_all (int fd, const hcl_bch_t* ptr, hcl_oow_t len) +static int write_all (int fd, const hak_bch_t* ptr, hak_oow_t len) { while (len > 0) { - hcl_ooi_t wr; + hak_ooi_t wr; wr = write(fd, ptr, len); @@ -711,25 +711,25 @@ static int write_all (int fd, const hcl_bch_t* ptr, hcl_oow_t len) return 0; } -static int write_log (hcl_t* hcl, int fd, const hcl_bch_t* ptr, hcl_oow_t len) +static int write_log (hak_t* hak, int fd, const hak_bch_t* ptr, hak_oow_t len) { - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); while (len > 0) { if (xtn->log.out.len > 0) { - hcl_oow_t rcapa, cplen; + hak_oow_t rcapa, cplen; - rcapa = HCL_COUNTOF(xtn->log.out.buf) - xtn->log.out.len; + rcapa = HAK_COUNTOF(xtn->log.out.buf) - xtn->log.out.len; cplen = (len >= rcapa)? rcapa: len; - HCL_MEMCPY (&xtn->log.out.buf[xtn->log.out.len], ptr, cplen); + HAK_MEMCPY (&xtn->log.out.buf[xtn->log.out.len], ptr, cplen); xtn->log.out.len += cplen; ptr += cplen; len -= cplen; - if (xtn->log.out.len >= HCL_COUNTOF(xtn->log.out.buf)) + if (xtn->log.out.len >= HAK_COUNTOF(xtn->log.out.buf)) { int n; n = write_all(fd, xtn->log.out.buf, xtn->log.out.len); @@ -739,9 +739,9 @@ static int write_log (hcl_t* hcl, int fd, const hcl_bch_t* ptr, hcl_oow_t len) } else { - hcl_oow_t rcapa; + hak_oow_t rcapa; - rcapa = HCL_COUNTOF(xtn->log.out.buf); + rcapa = HAK_COUNTOF(xtn->log.out.buf); if (len >= rcapa) { if (write_all(fd, ptr, rcapa) <= -1) return -1; @@ -750,7 +750,7 @@ static int write_log (hcl_t* hcl, int fd, const hcl_bch_t* ptr, hcl_oow_t len) } else { - HCL_MEMCPY (xtn->log.out.buf, ptr, len); + HAK_MEMCPY (xtn->log.out.buf, ptr, len); xtn->log.out.len += len; ptr += len; len -= len; @@ -761,9 +761,9 @@ static int write_log (hcl_t* hcl, int fd, const hcl_bch_t* ptr, hcl_oow_t len) return 0; } -static void flush_log (hcl_t* hcl, int fd, int force) +static void flush_log (hak_t* hak, int fd, int force) { - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); if (xtn->log.out.len > 0 || force) { write_all (fd, xtn->log.out.buf, xtn->log.out.len); @@ -790,22 +790,22 @@ static size_t sprintf_timestamp (char* ts, struct tm* tmp) tmp->tm_hour, tmp->tm_min, tmp->tm_sec, off_h, off_m); } -static void log_write (hcl_t* hcl, hcl_bitmask_t mask, const hcl_ooch_t* msg, hcl_oow_t len) +static void log_write (hak_t* hak, hak_bitmask_t mask, const hak_ooch_t* msg, hak_oow_t len) { - hcl_bch_t buf[256]; - hcl_oow_t msgidx; + hak_bch_t buf[256]; + hak_oow_t msgidx; - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); int logfd; int is_tty; int force_flush = 0; - if (mask & HCL_LOG_STDERR) + if (mask & HAK_LOG_STDERR) { logfd = STDERR_FILENO; is_tty = !!(xtn->log.fd_flags & LOGFD_STDERR_TTY); } - else if (mask & HCL_LOG_STDOUT) + else if (mask & HAK_LOG_STDOUT) { logfd = STDOUT_FILENO; is_tty = !!(xtn->log.fd_flags & LOGFD_STDOUT_TTY); @@ -819,14 +819,14 @@ static void log_write (hcl_t* hcl, hcl_bitmask_t mask, const hcl_ooch_t* msg, hc /* TODO: beautify the log message. * do classification based on mask. */ - if (!(mask & (HCL_LOG_STDOUT | HCL_LOG_STDERR))) + if (!(mask & (HAK_LOG_STDOUT | HAK_LOG_STDERR))) { time_t now; char ts[64]; size_t tslen; struct tm tm, *tmp; - now = time(HCL_NULL); + now = time(HAK_NULL); #if defined(_WIN32) #if 0 tmp = localtime(&now); @@ -868,7 +868,7 @@ static void log_write (hcl_t* hcl, hcl_bitmask_t mask, const hcl_ooch_t* msg, hc #else tslen = strftime(ts, sizeof(ts), "%Y-%m-%d %H:%M:%S %z ", tmp); #endif - if (HCL_UNLIKELY(tslen == 0)) tslen = sprintf_timestamp(ts, tmp); + if (HAK_UNLIKELY(tslen == 0)) tslen = sprintf_timestamp(ts, tmp); #elif defined(__DOS__) tmp = localtime(&now); @@ -886,34 +886,34 @@ static void log_write (hcl_t* hcl, hcl_bitmask_t mask, const hcl_ooch_t* msg, hc #else tslen = strftime(ts, sizeof(ts), "%Y-%m-%d %H:%M:%S %Z ", tmp); #endif - if (HCL_UNLIKELY(tslen == 0)) tslen = sprintf_timestamp(ts, tmp); + if (HAK_UNLIKELY(tslen == 0)) tslen = sprintf_timestamp(ts, tmp); #endif - #if defined(HCL_OOCH_IS_UCH) + #if defined(HAK_OOCH_IS_UCH) #if 0 /* time stamp already in ascii. this double convertion is not needed */ - if (xtn->log_cmgr && hcl_getcmgr(hcl) != xtn->log_cmgr) + if (xtn->log_cmgr && hak_getcmgr(hak) != xtn->log_cmgr) { - hcl_uch_t tsu[64]; - hcl_oow_t tsulen; + hak_uch_t tsu[64]; + hak_oow_t tsulen; /* the timestamp is likely to contain simple ascii characters only. * conversion is not likely to fail regardless of encodings. * so i don't check errors here */ - tsulen = HCL_COUNTOF(tsu); - hcl_convbtooochars (hcl, ts, &tslen, tsu, &tsulen); - tslen = HCL_COUNTOF(ts); - hcl_conv_uchars_to_bchars_with_cmgr (tsu, &tsulen, ts, &tslen, xtn->log_cmgr); + tsulen = HAK_COUNTOF(tsu); + hak_convbtooochars (hak, ts, &tslen, tsu, &tsulen); + tslen = HAK_COUNTOF(ts); + hak_conv_uchars_to_bchars_with_cmgr (tsu, &tsulen, ts, &tslen, xtn->log_cmgr); } #endif #endif - write_log(hcl, logfd, ts, tslen); + write_log(hak, logfd, ts, tslen); } if (is_tty) { - if (mask & HCL_LOG_FATAL) write_log(hcl, logfd, "\x1B[1;31m", 7); - else if (mask & HCL_LOG_ERROR) write_log(hcl, logfd, "\x1B[1;32m", 7); - else if (mask & HCL_LOG_WARN) write_log(hcl, logfd, "\x1B[1;33m", 7); + if (mask & HAK_LOG_FATAL) write_log(hak, logfd, "\x1B[1;31m", 7); + else if (mask & HAK_LOG_ERROR) write_log(hak, logfd, "\x1B[1;32m", 7); + else if (mask & HAK_LOG_WARN) write_log(hak, logfd, "\x1B[1;33m", 7); } if (!msg) @@ -922,17 +922,17 @@ static void log_write (hcl_t* hcl, hcl_bitmask_t mask, const hcl_ooch_t* msg, hc goto flush_log_msg; } -#if defined(HCL_OOCH_IS_UCH) +#if defined(HAK_OOCH_IS_UCH) msgidx = 0; while (len > 0) { - hcl_oow_t ucslen, bcslen; + hak_oow_t ucslen, bcslen; int n; ucslen = len; - bcslen = HCL_COUNTOF(buf); + bcslen = HAK_COUNTOF(buf); - n = hcl_convootobchars(hcl, &msg[msgidx], &ucslen, buf, &bcslen); + n = hak_convootobchars(hak, &msg[msgidx], &ucslen, buf, &bcslen); if (n == 0 || n == -2) { /* n = 0: @@ -941,10 +941,10 @@ static void log_write (hcl_t* hcl, hcl_bitmask_t mask, const hcl_ooch_t* msg, hc * buffer not sufficient. not all got converted yet. * write what have been converted this round. */ - HCL_ASSERT (hcl, ucslen > 0); /* if this fails, the buffer size must be increased */ + HAK_ASSERT (hak, ucslen > 0); /* if this fails, the buffer size must be increased */ /* attempt to write all converted characters */ - if (write_log(hcl, logfd, buf, bcslen) <= -1) break; + if (write_log(hak, logfd, buf, bcslen) <= -1) break; if (n == 0) break; else @@ -960,174 +960,174 @@ static void log_write (hcl_t* hcl, hcl_bitmask_t mask, const hcl_ooch_t* msg, hc } } #else - write_log(hcl, logfd, msg, len); + write_log(hak, logfd, msg, len); #endif if (is_tty) { - if (mask & (HCL_LOG_FATAL | HCL_LOG_ERROR | HCL_LOG_WARN)) write_log(hcl, logfd, "\x1B[0m", 4); + if (mask & (HAK_LOG_FATAL | HAK_LOG_ERROR | HAK_LOG_WARN)) write_log(hak, logfd, "\x1B[0m", 4); } flush_log_msg: - flush_log (hcl, logfd, force_flush); + flush_log (hak, logfd, force_flush); } /* ----------------------------------------------------------------- * SYSTEM ERROR CONVERSION * ----------------------------------------------------------------- */ -static hcl_errnum_t errno_to_errnum (int errcode) +static hak_errnum_t errno_to_errnum (int errcode) { switch (errcode) { - case ENOMEM: return HCL_ESYSMEM; - case EINVAL: return HCL_EINVAL; + case ENOMEM: return HAK_ESYSMEM; + case EINVAL: return HAK_EINVAL; #if defined(EBUSY) - case EBUSY: return HCL_EBUSY; + case EBUSY: return HAK_EBUSY; #endif - case EACCES: return HCL_EACCES; + case EACCES: return HAK_EACCES; #if defined(EPERM) - case EPERM: return HCL_EPERM; + case EPERM: return HAK_EPERM; #endif #if defined(ENOTDIR) - case ENOTDIR: return HCL_ENOTDIR; + case ENOTDIR: return HAK_ENOTDIR; #endif - case ENOENT: return HCL_ENOENT; + case ENOENT: return HAK_ENOENT; #if defined(EEXIST) - case EEXIST: return HCL_EEXIST; + case EEXIST: return HAK_EEXIST; #endif #if defined(EINTR) - case EINTR: return HCL_EINTR; + case EINTR: return HAK_EINTR; #endif #if defined(EPIPE) - case EPIPE: return HCL_EPIPE; + case EPIPE: return HAK_EPIPE; #endif #if defined(EAGAIN) && defined(EWOULDBLOCK) && (EAGAIN != EWOULDBLOCK) case EAGAIN: - case EWOULDBLOCK: return HCL_EAGAIN; + case EWOULDBLOCK: return HAK_EAGAIN; #elif defined(EAGAIN) - case EAGAIN: return HCL_EAGAIN; + case EAGAIN: return HAK_EAGAIN; #elif defined(EWOULDBLOCK) - case EWOULDBLOCK: return HCL_EAGAIN; + case EWOULDBLOCK: return HAK_EAGAIN; #endif #if defined(EBADF) - case EBADF: return HCL_EBADHND; + case EBADF: return HAK_EBADHND; #endif #if defined(EIO) - case EIO: return HCL_EIOERR; + case EIO: return HAK_EIOERR; #endif - default: return HCL_ESYSERR; + default: return HAK_ESYSERR; } } #if defined(_WIN32) -static hcl_errnum_t winerr_to_errnum (DWORD errcode) +static hak_errnum_t winerr_to_errnum (DWORD errcode) { switch (errcode) { case ERROR_NOT_ENOUGH_MEMORY: case ERROR_OUTOFMEMORY: - return HCL_ESYSMEM; + return HAK_ESYSMEM; case ERROR_INVALID_PARAMETER: case ERROR_INVALID_NAME: - return HCL_EINVAL; + return HAK_EINVAL; case ERROR_INVALID_HANDLE: - return HCL_EBADHND; + return HAK_EBADHND; case ERROR_ACCESS_DENIED: case ERROR_SHARING_VIOLATION: - return HCL_EACCES; + return HAK_EACCES; #if defined(ERROR_IO_PRIVILEGE_FAILED) case ERROR_IO_PRIVILEGE_FAILED: #endif case ERROR_PRIVILEGE_NOT_HELD: - return HCL_EPERM; + return HAK_EPERM; case ERROR_FILE_NOT_FOUND: case ERROR_PATH_NOT_FOUND: - return HCL_ENOENT; + return HAK_ENOENT; case ERROR_ALREADY_EXISTS: case ERROR_FILE_EXISTS: - return HCL_EEXIST; + return HAK_EEXIST; case ERROR_BROKEN_PIPE: - return HCL_EPIPE; + return HAK_EPIPE; default: - return HCL_ESYSERR; + return HAK_ESYSERR; } } #endif #if defined(__OS2__) -static hcl_errnum_t os2err_to_errnum (APIRET errcode) +static hak_errnum_t os2err_to_errnum (APIRET errcode) { /* APIRET e */ switch (errcode) { case ERROR_NOT_ENOUGH_MEMORY: - return HCL_ESYSMEM; + return HAK_ESYSMEM; case ERROR_INVALID_PARAMETER: case ERROR_INVALID_NAME: - return HCL_EINVAL; + return HAK_EINVAL; case ERROR_INVALID_HANDLE: - return HCL_EBADHND; + return HAK_EBADHND; case ERROR_ACCESS_DENIED: case ERROR_SHARING_VIOLATION: - return HCL_EACCES; + return HAK_EACCES; case ERROR_FILE_NOT_FOUND: case ERROR_PATH_NOT_FOUND: - return HCL_ENOENT; + return HAK_ENOENT; case ERROR_ALREADY_EXISTS: - return HCL_EEXIST; + return HAK_EEXIST; /*TODO: add more mappings */ default: - return HCL_ESYSERR; + return HAK_ESYSERR; } } #if !defined(TCPV40HDRS) -static hcl_errnum_t os2sockerr_to_errnum (int errcode) +static hak_errnum_t os2sockerr_to_errnum (int errcode) { switch (errcode) { - case SOCEPERM: return HCL_EPERM; - case SOCENOENT: return HCL_ENOENT; - case SOCEINTR: return HCL_EINTR; - case SOCEACCES: return HCL_EACCES; - case SOCEINVAL: return HCL_EINVAL; - case SOCENOMEM: return HCL_ESYSMEM; - case SOCEPIPE: return HCL_EPIPE; - default: return HCL_ESYSERR; + case SOCEPERM: return HAK_EPERM; + case SOCENOENT: return HAK_ENOENT; + case SOCEINTR: return HAK_EINTR; + case SOCEACCES: return HAK_EACCES; + case SOCEINVAL: return HAK_EINVAL; + case SOCENOMEM: return HAK_ESYSMEM; + case SOCEPIPE: return HAK_EPIPE; + default: return HAK_ESYSERR; } } #endif /* TCPV40HDRS */ #endif /* __OS2__ */ #if defined(macintosh) -static hcl_errnum_t macerr_to_errnum (int errcode) +static hak_errnum_t macerr_to_errnum (int errcode) { switch (e) { case notEnoughMemoryErr: - return HCL_ESYSMEM; + return HAK_ESYSMEM; case paramErr: - return HCL_EINVAL; + return HAK_EINVAL; case qErr: /* queue element not found during deletion */ case fnfErr: /* file not found */ @@ -1135,16 +1135,16 @@ static hcl_errnum_t macerr_to_errnum (int errcode) case resNotFound: /* resource not found */ case resFNotFound: /* resource file not found */ case nbpNotFound: /* name not found on remove */ - return HCL_ENOENT; + return HAK_ENOENT; /*TODO: add more mappings */ default: - return HCL_ESYSERR; + return HAK_ESYSERR; } } #endif -hcl_errnum_t hcl_syserrstrb (hcl_t* hcl, int syserr_type, int syserr_code, hcl_bch_t* buf, hcl_oow_t len) +hak_errnum_t hak_syserrstrb (hak_t* hak, int syserr_type, int syserr_code, hak_bch_t* buf, hak_oow_t len) { switch (syserr_type) { @@ -1155,12 +1155,12 @@ hcl_errnum_t hcl_syserrstrb (hcl_t* hcl, int syserr_type, int syserr_code, hcl_b { char tmp[64]; sprintf (tmp, "socket error %d", (int)syserr_code); - hcl_copy_bcstr (buf, len, tmp); + hak_copy_bcstr (buf, len, tmp); } - return HCL_ESYSERR; + return HAK_ESYSERR; #else /* sock_strerror() available in tcpip32.dll only */ - if (buf) hcl_copy_bcstr (buf, len, sock_strerror(syserr_code)); + if (buf) hak_copy_bcstr (buf, len, sock_strerror(syserr_code)); return os2sockerr_to_errnum(syserr_code); #endif #endif @@ -1174,7 +1174,7 @@ hcl_errnum_t hcl_syserrstrb (hcl_t* hcl, int syserr_type, int syserr_code, hcl_b rc = FormatMessageA ( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, syserr_code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - buf, len, HCL_NULL + buf, len, HAK_NULL ); while (rc > 0 && buf[rc - 1] == '\r' || buf[rc - 1] == '\n') buf[--rc] = '\0'; } @@ -1184,12 +1184,12 @@ hcl_errnum_t hcl_syserrstrb (hcl_t* hcl, int syserr_type, int syserr_code, hcl_b { char tmp[64]; sprintf (tmp, "system error %d", (int)syserr_code); - hcl_copy_bcstr (buf, len, tmp); + hak_copy_bcstr (buf, len, tmp); } return os2err_to_errnum(syserr_code); #elif defined(macintosh) /* TODO: convert code to string */ - if (buf) hcl_copy_bcstr (buf, len, "system error"); + if (buf) hak_copy_bcstr (buf, len, "system error"); return macerr_to_errnum(syserr_code); #else /* in other systems, errno is still the native system error code. @@ -1203,43 +1203,43 @@ hcl_errnum_t hcl_syserrstrb (hcl_t* hcl, int syserr_type, int syserr_code, hcl_b if (buf && len > 0) { /* to work around mess between XSI and GNU strerror_r */ - hcl_oow_t x; + hak_oow_t x; buf[0] = '\0'; - /* cast to hcl_oow_t to cater for prototype difference. + /* cast to hak_oow_t to cater for prototype difference. * one returning int, the other returning a pointer. * x > 1024 in case the XSI version before glibc 2.13 returns * a positive error code upon failure */ - x = (hcl_oow_t)strerror_r(syserr_code, buf, len); - if (x != (hcl_oow_t)buf && buf[0] == '\0' && x != 0 && x > 1024 && x != (hcl_oow_t)-1) - hcl_copy_bcstr (buf, len, (const hcl_bch_t*)x); + x = (hak_oow_t)strerror_r(syserr_code, buf, len); + if (x != (hak_oow_t)buf && buf[0] == '\0' && x != 0 && x > 1024 && x != (hak_oow_t)-1) + hak_copy_bcstr (buf, len, (const hak_bch_t*)x); } #else /* this may be thread unsafe */ - if (buf && len > 0) hcl_copy_bcstr (buf, len, strerror(syserr_code)); + if (buf && len > 0) hak_copy_bcstr (buf, len, strerror(syserr_code)); #endif return errno_to_errnum(syserr_code); } - if (buf) hcl_copy_bcstr (buf, len, "system error"); - return HCL_ESYSERR; + if (buf) hak_copy_bcstr (buf, len, "system error"); + return HAK_ESYSERR; } /* -------------------------------------------------------------------------- * ASSERTION SUPPORT * -------------------------------------------------------------------------- */ -#if defined(HCL_BUILD_RELEASE) +#if defined(HAK_BUILD_RELEASE) -static void _assertfail (hcl_t* hcl, const hcl_bch_t* expr, const hcl_bch_t* file, hcl_oow_t line) +static void _assertfail (hak_t* hak, const hak_bch_t* expr, const hak_bch_t* file, hak_oow_t line) { /* do nothing */ } -#else /* defined(HCL_BUILD_RELEASE) */ +#else /* defined(HAK_BUILD_RELEASE) */ -#if defined(HCL_ENABLE_LIBUNWIND) +#if defined(HAK_ENABLE_LIBUNWIND) #include -static void backtrace_stack_frames (hcl_t* hcl) +static void backtrace_stack_frames (hak_t* hak) { unw_cursor_t cursor; unw_context_t context; @@ -1248,7 +1248,7 @@ static void backtrace_stack_frames (hcl_t* hcl) unw_getcontext(&context); unw_init_local(&cursor, &context); - hcl_logbfmt (hcl, HCL_LOG_STDERR | HCL_LOG_UNTYPED | HCL_LOG_DEBUG, "[BACKTRACE]\n"); + hak_logbfmt (hak, HAK_LOG_STDERR | HAK_LOG_UNTYPED | HAK_LOG_DEBUG, "[BACKTRACE]\n"); for (n = 0; unw_step(&cursor) > 0; n++) { unw_word_t ip, sp, off; @@ -1257,49 +1257,49 @@ static void backtrace_stack_frames (hcl_t* hcl) unw_get_reg (&cursor, UNW_REG_IP, &ip); unw_get_reg (&cursor, UNW_REG_SP, &sp); - if (unw_get_proc_name(&cursor, symbol, HCL_COUNTOF(symbol), &off)) + if (unw_get_proc_name(&cursor, symbol, HAK_COUNTOF(symbol), &off)) { - hcl_copy_bcstr (symbol, HCL_COUNTOF(symbol), ""); + hak_copy_bcstr (symbol, HAK_COUNTOF(symbol), ""); } - hcl_logbfmt (hcl, HCL_LOG_STDERR | HCL_LOG_UNTYPED | HCL_LOG_DEBUG, + hak_logbfmt (hak, HAK_LOG_STDERR | HAK_LOG_UNTYPED | HAK_LOG_DEBUG, "#%02d ip=0x%*p sp=0x%*p %hs+0x%zu\n", - n, HCL_SIZEOF(void*) * 2, (void*)ip, HCL_SIZEOF(void*) * 2, (void*)sp, symbol, (hcl_oow_t)off); + n, HAK_SIZEOF(void*) * 2, (void*)ip, HAK_SIZEOF(void*) * 2, (void*)sp, symbol, (hak_oow_t)off); } } #elif defined(HAVE_BACKTRACE) #include -static void backtrace_stack_frames (hcl_t* hcl) +static void backtrace_stack_frames (hak_t* hak) { void* btarray[128]; - hcl_oow_t btsize; + hak_oow_t btsize; char** btsyms; - btsize = backtrace (btarray, HCL_COUNTOF(btarray)); + btsize = backtrace (btarray, HAK_COUNTOF(btarray)); btsyms = backtrace_symbols (btarray, btsize); if (btsyms) { - hcl_oow_t i; - hcl_logbfmt (hcl, HCL_LOG_STDERR | HCL_LOG_UNTYPED | HCL_LOG_DEBUG, "[BACKTRACE]\n"); + hak_oow_t i; + hak_logbfmt (hak, HAK_LOG_STDERR | HAK_LOG_UNTYPED | HAK_LOG_DEBUG, "[BACKTRACE]\n"); for (i = 0; i < btsize; i++) { - hcl_logbfmt (hcl, HCL_LOG_STDERR | HCL_LOG_UNTYPED | HCL_LOG_DEBUG, " %hs\n", btsyms[i]); + hak_logbfmt (hak, HAK_LOG_STDERR | HAK_LOG_UNTYPED | HAK_LOG_DEBUG, " %hs\n", btsyms[i]); } free (btsyms); } } #else -static void backtrace_stack_frames (hcl_t* hcl) +static void backtrace_stack_frames (hak_t* hak) { /* do nothing. not supported */ } #endif -static void _assertfail (hcl_t* hcl, const hcl_bch_t* expr, const hcl_bch_t* file, hcl_oow_t line) +static void _assertfail (hak_t* hak, const hak_bch_t* expr, const hak_bch_t* file, hak_oow_t line) { - hcl_logbfmt (hcl, HCL_LOG_STDERR | HCL_LOG_UNTYPED | HCL_LOG_FATAL, "ASSERTION FAILURE: %hs at %hs:%zu\n", expr, file, line); - backtrace_stack_frames (hcl); + hak_logbfmt (hak, HAK_LOG_STDERR | HAK_LOG_UNTYPED | HAK_LOG_FATAL, "ASSERTION FAILURE: %hs at %hs:%zu\n", expr, file, line); + backtrace_stack_frames (hak); #if defined(_WIN32) ExitProcess (249); @@ -1332,131 +1332,131 @@ static void _assertfail (hcl_t* hcl, const hcl_bch_t* expr, const hcl_bch_t* fil #endif } -#endif /* defined(HCL_BUILD_RELEASE) */ +#endif /* defined(HAK_BUILD_RELEASE) */ /* ----------------------------------------------------------------- * POSSIBLY MONOTONIC TIME * ----------------------------------------------------------------- */ -static void vm_gettime (hcl_t* hcl, hcl_ntime_t* now) +static void vm_gettime (hak_t* hak, hak_ntime_t* now) { #if defined(_WIN32) #if defined(_WIN64) || (defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600)) - hcl_uint64_t bigsec, bigmsec; + hak_uint64_t bigsec, bigmsec; bigmsec = GetTickCount64(); #else - xtn_t* xtn = GET_XTN(hcl); - hcl_uint64_t bigsec, bigmsec; + xtn_t* xtn = GET_XTN(hak); + hak_uint64_t bigsec, bigmsec; DWORD msec; msec = GetTickCount(); /* this can sustain for 49.7 days */ if (msec < xtn->tc_last) { /* i assume the difference is never bigger than 49.7 days */ - /*diff = (HCL_TYPE_MAX(DWORD) - xtn->tc_last) + 1 + msec;*/ + /*diff = (HAK_TYPE_MAX(DWORD) - xtn->tc_last) + 1 + msec;*/ xtn->tc_overflow++; - bigmsec = ((hcl_uint64_t)HCL_TYPE_MAX(DWORD) * xtn->tc_overflow) + msec; + bigmsec = ((hak_uint64_t)HAK_TYPE_MAX(DWORD) * xtn->tc_overflow) + msec; } else bigmsec = msec; xtn->tc_last = msec; #endif - bigsec = HCL_MSEC_TO_SEC(bigmsec); - bigmsec -= HCL_SEC_TO_MSEC(bigsec); - HCL_INIT_NTIME(now, bigsec, HCL_MSEC_TO_NSEC(bigmsec)); + bigsec = HAK_MSEC_TO_SEC(bigmsec); + bigmsec -= HAK_SEC_TO_MSEC(bigsec); + HAK_INIT_NTIME(now, bigsec, HAK_MSEC_TO_NSEC(bigmsec)); #elif defined(__OS2__) - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); ULONG msec; - #if (HCL_SIZEOF_UINT64_T > 0) - hcl_uint64_t bigsec, bigmsec; + #if (HAK_SIZEOF_UINT64_T > 0) + hak_uint64_t bigsec, bigmsec; /* TODO: use DosTmrQueryTime() and DosTmrQueryFreq()? */ - DosQuerySysInfo (QSV_MS_COUNT, QSV_MS_COUNT, &msec, HCL_SIZEOF(msec)); /* milliseconds */ + DosQuerySysInfo (QSV_MS_COUNT, QSV_MS_COUNT, &msec, HAK_SIZEOF(msec)); /* milliseconds */ /* it must return NO_ERROR */ if (msec < xtn->tc_last) { xtn->tc_overflow++; - bigmsec = ((hcl_uint64_t)HCL_TYPE_MAX(ULONG) * xtn->tc_overflow) + msec; + bigmsec = ((hak_uint64_t)HAK_TYPE_MAX(ULONG) * xtn->tc_overflow) + msec; } else bigmsec = msec; xtn->tc_last = msec; - bigsec = HCL_MSEC_TO_SEC(bigmsec); - bigmsec -= HCL_SEC_TO_MSEC(bigsec); - HCL_INIT_NTIME (now, bigsec, HCL_MSEC_TO_NSEC(bigmsec)); + bigsec = HAK_MSEC_TO_SEC(bigmsec); + bigmsec -= HAK_SEC_TO_MSEC(bigsec); + HAK_INIT_NTIME (now, bigsec, HAK_MSEC_TO_NSEC(bigmsec)); #else - hcl_uint32_t bigsec, bigmsec; + hak_uint32_t bigsec, bigmsec; - DosQuerySysInfo (QSV_MS_COUNT, QSV_MS_COUNT, &msec, HCL_SIZEOF(msec)); - bigsec = HCL_MSEC_TO_SEC(msec); - bigmsec = msec - HCL_SEC_TO_MSEC(bigsec); + DosQuerySysInfo (QSV_MS_COUNT, QSV_MS_COUNT, &msec, HAK_SIZEOF(msec)); + bigsec = HAK_MSEC_TO_SEC(msec); + bigmsec = msec - HAK_SEC_TO_MSEC(bigsec); if (msec < xtn->tc_last) { ULONG i; - hcl_uint32_t inc; + hak_uint32_t inc; xtn->tc_overflow++; - inc = HCL_MSEC_TO_SEC(HCL_TYPE_MAX(hcl_uint32_t)); + inc = HAK_MSEC_TO_SEC(HAK_TYPE_MAX(hak_uint32_t)); for (i = 0; i < xtn->tc_overflow; i++) { - ULONG max = HCL_TYPE_MAX(hcl_uint32_t) - bigsec; + ULONG max = HAK_TYPE_MAX(hak_uint32_t) - bigsec; if (max > inc) { - bigsec = HCL_TYPE_MAX(hcl_uint32_t); + bigsec = HAK_TYPE_MAX(hak_uint32_t); break; } bigsec += inc; } } - HCL_INIT_NTIME (now, bigsec, HCL_MSEC_TO_NSEC(bigmsec)); + HAK_INIT_NTIME (now, bigsec, HAK_MSEC_TO_NSEC(bigmsec)); #endif #elif defined(__DOS__) - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); clock_t c, elapsed; - hcl_ntime_t et; + hak_ntime_t et; c = clock(); - elapsed = (c < xtn->tc_last)? (HCL_TYPE_MAX(clock_t) - xtn->tc_last + c + 1): (c - xtn->tc_last); + elapsed = (c < xtn->tc_last)? (HAK_TYPE_MAX(clock_t) - xtn->tc_last + c + 1): (c - xtn->tc_last); xtn->tc_last = c; now->sec = c / CLOCKS_PER_SEC; #if (CLOCKS_PER_SEC == 100) - now->nsec = HCL_MSEC_TO_NSEC((c % (clock_t)CLOCKS_PER_SEC) * 10); + now->nsec = HAK_MSEC_TO_NSEC((c % (clock_t)CLOCKS_PER_SEC) * 10); #elif (CLOCKS_PER_SEC == 1000) - now->nsec = HCL_MSEC_TO_NSEC(c % (clock_t)CLOCKS_PER_SEC); + now->nsec = HAK_MSEC_TO_NSEC(c % (clock_t)CLOCKS_PER_SEC); #elif (CLOCKS_PER_SEC == 1000000L) - now->nsec = HCL_USEC_TO_NSEC(c % (clock_t)CLOCKS_PER_SEC); + now->nsec = HAK_USEC_TO_NSEC(c % (clock_t)CLOCKS_PER_SEC); #elif (CLOCKS_PER_SEC == 1000000000L) now->nsec = (c % (clock_t)CLOCKS_PER_SEC); #else # error UNSUPPORTED CLOCKS_PER_SEC #endif - HCL_ADD_NTIME (&xtn->tc_last_ret, &xtn->tc_last_ret, &et); + HAK_ADD_NTIME (&xtn->tc_last_ret, &xtn->tc_last_ret, &et); *now = xtn->tc_last_ret; #elif defined(macintosh) UnsignedWide tick; - hcl_uint64_t tick64; + hak_uint64_t tick64; Microseconds (&tick); - tick64 = *(hcl_uint64_t*)&tick; - HCL_INIT_NTIME (now, HCL_USEC_TO_SEC(tick64), HCL_USEC_TO_NSEC(tick64)); + tick64 = *(hak_uint64_t*)&tick; + HAK_INIT_NTIME (now, HAK_USEC_TO_SEC(tick64), HAK_USEC_TO_NSEC(tick64)); #elif defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC) struct timespec ts; clock_gettime (CLOCK_MONOTONIC, &ts); - HCL_INIT_NTIME(now, ts.tv_sec, ts.tv_nsec); + HAK_INIT_NTIME(now, ts.tv_sec, ts.tv_nsec); #elif defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_REALTIME) struct timespec ts; clock_gettime (CLOCK_REALTIME, &ts); - HCL_INIT_NTIME(now, ts.tv_sec, ts.tv_nsec); + HAK_INIT_NTIME(now, ts.tv_sec, ts.tv_nsec); #else struct timeval tv; - gettimeofday (&tv, HCL_NULL); - HCL_INIT_NTIME(now, tv.tv_sec, HCL_USEC_TO_NSEC(tv.tv_usec)); + gettimeofday (&tv, HAK_NULL); + HAK_INIT_NTIME(now, tv.tv_sec, HAK_USEC_TO_NSEC(tv.tv_usec)); #endif } @@ -1464,54 +1464,54 @@ static void vm_gettime (hcl_t* hcl, hcl_ntime_t* now) * IO MULTIPLEXING * ----------------------------------------------------------------- */ -static int _add_poll_fd (hcl_t* hcl, int fd, int event_mask) +static int _add_poll_fd (hak_t* hak, int fd, int event_mask) { #if defined(USE_DEVPOLL) - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); struct pollfd ev; - HCL_ASSERT (hcl, xtn->ep >= 0); + HAK_ASSERT (hak, xtn->ep >= 0); ev.fd = fd; ev.events = event_mask; ev.revents = 0; - if (write(xtn->ep, &ev, HCL_SIZEOF(ev)) != HCL_SIZEOF(ev)) + if (write(xtn->ep, &ev, HAK_SIZEOF(ev)) != HAK_SIZEOF(ev)) { - hcl_seterrwithsyserr (hcl, 0, errno); - HCL_DEBUG2 (hcl, "Cannot add file descriptor %d to devpoll - %hs\n", fd, strerror(errno)); + hak_seterrwithsyserr (hak, 0, errno); + HAK_DEBUG2 (hak, "Cannot add file descriptor %d to devpoll - %hs\n", fd, strerror(errno)); return -1; } return 0; #elif defined(USE_KQUEUE) - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); struct kevent ev; - hcl_oow_t rindex, roffset; - hcl_oow_t rv = 0; + hak_oow_t rindex, roffset; + hak_oow_t rv = 0; - rindex = (hcl_oow_t)fd / (HCL_BITSOF(hcl_oow_t) >> 1); - roffset = ((hcl_oow_t)fd << 1) % HCL_BITSOF(hcl_oow_t); + rindex = (hak_oow_t)fd / (HAK_BITSOF(hak_oow_t) >> 1); + roffset = ((hak_oow_t)fd << 1) % HAK_BITSOF(hak_oow_t); if (rindex >= xtn->ev.reg.capa) { - hcl_oow_t* tmp; - hcl_oow_t newcapa; + hak_oow_t* tmp; + hak_oow_t newcapa; - HCL_STATIC_ASSERT (HCL_SIZEOF(*tmp) == HCL_SIZEOF(*xtn->ev.reg.ptr)); + HAK_STATIC_ASSERT (HAK_SIZEOF(*tmp) == HAK_SIZEOF(*xtn->ev.reg.ptr)); newcapa = rindex + 1; - newcapa = HCL_ALIGN_POW2(newcapa, 16); + newcapa = HAK_ALIGN_POW2(newcapa, 16); - tmp = (hcl_oow_t*)hcl_reallocmem(hcl, xtn->ev.reg.ptr, newcapa * HCL_SIZEOF(*tmp)); + tmp = (hak_oow_t*)hak_reallocmem(hak, xtn->ev.reg.ptr, newcapa * HAK_SIZEOF(*tmp)); if (!tmp) { - const hcl_ooch_t* oldmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ESYSERR, "unable to add file descriptor %d to kqueue - %js", fd, oldmsg); - HCL_DEBUG1 (hcl, "%js", hcl_geterrmsg(hcl)); + const hak_ooch_t* oldmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ESYSERR, "unable to add file descriptor %d to kqueue - %js", fd, oldmsg); + HAK_DEBUG1 (hak, "%js", hak_geterrmsg(hak)); return -1; } - HCL_MEMSET (&tmp[xtn->ev.reg.capa], 0, newcapa - xtn->ev.reg.capa); + HAK_MEMSET (&tmp[xtn->ev.reg.capa], 0, newcapa - xtn->ev.reg.capa); xtn->ev.reg.ptr = tmp; xtn->ev.reg.capa = newcapa; } @@ -1519,17 +1519,17 @@ static int _add_poll_fd (hcl_t* hcl, int fd, int event_mask) if (event_mask & XPOLLIN) { /*EV_SET (&ev, fd, EVFILT_READ, EV_ADD | EV_CLEAR, 0, 0, 0);*/ - HCL_MEMSET (&ev, 0, HCL_SIZEOF(ev)); + HAK_MEMSET (&ev, 0, HAK_SIZEOF(ev)); ev.ident = fd; ev.flags = EV_ADD; #if defined(USE_THREAD) ev.flags |= EV_CLEAR; /* EV_CLEAR for edge trigger? */ #endif ev.filter = EVFILT_READ; - if (kevent(xtn->ep, &ev, 1, HCL_NULL, 0, HCL_NULL) == -1) + if (kevent(xtn->ep, &ev, 1, HAK_NULL, 0, HAK_NULL) == -1) { - hcl_seterrwithsyserr (hcl, 0, errno); - HCL_DEBUG2 (hcl, "Cannot add file descriptor %d to kqueue for read - %hs\n", fd, strerror(errno)); + hak_seterrwithsyserr (hak, 0, errno); + HAK_DEBUG2 (hak, "Cannot add file descriptor %d to kqueue for read - %hs\n", fd, strerror(errno)); return -1; } @@ -1538,25 +1538,25 @@ static int _add_poll_fd (hcl_t* hcl, int fd, int event_mask) if (event_mask & XPOLLOUT) { /*EV_SET (&ev, fd, EVFILT_WRITE, EV_ADD | EV_CLEAR, 0, 0, 0);*/ - HCL_MEMSET (&ev, 0, HCL_SIZEOF(ev)); + HAK_MEMSET (&ev, 0, HAK_SIZEOF(ev)); ev.ident = fd; ev.flags = EV_ADD; #if defined(USE_THREAD) ev.flags |= EV_CLEAR; /* EV_CLEAR for edge trigger? */ #endif ev.filter = EVFILT_WRITE; - if (kevent(xtn->ep, &ev, 1, HCL_NULL, 0, HCL_NULL) == -1) + if (kevent(xtn->ep, &ev, 1, HAK_NULL, 0, HAK_NULL) == -1) { - hcl_seterrwithsyserr (hcl, 0, errno); - HCL_DEBUG2 (hcl, "Cannot add file descriptor %d to kqueue for write - %hs\n", fd, strerror(errno)); + hak_seterrwithsyserr (hak, 0, errno); + HAK_DEBUG2 (hak, "Cannot add file descriptor %d to kqueue for write - %hs\n", fd, strerror(errno)); if (event_mask & XPOLLIN) { - HCL_MEMSET (&ev, 0, HCL_SIZEOF(ev)); + HAK_MEMSET (&ev, 0, HAK_SIZEOF(ev)); ev.ident = fd; ev.flags = EV_DELETE; ev.filter = EVFILT_READ; - kevent(xtn->ep, &ev, 1, HCL_NULL, 0, HCL_NULL); + kevent(xtn->ep, &ev, 1, HAK_NULL, 0, HAK_NULL); } return -1; } @@ -1564,15 +1564,15 @@ static int _add_poll_fd (hcl_t* hcl, int fd, int event_mask) rv |= 2; } - HCL_SETBITS (hcl_oow_t, xtn->ev.reg.ptr[rindex], roffset, 2, rv); + HAK_SETBITS (hak_oow_t, xtn->ev.reg.ptr[rindex], roffset, 2, rv); return 0; #elif defined(USE_EPOLL) - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); struct epoll_event ev; - HCL_ASSERT (hcl, xtn->ep >= 0); - HCL_MEMSET (&ev, 0, HCL_SIZEOF(ev)); + HAK_ASSERT (hak, xtn->ep >= 0); + HAK_MEMSET (&ev, 0, HAK_SIZEOF(ev)); ev.events = event_mask; #if defined(USE_THREAD) && defined(EPOLLET) /* epoll_wait may return again if the worker thread consumes events. @@ -1584,29 +1584,29 @@ static int _add_poll_fd (hcl_t* hcl, int fd, int event_mask) ev.data.fd = fd; if (epoll_ctl(xtn->ep, EPOLL_CTL_ADD, fd, &ev) == -1) { - hcl_seterrwithsyserr (hcl, 0, errno); - HCL_DEBUG2 (hcl, "Cannot add file descriptor %d to epoll - %hs\n", fd, strerror(errno)); + hak_seterrwithsyserr (hak, 0, errno); + HAK_DEBUG2 (hak, "Cannot add file descriptor %d to epoll - %hs\n", fd, strerror(errno)); return -1; } return 0; #elif defined(USE_POLL) - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); MUTEX_LOCK (&xtn->ev.reg.pmtx); if (xtn->ev.reg.len >= xtn->ev.reg.capa) { struct pollfd* tmp, * tmp2; - hcl_oow_t newcapa; + hak_oow_t newcapa; - newcapa = HCL_ALIGN_POW2 (xtn->ev.reg.len + 1, 256); - tmp = (struct pollfd*)hcl_reallocmem(hcl, xtn->ev.reg.ptr, newcapa * HCL_SIZEOF(*tmp)); - tmp2 = (struct pollfd*)hcl_reallocmem(hcl, xtn->ev.buf, newcapa * HCL_SIZEOF(*tmp2)); + newcapa = HAK_ALIGN_POW2 (xtn->ev.reg.len + 1, 256); + tmp = (struct pollfd*)hak_reallocmem(hak, xtn->ev.reg.ptr, newcapa * HAK_SIZEOF(*tmp)); + tmp2 = (struct pollfd*)hak_reallocmem(hak, xtn->ev.buf, newcapa * HAK_SIZEOF(*tmp2)); if (!tmp || !tmp2) { - HCL_DEBUG2 (hcl, "Cannot add file descriptor %d to poll - %hs\n", fd, strerror(errno)); + HAK_DEBUG2 (hak, "Cannot add file descriptor %d to poll - %hs\n", fd, strerror(errno)); MUTEX_UNLOCK (&xtn->ev.reg.pmtx); - if (tmp) hcl_freemem (hcl, tmp); + if (tmp) hak_freemem (hak, tmp); return -1; } @@ -1625,7 +1625,7 @@ static int _add_poll_fd (hcl_t* hcl, int fd, int event_mask) return 0; #elif defined(USE_SELECT) - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); MUTEX_LOCK (&xtn->ev.reg.smtx); if (event_mask & XPOLLIN) @@ -1644,93 +1644,93 @@ static int _add_poll_fd (hcl_t* hcl, int fd, int event_mask) #else - HCL_DEBUG1 (hcl, "Cannot add file descriptor %d to poll - not implemented\n", fd); - hcl_seterrnum (hcl, HCL_ENOIMPL); + HAK_DEBUG1 (hak, "Cannot add file descriptor %d to poll - not implemented\n", fd); + hak_seterrnum (hak, HAK_ENOIMPL); return -1; #endif } -static int _del_poll_fd (hcl_t* hcl, int fd) +static int _del_poll_fd (hak_t* hak, int fd) { #if defined(USE_DEVPOLL) - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); struct pollfd ev; - HCL_ASSERT (hcl, xtn->ep >= 0); + HAK_ASSERT (hak, xtn->ep >= 0); ev.fd = fd; ev.events = POLLREMOVE; ev.revents = 0; - if (write(xtn->ep, &ev, HCL_SIZEOF(ev)) != HCL_SIZEOF(ev)) + if (write(xtn->ep, &ev, HAK_SIZEOF(ev)) != HAK_SIZEOF(ev)) { - hcl_seterrwithsyserr (hcl, 0, errno); - HCL_DEBUG2 (hcl, "Cannot remove file descriptor %d from devpoll - %hs\n", fd, strerror(errno)); + hak_seterrwithsyserr (hak, 0, errno); + HAK_DEBUG2 (hak, "Cannot remove file descriptor %d from devpoll - %hs\n", fd, strerror(errno)); return -1; } return 0; #elif defined(USE_KQUEUE) - xtn_t* xtn = GET_XTN(hcl); - hcl_oow_t rindex, roffset; + xtn_t* xtn = GET_XTN(hak); + hak_oow_t rindex, roffset; int rv; struct kevent ev; - rindex = (hcl_oow_t)fd / (HCL_BITSOF(hcl_oow_t) >> 1); - roffset = ((hcl_oow_t)fd << 1) % HCL_BITSOF(hcl_oow_t); + rindex = (hak_oow_t)fd / (HAK_BITSOF(hak_oow_t) >> 1); + roffset = ((hak_oow_t)fd << 1) % HAK_BITSOF(hak_oow_t); if (rindex >= xtn->ev.reg.capa) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "unknown file descriptor %d", fd); - HCL_DEBUG2 (hcl, "Cannot remove file descriptor %d from kqueue - %js\n", fd, hcl_geterrmsg(hcl)); + hak_seterrbfmt (hak, HAK_EINVAL, "unknown file descriptor %d", fd); + HAK_DEBUG2 (hak, "Cannot remove file descriptor %d from kqueue - %js\n", fd, hak_geterrmsg(hak)); return -1; }; - rv = HCL_GETBITS (hcl_oow_t, xtn->ev.reg.ptr[rindex], roffset, 2); + rv = HAK_GETBITS (hak_oow_t, xtn->ev.reg.ptr[rindex], roffset, 2); if (rv & 1) { /*EV_SET (&ev, fd, EVFILT_READ, EV_DELETE, 0, 0, 0);*/ - HCL_MEMSET (&ev, 0, HCL_SIZEOF(ev)); + HAK_MEMSET (&ev, 0, HAK_SIZEOF(ev)); ev.ident = fd; ev.flags = EV_DELETE; ev.filter = EVFILT_READ; - kevent(xtn->ep, &ev, 1, HCL_NULL, 0, HCL_NULL); + kevent(xtn->ep, &ev, 1, HAK_NULL, 0, HAK_NULL); /* no error check for now */ } if (rv & 2) { /*EV_SET (&ev, fd, EVFILT_WRITE, EV_DELETE, 0, 0, 0);*/ - HCL_MEMSET (&ev, 0, HCL_SIZEOF(ev)); + HAK_MEMSET (&ev, 0, HAK_SIZEOF(ev)); ev.ident = fd; ev.flags = EV_DELETE; ev.filter = EVFILT_WRITE; - kevent(xtn->ep, &ev, 1, HCL_NULL, 0, HCL_NULL); + kevent(xtn->ep, &ev, 1, HAK_NULL, 0, HAK_NULL); /* no error check for now */ } - HCL_SETBITS (hcl_oow_t, xtn->ev.reg.ptr[rindex], roffset, 2, 0); + HAK_SETBITS (hak_oow_t, xtn->ev.reg.ptr[rindex], roffset, 2, 0); return 0; #elif defined(USE_EPOLL) - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); struct epoll_event ev; - HCL_ASSERT (hcl, xtn->ep >= 0); - HCL_MEMSET (&ev, 0, HCL_SIZEOF(ev)); + HAK_ASSERT (hak, xtn->ep >= 0); + HAK_MEMSET (&ev, 0, HAK_SIZEOF(ev)); if (epoll_ctl(xtn->ep, EPOLL_CTL_DEL, fd, &ev) == -1) { - hcl_seterrwithsyserr (hcl, 0, errno); - HCL_DEBUG2 (hcl, "Cannot remove file descriptor %d from epoll - %hs\n", fd, strerror(errno)); + hak_seterrwithsyserr (hak, 0, errno); + HAK_DEBUG2 (hak, "Cannot remove file descriptor %d from epoll - %hs\n", fd, strerror(errno)); return -1; } return 0; #elif defined(USE_POLL) - xtn_t* xtn = GET_XTN(hcl); - hcl_oow_t i; + xtn_t* xtn = GET_XTN(hak); + hak_oow_t i; /* TODO: performance boost. no linear search */ MUTEX_LOCK (&xtn->ev.reg.pmtx); @@ -1739,7 +1739,7 @@ static int _del_poll_fd (hcl_t* hcl, int fd) if (xtn->ev.reg.ptr[i].fd == fd) { xtn->ev.reg.len--; - HCL_MEMMOVE (&xtn->ev.reg.ptr[i], &xtn->ev.reg.ptr[i+1], (xtn->ev.reg.len - i) * HCL_SIZEOF(*xtn->ev.reg.ptr)); + HAK_MEMMOVE (&xtn->ev.reg.ptr[i], &xtn->ev.reg.ptr[i+1], (xtn->ev.reg.len - i) * HAK_SIZEOF(*xtn->ev.reg.ptr)); MUTEX_UNLOCK (&xtn->ev.reg.pmtx); return 0; } @@ -1747,12 +1747,12 @@ static int _del_poll_fd (hcl_t* hcl, int fd) MUTEX_UNLOCK (&xtn->ev.reg.pmtx); - HCL_DEBUG1 (hcl, "Cannot remove file descriptor %d from poll - not found\n", fd); - hcl_seterrnum (hcl, HCL_ENOENT); + HAK_DEBUG1 (hak, "Cannot remove file descriptor %d from poll - not found\n", fd); + hak_seterrnum (hak, HAK_ENOENT); return -1; #elif defined(USE_SELECT) - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); MUTEX_LOCK (&xtn->ev.reg.smtx); FD_CLR (fd, &xtn->ev.reg.rfds); @@ -1773,20 +1773,20 @@ static int _del_poll_fd (hcl_t* hcl, int fd) #else - HCL_DEBUG1 (hcl, "Cannot remove file descriptor %d from poll - not implemented\n", fd); - hcl_seterrnum (hcl, HCL_ENOIMPL); + HAK_DEBUG1 (hak, "Cannot remove file descriptor %d from poll - not implemented\n", fd); + hak_seterrnum (hak, HAK_ENOIMPL); return -1; #endif } -static int _mod_poll_fd (hcl_t* hcl, int fd, int event_mask) +static int _mod_poll_fd (hak_t* hak, int fd, int event_mask) { #if defined(USE_DEVPOLL) - if (_del_poll_fd (hcl, fd) <= -1) return -1; + if (_del_poll_fd (hak, fd) <= -1) return -1; - if (_add_poll_fd (hcl, fd, event_mask) <= -1) + if (_add_poll_fd (hak, fd, event_mask) <= -1) { /* TODO: any good way to rollback successful deletion? */ return -1; @@ -1794,32 +1794,32 @@ static int _mod_poll_fd (hcl_t* hcl, int fd, int event_mask) return 0; #elif defined(USE_KQUEUE) - xtn_t* xtn = GET_XTN(hcl); - hcl_oow_t rindex, roffset; + xtn_t* xtn = GET_XTN(hak); + hak_oow_t rindex, roffset; int rv, newrv = 0; struct kevent ev; - rindex = (hcl_oow_t)fd / (HCL_BITSOF(hcl_oow_t) >> 1); - roffset = ((hcl_oow_t)fd << 1) % HCL_BITSOF(hcl_oow_t); + rindex = (hak_oow_t)fd / (HAK_BITSOF(hak_oow_t) >> 1); + roffset = ((hak_oow_t)fd << 1) % HAK_BITSOF(hak_oow_t); if (rindex >= xtn->ev.reg.capa) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "unknown file descriptor %d", fd); - HCL_DEBUG2 (hcl, "Cannot modify file descriptor %d in kqueue - %js\n", fd, hcl_geterrmsg(hcl)); + hak_seterrbfmt (hak, HAK_EINVAL, "unknown file descriptor %d", fd); + HAK_DEBUG2 (hak, "Cannot modify file descriptor %d in kqueue - %js\n", fd, hak_geterrmsg(hak)); return -1; }; - rv = HCL_GETBITS(hcl_oow_t, xtn->ev.reg.ptr[rindex], roffset, 2); + rv = HAK_GETBITS(hak_oow_t, xtn->ev.reg.ptr[rindex], roffset, 2); if (rv & 1) { if (!(event_mask & XPOLLIN)) { - HCL_MEMSET (&ev, 0, HCL_SIZEOF(ev)); + HAK_MEMSET (&ev, 0, HAK_SIZEOF(ev)); ev.ident = fd; ev.flags = EV_DELETE; ev.filter = EVFILT_READ; - if (kevent(xtn->ep, &ev, 1, HCL_NULL, 0, HCL_NULL) == -1) goto kqueue_syserr; + if (kevent(xtn->ep, &ev, 1, HAK_NULL, 0, HAK_NULL) == -1) goto kqueue_syserr; newrv &= ~1; } @@ -1828,14 +1828,14 @@ static int _mod_poll_fd (hcl_t* hcl, int fd, int event_mask) { if (event_mask & XPOLLIN) { - HCL_MEMSET (&ev, 0, HCL_SIZEOF(ev)); + HAK_MEMSET (&ev, 0, HAK_SIZEOF(ev)); ev.ident = fd; ev.flags = EV_ADD; #if defined(USE_THREAD) ev.flags |= EV_CLEAR; /* EV_CLEAR for edge trigger? */ #endif ev.filter = EVFILT_READ; - if (kevent(xtn->ep, &ev, 1, HCL_NULL, 0, HCL_NULL) == -1) goto kqueue_syserr; + if (kevent(xtn->ep, &ev, 1, HAK_NULL, 0, HAK_NULL) == -1) goto kqueue_syserr; newrv |= 1; } @@ -1845,13 +1845,13 @@ static int _mod_poll_fd (hcl_t* hcl, int fd, int event_mask) { if (!(event_mask & XPOLLOUT)) { - HCL_MEMSET (&ev, 0, HCL_SIZEOF(ev)); + HAK_MEMSET (&ev, 0, HAK_SIZEOF(ev)); ev.ident = fd; ev.flags = EV_DELETE; ev.filter = EVFILT_WRITE; /* there is no operation rollback for the (rv & 1) case. * the rollback action may fail again even if i try it */ - if (kevent(xtn->ep, &ev, 1, HCL_NULL, 0, HCL_NULL) == -1) goto kqueue_syserr; + if (kevent(xtn->ep, &ev, 1, HAK_NULL, 0, HAK_NULL) == -1) goto kqueue_syserr; newrv &= ~2; } @@ -1860,7 +1860,7 @@ static int _mod_poll_fd (hcl_t* hcl, int fd, int event_mask) { if (event_mask & XPOLLOUT) { - HCL_MEMSET (&ev, 0, HCL_SIZEOF(ev)); + HAK_MEMSET (&ev, 0, HAK_SIZEOF(ev)); ev.ident = fd; ev.flags = EV_ADD; #if defined(USE_THREAD) @@ -1870,26 +1870,26 @@ static int _mod_poll_fd (hcl_t* hcl, int fd, int event_mask) /* there is no operation rollback for the (rv & 1) case. * the rollback action may fail again even if i try it */ - if (kevent(xtn->ep, &ev, 1, HCL_NULL, 0, HCL_NULL) == -1) goto kqueue_syserr; + if (kevent(xtn->ep, &ev, 1, HAK_NULL, 0, HAK_NULL) == -1) goto kqueue_syserr; newrv |= 2; } } - HCL_SETBITS (hcl_oow_t, xtn->ev.reg.ptr[rindex], roffset, 2, newrv); + HAK_SETBITS (hak_oow_t, xtn->ev.reg.ptr[rindex], roffset, 2, newrv); return 0; kqueue_syserr: - hcl_seterrwithsyserr (hcl, 0, errno); - HCL_DEBUG2 (hcl, "Cannot modify file descriptor %d in kqueue - %hs\n", fd, strerror(errno)); + hak_seterrwithsyserr (hak, 0, errno); + HAK_DEBUG2 (hak, "Cannot modify file descriptor %d in kqueue - %hs\n", fd, strerror(errno)); return -1; #elif defined(USE_EPOLL) - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); struct epoll_event ev; - HCL_ASSERT (hcl, xtn->ep >= 0); - HCL_MEMSET (&ev, 0, HCL_SIZEOF(ev)); + HAK_ASSERT (hak, xtn->ep >= 0); + HAK_MEMSET (&ev, 0, HAK_SIZEOF(ev)); ev.events = event_mask; #if defined(USE_THREAD) && defined(EPOLLET) /* epoll_wait may return again if the worker thread consumes events. @@ -1900,8 +1900,8 @@ kqueue_syserr: ev.data.fd = fd; if (epoll_ctl(xtn->ep, EPOLL_CTL_MOD, fd, &ev) == -1) { - hcl_seterrwithsyserr (hcl, 0, errno); - HCL_DEBUG2 (hcl, "Cannot modify file descriptor %d in epoll - %hs\n", fd, strerror(errno)); + hak_seterrwithsyserr (hak, 0, errno); + HAK_DEBUG2 (hak, "Cannot modify file descriptor %d in epoll - %hs\n", fd, strerror(errno)); return -1; } @@ -1909,15 +1909,15 @@ kqueue_syserr: #elif defined(USE_POLL) - xtn_t* xtn = GET_XTN(hcl); - hcl_oow_t i; + xtn_t* xtn = GET_XTN(hak); + hak_oow_t i; MUTEX_LOCK (&xtn->ev.reg.pmtx); for (i = 0; i < xtn->ev.reg.len; i++) { if (xtn->ev.reg.ptr[i].fd == fd) { - HCL_MEMMOVE (&xtn->ev.reg.ptr[i], &xtn->ev.reg.ptr[i+1], (xtn->ev.reg.len - i - 1) * HCL_SIZEOF(*xtn->ev.reg.ptr)); + HAK_MEMMOVE (&xtn->ev.reg.ptr[i], &xtn->ev.reg.ptr[i+1], (xtn->ev.reg.len - i - 1) * HAK_SIZEOF(*xtn->ev.reg.ptr)); xtn->ev.reg.ptr[i].fd = fd; xtn->ev.reg.ptr[i].events = event_mask; xtn->ev.reg.ptr[i].revents = 0; @@ -1928,16 +1928,16 @@ kqueue_syserr: } MUTEX_UNLOCK (&xtn->ev.reg.pmtx); - HCL_DEBUG1 (hcl, "Cannot modify file descriptor %d in poll - not found\n", fd); - hcl_seterrnum (hcl, HCL_ENOENT); + HAK_DEBUG1 (hak, "Cannot modify file descriptor %d in poll - not found\n", fd); + hak_seterrnum (hak, HAK_ENOENT); return -1; #elif defined(USE_SELECT) - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); MUTEX_LOCK (&xtn->ev.reg.smtx); - HCL_ASSERT (hcl, fd <= xtn->ev.reg.maxfd); + HAK_ASSERT (hak, fd <= xtn->ev.reg.maxfd); if (event_mask & XPOLLIN) FD_SET (fd, &xtn->ev.reg.rfds); @@ -1953,60 +1953,60 @@ kqueue_syserr: return 0; #else - HCL_DEBUG1 (hcl, "Cannot modify file descriptor %d in poll - not implemented\n", fd); - hcl_seterrnum (hcl, HCL_ENOIMPL); + HAK_DEBUG1 (hak, "Cannot modify file descriptor %d in poll - not implemented\n", fd); + hak_seterrnum (hak, HAK_ENOIMPL); return -1; #endif } -static int vm_muxadd (hcl_t* hcl, hcl_ooi_t io_handle, hcl_ooi_t mask) +static int vm_muxadd (hak_t* hak, hak_ooi_t io_handle, hak_ooi_t mask) { int event_mask; event_mask = 0; - if (mask & HCL_SEMAPHORE_IO_MASK_INPUT) event_mask |= XPOLLIN; - if (mask & HCL_SEMAPHORE_IO_MASK_OUTPUT) event_mask |= XPOLLOUT; + if (mask & HAK_SEMAPHORE_IO_MASK_INPUT) event_mask |= XPOLLIN; + if (mask & HAK_SEMAPHORE_IO_MASK_OUTPUT) event_mask |= XPOLLOUT; if (event_mask == 0) { - HCL_DEBUG2 (hcl, " Invalid semaphore mask %zd on handle %zd\n", mask, io_handle); - hcl_seterrbfmt (hcl, HCL_EINVAL, "invalid semaphore mask %zd on handle %zd", mask, io_handle); + HAK_DEBUG2 (hak, " Invalid semaphore mask %zd on handle %zd\n", mask, io_handle); + hak_seterrbfmt (hak, HAK_EINVAL, "invalid semaphore mask %zd on handle %zd", mask, io_handle); return -1; } - return _add_poll_fd(hcl, io_handle, event_mask); + return _add_poll_fd(hak, io_handle, event_mask); } -static int vm_muxmod (hcl_t* hcl, hcl_ooi_t io_handle, hcl_ooi_t mask) +static int vm_muxmod (hak_t* hak, hak_ooi_t io_handle, hak_ooi_t mask) { int event_mask; event_mask = 0; - if (mask & HCL_SEMAPHORE_IO_MASK_INPUT) event_mask |= XPOLLIN; - if (mask & HCL_SEMAPHORE_IO_MASK_OUTPUT) event_mask |= XPOLLOUT; + if (mask & HAK_SEMAPHORE_IO_MASK_INPUT) event_mask |= XPOLLIN; + if (mask & HAK_SEMAPHORE_IO_MASK_OUTPUT) event_mask |= XPOLLOUT; if (event_mask == 0) { - HCL_DEBUG2 (hcl, " Invalid semaphore mask %zd on handle %zd\n", mask, io_handle); - hcl_seterrbfmt (hcl, HCL_EINVAL, "invalid semaphore mask %zd on handle %zd", mask, io_handle); + HAK_DEBUG2 (hak, " Invalid semaphore mask %zd on handle %zd\n", mask, io_handle); + hak_seterrbfmt (hak, HAK_EINVAL, "invalid semaphore mask %zd on handle %zd", mask, io_handle); return -1; } - return _mod_poll_fd(hcl, io_handle, event_mask); + return _mod_poll_fd(hak, io_handle, event_mask); } -static int vm_muxdel (hcl_t* hcl, hcl_ooi_t io_handle) +static int vm_muxdel (hak_t* hak, hak_ooi_t io_handle) { - return _del_poll_fd(hcl, io_handle); + return _del_poll_fd(hak, io_handle); } #if defined(USE_THREAD) static void* iothr_main (void* arg) { - hcl_t* hcl = (hcl_t*)arg; - xtn_t* xtn = GET_XTN(hcl); + hak_t* hak = (hak_t*)arg; + xtn_t* xtn = GET_XTN(hak); - /*while (!hcl->abort_req)*/ + /*while (!hak->abort_req)*/ while (!xtn->iothr.abort) { if (xtn->ev.len <= 0) /* TODO: no mutex needed for this check? */ @@ -2017,7 +2017,7 @@ static void* iothr_main (void* arg) #elif defined(USE_KQUEUE) struct timespec ts; #elif defined(USE_POLL) - hcl_oow_t nfds; + hak_oow_t nfds; #elif defined(USE_SELECT) struct timeval tv; fd_set rfds; @@ -2030,26 +2030,26 @@ static void* iothr_main (void* arg) #if defined(USE_DEVPOLL) dvp.dp_timeout = 10000; /* milliseconds */ dvp.dp_fds = xtn->ev.buf; - dvp.dp_nfds = HCL_COUNTOF(xtn->ev.buf); + dvp.dp_nfds = HAK_COUNTOF(xtn->ev.buf); n = ioctl (xtn->ep, DP_POLL, &dvp); #elif defined(USE_KQUEUE) ts.tv_sec = 10; ts.tv_nsec = 0; - n = kevent(xtn->ep, HCL_NULL, 0, xtn->ev.buf, HCL_COUNTOF(xtn->ev.buf), &ts); + n = kevent(xtn->ep, HAK_NULL, 0, xtn->ev.buf, HAK_COUNTOF(xtn->ev.buf), &ts); /* n == 0: timeout * n == -1: error */ #elif defined(USE_EPOLL) - n = epoll_wait(xtn->ep, xtn->ev.buf, HCL_COUNTOF(xtn->ev.buf), 10000); /* TODO: make this timeout value in the io thread */ + n = epoll_wait(xtn->ep, xtn->ev.buf, HAK_COUNTOF(xtn->ev.buf), 10000); /* TODO: make this timeout value in the io thread */ #elif defined(USE_POLL) MUTEX_LOCK (&xtn->ev.reg.pmtx); - HCL_MEMCPY (xtn->ev.buf, xtn->ev.reg.ptr, xtn->ev.reg.len * HCL_SIZEOF(*xtn->ev.buf)); + HAK_MEMCPY (xtn->ev.buf, xtn->ev.reg.ptr, xtn->ev.reg.len * HAK_SIZEOF(*xtn->ev.buf)); nfds = xtn->ev.reg.len; MUTEX_UNLOCK (&xtn->ev.reg.pmtx); n = poll(xtn->ev.buf, nfds, 10000); if (n > 0) { /* compact the return buffer as poll() doesn't */ - hcl_oow_t i, j; + hak_oow_t i, j; for (i = 0, j = 0; i < nfds && j < n; i++) { if (xtn->ev.buf[i].revents) @@ -2065,10 +2065,10 @@ static void* iothr_main (void* arg) tv.tv_usec = 0; MUTEX_LOCK (&xtn->ev.reg.smtx); maxfd = xtn->ev.reg.maxfd; - HCL_MEMCPY (&rfds, &xtn->ev.reg.rfds, HCL_SIZEOF(rfds)); - HCL_MEMCPY (&wfds, &xtn->ev.reg.wfds, HCL_SIZEOF(wfds)); + HAK_MEMCPY (&rfds, &xtn->ev.reg.rfds, HAK_SIZEOF(rfds)); + HAK_MEMCPY (&wfds, &xtn->ev.reg.wfds, HAK_SIZEOF(wfds)); MUTEX_UNLOCK (&xtn->ev.reg.smtx); - n = select (maxfd + 1, &rfds, &wfds, HCL_NULL, &tv); + n = select (maxfd + 1, &rfds, &wfds, HAK_NULL, &tv); if (n > 0) { int fd, count = 0; @@ -2080,7 +2080,7 @@ static void* iothr_main (void* arg) if (events) { - HCL_ASSERT (hcl, count < HCL_COUNTOF(xtn->ev.buf)); + HAK_ASSERT (hak, count < HAK_COUNTOF(xtn->ev.buf)); xtn->ev.buf[count].fd = fd; xtn->ev.buf[count].events = events; count++; @@ -2088,16 +2088,16 @@ static void* iothr_main (void* arg) } n = count; - HCL_ASSERT (hcl, n > 0); + HAK_ASSERT (hak, n > 0); } #endif pthread_mutex_lock (&xtn->ev.mtx); if (n <= -1) { - /* TODO: don't use HCL_DEBUG2. it's not thread safe... */ + /* TODO: don't use HAK_DEBUG2. it's not thread safe... */ /* the following call has a race-condition issue when called in this separate thread */ - /*HCL_DEBUG2 (hcl, "Warning: multiplexer wait failure - %d, %hs\n", errno, strerror(errno));*/ + /*HAK_DEBUG2 (hak, "Warning: multiplexer wait failure - %d, %hs\n", errno, strerror(errno));*/ } else if (n > 0) { @@ -2124,9 +2124,9 @@ static void* iothr_main (void* arg) #else { struct timeval tv; - gettimeofday (&tv, HCL_NULL); + gettimeofday (&tv, HAK_NULL); ts.tv_sec = tv.tv_sec; - ts.tv_nsec = HCL_USEC_TO_NSEC(tv.tv_usec); + ts.tv_nsec = HAK_USEC_TO_NSEC(tv.tv_usec); } #endif ts.tv_sec += 10; @@ -2137,13 +2137,13 @@ static void* iothr_main (void* arg) /*sched_yield ();*/ } - return HCL_NULL; + return HAK_NULL; } #endif -static void vm_muxwait (hcl_t* hcl, const hcl_ntime_t* dur, hcl_vmprim_muxwait_cb_t muxwcb) +static void vm_muxwait (hak_t* hak, const hak_ntime_t* dur, hak_vmprim_muxwait_cb_t muxwcb) { - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); #if defined(USE_THREAD) int n; @@ -2152,9 +2152,9 @@ static void vm_muxwait (hcl_t* hcl, const hcl_ntime_t* dur, hcl_vmprim_muxwait_c if (!xtn->iothr.up) { xtn->iothr.up = 1; - if (pthread_create(&xtn->iothr.thr, HCL_NULL, iothr_main, hcl) != 0) + if (pthread_create(&xtn->iothr.thr, HAK_NULL, iothr_main, hak) != 0) { - HCL_LOG2 (hcl, HCL_LOG_WARN, "Warning: pthread_create failure - %d, %hs\n", errno, strerror(errno)); + HAK_LOG2 (hak, HAK_LOG_WARN, "Warning: pthread_create failure - %d, %hs\n", errno, strerror(errno)); xtn->iothr.up = 0; /* TODO: switch to the non-threaded mode? */ } @@ -2165,7 +2165,7 @@ static void vm_muxwait (hcl_t* hcl, const hcl_ntime_t* dur, hcl_vmprim_muxwait_c if (xtn->ev.len <= 0) { struct timespec ts; - hcl_ntime_t ns; + hak_ntime_t ns; if (!dur) return; /* immediate check is requested. and there is no event */ @@ -2176,12 +2176,12 @@ static void vm_muxwait (hcl_t* hcl, const hcl_ntime_t* dur, hcl_vmprim_muxwait_c #else { struct timeval tv; - gettimeofday (&tv, HCL_NULL); + gettimeofday (&tv, HAK_NULL); ns.sec = tv.tv_sec; - ns.nsec = HCL_USEC_TO_NSEC(tv.tv_usec); + ns.nsec = HAK_USEC_TO_NSEC(tv.tv_usec); } #endif - HCL_ADD_NTIME (&ns, &ns, dur); + HAK_ADD_NTIME (&ns, &ns, dur); ts.tv_sec = ns.sec; ts.tv_nsec = ns.nsec; @@ -2207,7 +2207,7 @@ static void vm_muxwait (hcl_t* hcl, const hcl_ntime_t* dur, hcl_vmprim_muxwait_c #elif defined(USE_KQUEUE) if (xtn->ev.buf[n].ident == xtn->iothr.p[0]) #elif defined(USE_EPOLL) - /*if (xtn->ev.buf[n].data.ptr == (void*)HCL_TYPE_MAX(hcl_oow_t))*/ + /*if (xtn->ev.buf[n].data.ptr == (void*)HAK_TYPE_MAX(hak_oow_t))*/ if (xtn->ev.buf[n].data.fd == xtn->iothr.p[0]) #elif defined(USE_POLL) if (xtn->ev.buf[n].fd == xtn->iothr.p[0]) @@ -2217,8 +2217,8 @@ static void vm_muxwait (hcl_t* hcl, const hcl_ntime_t* dur, hcl_vmprim_muxwait_c # error UNSUPPORTED #endif { - hcl_uint8_t u8; - while (read(xtn->iothr.p[0], &u8, HCL_SIZEOF(u8)) > 0) + hak_uint8_t u8; + while (read(xtn->iothr.p[0], &u8, HAK_SIZEOF(u8)) > 0) { /* consume as much as possible */; if (u8 == 'Q') xtn->iothr.abort = 1; @@ -2227,13 +2227,13 @@ static void vm_muxwait (hcl_t* hcl, const hcl_ntime_t* dur, hcl_vmprim_muxwait_c else if (muxwcb) { int revents; - hcl_ooi_t mask; + hak_ooi_t mask; #if defined(USE_DEVPOLL) revents = xtn->ev.buf[n].revents; #elif defined(USE_KQUEUE) - if (xtn->ev.buf[n].filter == EVFILT_READ) mask = HCL_SEMAPHORE_IO_MASK_INPUT; - else if (xtn->ev.buf[n].filter == EVFILT_WRITE) mask = HCL_SEMAPHORE_IO_MASK_OUTPUT; + if (xtn->ev.buf[n].filter == EVFILT_READ) mask = HAK_SEMAPHORE_IO_MASK_INPUT; + else if (xtn->ev.buf[n].filter == EVFILT_WRITE) mask = HAK_SEMAPHORE_IO_MASK_OUTPUT; else mask = 0; goto call_muxwcb_kqueue; #elif defined(USE_EPOLL) @@ -2245,22 +2245,22 @@ static void vm_muxwait (hcl_t* hcl, const hcl_ntime_t* dur, hcl_vmprim_muxwait_c #endif mask = 0; - if (revents & XPOLLIN) mask |= HCL_SEMAPHORE_IO_MASK_INPUT; - if (revents & XPOLLOUT) mask |= HCL_SEMAPHORE_IO_MASK_OUTPUT; - if (revents & XPOLLERR) mask |= HCL_SEMAPHORE_IO_MASK_ERROR; - if (revents & XPOLLHUP) mask |= HCL_SEMAPHORE_IO_MASK_HANGUP; + if (revents & XPOLLIN) mask |= HAK_SEMAPHORE_IO_MASK_INPUT; + if (revents & XPOLLOUT) mask |= HAK_SEMAPHORE_IO_MASK_OUTPUT; + if (revents & XPOLLERR) mask |= HAK_SEMAPHORE_IO_MASK_ERROR; + if (revents & XPOLLHUP) mask |= HAK_SEMAPHORE_IO_MASK_HANGUP; #if defined(USE_DEVPOLL) - muxwcb (hcl, xtn->ev.buf[n].fd, mask); + muxwcb (hak, xtn->ev.buf[n].fd, mask); #elif defined(USE_KQUEUE) call_muxwcb_kqueue: - muxwcb (hcl, xtn->ev.buf[n].ident, mask); + muxwcb (hak, xtn->ev.buf[n].ident, mask); #elif defined(USE_EPOLL) - muxwcb (hcl, xtn->ev.buf[n].data.fd, mask); + muxwcb (hak, xtn->ev.buf[n].data.fd, mask); #elif defined(USE_POLL) - muxwcb (hcl, xtn->ev.buf[n].fd, mask); + muxwcb (hak, xtn->ev.buf[n].fd, mask); #elif defined(USE_SELECT) - muxwcb (hcl, xtn->ev.buf[n].fd, mask); + muxwcb (hak, xtn->ev.buf[n].fd, mask); #else # error UNSUPPORTED #endif @@ -2292,11 +2292,11 @@ static void vm_muxwait (hcl_t* hcl, const hcl_ntime_t* dur, hcl_vmprim_muxwait_c #endif #if defined(USE_DEVPOLL) - tmout = dur? HCL_SECNSEC_TO_MSEC(dur->sec, dur->nsec): 0; + tmout = dur? HAK_SECNSEC_TO_MSEC(dur->sec, dur->nsec): 0; dvp.dp_timeout = tmout; /* milliseconds */ dvp.dp_fds = xtn->ev.buf; - dvp.dp_nfds = HCL_COUNTOF(xtn->ev.buf); + dvp.dp_nfds = HAK_COUNTOF(xtn->ev.buf); n = ioctl(xtn->ep, DP_POLL, &dvp); #elif defined(USE_KQUEUE) @@ -2312,22 +2312,22 @@ static void vm_muxwait (hcl_t* hcl, const hcl_ntime_t* dur, hcl_vmprim_muxwait_c ts.tv_nsec = 0; } - n = kevent(xtn->ep, HCL_NULL, 0, xtn->ev.buf, HCL_COUNTOF(xtn->ev.buf), &ts); + n = kevent(xtn->ep, HAK_NULL, 0, xtn->ev.buf, HAK_COUNTOF(xtn->ev.buf), &ts); /* n == 0: timeout * n == -1: error */ #elif defined(USE_EPOLL) - tmout = dur? HCL_SECNSEC_TO_MSEC(dur->sec, dur->nsec): 0; - n = epoll_wait(xtn->ep, xtn->ev.buf, HCL_COUNTOF(xtn->ev.buf), tmout); + tmout = dur? HAK_SECNSEC_TO_MSEC(dur->sec, dur->nsec): 0; + n = epoll_wait(xtn->ep, xtn->ev.buf, HAK_COUNTOF(xtn->ev.buf), tmout); #elif defined(USE_POLL) - tmout = dur? HCL_SECNSEC_TO_MSEC(dur->sec, dur->nsec): 0; - HCL_MEMCPY (xtn->ev.buf, xtn->ev.reg.ptr, xtn->ev.reg.len * HCL_SIZEOF(*xtn->ev.buf)); + tmout = dur? HAK_SECNSEC_TO_MSEC(dur->sec, dur->nsec): 0; + HAK_MEMCPY (xtn->ev.buf, xtn->ev.reg.ptr, xtn->ev.reg.len * HAK_SIZEOF(*xtn->ev.buf)); n = poll(xtn->ev.buf, xtn->ev.reg.len, tmout); if (n > 0) { /* compact the return buffer as poll() doesn't */ - hcl_oow_t i, j; + hak_oow_t i, j; for (i = 0, j = 0; i < xtn->ev.reg.len && j < n; i++) { if (xtn->ev.buf[i].revents) @@ -2342,7 +2342,7 @@ static void vm_muxwait (hcl_t* hcl, const hcl_ntime_t* dur, hcl_vmprim_muxwait_c if (dur) { tv.tv_sec = dur->sec; - tv.tv_usec = HCL_NSEC_TO_USEC(dur->nsec); + tv.tv_usec = HAK_NSEC_TO_USEC(dur->nsec); } else { @@ -2350,9 +2350,9 @@ static void vm_muxwait (hcl_t* hcl, const hcl_ntime_t* dur, hcl_vmprim_muxwait_c tv.tv_usec = 0; } maxfd = xtn->ev.reg.maxfd; - HCL_MEMCPY (&rfds, &xtn->ev.reg.rfds, HCL_SIZEOF(rfds)); - HCL_MEMCPY (&wfds, &xtn->ev.reg.wfds, HCL_SIZEOF(wfds)); - n = select(maxfd + 1, &rfds, &wfds, HCL_NULL, &tv); + HAK_MEMCPY (&rfds, &xtn->ev.reg.rfds, HAK_SIZEOF(rfds)); + HAK_MEMCPY (&wfds, &xtn->ev.reg.wfds, HAK_SIZEOF(wfds)); + n = select(maxfd + 1, &rfds, &wfds, HAK_NULL, &tv); if (n > 0) { int fd, count = 0; @@ -2364,7 +2364,7 @@ static void vm_muxwait (hcl_t* hcl, const hcl_ntime_t* dur, hcl_vmprim_muxwait_c if (events) { - HCL_ASSERT (hcl, count < HCL_COUNTOF(xtn->ev.buf)); + HAK_ASSERT (hak, count < HAK_COUNTOF(xtn->ev.buf)); xtn->ev.buf[count].fd = fd; xtn->ev.buf[count].events = events; count++; @@ -2372,18 +2372,18 @@ static void vm_muxwait (hcl_t* hcl, const hcl_ntime_t* dur, hcl_vmprim_muxwait_c } n = count; - HCL_ASSERT (hcl, n > 0); + HAK_ASSERT (hak, n > 0); } #endif if (n <= -1) { #if defined(__OS2__) - hcl_seterrwithsyserr (hcl, 2, sock_errno()); - HCL_DEBUG2 (hcl, "Warning: multiplexer wait failure - %d, %js\n", sock_errno(), hcl_geterrmsg(hcl)); + hak_seterrwithsyserr (hak, 2, sock_errno()); + HAK_DEBUG2 (hak, "Warning: multiplexer wait failure - %d, %js\n", sock_errno(), hak_geterrmsg(hak)); #else - hcl_seterrwithsyserr (hcl, 0, errno); - HCL_DEBUG2 (hcl, "Warning: multiplexer wait failure - %d, %js\n", errno, hcl_geterrmsg(hcl)); + hak_seterrwithsyserr (hak, 0, errno); + HAK_DEBUG2 (hak, "Warning: multiplexer wait failure - %d, %js\n", errno, hak_geterrmsg(hak)); #endif } else @@ -2392,20 +2392,20 @@ static void vm_muxwait (hcl_t* hcl, const hcl_ntime_t* dur, hcl_vmprim_muxwait_c } /* the muxwcb must be valid all the time in a non-threaded mode */ - HCL_ASSERT (hcl, muxwcb != HCL_NULL); + HAK_ASSERT (hak, muxwcb != HAK_NULL); while (n > 0) { int revents; - hcl_ooi_t mask; + hak_ooi_t mask; --n; #if defined(USE_DEVPOLL) revents = xtn->ev.buf[n].revents; #elif defined(USE_KQUEUE) - if (xtn->ev.buf[n].filter == EVFILT_READ) mask = HCL_SEMAPHORE_IO_MASK_INPUT; - else if (xtn->ev.buf[n].filter == EVFILT_WRITE) mask = HCL_SEMAPHORE_IO_MASK_OUTPUT; + if (xtn->ev.buf[n].filter == EVFILT_READ) mask = HAK_SEMAPHORE_IO_MASK_INPUT; + else if (xtn->ev.buf[n].filter == EVFILT_WRITE) mask = HAK_SEMAPHORE_IO_MASK_OUTPUT; else mask = 0; goto call_muxwcb_kqueue; #elif defined(USE_EPOLL) @@ -2419,22 +2419,22 @@ static void vm_muxwait (hcl_t* hcl, const hcl_ntime_t* dur, hcl_vmprim_muxwait_c #endif mask = 0; - if (revents & XPOLLIN) mask |= HCL_SEMAPHORE_IO_MASK_INPUT; - if (revents & XPOLLOUT) mask |= HCL_SEMAPHORE_IO_MASK_OUTPUT; - if (revents & XPOLLERR) mask |= HCL_SEMAPHORE_IO_MASK_ERROR; - if (revents & XPOLLHUP) mask |= HCL_SEMAPHORE_IO_MASK_HANGUP; + if (revents & XPOLLIN) mask |= HAK_SEMAPHORE_IO_MASK_INPUT; + if (revents & XPOLLOUT) mask |= HAK_SEMAPHORE_IO_MASK_OUTPUT; + if (revents & XPOLLERR) mask |= HAK_SEMAPHORE_IO_MASK_ERROR; + if (revents & XPOLLHUP) mask |= HAK_SEMAPHORE_IO_MASK_HANGUP; #if defined(USE_DEVPOLL) - muxwcb (hcl, xtn->ev.buf[n].fd, mask); + muxwcb (hak, xtn->ev.buf[n].fd, mask); #elif defined(USE_KQUEUE) call_muxwcb_kqueue: - muxwcb (hcl, xtn->ev.buf[n].ident, mask); + muxwcb (hak, xtn->ev.buf[n].ident, mask); #elif defined(USE_EPOLL) - muxwcb (hcl, xtn->ev.buf[n].data.fd, mask); + muxwcb (hak, xtn->ev.buf[n].data.fd, mask); #elif defined(USE_POLL) - muxwcb (hcl, xtn->ev.buf[n].fd, mask); + muxwcb (hak, xtn->ev.buf[n].fd, mask); #elif defined(USE_SELECT) - muxwcb (hcl, xtn->ev.buf[n].fd, mask); + muxwcb (hak, xtn->ev.buf[n].fd, mask); #endif } @@ -2459,28 +2459,28 @@ static void vm_muxwait (hcl_t* hcl, const hcl_ntime_t* dur, hcl_vmprim_muxwait_c # endif #endif -static int vm_sleep (hcl_t* hcl, const hcl_ntime_t* dur) +static int vm_sleep (hak_t* hak, const hak_ntime_t* dur) { #if defined(_WIN32) - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); if (xtn->waitable_timer) { LARGE_INTEGER li; - li.QuadPart = -(HCL_SECNSEC_TO_NSEC(dur->sec, dur->nsec) / 100); /* in 100 nanoseconds */ - if(SetWaitableTimer(xtn->waitable_timer, &li, 0, HCL_NULL, HCL_NULL, FALSE) == FALSE) goto normal_sleep; + li.QuadPart = -(HAK_SECNSEC_TO_NSEC(dur->sec, dur->nsec) / 100); /* in 100 nanoseconds */ + if(SetWaitableTimer(xtn->waitable_timer, &li, 0, HAK_NULL, HAK_NULL, FALSE) == FALSE) goto normal_sleep; WaitForSingleObject(xtn->waitable_timer, INFINITE); } else { normal_sleep: /* fallback to normal Sleep() */ - Sleep (HCL_SECNSEC_TO_MSEC(dur->sec,dur->nsec)); + Sleep (HAK_SECNSEC_TO_MSEC(dur->sec,dur->nsec)); } #elif defined(__OS2__) /* TODO: in gui mode, this is not a desirable method??? * this must be made event-driven coupled with the main event loop */ - DosSleep (HCL_SECNSEC_TO_MSEC(dur->sec,dur->nsec)); + DosSleep (HAK_SECNSEC_TO_MSEC(dur->sec,dur->nsec)); #elif defined(macintosh) @@ -2494,11 +2494,11 @@ static int vm_sleep (hcl_t* hcl, const hcl_ntime_t* dur) c += dur->sec * CLOCKS_PER_SEC; #if (CLOCKS_PER_SEC == 100) - c += HCL_NSEC_TO_MSEC(dur->nsec) / 10; + c += HAK_NSEC_TO_MSEC(dur->nsec) / 10; #elif (CLOCKS_PER_SEC == 1000) - c += HCL_NSEC_TO_MSEC(dur->nsec); + c += HAK_NSEC_TO_MSEC(dur->nsec); #elif (CLOCKS_PER_SEC == 1000000L) - c += HCL_NSEC_TO_USEC(dur->nsec); + c += HAK_NSEC_TO_USEC(dur->nsec); #elif (CLOCKS_PER_SEC == 1000000000L) c += dur->nsec; #else @@ -2516,18 +2516,18 @@ static int vm_sleep (hcl_t* hcl, const hcl_ntime_t* dur) /* the sleep callback is called only if there is no IO semaphore * waiting. so i can safely call vm_muxwait() without a muxwait callback * when USE_THREAD is true */ - vm_muxwait (hcl, dur, HCL_NULL); + vm_muxwait (hak, dur, HAK_NULL); #elif defined(HAVE_NANOSLEEP) { struct timespec ts; ts.tv_sec = dur->sec; ts.tv_nsec = dur->nsec; - nanosleep (&ts, HCL_NULL); + nanosleep (&ts, HAK_NULL); } #elif defined(HAVE_USLEEP) - usleep (HCL_SECNSEC_TO_USEC(dur->sec, dur->nsec)); + usleep (HAK_SECNSEC_TO_USEC(dur->sec, dur->nsec)); #else # error UNSUPPORT SLEEP @@ -2540,50 +2540,50 @@ static int vm_sleep (hcl_t* hcl, const hcl_ntime_t* dur) * SIGNAL AND TICK HANDLING * ----------------------------------------------------------------- */ -static hcl_ooi_t vm_getsigfd (hcl_t* hcl) +static hak_ooi_t vm_getsigfd (hak_t* hak) { - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); return xtn->sigfd.p[0]; } -static int vm_getsig (hcl_t* hcl, hcl_uint8_t* u8) +static int vm_getsig (hak_t* hak, hak_uint8_t* u8) { - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); #if defined(_WIN32) /* TODO: can i make the pipe non-block in win32? */ DWORD navail; - if (PeekNamedPipe(_get_osfhandle(xtn->sigfd.p[0]), HCL_NULL, 0, HCL_NULL, &navail, HCL_NULL) == 0) + if (PeekNamedPipe(_get_osfhandle(xtn->sigfd.p[0]), HAK_NULL, 0, HAK_NULL, &navail, HAK_NULL) == 0) { - hcl_seterrwithsyserr (hcl, 1, GetLastError()); + hak_seterrwithsyserr (hak, 1, GetLastError()); return -1; } if (navail <= 0) return 0; #endif - if (read(xtn->sigfd.p[0], u8, HCL_SIZEOF(*u8)) == -1) + if (read(xtn->sigfd.p[0], u8, HAK_SIZEOF(*u8)) == -1) { #if defined(EWOULDBLOCK) if (errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN) return 0; #else if (errno == EINTR || errno == EAGAIN) return 0; #endif - hcl_seterrwithsyserr (hcl, 0, errno); + hak_seterrwithsyserr (hak, 0, errno); return -1; } return 1; } -static int vm_setsig (hcl_t* hcl, hcl_uint8_t u8) +static int vm_setsig (hak_t* hak, hak_uint8_t u8) { - xtn_t* xtn = GET_XTN(hcl); - if (write(xtn->sigfd.p[1], &u8, HCL_SIZEOF(u8)) == -1) + xtn_t* xtn = GET_XTN(hak); + if (write(xtn->sigfd.p[1], &u8, HAK_SIZEOF(u8)) == -1) { #if defined(EWOULDBLOCK) if (errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN) return 0; #else if (errno == EINTR || errno == EAGAIN) return 0; #endif - hcl_seterrwithsyserr (hcl, 0, errno); + hak_seterrwithsyserr (hak, 0, errno); return -1; } return 1; @@ -2595,8 +2595,8 @@ static int vm_setsig (hcl_t* hcl, hcl_uint8_t u8) typedef struct sig_state_t sig_state_t; struct sig_state_t { - hcl_oow_t handler; - hcl_oow_t old_handler; + hak_oow_t handler; + hak_oow_t old_handler; sigset_t old_sa_mask; int old_sa_flags; }; @@ -2607,15 +2607,15 @@ static sig_state_t g_sig_state[NSIG]; static void dispatch_siginfo (int sig, siginfo_t* si, void* ctx) { - if (g_sig_state[sig].handler != (hcl_oow_t)SIG_IGN && - g_sig_state[sig].handler != (hcl_oow_t)SIG_DFL) + if (g_sig_state[sig].handler != (hak_oow_t)SIG_IGN && + g_sig_state[sig].handler != (hak_oow_t)SIG_DFL) { ((sig_handler_t)g_sig_state[sig].handler) (sig); } if (g_sig_state[sig].old_handler && - g_sig_state[sig].old_handler != (hcl_oow_t)SIG_IGN && - g_sig_state[sig].old_handler != (hcl_oow_t)SIG_DFL) + g_sig_state[sig].old_handler != (hak_oow_t)SIG_IGN && + g_sig_state[sig].old_handler != (hak_oow_t)SIG_DFL) { ((void(*)(int, siginfo_t*, void*))g_sig_state[sig].old_handler) (sig, si, ctx); } @@ -2623,15 +2623,15 @@ static void dispatch_siginfo (int sig, siginfo_t* si, void* ctx) static void dispatch_signal (int sig) { - if (g_sig_state[sig].handler != (hcl_oow_t)SIG_IGN && - g_sig_state[sig].handler != (hcl_oow_t)SIG_DFL) + if (g_sig_state[sig].handler != (hak_oow_t)SIG_IGN && + g_sig_state[sig].handler != (hak_oow_t)SIG_DFL) { ((sig_handler_t)g_sig_state[sig].handler) (sig); } if (g_sig_state[sig].old_handler && - g_sig_state[sig].old_handler != (hcl_oow_t)SIG_IGN && - g_sig_state[sig].old_handler != (hcl_oow_t)SIG_DFL) + g_sig_state[sig].old_handler != (hak_oow_t)SIG_IGN && + g_sig_state[sig].old_handler != (hak_oow_t)SIG_DFL) { ((sig_handler_t)g_sig_state[sig].old_handler) (sig); } @@ -2642,16 +2642,16 @@ static int set_signal_handler (int sig, sig_handler_t handler, int extra_flags) if (g_sig_state[sig].handler) { /* already set - allow handler change. ignore extra_flags. */ - if (g_sig_state[sig].handler == (hcl_oow_t)handler) return -1; - g_sig_state[sig].handler = (hcl_oow_t)handler; + if (g_sig_state[sig].handler == (hak_oow_t)handler) return -1; + g_sig_state[sig].handler = (hak_oow_t)handler; } else { struct sigaction sa, oldsa; - if (sigaction(sig, HCL_NULL, &oldsa) == -1) return -1; + if (sigaction(sig, HAK_NULL, &oldsa) == -1) return -1; - HCL_MEMSET (&sa, 0, HCL_SIZEOF(sa)); + HAK_MEMSET (&sa, 0, HAK_SIZEOF(sa)); if (oldsa.sa_flags & SA_SIGINFO) { sa.sa_sigaction = dispatch_siginfo; @@ -2667,13 +2667,13 @@ static int set_signal_handler (int sig, sig_handler_t handler, int extra_flags) sa.sa_flags |= SA_RESTART;*/ sigfillset (&sa.sa_mask); /* block all signals while the handler is being executed */ - if (sigaction(sig, &sa, HCL_NULL) == -1) return -1; + if (sigaction(sig, &sa, HAK_NULL) == -1) return -1; - g_sig_state[sig].handler = (hcl_oow_t)handler; + g_sig_state[sig].handler = (hak_oow_t)handler; if (oldsa.sa_flags & SA_SIGINFO) - g_sig_state[sig].old_handler = (hcl_oow_t)oldsa.sa_sigaction; + g_sig_state[sig].old_handler = (hak_oow_t)oldsa.sa_sigaction; else - g_sig_state[sig].old_handler = (hcl_oow_t)oldsa.sa_handler; + g_sig_state[sig].old_handler = (hak_oow_t)oldsa.sa_handler; g_sig_state[sig].old_sa_mask = oldsa.sa_mask; g_sig_state[sig].old_sa_flags = oldsa.sa_flags; @@ -2688,7 +2688,7 @@ static int unset_signal_handler (int sig) if (!g_sig_state[sig].handler) return -1; /* not set */ - HCL_MEMSET (&sa, 0, HCL_SIZEOF(sa)); + HAK_MEMSET (&sa, 0, HAK_SIZEOF(sa)); sa.sa_mask = g_sig_state[sig].old_sa_mask; sa.sa_flags = g_sig_state[sig].old_sa_flags; @@ -2701,7 +2701,7 @@ static int unset_signal_handler (int sig) sa.sa_handler = (sig_handler_t)g_sig_state[sig].old_handler; } - if (sigaction(sig, &sa, HCL_NULL) == -1) return -1; + if (sigaction(sig, &sa, HAK_NULL) == -1) return -1; g_sig_state[sig].handler = 0; /* keep other fields untouched */ @@ -2716,53 +2716,53 @@ static int is_signal_handler_set (int sig) #endif -static HCL_INLINE void abort_all_hcls (int signo) +static HAK_INLINE void abort_all_haks (int signo) { /* TODO: make this atomic */ - if (g_hcl) + if (g_hak) { - hcl_t* hcl = g_hcl; + hak_t* hak = g_hak; do { - xtn_t* xtn = GET_XTN(hcl); - hcl_uint8_t u8; - /*hcl_abortstd (hcl);*/ + xtn_t* xtn = GET_XTN(hak); + hak_uint8_t u8; + /*hak_abortstd (hak);*/ u8 = signo & 0xFF; - write (xtn->sigfd.p[1], &u8, HCL_SIZEOF(u8)); - hcl = xtn->next; + write (xtn->sigfd.p[1], &u8, HAK_SIZEOF(u8)); + hak = xtn->next; } - while (hcl); + while (hak); } /* TODO: make this atomic */ } -static HCL_INLINE void do_nothing (int unused) +static HAK_INLINE void do_nothing (int unused) { } -/*#define HCL_TICKER_INTERVAL_USECS 10000*/ /* microseconds. 0.01 seconds */ -#define HCL_TICKER_INTERVAL_USECS 20000 /* microseconds. 0.02 seconds. */ +/*#define HAK_TICKER_INTERVAL_USECS 10000*/ /* microseconds. 0.01 seconds */ +#define HAK_TICKER_INTERVAL_USECS 20000 /* microseconds. 0.02 seconds. */ -static HCL_INLINE void swproc_all_hcls (int unused) +static HAK_INLINE void swproc_all_haks (int unused) { /* TODO: make this atomic */ - if (g_hcl) + if (g_hak) { - hcl_t* hcl = g_hcl; + hak_t* hak = g_hak; do { - xtn_t* xtn = GET_XTN(hcl); - if (xtn->rcv_tick) hcl_switchprocess (hcl); - hcl = xtn->next; + xtn_t* xtn = GET_XTN(hak); + if (xtn->rcv_tick) hak_switchprocess (hak); + hak = xtn->next; } - while (hcl); + while (hak); } /* TODO: make this atomic */ } #if defined(_WIN32) -static HANDLE msw_tick_timer = HCL_NULL; /*INVALID_HANDLE_VALUE;*/ +static HANDLE msw_tick_timer = HAK_NULL; /*INVALID_HANDLE_VALUE;*/ static int msw_tick_done = 0; static DWORD WINAPI msw_wait_for_timer_event (LPVOID ctx) @@ -2773,38 +2773,38 @@ static DWORD WINAPI msw_wait_for_timer_event (LPVOID ctx) * while (!msw_tick_done) * { * Sleep (...); - * swproc_all_hcls(); + * swproc_all_haks(); * } * but never mind for now. let's do it the hard way. */ - msw_tick_timer = CreateWaitableTimer(HCL_NULL, FALSE, HCL_NULL); + msw_tick_timer = CreateWaitableTimer(HAK_NULL, FALSE, HAK_NULL); if (msw_tick_timer) { LARGE_INTEGER li; /* lpDueTime in 100 nanoseconds */ - li.QuadPart = -HCL_USEC_TO_NSEC(HCL_TICKER_INTERVAL_USECS) / 100; + li.QuadPart = -HAK_USEC_TO_NSEC(HAK_TICKER_INTERVAL_USECS) / 100; /*#define MSW_TICKER_MANUAL_RESET */ #if defined(MSW_TICKER_MANUAL_RESET) /* if manual resetting is enabled, the reset is done after - * swproc_all_hcls has been called. so the interval is the - * interval specified plus the time taken in swproc_all_hcls. */ - SetWaitableTimer (msw_tick_timer, &li, 0, HCL_NULL, HCL_NULL, FALSE); + * swproc_all_haks has been called. so the interval is the + * interval specified plus the time taken in swproc_all_haks. */ + SetWaitableTimer (msw_tick_timer, &li, 0, HAK_NULL, HAK_NULL, FALSE); #else /* with auto reset, the interval is not affected by time taken - * in swproc_all_hcls() */ - SetWaitableTimer (msw_tick_timer, &li, HCL_USEC_TO_MSEC(HCL_TICKER_INTERVAL_USECS), HCL_NULL, HCL_NULL, FALSE); + * in swproc_all_haks() */ + SetWaitableTimer (msw_tick_timer, &li, HAK_USEC_TO_MSEC(HAK_TICKER_INTERVAL_USECS), HAK_NULL, HAK_NULL, FALSE); #endif while (!msw_tick_done) { if (WaitForSingleObject(msw_tick_timer, 100000) == WAIT_OBJECT_0) { - swproc_all_hcls (0); + swproc_all_haks (0); #if defined(MSW_TICKER_MANUAL_RESET) - SetWaitableTimer (msw_tick_timer, &li, 0, HCL_NULL, HCL_NULL, FALSE); + SetWaitableTimer (msw_tick_timer, &li, 0, HAK_NULL, HAK_NULL, FALSE); #endif } } @@ -2812,7 +2812,7 @@ static DWORD WINAPI msw_wait_for_timer_event (LPVOID ctx) CancelWaitableTimer (msw_tick_timer); CloseHandle (msw_tick_timer); - msw_tick_timer = HCL_NULL; + msw_tick_timer = HAK_NULL; } msw_tick_done = 0; @@ -2820,13 +2820,13 @@ static DWORD WINAPI msw_wait_for_timer_event (LPVOID ctx) return 0; } -static HCL_INLINE void start_ticker (void) +static HAK_INLINE void start_ticker (void) { HANDLE thr; msw_tick_done = 0; - thr = CreateThread(HCL_NULL, 0, msw_wait_for_timer_event, HCL_NULL, 0, HCL_NULL); + thr = CreateThread(HAK_NULL, 0, msw_wait_for_timer_event, HAK_NULL, 0, HAK_NULL); if (thr) { SetThreadPriority (thr, THREAD_PRIORITY_HIGHEST); @@ -2838,7 +2838,7 @@ static HCL_INLINE void start_ticker (void) } } -static HCL_INLINE void stop_ticker (void) +static HAK_INLINE void stop_ticker (void) { if (msw_tick_timer) CancelWaitableTimer (msw_tick_timer); msw_tick_done = 1; @@ -2855,13 +2855,13 @@ static void EXPENTRY os2_wait_for_timer_event (ULONG x) APIRET rc; ULONG count; - rc = DosCreateEventSem(HCL_NULL, &os2_tick_sem, DC_SEM_SHARED, FALSE); + rc = DosCreateEventSem(HAK_NULL, &os2_tick_sem, DC_SEM_SHARED, FALSE); if (rc != NO_ERROR) { goto done; } - rc = DosStartTimer(HCL_USEC_TO_MSEC(HCL_TICKER_INTERVAL_USECS), (HSEM)os2_tick_sem, &os2_tick_timer); + rc = DosStartTimer(HAK_USEC_TO_MSEC(HAK_TICKER_INTERVAL_USECS), (HSEM)os2_tick_sem, &os2_tick_timer); if (rc != NO_ERROR) { DosCloseEventSem (os2_tick_sem); @@ -2872,11 +2872,11 @@ static void EXPENTRY os2_wait_for_timer_event (ULONG x) { rc = DosWaitEventSem(os2_tick_sem, 5000L); #if 0 - swproc_all_hcls (0); + swproc_all_haks (0); DosResetEventSem (os2_tick_sem, &count); #else DosResetEventSem (os2_tick_sem, &count); - swproc_all_hcls (0); + swproc_all_haks (0); #endif } @@ -2890,7 +2890,7 @@ done: DosExit (EXIT_THREAD, 0); } -static HCL_INLINE void start_ticker (void) +static HAK_INLINE void start_ticker (void) { static TID tid; os2_tick_done = 0; @@ -2898,7 +2898,7 @@ static HCL_INLINE void start_ticker (void) /* TODO: Error check */ } -static HCL_INLINE void stop_ticker (void) +static HAK_INLINE void stop_ticker (void) { if (os2_tick_sem) DosPostEventSem (os2_tick_sem); os2_tick_done = 1; @@ -2924,17 +2924,17 @@ static void interrupt dos_timer_intr_handler (void) */ /* The timer interrupt (normally) occurs 18.2 times per second. */ - swproc_all_hcls (0); + swproc_all_haks (0); _chain_intr (dos_prev_timer_intr_handler); } -static HCL_INLINE void start_ticker (void) +static HAK_INLINE void start_ticker (void) { dos_prev_timer_intr_handler = _dos_getvect(0x1C); _dos_setvect (0x1C, dos_timer_intr_handler); } -static HCL_INLINE void stop_ticker (void) +static HAK_INLINE void stop_ticker (void) { _dos_setvect (0x1C, dos_prev_timer_intr_handler); } @@ -2945,25 +2945,25 @@ static TMTask mac_tmtask; static ProcessSerialNumber mac_psn; /* milliseconds if positive, microseconds(after negation) if negative */ -#define TMTASK_DELAY HCL_USEC_TO_MSEC(HCL_TICKER_INTERVAL_USECS) +#define TMTASK_DELAY HAK_USEC_TO_MSEC(HAK_TICKER_INTERVAL_USECS) static pascal void timer_intr_handler (TMTask* task) { - swproc_all_hcls (0); + swproc_all_haks (0); WakeUpProcess (&mac_psn); PrimeTime ((QElem*)&mac_tmtask, TMTASK_DELAY); } -static HCL_INLINE void start_ticker (void) +static HAK_INLINE void start_ticker (void) { GetCurrentProcess (&mac_psn); - HCL_MEMSET (&mac_tmtask, 0, HCL_SIZEOF(mac_tmtask)); + HAK_MEMSET (&mac_tmtask, 0, HAK_SIZEOF(mac_tmtask)); mac_tmtask.tmAddr = NewTimerProc (timer_intr_handler); InsXTime ((QElem*)&mac_tmtask); PrimeTime ((QElem*)&mac_tmtask, TMTASK_DELAY); } -static HCL_INLINE void stop_ticker (void) +static HAK_INLINE void stop_ticker (void) { RmvTime ((QElem*)&mac_tmtask); /*DisposeTimerProc (mac_tmtask.tmAddr);*/ @@ -2971,39 +2971,39 @@ static HCL_INLINE void stop_ticker (void) #elif defined(HAVE_SETITIMER) && defined(SIGVTALRM) && defined(ITIMER_VIRTUAL) -static HCL_INLINE void start_ticker (void) +static HAK_INLINE void start_ticker (void) { - if (set_signal_handler(SIGVTALRM, swproc_all_hcls, SA_RESTART) >= 0) + if (set_signal_handler(SIGVTALRM, swproc_all_haks, SA_RESTART) >= 0) { struct itimerval itv; itv.it_interval.tv_sec = 0; - itv.it_interval.tv_usec = HCL_TICKER_INTERVAL_USECS; + itv.it_interval.tv_usec = HAK_TICKER_INTERVAL_USECS; itv.it_value.tv_sec = 0; - itv.it_value.tv_usec = HCL_TICKER_INTERVAL_USECS; - if (setitimer(ITIMER_VIRTUAL, &itv, HCL_NULL) == -1) + itv.it_value.tv_usec = HAK_TICKER_INTERVAL_USECS; + if (setitimer(ITIMER_VIRTUAL, &itv, HAK_NULL) == -1) { /* WSL supports ITIMER_VIRTUAL only as of windows 10.0.18362.413. the following is a fallback which will get */ unset_signal_handler (SIGVTALRM); #if defined(SIGALRM) && defined(ITIMER_REAL) - if (set_signal_handler(SIGALRM, swproc_all_hcls, SA_RESTART) >= 0) + if (set_signal_handler(SIGALRM, swproc_all_haks, SA_RESTART) >= 0) { /* i double the interval as ITIMER_REAL is against the wall clock. * if the underlying system is under heavy load, some signals * will get lost */ itv.it_interval.tv_sec = 0; - itv.it_interval.tv_usec = HCL_TICKER_INTERVAL_USECS * 2; + itv.it_interval.tv_usec = HAK_TICKER_INTERVAL_USECS * 2; itv.it_value.tv_sec = 0; - itv.it_value.tv_usec = HCL_TICKER_INTERVAL_USECS * 2; - setitimer(ITIMER_REAL, &itv, HCL_NULL); + itv.it_value.tv_usec = HAK_TICKER_INTERVAL_USECS * 2; + setitimer(ITIMER_REAL, &itv, HAK_NULL); } #endif } } } -static HCL_INLINE void stop_ticker (void) +static HAK_INLINE void stop_ticker (void) { /* ignore the signal fired by the activated timer. * unsetting the signal may cause the program to terminate(default action) */ @@ -3014,7 +3014,7 @@ static HCL_INLINE void stop_ticker (void) itv.it_interval.tv_usec = 0; itv.it_value.tv_sec = 0; /* make setitimer() one-shot only */ itv.it_value.tv_usec = 0; - setitimer (ITIMER_VIRTUAL, &itv, HCL_NULL); + setitimer (ITIMER_VIRTUAL, &itv, HAK_NULL); } #if defined(SIGALRM) && defined(ITIMER_REAL) @@ -3025,7 +3025,7 @@ static HCL_INLINE void stop_ticker (void) itv.it_interval.tv_usec = 0; itv.it_value.tv_sec = 0; /* make setitimer() one-shot only */ itv.it_value.tv_usec = 0; - setitimer (ITIMER_REAL, &itv, HCL_NULL); + setitimer (ITIMER_REAL, &itv, HAK_NULL); } #endif } @@ -3034,10 +3034,10 @@ static HCL_INLINE void stop_ticker (void) static pid_t ticker_pid = -1; -static HCL_INLINE void start_ticker (void) +static HAK_INLINE void start_ticker (void) { #if defined(SIGALRM) - if (set_signal_handler(SIGALRM, swproc_all_hcls, SA_RESTART) >= 0) + if (set_signal_handler(SIGALRM, swproc_all_haks, SA_RESTART) >= 0) { ticker_pid = fork(); @@ -3053,10 +3053,10 @@ static HCL_INLINE void start_ticker (void) #if defined(HAVE_NANOSLEEP) struct timespec ts; ts.tv_sec = 0; - ts.tv_nsec = HCL_USEC_TO_NSEC(HCL_TICKER_INTERVAL_USECS) * 2; - nanosleep (&ts, HCL_NULL); + ts.tv_nsec = HAK_USEC_TO_NSEC(HAK_TICKER_INTERVAL_USECS) * 2; + nanosleep (&ts, HAK_NULL); #elif defined(HAVE_USLEEP) - usleep (HCL_TICKER_INTERVAL_USECS * 2); + usleep (HAK_TICKER_INTERVAL_USECS * 2); #else # error UNDEFINED SLEEP @@ -3073,7 +3073,7 @@ static HCL_INLINE void start_ticker (void) #endif } -static HCL_INLINE void stop_ticker (void) +static HAK_INLINE void stop_ticker (void) { #if defined(SIGALRM) if (ticker_pid >= 0) @@ -3110,8 +3110,8 @@ static HCL_INLINE void stop_ticker (void) #elif defined(USE_WIN_DLL) # define sys_dl_error() msw_dlerror() -# define sys_dl_open(x) LoadLibraryExA(x, HCL_NULL, 0) -# define sys_dl_openext(x) LoadLibraryExA(x, HCL_NULL, 0) +# define sys_dl_open(x) LoadLibraryExA(x, HAK_NULL, 0) +# define sys_dl_openext(x) LoadLibraryExA(x, HAK_NULL, 0) # define sys_dl_close(x) FreeLibrary(x) # define sys_dl_getsym(x,n) GetProcAddress(x,n) @@ -3123,25 +3123,25 @@ static HCL_INLINE void stop_ticker (void) # define sys_dl_getsym(x,n) mach_dlsym(x,n) #else -static const char* sys_dl_error(void) { return HCL_NULL; } -static void* sys_dl_open(const char* x) { return HCL_NULL; } -static void* sys_dl_openext(const char* x) { return HCL_NULL; } -static void sys_dl_close(void* x) { return HCL_NULL; } -static void* sys_dl_getsym(void* x, const char* n) { return HCL_NULL; } +static const char* sys_dl_error(void) { return HAK_NULL; } +static void* sys_dl_open(const char* x) { return HAK_NULL; } +static void* sys_dl_openext(const char* x) { return HAK_NULL; } +static void sys_dl_close(void* x) { return HAK_NULL; } +static void* sys_dl_getsym(void* x, const char* n) { return HAK_NULL; } #endif #if defined(USE_WIN_DLL) static const char* msw_dlerror (void) { - /* TODO: handle wchar_t, hcl_ooch_t etc? */ + /* TODO: handle wchar_t, hak_ooch_t etc? */ static char buf[256]; DWORD rc; rc = FormatMessageA ( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - buf, HCL_COUNTOF(buf), HCL_NULL + buf, HAK_COUNTOF(buf), HAK_NULL ); while (rc > 0 && buf[rc - 1] == '\r' || buf[rc - 1] == '\n') { @@ -3185,20 +3185,20 @@ static void* mach_dlopen (const char* path) mach_dlerror_str = "unknown error"; break; } - return HCL_NULL; + return HAK_NULL; } handle = (void*)NSLinkModule(image, path, NSLINKMODULE_OPTION_PRIVATE | NSLINKMODULE_OPTION_RETURN_ON_ERROR); NSDestroyObjectFileImage (image); return handle; } -static HCL_INLINE void mach_dlclose (void* handle) +static HAK_INLINE void mach_dlclose (void* handle) { mach_dlerror_str = ""; NSUnLinkModule (handle, NSUNLINKMODULE_OPTION_NONE); } -static HCL_INLINE void* mach_dlsym (void* handle, const char* name) +static HAK_INLINE void* mach_dlsym (void* handle, const char* name) { mach_dlerror_str = ""; return (void*)NSAddressOfSymbol(NSLookupSymbolInModule(handle, name)); @@ -3217,65 +3217,65 @@ static const char* mach_dlerror (void) } #endif -static void dl_startup (hcl_t* hcl) +static void dl_startup (hak_t* hak) { #if defined(USE_LTDL) lt_dlinit (); #endif } -static void dl_cleanup (hcl_t* hcl) +static void dl_cleanup (hak_t* hak) { #if defined(USE_LTDL) lt_dlexit (); #endif } -static void* dlopen_pfmod (hcl_t* hcl, const hcl_ooch_t* name, const hcl_ooch_t* dirptr, const hcl_oow_t dirlen, hcl_bch_t* bufptr, hcl_oow_t bufcapa) +static void* dlopen_pfmod (hak_t* hak, const hak_ooch_t* name, const hak_ooch_t* dirptr, const hak_oow_t dirlen, hak_bch_t* bufptr, hak_oow_t bufcapa) { void* handle; - hcl_oow_t len, i, xlen, dlen; - hcl_oow_t ucslen, bcslen; + hak_oow_t len, i, xlen, dlen; + hak_oow_t ucslen, bcslen; - /* opening a primitive function module - mostly libhcl-xxxx. + /* opening a primitive function module - mostly libhak-xxxx. * if PFMODPREFIX is absolute, never use PFMODDIR */ - if (HCL_IS_PATH_ABSOLUTE(HCL_DEFAULT_PFMODPREFIX)) + if (HAK_IS_PATH_ABSOLUTE(HAK_DEFAULT_PFMODPREFIX)) { dlen = 0; - len = hcl_copy_bcstr(&bufptr[dlen], bufcapa - dlen, HCL_DEFAULT_PFMODPREFIX); + len = hak_copy_bcstr(&bufptr[dlen], bufcapa - dlen, HAK_DEFAULT_PFMODPREFIX); } else if (dirptr) { xlen = dirlen; dlen = bufcapa; - if (hcl_convootobchars(hcl, dirptr, &xlen, bufptr, &dlen) <= -1) return HCL_NULL; + if (hak_convootobchars(hak, dirptr, &xlen, bufptr, &dlen) <= -1) return HAK_NULL; - if (dlen > 0 && bufptr[dlen - 1] != HCL_DFL_PATH_SEP) + if (dlen > 0 && bufptr[dlen - 1] != HAK_DFL_PATH_SEP) { - #if defined(HCL_HAVE_ALT_PATH_SEP) - if (hcl_find_bchar(bufptr, dlen, HCL_ALT_PATH_SEP) && - !hcl_find_bchar(bufptr, dlen, HCL_DFL_PATH_SEP)) - bufptr[dlen++] = HCL_ALT_PATH_SEP; + #if defined(HAK_HAVE_ALT_PATH_SEP) + if (hak_find_bchar(bufptr, dlen, HAK_ALT_PATH_SEP) && + !hak_find_bchar(bufptr, dlen, HAK_DFL_PATH_SEP)) + bufptr[dlen++] = HAK_ALT_PATH_SEP; else - bufptr[dlen++] = HCL_DFL_PATH_SEP; + bufptr[dlen++] = HAK_DFL_PATH_SEP; #endif - bufptr[dlen++] = HCL_DFL_PATH_SEP; + bufptr[dlen++] = HAK_DFL_PATH_SEP; } - len = hcl_copy_bcstr(&bufptr[dlen], bufcapa - dlen, HCL_DEFAULT_PFMODPREFIX); + len = hak_copy_bcstr(&bufptr[dlen], bufcapa - dlen, HAK_DEFAULT_PFMODPREFIX); len += dlen; } else { - dlen = hcl_copy_bcstr(bufptr, bufcapa, HCL_DEFAULT_PFMODDIR); - len = hcl_copy_bcstr(&bufptr[dlen], bufcapa - dlen, HCL_DEFAULT_PFMODPREFIX); + dlen = hak_copy_bcstr(bufptr, bufcapa, HAK_DEFAULT_PFMODDIR); + len = hak_copy_bcstr(&bufptr[dlen], bufcapa - dlen, HAK_DEFAULT_PFMODPREFIX); len += dlen; } bcslen = bufcapa - len; -#if defined(HCL_OOCH_IS_UCH) - hcl_convootobcstr(hcl, name, &ucslen, &bufptr[len], &bcslen); +#if defined(HAK_OOCH_IS_UCH) + hak_convootobcstr(hak, name, &ucslen, &bufptr[len], &bcslen); #else - bcslen = hcl_copy_bcstr(&bufptr[len], bcslen, name); + bcslen = hak_copy_bcstr(&bufptr[len], bcslen, name); #endif /* length including the directory, the prefix and the name. but excluding the postfix */ @@ -3288,20 +3288,20 @@ static void* dlopen_pfmod (hcl_t* hcl, const hcl_ooch_t* name, const hcl_ooch_t* } retry: - hcl_copy_bcstr (&bufptr[xlen], bufcapa - xlen, HCL_DEFAULT_PFMODPOSTFIX); + hak_copy_bcstr (&bufptr[xlen], bufcapa - xlen, HAK_DEFAULT_PFMODPOSTFIX); - /* both prefix and postfix attached. for instance, libhcl-xxx */ - HCL_DEBUG3 (hcl, "Opening(ext) PFMOD %hs[%js] - %hs\n", &bufptr[dlen], name, bufptr); + /* both prefix and postfix attached. for instance, libhak-xxx */ + HAK_DEBUG3 (hak, "Opening(ext) PFMOD %hs[%js] - %hs\n", &bufptr[dlen], name, bufptr); handle = sys_dl_openext(bufptr); if (!handle) { - HCL_DEBUG3 (hcl, "Unable to open(ext) PFMOD %hs[%js] - %hs\n", &bufptr[dlen], name, sys_dl_error()); + HAK_DEBUG3 (hak, "Unable to open(ext) PFMOD %hs[%js] - %hs\n", &bufptr[dlen], name, sys_dl_error()); if (dlen > 0) { handle = sys_dl_openext(&bufptr[0]); if (handle) goto pfmod_open_ok; - HCL_DEBUG3 (hcl, "Unable to open(ext) PFMOD %hs[%js] - %hs\n", &bufptr[0], name, sys_dl_error()); + HAK_DEBUG3 (hak, "Unable to open(ext) PFMOD %hs[%js] - %hs\n", &bufptr[0], name, sys_dl_error()); } /* try without prefix and postfix */ @@ -3309,13 +3309,13 @@ retry: handle = sys_dl_openext(&bufptr[len]); if (!handle) { - hcl_bch_t* dash; - const hcl_bch_t* dl_errstr; + hak_bch_t* dash; + const hak_bch_t* dl_errstr; dl_errstr = sys_dl_error(); - HCL_DEBUG3 (hcl, "Unable to open(ext) PFMOD %hs[%js] - %hs\n", &bufptr[len], name, dl_errstr); - hcl_seterrbfmt (hcl, HCL_ESYSERR, "unable to open(ext) PFMOD %js - %hs", name, dl_errstr); + HAK_DEBUG3 (hak, "Unable to open(ext) PFMOD %hs[%js] - %hs\n", &bufptr[len], name, dl_errstr); + hak_seterrbfmt (hak, HAK_ESYSERR, "unable to open(ext) PFMOD %js - %hs", name, dl_errstr); - dash = hcl_rfind_bchar(bufptr, hcl_count_bcstr(bufptr), '-'); + dash = hak_rfind_bchar(bufptr, hak_count_bcstr(bufptr), '-'); if (dash) { /* remove a segment at the back. @@ -3328,100 +3328,100 @@ retry: } else { - HCL_DEBUG3 (hcl, "Opened(ext) PFMOD %hs[%js] handle %p\n", &bufptr[len], name, handle); + HAK_DEBUG3 (hak, "Opened(ext) PFMOD %hs[%js] handle %p\n", &bufptr[len], name, handle); } } else { pfmod_open_ok: - HCL_DEBUG3 (hcl, "Opened(ext) PFMOD %hs[%js] handle %p\n", &bufptr[dlen], name, handle); + HAK_DEBUG3 (hak, "Opened(ext) PFMOD %hs[%js] handle %p\n", &bufptr[dlen], name, handle); } return handle; } -static void* dlopen_raw (hcl_t* hcl, const hcl_ooch_t* name, hcl_bch_t* bufptr, hcl_oow_t bufcapa) +static void* dlopen_raw (hak_t* hak, const hak_ooch_t* name, hak_bch_t* bufptr, hak_oow_t bufcapa) { void* handle; - hcl_oow_t ucslen, bcslen; + hak_oow_t ucslen, bcslen; -#if defined(HCL_OOCH_IS_UCH) +#if defined(HAK_OOCH_IS_UCH) bcslen = bufcapa; - hcl_convootobcstr(hcl, name, &ucslen, bufptr, &bcslen); + hak_convootobcstr(hak, name, &ucslen, bufptr, &bcslen); #else - bcslen = hcl_copy_bcstr(bufptr, bufcapa, name); + bcslen = hak_copy_bcstr(bufptr, bufcapa, name); #endif - if (hcl_find_bchar(bufptr, bcslen, '.')) + if (hak_find_bchar(bufptr, bcslen, '.')) { handle = sys_dl_open(bufptr); if (!handle) { - const hcl_bch_t* dl_errstr; + const hak_bch_t* dl_errstr; dl_errstr = sys_dl_error(); - HCL_DEBUG2 (hcl, "Unable to open DL %hs - %hs\n", bufptr, dl_errstr); - hcl_seterrbfmt (hcl, HCL_ESYSERR, "unable to open DL %js - %hs", name, dl_errstr); + HAK_DEBUG2 (hak, "Unable to open DL %hs - %hs\n", bufptr, dl_errstr); + hak_seterrbfmt (hak, HAK_ESYSERR, "unable to open DL %js - %hs", name, dl_errstr); } - else HCL_DEBUG2 (hcl, "Opened DL %hs handle %p\n", bufptr, handle); + else HAK_DEBUG2 (hak, "Opened DL %hs handle %p\n", bufptr, handle); } else { handle = sys_dl_openext(bufptr); if (!handle) { - const hcl_bch_t* dl_errstr; + const hak_bch_t* dl_errstr; dl_errstr = sys_dl_error(); - HCL_DEBUG2 (hcl, "Unable to open(ext) DL %hs - %hs\n", bufptr, dl_errstr); - hcl_seterrbfmt (hcl, HCL_ESYSERR, "unable to open(ext) DL %js - %hs", name, dl_errstr); + HAK_DEBUG2 (hak, "Unable to open(ext) DL %hs - %hs\n", bufptr, dl_errstr); + hak_seterrbfmt (hak, HAK_ESYSERR, "unable to open(ext) DL %js - %hs", name, dl_errstr); } - else HCL_DEBUG2 (hcl, "Opened(ext) DL %hs handle %p\n", bufptr, handle); + else HAK_DEBUG2 (hak, "Opened(ext) DL %hs handle %p\n", bufptr, handle); } return handle; } -static void* dl_open (hcl_t* hcl, const hcl_ooch_t* name, int flags) +static void* dl_open (hak_t* hak, const hak_ooch_t* name, int flags) { #if defined(USE_LTDL) || defined(USE_DLFCN) || defined(USE_MACH_O_DYLD) - hcl_bch_t stabuf[128], * bufptr; - hcl_oow_t ucslen, bcslen, bufcapa; - void* handle = HCL_NULL; + hak_bch_t stabuf[128], * bufptr; + hak_oow_t ucslen, bcslen, bufcapa; + void* handle = HAK_NULL; - #if defined(HCL_OOCH_IS_UCH) - if (hcl_convootobcstr(hcl, name, &ucslen, HCL_NULL, &bufcapa) <= -1) return HCL_NULL; + #if defined(HAK_OOCH_IS_UCH) + if (hak_convootobcstr(hak, name, &ucslen, HAK_NULL, &bufcapa) <= -1) return HAK_NULL; - if (hcl->option.mod[0].len > 0) + if (hak->option.mod[0].len > 0) { - /* multiple directories separated by a colon can be specified for HCL_MOD_LIBDIRS + /* multiple directories separated by a colon can be specified for HAK_MOD_LIBDIRS * however, use the total length to secure space just for simplicity */ - ucslen = hcl->option.mod[0].len; - if (hcl_convootobchars(hcl, hcl->option.mod[0].ptr, &ucslen, HCL_NULL, &bcslen) <= -1) return HCL_NULL; + ucslen = hak->option.mod[0].len; + if (hak_convootobchars(hak, hak->option.mod[0].ptr, &ucslen, HAK_NULL, &bcslen) <= -1) return HAK_NULL; bufcapa += bcslen; } #else - bufcapa = hcl_count_bcstr(name); - bufcapa += (hcl->option.mod[0].len > 0)? hcl->option.mod[0].len: HCL_COUNTOF(HCL_DEFAULT_PFMODDIR); + bufcapa = hak_count_bcstr(name); + bufcapa += (hak->option.mod[0].len > 0)? hak->option.mod[0].len: HAK_COUNTOF(HAK_DEFAULT_PFMODDIR); #endif - /* HCL_COUNTOF(HCL_DEFAULT_PFMODPREFIX) and HCL_COUNTOF(HCL_DEFAULT_PFMODPOSTIFX) + /* HAK_COUNTOF(HAK_DEFAULT_PFMODPREFIX) and HAK_COUNTOF(HAK_DEFAULT_PFMODPOSTIFX) * include the terminating nulls. Never mind about the extra 2 characters. */ - bufcapa += HCL_COUNTOF(HCL_DEFAULT_PFMODPREFIX) + HCL_COUNTOF(HCL_DEFAULT_PFMODPOSTFIX) + 1; + bufcapa += HAK_COUNTOF(HAK_DEFAULT_PFMODPREFIX) + HAK_COUNTOF(HAK_DEFAULT_PFMODPOSTFIX) + 1; - if (bufcapa <= HCL_COUNTOF(stabuf)) bufptr = stabuf; + if (bufcapa <= HAK_COUNTOF(stabuf)) bufptr = stabuf; else { - bufptr = (hcl_bch_t*)hcl_allocmem(hcl, bufcapa * HCL_SIZEOF(*bufptr)); - if (!bufptr) return HCL_NULL; + bufptr = (hak_bch_t*)hak_allocmem(hak, bufcapa * HAK_SIZEOF(*bufptr)); + if (!bufptr) return HAK_NULL; } - if (flags & HCL_VMPRIM_DLOPEN_PFMOD) + if (flags & HAK_VMPRIM_DLOPEN_PFMOD) { - if (hcl->option.mod[0].len > 0) + if (hak->option.mod[0].len > 0) { - const hcl_ooch_t* ptr, * end, * seg; + const hak_ooch_t* ptr, * end, * seg; - ptr = hcl->option.mod[0].ptr; - end = hcl->option.mod[0].ptr + hcl->option.mod[0].len; + ptr = hak->option.mod[0].ptr; + end = hak->option.mod[0].ptr + hak->option.mod[0].len; seg = ptr; while (ptr <= end) @@ -3430,7 +3430,7 @@ static void* dl_open (hcl_t* hcl, const hcl_ooch_t* name, int flags) { if (ptr - seg > 0) { - handle = dlopen_pfmod(hcl, name, seg, ptr - seg, bufptr, bufcapa); + handle = dlopen_pfmod(hak, name, seg, ptr - seg, bufptr, bufcapa); if (handle) break; } @@ -3442,70 +3442,70 @@ static void* dl_open (hcl_t* hcl, const hcl_ooch_t* name, int flags) } - if (!handle) handle = dlopen_pfmod(hcl, name, HCL_NULL, 0, bufptr, bufcapa); + if (!handle) handle = dlopen_pfmod(hak, name, HAK_NULL, 0, bufptr, bufcapa); } else { /* opening a raw shared object without a prefix and/or a postfix */ - handle = dlopen_raw(hcl, name, bufptr, bufcapa); + handle = dlopen_raw(hak, name, bufptr, bufcapa); } - if (bufptr != stabuf) hcl_freemem (hcl, bufptr); + if (bufptr != stabuf) hak_freemem (hak, bufptr); return handle; #else /* TODO: support various platforms */ /* TODO: implemenent this */ - HCL_DEBUG1 (hcl, "Dynamic loading not implemented - cannot open %js\n", name); - hcl_seterrbfmt (hcl, HCL_ENOIMPL, "dynamic loading not implemented - cannot open %js", name); - return HCL_NULL; + HAK_DEBUG1 (hak, "Dynamic loading not implemented - cannot open %js\n", name); + hak_seterrbfmt (hak, HAK_ENOIMPL, "dynamic loading not implemented - cannot open %js", name); + return HAK_NULL; #endif } -static void dl_close (hcl_t* hcl, void* handle) +static void dl_close (hak_t* hak, void* handle) { #if defined(USE_LTDL) || defined(USE_DLFCN) || defined(USE_MACH_O_DYLD) - HCL_DEBUG1 (hcl, "Closed DL handle %p\n", handle); + HAK_DEBUG1 (hak, "Closed DL handle %p\n", handle); sys_dl_close (handle); #else /* TODO: implemenent this */ - HCL_DEBUG1 (hcl, "Dynamic loading not implemented - cannot close handle %p\n", handle); + HAK_DEBUG1 (hak, "Dynamic loading not implemented - cannot close handle %p\n", handle); #endif } -static void* dl_getsym (hcl_t* hcl, void* handle, const hcl_ooch_t* name) +static void* dl_getsym (hak_t* hak, void* handle, const hak_ooch_t* name) { #if defined(USE_LTDL) || defined(USE_DLFCN) || defined(USE_MACH_O_DYLD) - hcl_bch_t stabuf[64], * bufptr; - hcl_oow_t bufcapa, ucslen, bcslen, i; - const hcl_bch_t* symname; + hak_bch_t stabuf[64], * bufptr; + hak_oow_t bufcapa, ucslen, bcslen, i; + const hak_bch_t* symname; void* sym; - #if defined(HCL_OOCH_IS_UCH) - if (hcl_convootobcstr(hcl, name, &ucslen, HCL_NULL, &bcslen) <= -1) return HCL_NULL; + #if defined(HAK_OOCH_IS_UCH) + if (hak_convootobcstr(hak, name, &ucslen, HAK_NULL, &bcslen) <= -1) return HAK_NULL; #else - bcslen = hcl_count_bcstr (name); + bcslen = hak_count_bcstr (name); #endif - if (bcslen >= HCL_COUNTOF(stabuf) - 2) + if (bcslen >= HAK_COUNTOF(stabuf) - 2) { bufcapa = bcslen + 3; - bufptr = (hcl_bch_t*)hcl_allocmem(hcl, bufcapa * HCL_SIZEOF(*bufptr)); - if (!bufptr) return HCL_NULL; + bufptr = (hak_bch_t*)hak_allocmem(hak, bufcapa * HAK_SIZEOF(*bufptr)); + if (!bufptr) return HAK_NULL; } else { - bufcapa = HCL_COUNTOF(stabuf); + bufcapa = HAK_COUNTOF(stabuf); bufptr = stabuf; } bcslen = bufcapa - 1; - #if defined(HCL_OOCH_IS_UCH) - hcl_convootobcstr (hcl, name, &ucslen, &bufptr[1], &bcslen); + #if defined(HAK_OOCH_IS_UCH) + hak_convootobcstr (hak, name, &ucslen, &bufptr[1], &bcslen); #else - bcslen = hcl_copy_bcstr(&bufptr[1], bcslen, name); + bcslen = hak_copy_bcstr(&bufptr[1], bcslen, name); #endif /* convert a period(.) to an underscore(_) */ @@ -3532,25 +3532,25 @@ static void* dl_getsym (hcl_t* hcl, void* handle, const hcl_ooch_t* name) sym = sys_dl_getsym(handle, symname); if (!sym) { - const hcl_bch_t* dl_errstr; + const hak_bch_t* dl_errstr; dl_errstr = sys_dl_error(); - HCL_DEBUG3 (hcl, "Failed to get module symbol %js from handle %p - %hs\n", name, handle, dl_errstr); - hcl_seterrbfmt (hcl, HCL_ENOENT, "unable to get module symbol %hs - %hs", symname, dl_errstr); + HAK_DEBUG3 (hak, "Failed to get module symbol %js from handle %p - %hs\n", name, handle, dl_errstr); + hak_seterrbfmt (hak, HAK_ENOENT, "unable to get module symbol %hs - %hs", symname, dl_errstr); } } } } - if (sym) HCL_DEBUG3 (hcl, "Loaded module symbol %js from handle %p - %hs\n", name, handle, symname); - if (bufptr != stabuf) hcl_freemem (hcl, bufptr); + if (sym) HAK_DEBUG3 (hak, "Loaded module symbol %js from handle %p - %hs\n", name, handle, symname); + if (bufptr != stabuf) hak_freemem (hak, bufptr); return sym; #else /* TODO: IMPLEMENT THIS */ - HCL_DEBUG2 (hcl, "Dynamic loading not implemented - Cannot load module symbol %js from handle %p\n", name, handle); - hcl_seterrbfmt (hcl, HCL_ENOIMPL, "dynamic loading not implemented - Cannot load module symbol %js from handle %p", name, handle); - return HCL_NULL; + HAK_DEBUG2 (hak, "Dynamic loading not implemented - Cannot load module symbol %js from handle %p\n", name, handle); + hak_seterrbfmt (hak, HAK_ENOIMPL, "dynamic loading not implemented - Cannot load module symbol %js from handle %p", name, handle); + return HAK_NULL; #endif } @@ -3560,7 +3560,7 @@ static void* dl_getsym (hcl_t* hcl, void* handle, const hcl_ooch_t* name) /*#define ENABLE_LOG_INITIALLY*/ -static HCL_INLINE void reset_log_to_default (xtn_t* xtn) +static HAK_INLINE void reset_log_to_default (xtn_t* xtn) { #if defined(ENABLE_LOG_INITIALLY) xtn->log.fd = STDERR_FILENO; @@ -3579,62 +3579,62 @@ static HCL_INLINE void reset_log_to_default (xtn_t* xtn) #endif } -static HCL_INLINE void chain (hcl_t* hcl) +static HAK_INLINE void chain (hak_t* hak) { - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); /* TODO: make this atomic */ - xtn->prev = HCL_NULL; - xtn->next = g_hcl; + xtn->prev = HAK_NULL; + xtn->next = g_hak; - if (g_hcl) GET_XTN(g_hcl)->prev = hcl; - else g_hcl = hcl; + if (g_hak) GET_XTN(g_hak)->prev = hak; + else g_hak = hak; /* TODO: make this atomic */ } -static HCL_INLINE void unchain (hcl_t* hcl) +static HAK_INLINE void unchain (hak_t* hak) { - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); /* TODO: make this atomic */ if (xtn->prev) GET_XTN(xtn->prev)->next = xtn->next; - else g_hcl = xtn->next; + else g_hak = xtn->next; if (xtn->next) GET_XTN(xtn->next)->prev = xtn->prev; /* TODO: make this atomic */ - xtn->prev = HCL_NULL; - xtn->prev = HCL_NULL; + xtn->prev = HAK_NULL; + xtn->prev = HAK_NULL; } -static void cb_on_fini (hcl_t* hcl) +static void cb_on_fini (hak_t* hak) { - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); if ((xtn->log.fd_flags & LOGFD_OPENED_HERE) && xtn->log.fd >= 0) close (xtn->log.fd); reset_log_to_default (xtn); - unchain (hcl); + unchain (hak); } -static void cb_halting (hcl_t* hcl) +static void cb_halting (hak_t* hak) { - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); xtn->ev.halting = 1; /* once set, vm_sleep() is supposed to return without waiting */ } -static void cb_on_option (hcl_t* hcl, hcl_option_t id, const void* value) +static void cb_on_option (hak_t* hak, hak_option_t id, const void* value) { - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); int fd; - if (id != HCL_LOG_TARGET_BCSTR && id != HCL_LOG_TARGET_UCSTR && - id != HCL_LOG_TARGET_BCS && id != HCL_LOG_TARGET_UCS) return; /* return success. not interested */ + if (id != HAK_LOG_TARGET_BCSTR && id != HAK_LOG_TARGET_UCSTR && + id != HAK_LOG_TARGET_BCS && id != HAK_LOG_TARGET_UCS) return; /* return success. not interested */ #if defined(_WIN32) - #if defined(HCL_OOCH_IS_UCH) && (HCL_SIZEOF_UCH_T == HCL_SIZEOF_WCHAR_T) - fd = _wopen((const wchar_t*)hcl->option.log_target_u, _O_CREAT | _O_WRONLY | _O_APPEND | _O_BINARY , 0644); + #if defined(HAK_OOCH_IS_UCH) && (HAK_SIZEOF_UCH_T == HAK_SIZEOF_WCHAR_T) + fd = _wopen((const wchar_t*)hak->option.log_target_u, _O_CREAT | _O_WRONLY | _O_APPEND | _O_BINARY , 0644); #else - fd = _open(hcl->option.log_target_b, _O_CREAT | _O_WRONLY | _O_APPEND | _O_BINARY , 0644); + fd = _open(hak->option.log_target_b, _O_CREAT | _O_WRONLY | _O_APPEND | _O_BINARY , 0644); #endif #else - fd = open(hcl->option.log_target_b, O_CREAT | O_WRONLY | O_APPEND , 0644); + fd = open(hak->option.log_target_b, O_CREAT | O_WRONLY | O_APPEND , 0644); #endif if (fd == -1) { @@ -3668,7 +3668,7 @@ static int os2_socket_pair (int p[2]) ULONG msec, idx; DosGetInfoBlocks(&tib, &pib); - DosQuerySysInfo (QSV_MS_COUNT, QSV_MS_COUNT, &msec, HCL_SIZEOF(msec)); + DosQuerySysInfo (QSV_MS_COUNT, QSV_MS_COUNT, &msec, HAK_SIZEOF(msec)); x = socket(PF_OS2, SOCK_STREAM, 0); if (x <= -1) goto oops; @@ -3676,13 +3676,13 @@ static int os2_socket_pair (int p[2]) idx = msec; attempt_to_bind: - HCL_MEMSET (&sa, 0, HCL_SIZEOF(sa)); + HAK_MEMSET (&sa, 0, HAK_SIZEOF(sa)); sa.sun_family = AF_OS2; /* OS/2 mandates the socket name should begin with \socket\ */ - sprintf (sa.sun_path, "\\socket\\hcl-%08lx-%08lx-%08lx", (unsigned long int)pib->pib_ulpid, (unsigned long int)tib->tib_ptib2->tib2_ultid, (unsigned long int)idx); + sprintf (sa.sun_path, "\\socket\\hak-%08lx-%08lx-%08lx", (unsigned long int)pib->pib_ulpid, (unsigned long int)tib->tib_ptib2->tib2_ultid, (unsigned long int)idx); - if (bind(x, (struct sockaddr*)&sa, HCL_SIZEOF(sa)) <= -1) + if (bind(x, (struct sockaddr*)&sa, HAK_SIZEOF(sa)) <= -1) { if (sock_errno() != SOCEADDRINUSE) goto oops; if (idx - msec > 9999) goto oops; /* failure after many attempts */ @@ -3694,8 +3694,8 @@ attempt_to_bind: y = socket(PF_OS2, SOCK_STREAM, 0); if (y <= -1) goto oops; - if (connect(y, (struct sockaddr*)&sa, HCL_SIZEOF(sa)) <= -1) goto oops; - z = accept(x, HCL_NULL, HCL_NULL); + if (connect(y, (struct sockaddr*)&sa, HAK_SIZEOF(sa)) <= -1) goto oops; + z = accept(x, HAK_NULL, HAK_NULL); if (z <= -1) goto oops; soclose (x); @@ -3710,12 +3710,12 @@ oops: } #endif -static int open_pipes (hcl_t* hcl, int p[2]) +static int open_pipes (hak_t* hak, int p[2]) { #if defined(_WIN32) if (_pipe(p, 256, _O_BINARY | _O_NOINHERIT) == -1) { - hcl_seterrbfmtwithsyserr (hcl, 0, errno, "unable to create pipes"); + hak_seterrbfmtwithsyserr (hak, 0, errno, "unable to create pipes"); return -1; } @@ -3727,23 +3727,23 @@ static int open_pipes (hcl_t* hcl, int p[2]) if (socketpair(AF_LOCAL, SOCK_STREAM, 0, p) == -1) #endif { - hcl_seterrbfmtwithsyserr (hcl, 2, sock_errno(), "unable to create pipes"); + hak_seterrbfmtwithsyserr (hak, 2, sock_errno(), "unable to create pipes"); return -1; } #elif defined(__DOS__) - hcl_seterrbfmt (hcl, HCL_ENOIMPL, "unable to create pipes - not supported"); + hak_seterrbfmt (hak, HAK_ENOIMPL, "unable to create pipes - not supported"); return -1; #elif defined(HAVE_PIPE2) && defined(O_CLOEXEC) && defined(O_NONBLOCK) if (pipe2(p, O_CLOEXEC | O_NONBLOCK) == -1) { - hcl_seterrbfmtwithsyserr (hcl, 0, errno, "unable to create pipes"); + hak_seterrbfmtwithsyserr (hak, 0, errno, "unable to create pipes"); return -1; } #else if (pipe(p) == -1) { - hcl_seterrbfmtwithsyserr (hcl, 0, errno, "unable to create pipes"); + hak_seterrbfmtwithsyserr (hak, 0, errno, "unable to create pipes"); return -1; } #endif @@ -3760,8 +3760,8 @@ static int open_pipes (hcl_t* hcl, int p[2]) #elif defined(__OS2__) { int flags = 1; /* don't block */ - ioctl (p[0], FIONBIO, (char*)&flags, HCL_SIZEOF(flags)); - ioctl (p[1], FIONBIO, (char*)&flags, HCL_SIZEOF(flags)); + ioctl (p[0], FIONBIO, (char*)&flags, HAK_SIZEOF(flags)); + ioctl (p[1], FIONBIO, (char*)&flags, HAK_SIZEOF(flags)); } #elif defined(HAVE_PIPE2) && defined(O_CLOEXEC) && defined(O_NONBLOCK) /* do nothing */ @@ -3786,7 +3786,7 @@ static int open_pipes (hcl_t* hcl, int p[2]) return 0; } -static void close_pipes (hcl_t* hcl, int p[2]) +static void close_pipes (hak_t* hak, int p[2]) { #if defined(_WIN32) _close (p[0]); @@ -3802,22 +3802,22 @@ static void close_pipes (hcl_t* hcl, int p[2]) p[1] = -1; } -static int cb_vm_startup (hcl_t* hcl) +static int cb_vm_startup (hak_t* hak) { - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); int sigfd_pcount = 0; int iothr_pcount = 0, flags; #if defined(_WIN32) - xtn->waitable_timer = CreateWaitableTimer(HCL_NULL, TRUE, HCL_NULL); + xtn->waitable_timer = CreateWaitableTimer(HAK_NULL, TRUE, HAK_NULL); #endif #if defined(USE_DEVPOLL) xtn->ep = open("/dev/poll", O_RDWR); if (xtn->ep == -1) { - hcl_seterrwithsyserr (hcl, 0, errno); - HCL_DEBUG1 (hcl, "Cannot create devpoll - %hs\n", strerror(errno)); + hak_seterrwithsyserr (hak, 0, errno); + HAK_DEBUG1 (hak, "Cannot create devpoll - %hs\n", strerror(errno)); goto oops; } @@ -3835,8 +3835,8 @@ static int cb_vm_startup (hcl_t* hcl) #endif if (xtn->ep == -1) { - hcl_seterrwithsyserr (hcl, 0, errno); - HCL_DEBUG1 (hcl, "Cannot create kqueue - %hs\n", strerror(errno)); + hak_seterrwithsyserr (hak, 0, errno); + HAK_DEBUG1 (hak, "Cannot create kqueue - %hs\n", strerror(errno)); goto oops; } @@ -3854,8 +3854,8 @@ static int cb_vm_startup (hcl_t* hcl) #endif if (xtn->ep == -1) { - hcl_seterrwithsyserr (hcl, 0, errno); - HCL_DEBUG1 (hcl, "Cannot create epoll - %hs\n", strerror(errno)); + hak_seterrwithsyserr (hak, 0, errno); + HAK_DEBUG1 (hak, "Cannot create epoll - %hs\n", strerror(errno)); goto oops; } @@ -3875,23 +3875,23 @@ static int cb_vm_startup (hcl_t* hcl) MUTEX_INIT (&xtn->ev.reg.smtx); #endif /* USE_DEVPOLL */ - if (open_pipes(hcl, xtn->sigfd.p) <= -1) goto oops; + if (open_pipes(hak, xtn->sigfd.p) <= -1) goto oops; sigfd_pcount = 2; #if defined(USE_THREAD) - if (open_pipes(hcl, xtn->iothr.p) <= -1) goto oops; + if (open_pipes(hak, xtn->iothr.p) <= -1) goto oops; iothr_pcount = 2; - if (_add_poll_fd(hcl, xtn->iothr.p[0], XPOLLIN) <= -1) goto oops; + if (_add_poll_fd(hak, xtn->iothr.p[0], XPOLLIN) <= -1) goto oops; - pthread_mutex_init (&xtn->ev.mtx, HCL_NULL); - pthread_cond_init (&xtn->ev.cnd, HCL_NULL); - pthread_cond_init (&xtn->ev.cnd2, HCL_NULL); + pthread_mutex_init (&xtn->ev.mtx, HAK_NULL); + pthread_cond_init (&xtn->ev.cnd, HAK_NULL); + pthread_cond_init (&xtn->ev.cnd2, HAK_NULL); xtn->ev.halting = 0; xtn->iothr.abort = 0; xtn->iothr.up = 0; - /*pthread_create (&xtn->iothr, HCL_NULL, iothr_main, hcl);*/ + /*pthread_create (&xtn->iothr, HAK_NULL, iothr_main, hak);*/ #endif /* USE_THREAD */ @@ -3924,9 +3924,9 @@ oops: return -1; } -static void cb_vm_cleanup (hcl_t* hcl) +static void cb_vm_cleanup (hak_t* hak) { - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); xtn->vm_running = 0; @@ -3934,7 +3934,7 @@ static void cb_vm_cleanup (hcl_t* hcl) if (xtn->waitable_timer) { CloseHandle (xtn->waitable_timer); - xtn->waitable_timer = HCL_NULL; + xtn->waitable_timer = HAK_NULL; } #endif @@ -3944,18 +3944,18 @@ static void cb_vm_cleanup (hcl_t* hcl) xtn->iothr.abort = 1; write (xtn->iothr.p[1], "Q", 1); pthread_cond_signal (&xtn->ev.cnd); - pthread_join (xtn->iothr.thr, HCL_NULL); + pthread_join (xtn->iothr.thr, HAK_NULL); xtn->iothr.up = 0; } pthread_cond_destroy (&xtn->ev.cnd); pthread_cond_destroy (&xtn->ev.cnd2); pthread_mutex_destroy (&xtn->ev.mtx); - _del_poll_fd (hcl, xtn->iothr.p[0]); - close_pipes (hcl, xtn->iothr.p); + _del_poll_fd (hak, xtn->iothr.p[0]); + close_pipes (hak, xtn->iothr.p); #endif /* USE_THREAD */ - close_pipes (hcl, xtn->sigfd.p); + close_pipes (hak, xtn->sigfd.p); #if defined(USE_DEVPOLL) if (xtn->ep >= 0) @@ -3963,7 +3963,7 @@ static void cb_vm_cleanup (hcl_t* hcl) close (xtn->ep); xtn->ep = -1; } - /*destroy_poll_data_space (hcl);*/ + /*destroy_poll_data_space (hak);*/ #elif defined(USE_KQUEUE) if (xtn->ep >= 0) { @@ -3979,17 +3979,17 @@ static void cb_vm_cleanup (hcl_t* hcl) #elif defined(USE_POLL) if (xtn->ev.reg.ptr) { - hcl_freemem (hcl, xtn->ev.reg.ptr); - xtn->ev.reg.ptr = HCL_NULL; + hak_freemem (hak, xtn->ev.reg.ptr); + xtn->ev.reg.ptr = HAK_NULL; xtn->ev.reg.len = 0; xtn->ev.reg.capa = 0; } if (xtn->ev.buf) { - hcl_freemem (hcl, xtn->ev.buf); - xtn->ev.buf = HCL_NULL; + hak_freemem (hak, xtn->ev.buf); + xtn->ev.buf = HAK_NULL; } - /*destroy_poll_data_space (hcl);*/ + /*destroy_poll_data_space (hak);*/ MUTEX_DESTROY (&xtn->ev.reg.pmtx); #elif defined(USE_SELECT) FD_ZERO (&xtn->ev.reg.rfds); @@ -4000,7 +4000,7 @@ static void cb_vm_cleanup (hcl_t* hcl) } /* ----------------------------------------------------------------- - * STANDARD HCL + * STANDARD HAK * ----------------------------------------------------------------- */ #if defined(_WIN32) static const wchar_t* msw_exception_name (DWORD excode) @@ -4053,10 +4053,10 @@ static LONG WINAPI msw_exception_filter (struct _EXCEPTION_POINTERS* exinfo) #if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) GetModuleHandleExW (GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, exinfo->ExceptionRecord->ExceptionAddress, &mod); - /*GetModuleInformation (GetCurrentProcess(), mod, &modinfo, HCL_SIZEOF(modinfo));*/ - GetModuleFileNameExW (GetCurrentProcess(), mod, expath, HCL_SIZEOF(expath)); + /*GetModuleInformation (GetCurrentProcess(), mod, &modinfo, HAK_SIZEOF(modinfo));*/ + GetModuleFileNameExW (GetCurrentProcess(), mod, expath, HAK_SIZEOF(expath)); #else - GetModuleFileNameW (HCL_NULL, expath, HCL_SIZEOF(expath)); + GetModuleFileNameW (HAK_NULL, expath, HAK_SIZEOF(expath)); #endif excode = exinfo->ExceptionRecord->ExceptionCode; @@ -4064,7 +4064,7 @@ static LONG WINAPI msw_exception_filter (struct _EXCEPTION_POINTERS* exinfo) if (excode == EXCEPTION_ACCESS_VIOLATION || excode == EXCEPTION_IN_PAGE_ERROR) { - _snwprintf (exmsg, HCL_COUNTOF(exmsg), L"Exception %s(%u) at 0x%p - Invalid operation at 0x%p - %s", + _snwprintf (exmsg, HAK_COUNTOF(exmsg), L"Exception %s(%u) at 0x%p - Invalid operation at 0x%p - %s", msw_exception_name(excode), (unsigned int)excode, exinfo->ExceptionRecord->ExceptionAddress, (PVOID)exinfo->ExceptionRecord->ExceptionInformation[1], @@ -4073,14 +4073,14 @@ static LONG WINAPI msw_exception_filter (struct _EXCEPTION_POINTERS* exinfo) } else { - _snwprintf (exmsg, HCL_COUNTOF(exmsg), L"Exception %s(%u) at 0x%p", + _snwprintf (exmsg, HAK_COUNTOF(exmsg), L"Exception %s(%u) at 0x%p", msw_exception_name(excode), (unsigned int)excode, exinfo->ExceptionRecord->ExceptionAddress ); } /* TODO: use a global output callback like vmprim.assertfail(). - * vmprim.assertfail() requires 'hcl'. so i need another global level callback for this */ + * vmprim.assertfail() requires 'hak'. so i need another global level callback for this */ MessageBoxW (NULL, exmsg, expath, MB_OK | MB_ICONERROR); /*return EXCEPTION_CONTINUE_SEARCH;*/ @@ -4089,17 +4089,17 @@ static LONG WINAPI msw_exception_filter (struct _EXCEPTION_POINTERS* exinfo) } #endif -hcl_t* hcl_openstdwithmmgr (hcl_mmgr_t* mmgr, hcl_oow_t xtnsize, hcl_errnum_t* errnum) +hak_t* hak_openstdwithmmgr (hak_mmgr_t* mmgr, hak_oow_t xtnsize, hak_errnum_t* errnum) { - hcl_t* hcl; - hcl_vmprim_t vmprim; - hcl_cb_t cb; + hak_t* hak; + hak_vmprim_t vmprim; + hak_cb_t cb; - HCL_MEMSET (&vmprim, 0, HCL_SIZEOF(vmprim)); + HAK_MEMSET (&vmprim, 0, HAK_SIZEOF(vmprim)); vmprim.alloc_heap = alloc_heap; vmprim.free_heap = free_heap; vmprim.log_write = log_write; - vmprim.syserrstrb = hcl_syserrstrb; + vmprim.syserrstrb = hak_syserrstrb; vmprim.assertfail = _assertfail; vmprim.dl_startup = dl_startup; vmprim.dl_cleanup = dl_cleanup; @@ -4116,38 +4116,38 @@ hcl_t* hcl_openstdwithmmgr (hcl_mmgr_t* mmgr, hcl_oow_t xtnsize, hcl_errnum_t* e vmprim.vm_getsig = vm_getsig; vmprim.vm_setsig = vm_setsig; - hcl = hcl_open(mmgr, HCL_SIZEOF(xtn_t) + xtnsize, &vmprim, errnum); - if (HCL_UNLIKELY(!hcl)) return HCL_NULL; + hak = hak_open(mmgr, HAK_SIZEOF(xtn_t) + xtnsize, &vmprim, errnum); + if (HAK_UNLIKELY(!hak)) return HAK_NULL; - /* adjust the object size by the sizeof xtn_t so that hcl_getxtn() returns the right pointer. */ - hcl->_instsize += HCL_SIZEOF(xtn_t); + /* adjust the object size by the sizeof xtn_t so that hak_getxtn() returns the right pointer. */ + hak->_instsize += HAK_SIZEOF(xtn_t); - chain (hcl); /* call chian() before hcl_regcb() as fini_hcl() calls unchain() */ - reset_log_to_default (GET_XTN(hcl)); + chain (hak); /* call chian() before hak_regcb() as fini_hak() calls unchain() */ + reset_log_to_default (GET_XTN(hak)); - HCL_MEMSET (&cb, 0, HCL_SIZEOF(cb)); + HAK_MEMSET (&cb, 0, HAK_SIZEOF(cb)); cb.on_fini = cb_on_fini; cb.halting = cb_halting; cb.on_option = cb_on_option; cb.vm_startup = cb_vm_startup; cb.vm_cleanup = cb_vm_cleanup; - if (hcl_regcb(hcl, &cb) == HCL_NULL) + if (hak_regcb(hak, &cb) == HAK_NULL) { - if (errnum) *errnum = HCL_ERRNUM(hcl); - hcl_close (hcl); - return HCL_NULL; + if (errnum) *errnum = HAK_ERRNUM(hak); + hak_close (hak); + return HAK_NULL; } #if defined(_WIN32) SetUnhandledExceptionFilter (msw_exception_filter); #endif - return hcl; + return hak; } -hcl_t* hcl_openstd (hcl_oow_t xtnsize, hcl_errnum_t* errnum) +hak_t* hak_openstd (hak_oow_t xtnsize, hak_errnum_t* errnum) { - return hcl_openstdwithmmgr(&sys_mmgr, xtnsize, errnum); + return hak_openstdwithmmgr(&sys_mmgr, xtnsize, errnum); } @@ -4158,11 +4158,11 @@ typedef struct bb_t bb_t; struct bb_t { char buf[4096]; - hcl_oow_t pos; - hcl_oow_t len; + hak_oow_t pos; + hak_oow_t len; FILE* fp; - hcl_bch_t* fn; + hak_bch_t* fn; }; #if defined(__DOS__) || defined(_WIN32) || defined(__OS2__) @@ -4171,22 +4171,22 @@ struct bb_t #define FOPEN_R_FLAGS "r" #endif -static HCL_INLINE int open_cci_stream (hcl_t* hcl, hcl_io_cciarg_t* arg) +static HAK_INLINE int open_cci_stream (hak_t* hak, hak_io_cciarg_t* arg) { - xtn_t* xtn = GET_XTN(hcl); - bb_t* bb = HCL_NULL; + xtn_t* xtn = GET_XTN(hak); + bb_t* bb = HAK_NULL; /* TOOD: support predefined include directory as well */ if (arg->includer) { /* includee */ - hcl_oow_t ucslen, bcslen, parlen; - const hcl_bch_t* fn, * fb; + hak_oow_t ucslen, bcslen, parlen; + const hak_bch_t* fn, * fb; - #if defined(HCL_OOCH_IS_UCH) - if (hcl_convootobcstr(hcl, arg->name, &ucslen, HCL_NULL, &bcslen) <= -1) goto oops; + #if defined(HAK_OOCH_IS_UCH) + if (hak_convootobcstr(hak, arg->name, &ucslen, HAK_NULL, &bcslen) <= -1) goto oops; #else - bcslen = hcl_count_bcstr(arg->name); + bcslen = hak_count_bcstr(arg->name); #endif fn = ((bb_t*)arg->includer->handle)->fn; @@ -4198,42 +4198,42 @@ static HCL_INLINE int open_cci_stream (hcl_t* hcl, hcl_io_cciarg_t* arg) } else { - fb = hcl_get_base_name_from_bcstr_path(fn); + fb = hak_get_base_name_from_bcstr_path(fn); parlen = fb - fn; } - bb = (bb_t*)hcl_callocmem(hcl, HCL_SIZEOF(*bb) + (HCL_SIZEOF(hcl_bch_t) * (parlen + bcslen + 1))); + bb = (bb_t*)hak_callocmem(hak, HAK_SIZEOF(*bb) + (HAK_SIZEOF(hak_bch_t) * (parlen + bcslen + 1))); if (!bb) goto oops; - bb->fn = (hcl_bch_t*)(bb + 1); - hcl_copy_bchars (bb->fn, fn, parlen); - #if defined(HCL_OOCH_IS_UCH) - hcl_convootobcstr (hcl, arg->name, &ucslen, &bb->fn[parlen], &bcslen); + bb->fn = (hak_bch_t*)(bb + 1); + hak_copy_bchars (bb->fn, fn, parlen); + #if defined(HAK_OOCH_IS_UCH) + hak_convootobcstr (hak, arg->name, &ucslen, &bb->fn[parlen], &bcslen); #else - hcl_copy_bcstr (&bb->fn[parlen], bcslen + 1, arg->name); + hak_copy_bcstr (&bb->fn[parlen], bcslen + 1, arg->name); #endif bb->fp = fopen(bb->fn, FOPEN_R_FLAGS); if (!bb->fp) { - hcl_seterrbfmt (hcl, HCL_EIOERR, "unable to open %hs", bb->fn); + hak_seterrbfmt (hak, HAK_EIOERR, "unable to open %hs", bb->fn); goto oops; } } else { /* main stream */ - hcl_oow_t pathlen; + hak_oow_t pathlen; - pathlen = xtn->cci_path? hcl_count_bcstr(xtn->cci_path): 0; + pathlen = xtn->cci_path? hak_count_bcstr(xtn->cci_path): 0; - bb = (bb_t*)hcl_callocmem(hcl, HCL_SIZEOF(*bb) + (HCL_SIZEOF(hcl_bch_t) * (pathlen + 1))); + bb = (bb_t*)hak_callocmem(hak, HAK_SIZEOF(*bb) + (HAK_SIZEOF(hak_bch_t) * (pathlen + 1))); if (!bb) goto oops; - bb->fn = (hcl_bch_t*)(bb + 1); + bb->fn = (hak_bch_t*)(bb + 1); if (pathlen > 0 && xtn->cci_path) { - hcl_copy_bcstr (bb->fn, pathlen + 1, xtn->cci_path); + hak_copy_bcstr (bb->fn, pathlen + 1, xtn->cci_path); /*bb->fp = fopen(bb->fn, FOPEN_R_FLAGS);*/ } else @@ -4247,11 +4247,11 @@ static HCL_INLINE int open_cci_stream (hcl_t* hcl, hcl_io_cciarg_t* arg) if (!arg->includer) /* if main stream */ { /* HACK */ - HCL_ASSERT (hcl, arg->name == HCL_NULL); - arg->name = hcl_dupbtooocstr(hcl, bb->fn, HCL_NULL); + HAK_ASSERT (hak, arg->name == HAK_NULL); + arg->name = hak_dupbtooocstr(hak, bb->fn, HAK_NULL); /* ignore duplication failure */ -/* TODO: change the type of arg->name from const hcl_ooch_t* to hcl_ooch_t*. - * change its specification from [IN] only to [INOUT] in hcl_io_cciarg_t. */ +/* TODO: change the type of arg->name from const hak_ooch_t* to hak_ooch_t*. + * change its specification from [IN] only to [INOUT] in hak_io_cciarg_t. */ /* END HACK */ } @@ -4262,48 +4262,48 @@ oops: if (bb) { if (bb->fp && bb->fp != stdin) fclose (bb->fp); - hcl_freemem (hcl, bb); + hak_freemem (hak, bb); } return -1; } -static HCL_INLINE int close_cci_stream (hcl_t* hcl, hcl_io_cciarg_t* arg) +static HAK_INLINE int close_cci_stream (hak_t* hak, hak_io_cciarg_t* arg) { - /*xtn_t* xtn = GET_XTN(hcl);*/ + /*xtn_t* xtn = GET_XTN(hak);*/ bb_t* bb; bb = (bb_t*)arg->handle; - HCL_ASSERT (hcl, bb != HCL_NULL /*&& bb->fp != HCL_NULL*/); + HAK_ASSERT (hak, bb != HAK_NULL /*&& bb->fp != HAK_NULL*/); /* HACK */ if (!arg->includer && arg->name) { /* main stream closing */ - hcl_freemem (hcl, (hcl_ooch_t*)arg->name); - arg->name = HCL_NULL; + hak_freemem (hak, (hak_ooch_t*)arg->name); + arg->name = HAK_NULL; } /* END HACK */ if (bb->fp /*&& bb->fp != stdin*/) fclose (bb->fp); - hcl_freemem (hcl, bb); + hak_freemem (hak, bb); - arg->handle = HCL_NULL; + arg->handle = HAK_NULL; return 0; } -static HCL_INLINE int read_cci_stream (hcl_t* hcl, hcl_io_cciarg_t* arg) +static HAK_INLINE int read_cci_stream (hak_t* hak, hak_io_cciarg_t* arg) { - /*xtn_t* xtn = GET_XTN(hcl);*/ + /*xtn_t* xtn = GET_XTN(hak);*/ bb_t* bb; - hcl_oow_t bcslen, ucslen, remlen; + hak_oow_t bcslen, ucslen, remlen; int x; bb = (bb_t*)arg->handle; - HCL_ASSERT (hcl, bb != HCL_NULL); + HAK_ASSERT (hak, bb != HAK_NULL); if (!bb->fp) { - HCL_ASSERT (hcl, arg->includer == HCL_NULL); + HAK_ASSERT (hak, arg->includer == HAK_NULL); /* the main stream is opened with no associated file in open_cci_stream(). return no data */ arg->xlen = 0; return 0; @@ -4316,7 +4316,7 @@ static HCL_INLINE int read_cci_stream (hcl_t* hcl, hcl_io_cciarg_t* arg) { if (ferror((FILE*)bb->fp)) { - hcl_seterrbfmt (hcl, HCL_EIOERR, "I/O error - %hs", strerror(errno)); + hak_seterrbfmt (hak, HAK_EIOERR, "I/O error - %hs", strerror(errno)); return -1; } break; @@ -4324,12 +4324,12 @@ static HCL_INLINE int read_cci_stream (hcl_t* hcl, hcl_io_cciarg_t* arg) bb->buf[bb->len++] = x; } - while (bb->len < HCL_COUNTOF(bb->buf) && x != '\r' && x != '\n'); + while (bb->len < HAK_COUNTOF(bb->buf) && x != '\r' && x != '\n'); -#if defined(HCL_OOCH_IS_UCH) +#if defined(HAK_OOCH_IS_UCH) bcslen = bb->len; - ucslen = HCL_COUNTOF(arg->buf.c); - x = hcl_convbtooochars(hcl, bb->buf, &bcslen, arg->buf.c, &ucslen); + ucslen = HAK_COUNTOF(arg->buf.c); + x = hak_convbtooochars(hak, bb->buf, &bcslen, arg->buf.c, &ucslen); if (x <= -1 && ucslen <= 0) return -1; /* if ucslen is greater than 0, i assume that some characters have been * converted properly. as the loop above reads an entire line if not too @@ -4337,13 +4337,13 @@ static HCL_INLINE int read_cci_stream (hcl_t* hcl, hcl_io_cciarg_t* arg) * successful conversion of at least 1 ooch character. so no explicit * check for the incomplete sequence error is required */ #else - bcslen = (bb->len < HCL_COUNTOF(arg->buf.c))? bb->len: HCL_COUNTOF(arg->buf.c); + bcslen = (bb->len < HAK_COUNTOF(arg->buf.c))? bb->len: HAK_COUNTOF(arg->buf.c); ucslen = bcslen; - hcl_copy_bchars (arg->buf.c, bb->buf, bcslen); + hak_copy_bchars (arg->buf.c, bb->buf, bcslen); #endif remlen = bb->len - bcslen; - if (remlen > 0) HCL_MEMMOVE (bb->buf, &bb->buf[bcslen], remlen); + if (remlen > 0) HAK_MEMMOVE (bb->buf, &bb->buf[bcslen], remlen); bb->len = remlen; arg->xlen = ucslen; @@ -4351,49 +4351,49 @@ static HCL_INLINE int read_cci_stream (hcl_t* hcl, hcl_io_cciarg_t* arg) } /* source code input handler */ -static int cci_handler (hcl_t* hcl, hcl_io_cmd_t cmd, void* arg) +static int cci_handler (hak_t* hak, hak_io_cmd_t cmd, void* arg) { switch (cmd) { - case HCL_IO_OPEN: - return open_cci_stream(hcl, (hcl_io_cciarg_t*)arg); + case HAK_IO_OPEN: + return open_cci_stream(hak, (hak_io_cciarg_t*)arg); - case HCL_IO_CLOSE: - return close_cci_stream(hcl, (hcl_io_cciarg_t*)arg); + case HAK_IO_CLOSE: + return close_cci_stream(hak, (hak_io_cciarg_t*)arg); - case HCL_IO_READ: - return read_cci_stream(hcl, (hcl_io_cciarg_t*)arg); + case HAK_IO_READ: + return read_cci_stream(hak, (hak_io_cciarg_t*)arg); - case HCL_IO_FLUSH: + case HAK_IO_FLUSH: /* no effect on an input stream */ return 0; - case HCL_IO_READ_BYTES: /* byte input prohibited */ - case HCL_IO_WRITE: /* character output prohibited */ - case HCL_IO_WRITE_BYTES: /* byte output prohibited */ + case HAK_IO_READ_BYTES: /* byte input prohibited */ + case HAK_IO_WRITE: /* character output prohibited */ + case HAK_IO_WRITE_BYTES: /* byte output prohibited */ default: - hcl_seterrnum (hcl, HCL_EINTERN); + hak_seterrnum (hak, HAK_EINTERN); return -1; } } /* --------------------------------------------------------------------- */ -static HCL_INLINE int open_udi_stream (hcl_t* hcl, hcl_io_udiarg_t* arg) +static HAK_INLINE int open_udi_stream (hak_t* hak, hak_io_udiarg_t* arg) { - xtn_t* xtn = GET_XTN(hcl); - bb_t* bb = HCL_NULL; + xtn_t* xtn = GET_XTN(hak); + bb_t* bb = HAK_NULL; - hcl_oow_t pathlen; + hak_oow_t pathlen; - pathlen = xtn->udi_path? hcl_count_bcstr(xtn->udi_path): 0; + pathlen = xtn->udi_path? hak_count_bcstr(xtn->udi_path): 0; - bb = (bb_t*)hcl_callocmem(hcl, HCL_SIZEOF(*bb) + (HCL_SIZEOF(hcl_bch_t) * (pathlen + 1))); + bb = (bb_t*)hak_callocmem(hak, HAK_SIZEOF(*bb) + (HAK_SIZEOF(hak_bch_t) * (pathlen + 1))); if (!bb) goto oops; - bb->fn = (hcl_bch_t*)(bb + 1); + bb->fn = (hak_bch_t*)(bb + 1); if (pathlen > 0 && xtn->udi_path) { - hcl_copy_bcstr (bb->fn, pathlen + 1, xtn->udi_path); + hak_copy_bcstr (bb->fn, pathlen + 1, xtn->udi_path); bb->fp = fopen(bb->fn, FOPEN_R_FLAGS); } else @@ -4404,7 +4404,7 @@ static HCL_INLINE int open_udi_stream (hcl_t* hcl, hcl_io_udiarg_t* arg) if (!bb->fp) { - hcl_seterrbfmtwithsyserr (hcl, 0, errno, "unable to open udi stream '%hs'", xtn->udi_path); + hak_seterrbfmtwithsyserr (hak, 0, errno, "unable to open udi stream '%hs'", xtn->udi_path); goto oops; } @@ -4416,42 +4416,42 @@ oops: if (bb) { if (bb->fp && bb->fp != stdin) fclose (bb->fp); - hcl_freemem (hcl, bb); + hak_freemem (hak, bb); } return -1; } -static HCL_INLINE int close_udi_stream (hcl_t* hcl, hcl_io_udiarg_t* arg) +static HAK_INLINE int close_udi_stream (hak_t* hak, hak_io_udiarg_t* arg) { - /*xtn_t* xtn = GET_XTN(hcl);*/ + /*xtn_t* xtn = GET_XTN(hak);*/ bb_t* bb; bb = (bb_t*)arg->handle; - HCL_ASSERT (hcl, bb != HCL_NULL && bb->fp != HCL_NULL); + HAK_ASSERT (hak, bb != HAK_NULL && bb->fp != HAK_NULL); if (bb->fp != stdin) fclose (bb->fp); - hcl_freemem (hcl, bb); + hak_freemem (hak, bb); - arg->handle = HCL_NULL; + arg->handle = HAK_NULL; return 0; } -static HCL_INLINE int read_udi_stream (hcl_t* hcl, hcl_io_udiarg_t* arg) +static HAK_INLINE int read_udi_stream (hak_t* hak, hak_io_udiarg_t* arg) { - /*xtn_t* xtn = GET_XTN(hcl);*/ + /*xtn_t* xtn = GET_XTN(hak);*/ bb_t* bb; - hcl_oow_t bcslen, ucslen, remlen; + hak_oow_t bcslen, ucslen, remlen; int x; -#if defined(HCL_OOCH_IS_UCH) +#if defined(HAK_OOCH_IS_UCH) int fetched = 0; #endif bb = (bb_t*)arg->handle; - HCL_ASSERT (hcl, bb != HCL_NULL && bb->fp != HCL_NULL); + HAK_ASSERT (hak, bb != HAK_NULL && bb->fp != HAK_NULL); if (bb->len > 0) { -#if defined(HCL_OOCH_IS_UCH) +#if defined(HAK_OOCH_IS_UCH) real_fetch: fetched = 1; #endif @@ -4462,7 +4462,7 @@ static HCL_INLINE int read_udi_stream (hcl_t* hcl, hcl_io_udiarg_t* arg) { if (ferror((FILE*)bb->fp)) { - hcl_seterrbfmtwithsyserr (hcl, 0, errno, "unable to read udi stream"); + hak_seterrbfmtwithsyserr (hak, 0, errno, "unable to read udi stream"); return -1; } break; @@ -4470,13 +4470,13 @@ static HCL_INLINE int read_udi_stream (hcl_t* hcl, hcl_io_udiarg_t* arg) bb->buf[bb->len++] = x; } - while (bb->len < HCL_COUNTOF(bb->buf) && x != '\r' && x != '\n'); + while (bb->len < HAK_COUNTOF(bb->buf) && x != '\r' && x != '\n'); } -#if defined(HCL_OOCH_IS_UCH) +#if defined(HAK_OOCH_IS_UCH) bcslen = bb->len; - ucslen = HCL_COUNTOF(arg->buf.c); - x = hcl_convbtooochars(hcl, bb->buf, &bcslen, arg->buf.c, &ucslen); + ucslen = HAK_COUNTOF(arg->buf.c); + x = hak_convbtooochars(hak, bb->buf, &bcslen, arg->buf.c, &ucslen); if (x <= -1 && ucslen <= 0) { if (x == -3 && !fetched) goto real_fetch; @@ -4488,28 +4488,28 @@ static HCL_INLINE int read_udi_stream (hcl_t* hcl, hcl_io_udiarg_t* arg) * successful conversion of at least 1 ooch character. so no explicit * check for the incomplete sequence error is required */ #else - bcslen = (bb->len < HCL_COUNTOF(arg->buf.c))? bb->len: HCL_COUNTOF(arg->buf.c); + bcslen = (bb->len < HAK_COUNTOF(arg->buf.c))? bb->len: HAK_COUNTOF(arg->buf.c); ucslen = bcslen; - hcl_copy_bchars (arg->buf.c, bb->buf, bcslen); + hak_copy_bchars (arg->buf.c, bb->buf, bcslen); #endif remlen = bb->len - bcslen; - if (remlen > 0) HCL_MEMMOVE (bb->buf, &bb->buf[bcslen], remlen); + if (remlen > 0) HAK_MEMMOVE (bb->buf, &bb->buf[bcslen], remlen); bb->len = remlen; arg->xlen = ucslen; return 0; } -static HCL_INLINE int read_udi_stream_bytes (hcl_t* hcl, hcl_io_udiarg_t* arg) +static HAK_INLINE int read_udi_stream_bytes (hak_t* hak, hak_io_udiarg_t* arg) { - /*xtn_t* xtn = GET_XTN(hcl);*/ + /*xtn_t* xtn = GET_XTN(hak);*/ bb_t* bb; - hcl_oow_t bcslen, ucslen, remlen; + hak_oow_t bcslen, ucslen, remlen; int x; bb = (bb_t*)arg->handle; - HCL_ASSERT (hcl, bb != HCL_NULL && bb->fp != HCL_NULL); + HAK_ASSERT (hak, bb != HAK_NULL && bb->fp != HAK_NULL); if (bb->len <= 0) { @@ -4520,7 +4520,7 @@ static HCL_INLINE int read_udi_stream_bytes (hcl_t* hcl, hcl_io_udiarg_t* arg) { if (ferror((FILE*)bb->fp)) { - hcl_seterrbfmtwithsyserr (hcl, 0, errno, "unable to read udi stream"); + hak_seterrbfmtwithsyserr (hak, 0, errno, "unable to read udi stream"); return -1; } break; @@ -4528,52 +4528,52 @@ static HCL_INLINE int read_udi_stream_bytes (hcl_t* hcl, hcl_io_udiarg_t* arg) bb->buf[bb->len++] = x; } - while (bb->len < HCL_COUNTOF(bb->buf) && x != '\r' && x != '\n'); + while (bb->len < HAK_COUNTOF(bb->buf) && x != '\r' && x != '\n'); } - bcslen = (bb->len < HCL_COUNTOF(arg->buf.b))? bb->len: HCL_COUNTOF(arg->buf.b); + bcslen = (bb->len < HAK_COUNTOF(arg->buf.b))? bb->len: HAK_COUNTOF(arg->buf.b); ucslen = bcslen; - hcl_copy_bchars ((hcl_bch_t*)arg->buf.b, bb->buf, bcslen); + hak_copy_bchars ((hak_bch_t*)arg->buf.b, bb->buf, bcslen); remlen = bb->len - bcslen; - if (remlen > 0) HCL_MEMMOVE (bb->buf, &bb->buf[bcslen], remlen); + if (remlen > 0) HAK_MEMMOVE (bb->buf, &bb->buf[bcslen], remlen); bb->len = remlen; arg->xlen = ucslen; return 0; } -static int udi_handler (hcl_t* hcl, hcl_io_cmd_t cmd, void* arg) +static int udi_handler (hak_t* hak, hak_io_cmd_t cmd, void* arg) { switch (cmd) { - case HCL_IO_OPEN: - return open_udi_stream(hcl, (hcl_io_udiarg_t*)arg); + case HAK_IO_OPEN: + return open_udi_stream(hak, (hak_io_udiarg_t*)arg); - case HCL_IO_CLOSE: - return close_udi_stream(hcl, (hcl_io_udiarg_t*)arg); + case HAK_IO_CLOSE: + return close_udi_stream(hak, (hak_io_udiarg_t*)arg); - case HCL_IO_READ: - return read_udi_stream(hcl, (hcl_io_udiarg_t*)arg); + case HAK_IO_READ: + return read_udi_stream(hak, (hak_io_udiarg_t*)arg); - case HCL_IO_READ_BYTES: - return read_udi_stream_bytes(hcl, (hcl_io_udiarg_t*)arg); + case HAK_IO_READ_BYTES: + return read_udi_stream_bytes(hak, (hak_io_udiarg_t*)arg); - case HCL_IO_FLUSH: + case HAK_IO_FLUSH: /* no effect on an input stream */ return 0; default: - hcl_seterrnum (hcl, HCL_EINTERN); + hak_seterrnum (hak, HAK_EINTERN); return -1; } } /* --------------------------------------------------------------------- */ -static HCL_INLINE int open_udo_stream (hcl_t* hcl, hcl_io_udoarg_t* arg) +static HAK_INLINE int open_udo_stream (hak_t* hak, hak_io_udoarg_t* arg) { - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); FILE* fp; #if defined(__DOS__) || defined(_WIN32) || defined(__OS2__) #define FOPEN_W_FLAGS "wb" @@ -4585,9 +4585,9 @@ static HCL_INLINE int open_udo_stream (hcl_t* hcl, hcl_io_udoarg_t* arg) if (!fp) { if (xtn->udo_path) - hcl_seterrbfmtwithsyserr (hcl, 0, errno, "unable to open udo stream '%hs'", xtn->udo_path); + hak_seterrbfmtwithsyserr (hak, 0, errno, "unable to open udo stream '%hs'", xtn->udo_path); else - hcl_seterrbfmtwithsyserr (hcl, 0, errno, "unable to open udo stream"); + hak_seterrbfmtwithsyserr (hak, 0, errno, "unable to open udo stream"); return -1; } @@ -4595,47 +4595,47 @@ static HCL_INLINE int open_udo_stream (hcl_t* hcl, hcl_io_udoarg_t* arg) return 0; } -static HCL_INLINE int close_udo_stream (hcl_t* hcl, hcl_io_udoarg_t* arg) +static HAK_INLINE int close_udo_stream (hak_t* hak, hak_io_udoarg_t* arg) { - /*xtn_t* xtn = GET_XTN(hcl);*/ + /*xtn_t* xtn = GET_XTN(hak);*/ FILE* fp; fp = (FILE*)arg->handle; - HCL_ASSERT (hcl, fp != HCL_NULL); + HAK_ASSERT (hak, fp != HAK_NULL); if (fp != stdout) fclose (fp); - arg->handle = HCL_NULL; + arg->handle = HAK_NULL; return 0; } -static HCL_INLINE int write_udo_stream (hcl_t* hcl, hcl_io_udoarg_t* arg) +static HAK_INLINE int write_udo_stream (hak_t* hak, hak_io_udoarg_t* arg) { - /*xtn_t* xtn = GET_XTN(hcl);*/ - const hcl_ooch_t* ptr; - hcl_bch_t bcsbuf[1024]; - hcl_oow_t bcslen, ucslen, donelen; + /*xtn_t* xtn = GET_XTN(hak);*/ + const hak_ooch_t* ptr; + hak_bch_t bcsbuf[1024]; + hak_oow_t bcslen, ucslen, donelen; int x; - ptr = (const hcl_ooch_t*)arg->ptr; + ptr = (const hak_ooch_t*)arg->ptr; donelen = 0; do { - #if defined(HCL_OOCH_IS_UCH) - bcslen = HCL_COUNTOF(bcsbuf); + #if defined(HAK_OOCH_IS_UCH) + bcslen = HAK_COUNTOF(bcsbuf); ucslen = arg->len - donelen; - x = hcl_convootobchars(hcl, &ptr[donelen], &ucslen, bcsbuf, &bcslen); + x = hak_convootobchars(hak, &ptr[donelen], &ucslen, bcsbuf, &bcslen); if (x <= -1 && ucslen <= 0) return -1; #else - bcslen = HCL_COUNTOF(bcsbuf); + bcslen = HAK_COUNTOF(bcsbuf); ucslen = arg->len - donelen; if (ucslen > bcslen) ucslen = bcslen; else if (ucslen < bcslen) bcslen = ucslen; - hcl_copy_bchars (bcsbuf, &ptr[donelen], bcslen); + hak_copy_bchars (bcsbuf, &ptr[donelen], bcslen); #endif - if (fwrite(bcsbuf, HCL_SIZEOF(bcsbuf[0]), bcslen, (FILE*)arg->handle) < bcslen) + if (fwrite(bcsbuf, HAK_SIZEOF(bcsbuf[0]), bcslen, (FILE*)arg->handle) < bcslen) { - hcl_seterrbfmtwithsyserr (hcl, 0, errno, "unable to write udo stream"); + hak_seterrbfmtwithsyserr (hak, 0, errno, "unable to write udo stream"); return -1; } @@ -4647,16 +4647,16 @@ static HCL_INLINE int write_udo_stream (hcl_t* hcl, hcl_io_udoarg_t* arg) return 0; } -static HCL_INLINE int write_udo_stream_bytes (hcl_t* hcl, hcl_io_udoarg_t* arg) +static HAK_INLINE int write_udo_stream_bytes (hak_t* hak, hak_io_udoarg_t* arg) { - /*xtn_t* xtn = GET_XTN(hcl);*/ - const hcl_uint8_t* ptr; + /*xtn_t* xtn = GET_XTN(hak);*/ + const hak_uint8_t* ptr; - ptr = (const hcl_uint8_t*)arg->ptr; /* take the buffer as a byte series */ + ptr = (const hak_uint8_t*)arg->ptr; /* take the buffer as a byte series */ - if (fwrite(ptr, HCL_SIZEOF(*ptr), arg->len, (FILE*)arg->handle) < arg->len) + if (fwrite(ptr, HAK_SIZEOF(*ptr), arg->len, (FILE*)arg->handle) < arg->len) { - hcl_seterrbfmtwithsyserr (hcl, 0, errno, "unable to write udo stream"); + hak_seterrbfmtwithsyserr (hak, 0, errno, "unable to write udo stream"); return -1; } @@ -4664,129 +4664,129 @@ static HCL_INLINE int write_udo_stream_bytes (hcl_t* hcl, hcl_io_udoarg_t* arg) return 0; } -static HCL_INLINE int flush_udo_stream (hcl_t* hcl, hcl_io_udoarg_t* arg) +static HAK_INLINE int flush_udo_stream (hak_t* hak, hak_io_udoarg_t* arg) { FILE* fp; fp = (FILE*)arg->handle; - HCL_ASSERT (hcl, fp != HCL_NULL); + HAK_ASSERT (hak, fp != HAK_NULL); fflush (fp); return 0; } -static int udo_handler (hcl_t* hcl, hcl_io_cmd_t cmd, void* arg) +static int udo_handler (hak_t* hak, hak_io_cmd_t cmd, void* arg) { switch (cmd) { - case HCL_IO_OPEN: - return open_udo_stream(hcl, (hcl_io_udoarg_t*)arg); + case HAK_IO_OPEN: + return open_udo_stream(hak, (hak_io_udoarg_t*)arg); - case HCL_IO_CLOSE: - return close_udo_stream(hcl, (hcl_io_udoarg_t*)arg); + case HAK_IO_CLOSE: + return close_udo_stream(hak, (hak_io_udoarg_t*)arg); - case HCL_IO_WRITE: - return write_udo_stream(hcl, (hcl_io_udoarg_t*)arg); + case HAK_IO_WRITE: + return write_udo_stream(hak, (hak_io_udoarg_t*)arg); - case HCL_IO_WRITE_BYTES: - return write_udo_stream_bytes(hcl, (hcl_io_udoarg_t*)arg); + case HAK_IO_WRITE_BYTES: + return write_udo_stream_bytes(hak, (hak_io_udoarg_t*)arg); - case HCL_IO_FLUSH: - return flush_udo_stream(hcl, (hcl_io_udoarg_t*)arg); + case HAK_IO_FLUSH: + return flush_udo_stream(hak, (hak_io_udoarg_t*)arg); default: - hcl_seterrnum (hcl, HCL_EINTERN); + hak_seterrnum (hak, HAK_EINTERN); return -1; } } /* --------------------------------------------------------------------- */ -int hcl_attachcciostdwithbcstr (hcl_t* hcl, const hcl_bch_t* cci_file) +int hak_attachcciostdwithbcstr (hak_t* hak, const hak_bch_t* cci_file) { - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); int n; - HCL_ASSERT (hcl, xtn->cci_path == HCL_NULL); + HAK_ASSERT (hak, xtn->cci_path == HAK_NULL); xtn->cci_path = cci_file; - n = hcl_attachccio(hcl, cci_handler); + n = hak_attachccio(hak, cci_handler); - xtn->cci_path = HCL_NULL; + xtn->cci_path = HAK_NULL; return n; } -int hcl_attachcciostdwithucstr (hcl_t* hcl, const hcl_uch_t* cci_file) +int hak_attachcciostdwithucstr (hak_t* hak, const hak_uch_t* cci_file) { - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); int n; - HCL_ASSERT (hcl, xtn->cci_path == HCL_NULL); + HAK_ASSERT (hak, xtn->cci_path == HAK_NULL); - xtn->cci_path = hcl_duputobcstr(hcl, cci_file, HCL_NULL); - if (HCL_UNLIKELY(!xtn->cci_path)) return -1; + xtn->cci_path = hak_duputobcstr(hak, cci_file, HAK_NULL); + if (HAK_UNLIKELY(!xtn->cci_path)) return -1; - n = hcl_attachccio(hcl, cci_handler); + n = hak_attachccio(hak, cci_handler); - hcl_freemem (hcl, (void*)xtn->cci_path); - xtn->cci_path = HCL_NULL; + hak_freemem (hak, (void*)xtn->cci_path); + xtn->cci_path = HAK_NULL; return n; } /* --------------------------------------------------------------------- */ -int hcl_attachudiostdwithbcstr (hcl_t* hcl, const hcl_bch_t* udi_file, const hcl_bch_t* udo_file) +int hak_attachudiostdwithbcstr (hak_t* hak, const hak_bch_t* udi_file, const hak_bch_t* udo_file) { - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); int n; - HCL_ASSERT (hcl, xtn->udi_path == HCL_NULL); - HCL_ASSERT (hcl, xtn->udo_path == HCL_NULL); + HAK_ASSERT (hak, xtn->udi_path == HAK_NULL); + HAK_ASSERT (hak, xtn->udo_path == HAK_NULL); xtn->udi_path = udi_file; xtn->udo_path = udo_file; - n = hcl_attachudio(hcl, udi_handler, udo_handler); + n = hak_attachudio(hak, udi_handler, udo_handler); - xtn->udi_path = HCL_NULL; - xtn->udo_path = HCL_NULL; + xtn->udi_path = HAK_NULL; + xtn->udo_path = HAK_NULL; return n; } -int hcl_attachudiostdwithucstr (hcl_t* hcl, const hcl_uch_t* udi_file, const hcl_uch_t* udo_file) +int hak_attachudiostdwithucstr (hak_t* hak, const hak_uch_t* udi_file, const hak_uch_t* udo_file) { - xtn_t* xtn = GET_XTN(hcl); + xtn_t* xtn = GET_XTN(hak); int n; - HCL_ASSERT (hcl, xtn->udi_path == HCL_NULL); - HCL_ASSERT (hcl, xtn->udo_path == HCL_NULL); + HAK_ASSERT (hak, xtn->udi_path == HAK_NULL); + HAK_ASSERT (hak, xtn->udo_path == HAK_NULL); - xtn->udi_path = hcl_duputobcstr(hcl, udi_file, HCL_NULL); - if (HCL_UNLIKELY(!xtn->udi_path)) + xtn->udi_path = hak_duputobcstr(hak, udi_file, HAK_NULL); + if (HAK_UNLIKELY(!xtn->udi_path)) { - hcl_freemem (hcl, (void*)xtn->cci_path); + hak_freemem (hak, (void*)xtn->cci_path); return -1; } - xtn->udo_path = hcl_duputobcstr(hcl, udo_file, HCL_NULL); - if (HCL_UNLIKELY(!xtn->udo_path)) + xtn->udo_path = hak_duputobcstr(hak, udo_file, HAK_NULL); + if (HAK_UNLIKELY(!xtn->udo_path)) { - hcl_freemem (hcl, (void*)xtn->udi_path); - xtn->udi_path = HCL_NULL; + hak_freemem (hak, (void*)xtn->udi_path); + xtn->udi_path = HAK_NULL; return -1; } - n = hcl_attachudio(hcl, udi_handler, udo_handler); + n = hak_attachudio(hak, udi_handler, udo_handler); - hcl_freemem (hcl, (void*)xtn->udi_path); - hcl_freemem (hcl, (void*)xtn->udo_path); + hak_freemem (hak, (void*)xtn->udi_path); + hak_freemem (hak, (void*)xtn->udo_path); - xtn->udi_path = HCL_NULL; - xtn->udo_path = HCL_NULL; + xtn->udi_path = HAK_NULL; + xtn->udo_path = HAK_NULL; return n; } @@ -4796,9 +4796,9 @@ int hcl_attachudiostdwithucstr (hcl_t* hcl, const hcl_uch_t* udi_file, const hcl /* ========================================================================= */ -static hcl_uint32_t ticker_started = 0; +static hak_uint32_t ticker_started = 0; -void hcl_start_ticker (void) +void hak_start_ticker (void) { if (++ticker_started == 1) { @@ -4806,7 +4806,7 @@ void hcl_start_ticker (void) } } -void hcl_stop_ticker (void) +void hak_stop_ticker (void) { if (ticker_started > 0 && --ticker_started == 0) { @@ -4822,19 +4822,19 @@ static BOOL WINAPI handle_term (DWORD ctrl_type) { if (ctrl_type == CTRL_C_EVENT || ctrl_type == CTRL_CLOSE_EVENT) { - abort_all_hcls (SIGINT); + abort_all_haks (SIGINT); return TRUE; } return FALSE; } -void hcl_catch_termreq (void) +void hak_catch_termreq (void) { SetConsoleCtrlHandler (handle_term, TRUE); } -void hcl_uncatch_termreq (void) +void hak_uncatch_termreq (void) { SetConsoleCtrlHandler (handle_term, FALSE); } @@ -4855,7 +4855,7 @@ static ULONG APIENTRY handle_term ( p1->ExceptionInfo[0] == XCPT_SIGNAL_KILLPROC || p1->ExceptionInfo[0] == XCPT_SIGNAL_BREAK) { - abort_all_hcls (SIGINT); + abort_all_haks (SIGINT); return (DosAcknowledgeSignalException(p1->ExceptionInfo[0]) != NO_ERROR)? 1: XCPT_CONTINUE_EXECUTION; } } @@ -4863,13 +4863,13 @@ static ULONG APIENTRY handle_term ( return XCPT_CONTINUE_SEARCH; /* exception not resolved */ } -void hcl_catch_termreq (void) +void hak_catch_termreq (void) { os2_excrr.ExceptionHandler = (ERR)handle_term; DosSetExceptionHandler (&os2_excrr); /* TODO: check if NO_ERROR is returned */ } -void hcl_uncatch_termreq (void) +void hak_uncatch_termreq (void) { DosUnsetExceptionHandler (&os2_excrr); } @@ -4897,7 +4897,7 @@ static void __interrupt dos_int23_handler (void) /* prevent the DOS interrupt handler from being called */ _XSTACK* stk = (_XSTACK*)_get_stk_frame(); stk->opts |= _STK_NOINT; - abort_all_hcls (SIGINT); + abort_all_haks (SIGINT); /* if i call the previous handler, it's likely to kill the application. * so i don't chain-call the previous handler. but another call could * have changed the handler already to something else. then it would be @@ -4909,7 +4909,7 @@ static void __interrupt dos_int23_handler (void) #if 0 static int extended = 0; static int keyboard[255] = { 0, }; - hcl_uint8_t sc, status; + hak_uint8_t sc, status; /* TODO: determine if the key pressed is ctrl-C or ctrl-break ... */ sc = inp(0x60); @@ -4936,7 +4936,7 @@ static void __interrupt dos_int23_handler (void) { keyboard[sc] = 1; /*printf ("%key pressed ... %x %c\n", sc, sc);*/ - abort_all_hcls (SIGINT); + abort_all_haks (SIGINT); } extended = 0; @@ -4945,35 +4945,35 @@ static void __interrupt dos_int23_handler (void) /*_chain_intr (dos_prev_int23_handler);*/ outp (0x20, 0x20); #else - abort_all_hcls (SIGINT); + abort_all_haks (SIGINT); _chain_intr (dos_prev_int23_handler); #endif #endif } -void hcl_catch_termreq (void) +void hak_catch_termreq (void) { dos_prev_int23_handler = _dos_getvect(IRQ_TERM); _dos_setvect (IRQ_TERM, dos_int23_handler); } -void hcl_uncatch_termreq (void) +void hak_uncatch_termreq (void) { _dos_setvect (IRQ_TERM, dos_prev_int23_handler); - dos_prev_int23_handler = HCL_NULL; + dos_prev_int23_handler = HAK_NULL; } #else -void hcl_catch_termreq (void) +void hak_catch_termreq (void) { - set_signal_handler(SIGTERM, abort_all_hcls, 0); - set_signal_handler(SIGHUP, abort_all_hcls, 0); - set_signal_handler(SIGINT, abort_all_hcls, 0); + set_signal_handler(SIGTERM, abort_all_haks, 0); + set_signal_handler(SIGHUP, abort_all_haks, 0); + set_signal_handler(SIGINT, abort_all_haks, 0); set_signal_handler(SIGPIPE, do_nothing, 0); } -void hcl_uncatch_termreq (void) +void hak_uncatch_termreq (void) { unset_signal_handler(SIGTERM); unset_signal_handler(SIGHUP); diff --git a/lib/str.c b/lib/str.c index 2f935c4..725b08e 100644 --- a/lib/str.c +++ b/lib/str.c @@ -22,11 +22,11 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include +#include -int hcl_equal_uchars (const hcl_uch_t* str1, const hcl_uch_t* str2, hcl_oow_t len) +int hak_equal_uchars (const hak_uch_t* str1, const hak_uch_t* str2, hak_oow_t len) { - hcl_oow_t i; + hak_oow_t i; /* NOTE: you should call this function after having ensured that * str1 and str2 are in the same length */ @@ -39,9 +39,9 @@ int hcl_equal_uchars (const hcl_uch_t* str1, const hcl_uch_t* str2, hcl_oow_t le return 1; } -int hcl_equal_bchars (const hcl_bch_t* str1, const hcl_bch_t* str2, hcl_oow_t len) +int hak_equal_bchars (const hak_bch_t* str1, const hak_bch_t* str2, hak_oow_t len) { - hcl_oow_t i; + hak_oow_t i; /* NOTE: you should call this function after having ensured that * str1 and str2 are in the same length */ @@ -54,11 +54,11 @@ int hcl_equal_bchars (const hcl_bch_t* str1, const hcl_bch_t* str2, hcl_oow_t le return 1; } -int hcl_comp_uchars (const hcl_uch_t* str1, hcl_oow_t len1, const hcl_uch_t* str2, hcl_oow_t len2) +int hak_comp_uchars (const hak_uch_t* str1, hak_oow_t len1, const hak_uch_t* str2, hak_oow_t len2) { - hcl_uchu_t c1, c2; - const hcl_uch_t* end1 = str1 + len1; - const hcl_uch_t* end2 = str2 + len2; + hak_uchu_t c1, c2; + const hak_uch_t* end1 = str1 + len1; + const hak_uch_t* end2 = str2 + len2; while (str1 < end1) { @@ -76,11 +76,11 @@ int hcl_comp_uchars (const hcl_uch_t* str1, hcl_oow_t len1, const hcl_uch_t* str return (str2 < end2)? -1: 0; } -int hcl_comp_bchars (const hcl_bch_t* str1, hcl_oow_t len1, const hcl_bch_t* str2, hcl_oow_t len2) +int hak_comp_bchars (const hak_bch_t* str1, hak_oow_t len1, const hak_bch_t* str2, hak_oow_t len2) { - hcl_bchu_t c1, c2; - const hcl_bch_t* end1 = str1 + len1; - const hcl_bch_t* end2 = str2 + len2; + hak_bchu_t c1, c2; + const hak_bch_t* end1 = str1 + len1; + const hak_bch_t* end2 = str2 + len2; while (str1 < end1) { @@ -98,7 +98,7 @@ int hcl_comp_bchars (const hcl_bch_t* str1, hcl_oow_t len1, const hcl_bch_t* str return (str2 < end2)? -1: 0; } -int hcl_comp_ucstr (const hcl_uch_t* str1, const hcl_uch_t* str2) +int hak_comp_ucstr (const hak_uch_t* str1, const hak_uch_t* str2) { while (*str1 == *str2) { @@ -106,10 +106,10 @@ int hcl_comp_ucstr (const hcl_uch_t* str1, const hcl_uch_t* str2) str1++; str2++; } - return ((hcl_uchu_t)*str1 > (hcl_uchu_t)*str2)? 1: -1; + return ((hak_uchu_t)*str1 > (hak_uchu_t)*str2)? 1: -1; } -int hcl_comp_bcstr (const hcl_bch_t* str1, const hcl_bch_t* str2) +int hak_comp_bcstr (const hak_bch_t* str1, const hak_bch_t* str2) { while (*str1 == *str2) { @@ -117,10 +117,10 @@ int hcl_comp_bcstr (const hcl_bch_t* str1, const hcl_bch_t* str2) str1++; str2++; } - return ((hcl_bchu_t)*str1 > (hcl_bchu_t)*str2)? 1: -1; + return ((hak_bchu_t)*str1 > (hak_bchu_t)*str2)? 1: -1; } -int hcl_comp_ucstr_bcstr (const hcl_uch_t* str1, const hcl_bch_t* str2) +int hak_comp_ucstr_bcstr (const hak_uch_t* str1, const hak_bch_t* str2) { while (*str1 == *str2) { @@ -128,92 +128,92 @@ int hcl_comp_ucstr_bcstr (const hcl_uch_t* str1, const hcl_bch_t* str2) str1++; str2++; } - return ((hcl_uchu_t)*str1 > (hcl_bchu_t)*str2)? 1: -1; + return ((hak_uchu_t)*str1 > (hak_bchu_t)*str2)? 1: -1; } -int hcl_comp_uchars_ucstr (const hcl_uch_t* str1, hcl_oow_t len, const hcl_uch_t* str2) +int hak_comp_uchars_ucstr (const hak_uch_t* str1, hak_oow_t len, const hak_uch_t* str2) { /* for "abc\0" of length 4 vs "abc", the fourth character * of the first string is equal to the terminating null of * the second string. the first string is still considered * bigger */ - const hcl_uch_t* end = str1 + len; + const hak_uch_t* end = str1 + len; while (str1 < end && *str2 != '\0') { - if (*str1 != *str2) return ((hcl_uchu_t)*str1 > (hcl_uchu_t)*str2)? 1: -1; + if (*str1 != *str2) return ((hak_uchu_t)*str1 > (hak_uchu_t)*str2)? 1: -1; str1++; str2++; } return (str1 < end)? 1: (*str2 == '\0'? 0: -1); } -int hcl_comp_uchars_bcstr (const hcl_uch_t* str1, hcl_oow_t len, const hcl_bch_t* str2) +int hak_comp_uchars_bcstr (const hak_uch_t* str1, hak_oow_t len, const hak_bch_t* str2) { - const hcl_uch_t* end = str1 + len; + const hak_uch_t* end = str1 + len; while (str1 < end && *str2 != '\0') { - if (*str1 != *str2) return ((hcl_uchu_t)*str1 > (hcl_bchu_t)*str2)? 1: -1; + if (*str1 != *str2) return ((hak_uchu_t)*str1 > (hak_bchu_t)*str2)? 1: -1; str1++; str2++; } return (str1 < end)? 1: (*str2 == '\0'? 0: -1); } -int hcl_comp_bchars_bcstr (const hcl_bch_t* str1, hcl_oow_t len, const hcl_bch_t* str2) +int hak_comp_bchars_bcstr (const hak_bch_t* str1, hak_oow_t len, const hak_bch_t* str2) { - const hcl_bch_t* end = str1 + len; + const hak_bch_t* end = str1 + len; while (str1 < end && *str2 != '\0') { - if (*str1 != *str2) return ((hcl_bchu_t)*str1 > (hcl_bchu_t)*str2)? 1: -1; + if (*str1 != *str2) return ((hak_bchu_t)*str1 > (hak_bchu_t)*str2)? 1: -1; str1++; str2++; } return (str1 < end)? 1: (*str2 == '\0'? 0: -1); } -int hcl_comp_bchars_ucstr (const hcl_bch_t* str1, hcl_oow_t len, const hcl_uch_t* str2) +int hak_comp_bchars_ucstr (const hak_bch_t* str1, hak_oow_t len, const hak_uch_t* str2) { - const hcl_bch_t* end = str1 + len; + const hak_bch_t* end = str1 + len; while (str1 < end && *str2 != '\0') { - if (*str1 != *str2) return ((hcl_bchu_t)*str1 > (hcl_uchu_t)*str2)? 1: -1; + if (*str1 != *str2) return ((hak_bchu_t)*str1 > (hak_uchu_t)*str2)? 1: -1; str1++; str2++; } return (str1 < end)? 1: (*str2 == '\0'? 0: -1); } -void hcl_copy_uchars (hcl_uch_t* dst, const hcl_uch_t* src, hcl_oow_t len) +void hak_copy_uchars (hak_uch_t* dst, const hak_uch_t* src, hak_oow_t len) { /* take note of no forced null termination */ - hcl_oow_t i; + hak_oow_t i; for (i = 0; i < len; i++) dst[i] = src[i]; } -void hcl_copy_bchars (hcl_bch_t* dst, const hcl_bch_t* src, hcl_oow_t len) +void hak_copy_bchars (hak_bch_t* dst, const hak_bch_t* src, hak_oow_t len) { /* take note of no forced null termination */ - hcl_oow_t i; + hak_oow_t i; for (i = 0; i < len; i++) dst[i] = src[i]; } -void hcl_copy_bchars_to_uchars (hcl_uch_t* dst, const hcl_bch_t* src, hcl_oow_t len) +void hak_copy_bchars_to_uchars (hak_uch_t* dst, const hak_bch_t* src, hak_oow_t len) { /* copy without conversions. - * use hcl_convbtouchars() for conversion encoding */ - hcl_oow_t i; + * use hak_convbtouchars() for conversion encoding */ + hak_oow_t i; for (i = 0; i < len; i++) dst[i] = src[i]; } -void hcl_copy_uchars_to_bchars (hcl_bch_t* dst, const hcl_uch_t* src, hcl_oow_t len) +void hak_copy_uchars_to_bchars (hak_bch_t* dst, const hak_uch_t* src, hak_oow_t len) { /* copy without conversions. - * use hcl_convutobchars() for conversion encoding */ - hcl_oow_t i; + * use hak_convutobchars() for conversion encoding */ + hak_oow_t i; for (i = 0; i < len; i++) dst[i] = src[i]; } -hcl_oow_t hcl_copy_bcstr_to_ucstr (hcl_uch_t* dst, hcl_oow_t len, const hcl_bch_t* src) +hak_oow_t hak_copy_bcstr_to_ucstr (hak_uch_t* dst, hak_oow_t len, const hak_bch_t* src) { /* copy without conversions. - * the code is the same as hcl_copy_bcstr() except type of src */ - hcl_uch_t* p, * p2; + * the code is the same as hak_copy_bcstr() except type of src */ + hak_uch_t* p, * p2; p = dst; p2 = dst + len - 1; @@ -227,10 +227,10 @@ hcl_oow_t hcl_copy_bcstr_to_ucstr (hcl_uch_t* dst, hcl_oow_t len, const hcl_bch_ return p - dst; } -hcl_oow_t hcl_copy_ucstr_to_bcstr (hcl_bch_t* dst, hcl_oow_t len, const hcl_uch_t* src) +hak_oow_t hak_copy_ucstr_to_bcstr (hak_bch_t* dst, hak_oow_t len, const hak_uch_t* src) { /* copy without conversions */ - hcl_bch_t* p, * p2; + hak_bch_t* p, * p2; p = dst; p2 = dst + len - 1; @@ -245,9 +245,9 @@ hcl_oow_t hcl_copy_ucstr_to_bcstr (hcl_bch_t* dst, hcl_oow_t len, const hcl_uch_ } -hcl_oow_t hcl_copy_uchars_to_ucstr (hcl_uch_t* dst, hcl_oow_t dlen, const hcl_uch_t* src, hcl_oow_t slen) +hak_oow_t hak_copy_uchars_to_ucstr (hak_uch_t* dst, hak_oow_t dlen, const hak_uch_t* src, hak_oow_t slen) { - hcl_oow_t i; + hak_oow_t i; if (dlen <= 0) return 0; if (dlen <= slen) slen = dlen - 1; for (i = 0; i < slen; i++) dst[i] = src[i]; @@ -255,9 +255,9 @@ hcl_oow_t hcl_copy_uchars_to_ucstr (hcl_uch_t* dst, hcl_oow_t dlen, const hcl_uc return i; } -hcl_oow_t hcl_copy_bchars_to_bcstr (hcl_bch_t* dst, hcl_oow_t dlen, const hcl_bch_t* src, hcl_oow_t slen) +hak_oow_t hak_copy_bchars_to_bcstr (hak_bch_t* dst, hak_oow_t dlen, const hak_bch_t* src, hak_oow_t slen) { - hcl_oow_t i; + hak_oow_t i; if (dlen <= 0) return 0; if (dlen <= slen) slen = dlen - 1; for (i = 0; i < slen; i++) dst[i] = src[i]; @@ -265,25 +265,25 @@ hcl_oow_t hcl_copy_bchars_to_bcstr (hcl_bch_t* dst, hcl_oow_t dlen, const hcl_bc return i; } -hcl_oow_t hcl_copy_uchars_to_ucstr_unlimited (hcl_uch_t* dst, const hcl_uch_t* src, hcl_oow_t len) +hak_oow_t hak_copy_uchars_to_ucstr_unlimited (hak_uch_t* dst, const hak_uch_t* src, hak_oow_t len) { - hcl_oow_t i; + hak_oow_t i; for (i = 0; i < len; i++) dst[i] = src[i]; dst[i] = '\0'; return i; } -hcl_oow_t hcl_copy_bchars_to_bcstr_unlimited (hcl_bch_t* dst, const hcl_bch_t* src, hcl_oow_t len) +hak_oow_t hak_copy_bchars_to_bcstr_unlimited (hak_bch_t* dst, const hak_bch_t* src, hak_oow_t len) { - hcl_oow_t i; + hak_oow_t i; for (i = 0; i < len; i++) dst[i] = src[i]; dst[i] = '\0'; return i; } -hcl_oow_t hcl_copy_ucstr (hcl_uch_t* dst, hcl_oow_t len, const hcl_uch_t* src) +hak_oow_t hak_copy_ucstr (hak_uch_t* dst, hak_oow_t len, const hak_uch_t* src) { - hcl_uch_t* p, * p2; + hak_uch_t* p, * p2; p = dst; p2 = dst + len - 1; @@ -297,9 +297,9 @@ hcl_oow_t hcl_copy_ucstr (hcl_uch_t* dst, hcl_oow_t len, const hcl_uch_t* src) return p - dst; } -hcl_oow_t hcl_copy_bcstr (hcl_bch_t* dst, hcl_oow_t len, const hcl_bch_t* src) +hak_oow_t hak_copy_bcstr (hak_bch_t* dst, hak_oow_t len, const hak_bch_t* src) { - hcl_bch_t* p, * p2; + hak_bch_t* p, * p2; p = dst; p2 = dst + len - 1; @@ -314,130 +314,130 @@ hcl_oow_t hcl_copy_bcstr (hcl_bch_t* dst, hcl_oow_t len, const hcl_bch_t* src) } -hcl_oow_t hcl_copy_ucstr_unlimited (hcl_uch_t* dst, const hcl_uch_t* src) +hak_oow_t hak_copy_ucstr_unlimited (hak_uch_t* dst, const hak_uch_t* src) { - hcl_uch_t* org = dst; + hak_uch_t* org = dst; while ((*dst++ = *src++) != '\0'); return dst - org - 1; } -hcl_oow_t hcl_copy_bcstr_unlimited (hcl_bch_t* dst, const hcl_bch_t* src) +hak_oow_t hak_copy_bcstr_unlimited (hak_bch_t* dst, const hak_bch_t* src) { - hcl_bch_t* org = dst; + hak_bch_t* org = dst; while ((*dst++ = *src++) != '\0'); return dst - org - 1; } -void hcl_fill_uchars (hcl_uch_t* dst, hcl_uch_t ch, hcl_oow_t len) +void hak_fill_uchars (hak_uch_t* dst, hak_uch_t ch, hak_oow_t len) { - hcl_oow_t i; + hak_oow_t i; for (i = 0; i < len; i++) dst[i] = ch; } -void hcl_fill_bchars (hcl_bch_t* dst, hcl_bch_t ch, hcl_oow_t len) +void hak_fill_bchars (hak_bch_t* dst, hak_bch_t ch, hak_oow_t len) { - hcl_oow_t i; + hak_oow_t i; for (i = 0; i < len; i++) dst[i] = ch; } -hcl_oow_t hcl_count_ucstr (const hcl_uch_t* str) +hak_oow_t hak_count_ucstr (const hak_uch_t* str) { - const hcl_uch_t* ptr = str; + const hak_uch_t* ptr = str; while (*ptr != '\0') ptr++; return ptr - str; } -hcl_oow_t hcl_count_bcstr (const hcl_bch_t* str) +hak_oow_t hak_count_bcstr (const hak_bch_t* str) { - const hcl_bch_t* ptr = str; + const hak_bch_t* ptr = str; while (*ptr != '\0') ptr++; return ptr - str; } -hcl_uch_t* hcl_find_uchar (const hcl_uch_t* ptr, hcl_oow_t len, hcl_uch_t c) +hak_uch_t* hak_find_uchar (const hak_uch_t* ptr, hak_oow_t len, hak_uch_t c) { - const hcl_uch_t* end; + const hak_uch_t* end; end = ptr + len; while (ptr < end) { - if (*ptr == c) return (hcl_uch_t*)ptr; + if (*ptr == c) return (hak_uch_t*)ptr; ptr++; } - return HCL_NULL; + return HAK_NULL; } -hcl_bch_t* hcl_find_bchar (const hcl_bch_t* ptr, hcl_oow_t len, hcl_bch_t c) +hak_bch_t* hak_find_bchar (const hak_bch_t* ptr, hak_oow_t len, hak_bch_t c) { - const hcl_bch_t* end; + const hak_bch_t* end; end = ptr + len; while (ptr < end) { - if (*ptr == c) return (hcl_bch_t*)ptr; + if (*ptr == c) return (hak_bch_t*)ptr; ptr++; } - return HCL_NULL; + return HAK_NULL; } -hcl_uch_t* hcl_rfind_uchar (const hcl_uch_t* ptr, hcl_oow_t len, hcl_uch_t c) +hak_uch_t* hak_rfind_uchar (const hak_uch_t* ptr, hak_oow_t len, hak_uch_t c) { - const hcl_uch_t* cur; + const hak_uch_t* cur; cur = ptr + len; while (cur > ptr) { --cur; - if (*cur == c) return (hcl_uch_t*)cur; + if (*cur == c) return (hak_uch_t*)cur; } - return HCL_NULL; + return HAK_NULL; } -hcl_bch_t* hcl_rfind_bchar (const hcl_bch_t* ptr, hcl_oow_t len, hcl_bch_t c) +hak_bch_t* hak_rfind_bchar (const hak_bch_t* ptr, hak_oow_t len, hak_bch_t c) { - const hcl_bch_t* cur; + const hak_bch_t* cur; cur = ptr + len; while (cur > ptr) { --cur; - if (*cur == c) return (hcl_bch_t*)cur; + if (*cur == c) return (hak_bch_t*)cur; } - return HCL_NULL; + return HAK_NULL; } -hcl_uch_t* hcl_find_uchar_in_ucstr (const hcl_uch_t* ptr, hcl_uch_t c) +hak_uch_t* hak_find_uchar_in_ucstr (const hak_uch_t* ptr, hak_uch_t c) { while (*ptr != '\0') { - if (*ptr == c) return (hcl_uch_t*)ptr; + if (*ptr == c) return (hak_uch_t*)ptr; ptr++; } - return HCL_NULL; + return HAK_NULL; } -hcl_bch_t* hcl_find_bchar_in_bcstr (const hcl_bch_t* ptr, hcl_bch_t c) +hak_bch_t* hak_find_bchar_in_bcstr (const hak_bch_t* ptr, hak_bch_t c) { while (*ptr != '\0') { - if (*ptr == c) return (hcl_bch_t*)ptr; + if (*ptr == c) return (hak_bch_t*)ptr; ptr++; } - return HCL_NULL; + return HAK_NULL; } /* ----------------------------------------------------------------------- */ -hcl_oow_t hcl_rotate_uchars (hcl_uch_t* str, hcl_oow_t len, int dir, hcl_oow_t n) +hak_oow_t hak_rotate_uchars (hak_uch_t* str, hak_oow_t len, int dir, hak_oow_t n) { - hcl_oow_t first, last, count, index, nk; - hcl_uch_t c; + hak_oow_t first, last, count, index, nk; + hak_uch_t c; if (dir == 0 || len == 0) return len; if ((n %= len) == 0) return len; @@ -468,10 +468,10 @@ hcl_oow_t hcl_rotate_uchars (hcl_uch_t* str, hcl_oow_t len, int dir, hcl_oow_t n return len; } -hcl_oow_t hcl_rotate_bchars (hcl_bch_t* str, hcl_oow_t len, int dir, hcl_oow_t n) +hak_oow_t hak_rotate_bchars (hak_bch_t* str, hak_oow_t len, int dir, hak_oow_t n) { - hcl_oow_t first, last, count, index, nk; - hcl_bch_t c; + hak_oow_t first, last, count, index, nk; + hak_bch_t c; if (dir == 0 || len == 0) return len; if ((n %= len) == 0) return len; @@ -504,20 +504,20 @@ hcl_oow_t hcl_rotate_bchars (hcl_bch_t* str, hcl_oow_t len, int dir, hcl_oow_t n /* ----------------------------------------------------------------------- */ -hcl_oow_t hcl_byte_to_bcstr (hcl_uint8_t byte, hcl_bch_t* buf, hcl_oow_t size, int flagged_radix, hcl_bch_t fill) +hak_oow_t hak_byte_to_bcstr (hak_uint8_t byte, hak_bch_t* buf, hak_oow_t size, int flagged_radix, hak_bch_t fill) { - hcl_bch_t tmp[(HCL_SIZEOF(hcl_uint8_t) * HCL_BITS_PER_BYTE)]; - hcl_bch_t* p = tmp, * bp = buf, * be = buf + size - 1; + hak_bch_t tmp[(HAK_SIZEOF(hak_uint8_t) * HAK_BITS_PER_BYTE)]; + hak_bch_t* p = tmp, * bp = buf, * be = buf + size - 1; int radix; - hcl_bch_t radix_char; + hak_bch_t radix_char; - radix = (flagged_radix & HCL_BYTE_TO_BCSTR_RADIXMASK); - radix_char = (flagged_radix & HCL_BYTE_TO_BCSTR_LOWERCASE)? 'a': 'A'; + radix = (flagged_radix & HAK_BYTE_TO_BCSTR_RADIXMASK); + radix_char = (flagged_radix & HAK_BYTE_TO_BCSTR_LOWERCASE)? 'a': 'A'; if (radix < 2 || radix > 36 || size <= 0) return 0; do { - hcl_uint8_t digit = byte % radix; + hak_uint8_t digit = byte % radix; if (digit < 10) *p++ = digit + '0'; else *p++ = digit + radix_char - 10; byte /= radix; @@ -540,18 +540,18 @@ hcl_oow_t hcl_byte_to_bcstr (hcl_uint8_t byte, hcl_bch_t* buf, hcl_oow_t size, i /* ----------------------------------------------------------------------- */ -int hcl_conv_bchars_to_uchars_with_cmgr (const hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_cmgr_t* cmgr, int all) +int hak_conv_bchars_to_uchars_with_cmgr (const hak_bch_t* bcs, hak_oow_t* bcslen, hak_uch_t* ucs, hak_oow_t* ucslen, hak_cmgr_t* cmgr, int all) { - const hcl_bch_t* p; + const hak_bch_t* p; int ret = 0; - hcl_oow_t mlen; + hak_oow_t mlen; if (ucs) { /* destination buffer is specified. * copy the conversion result to the buffer */ - hcl_uch_t* q, * qend; + hak_uch_t* q, * qend; p = bcs; q = ucs; @@ -560,7 +560,7 @@ int hcl_conv_bchars_to_uchars_with_cmgr (const hcl_bch_t* bcs, hcl_oow_t* bcslen while (mlen > 0) { - hcl_oow_t n; + hak_oow_t n; if (q >= qend) { @@ -615,15 +615,15 @@ int hcl_conv_bchars_to_uchars_with_cmgr (const hcl_bch_t* bcs, hcl_oow_t* bcslen * a buffer with the size and call this function again with * the buffer. */ - hcl_uch_t w; - hcl_oow_t wlen = 0; + hak_uch_t w; + hak_oow_t wlen = 0; p = bcs; mlen = *bcslen; while (mlen > 0) { - hcl_oow_t n; + hak_oow_t n; n = cmgr->bctouc(p, mlen, &w); if (n == 0) @@ -659,16 +659,16 @@ int hcl_conv_bchars_to_uchars_with_cmgr (const hcl_bch_t* bcs, hcl_oow_t* bcslen return ret; } -int hcl_conv_bcstr_to_ucstr_with_cmgr (const hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_cmgr_t* cmgr, int all) +int hak_conv_bcstr_to_ucstr_with_cmgr (const hak_bch_t* bcs, hak_oow_t* bcslen, hak_uch_t* ucs, hak_oow_t* ucslen, hak_cmgr_t* cmgr, int all) { - const hcl_bch_t* bp; - hcl_oow_t mlen, wlen; + const hak_bch_t* bp; + hak_oow_t mlen, wlen; int n; for (bp = bcs; *bp != '\0'; bp++) /* nothing */ ; mlen = bp - bcs; wlen = *ucslen; - n = hcl_conv_bchars_to_uchars_with_cmgr(bcs, &mlen, ucs, &wlen, cmgr, all); + n = hak_conv_bchars_to_uchars_with_cmgr(bcs, &mlen, ucs, &wlen, cmgr, all); if (ucs) { /* null-terminate the target buffer if it has room for it. */ @@ -680,19 +680,19 @@ int hcl_conv_bcstr_to_ucstr_with_cmgr (const hcl_bch_t* bcs, hcl_oow_t* bcslen, return n; } -int hcl_conv_uchars_to_bchars_with_cmgr (const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_cmgr_t* cmgr) +int hak_conv_uchars_to_bchars_with_cmgr (const hak_uch_t* ucs, hak_oow_t* ucslen, hak_bch_t* bcs, hak_oow_t* bcslen, hak_cmgr_t* cmgr) { - const hcl_uch_t* p = ucs; - const hcl_uch_t* end = ucs + *ucslen; + const hak_uch_t* p = ucs; + const hak_uch_t* end = ucs + *ucslen; int ret = 0; if (bcs) { - hcl_oow_t rem = *bcslen; + hak_oow_t rem = *bcslen; while (p < end) { - hcl_oow_t n; + hak_oow_t n; if (rem <= 0) { @@ -718,14 +718,14 @@ int hcl_conv_uchars_to_bchars_with_cmgr (const hcl_uch_t* ucs, hcl_oow_t* ucslen } else { - hcl_bch_t bcsbuf[HCL_BCSIZE_MAX]; - hcl_oow_t mlen = 0; + hak_bch_t bcsbuf[HAK_BCSIZE_MAX]; + hak_oow_t mlen = 0; while (p < end) { - hcl_oow_t n; + hak_oow_t n; - n = cmgr->uctobc(*p, bcsbuf, HCL_COUNTOF(bcsbuf)); + n = cmgr->uctobc(*p, bcsbuf, HAK_COUNTOF(bcsbuf)); if (n == 0) { ret = -1; @@ -733,7 +733,7 @@ int hcl_conv_uchars_to_bchars_with_cmgr (const hcl_uch_t* ucs, hcl_oow_t* ucslen } /* it assumes that bcsbuf is large enough to hold a character */ - /*HCL_ASSERT (hcl, n <= HCL_COUNTOF(bcsbuf));*/ + /*HAK_ASSERT (hak, n <= HAK_COUNTOF(bcsbuf));*/ p++; mlen += n; } @@ -747,18 +747,18 @@ int hcl_conv_uchars_to_bchars_with_cmgr (const hcl_uch_t* ucs, hcl_oow_t* ucslen return ret; } -int hcl_conv_ucstr_to_bcstr_with_cmgr (const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_cmgr_t* cmgr) +int hak_conv_ucstr_to_bcstr_with_cmgr (const hak_uch_t* ucs, hak_oow_t* ucslen, hak_bch_t* bcs, hak_oow_t* bcslen, hak_cmgr_t* cmgr) { - const hcl_uch_t* p = ucs; + const hak_uch_t* p = ucs; int ret = 0; if (bcs) { - hcl_oow_t rem = *bcslen; + hak_oow_t rem = *bcslen; while (*p != '\0') { - hcl_oow_t n; + hak_oow_t n; if (rem <= 0) { @@ -797,14 +797,14 @@ int hcl_conv_ucstr_to_bcstr_with_cmgr (const hcl_uch_t* ucs, hcl_oow_t* ucslen, } else { - hcl_bch_t bcsbuf[HCL_BCSIZE_MAX]; - hcl_oow_t mlen = 0; + hak_bch_t bcsbuf[HAK_BCSIZE_MAX]; + hak_oow_t mlen = 0; while (*p != '\0') { - hcl_oow_t n; + hak_oow_t n; - n = cmgr->uctobc(*p, bcsbuf, HCL_COUNTOF(bcsbuf)); + n = cmgr->uctobc(*p, bcsbuf, HAK_COUNTOF(bcsbuf)); if (n == 0) { ret = -1; @@ -812,7 +812,7 @@ int hcl_conv_ucstr_to_bcstr_with_cmgr (const hcl_uch_t* ucs, hcl_oow_t* ucslen, } /* it assumes that bcs is large enough to hold a character */ - /*HCL_ASSERT (hcl, n <= HCL_COUNTOF(bcs));*/ + /*HAK_ASSERT (hak, n <= HAK_COUNTOF(bcs));*/ p++; mlen += n; } diff --git a/lib/sym.c b/lib/sym.c index 7a38a7d..a31c99a 100644 --- a/lib/sym.c +++ b/lib/sym.c @@ -22,15 +22,15 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "hcl-prv.h" +#include "hak-prv.h" -static hcl_oop_oop_t expand_bucket (hcl_t* hcl, hcl_oop_oop_t oldbuc) +static hak_oop_oop_t expand_bucket (hak_t* hak, hak_oop_oop_t oldbuc) { - hcl_oop_oop_t newbuc; - hcl_oow_t oldsz, newsz, index; - hcl_oop_char_t symbol; + hak_oop_oop_t newbuc; + hak_oow_t oldsz, newsz, index; + hak_oop_char_t symbol; - oldsz = HCL_OBJ_GET_SIZE(oldbuc); + oldsz = HAK_OBJ_GET_SIZE(oldbuc); /* TODO: better growth policy? */ if (oldsz < 5000) newsz = oldsz + oldsz; @@ -42,100 +42,100 @@ static hcl_oop_oop_t expand_bucket (hcl_t* hcl, hcl_oop_oop_t oldbuc) else if (oldsz < 1600000) newsz = oldsz + (oldsz / 64); else { - hcl_oow_t inc, inc_max; + hak_oow_t inc, inc_max; inc = oldsz / 128; - inc_max = HCL_OBJ_SIZE_MAX - oldsz; + inc_max = HAK_OBJ_SIZE_MAX - oldsz; if (inc > inc_max) { if (inc_max > 0) inc = inc_max; else { - hcl_seterrnum (hcl, HCL_EOOMEM); - return HCL_NULL; + hak_seterrnum (hak, HAK_EOOMEM); + return HAK_NULL; } } newsz = oldsz + inc; } - hcl_pushvolat (hcl, (hcl_oop_t*)&oldbuc); - newbuc = (hcl_oop_oop_t)hcl_makearray(hcl, newsz); - hcl_popvolat (hcl); - if (!newbuc) return HCL_NULL; + hak_pushvolat (hak, (hak_oop_t*)&oldbuc); + newbuc = (hak_oop_oop_t)hak_makearray(hak, newsz); + hak_popvolat (hak); + if (!newbuc) return HAK_NULL; while (oldsz > 0) { - symbol = (hcl_oop_char_t)oldbuc->slot[--oldsz]; - if ((hcl_oop_t)symbol != hcl->_nil) + symbol = (hak_oop_char_t)oldbuc->slot[--oldsz]; + if ((hak_oop_t)symbol != hak->_nil) { - HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl, symbol)); - /*HCL_ASSERT (hcl, sym->size > 0);*/ + HAK_ASSERT (hak, HAK_IS_SYMBOL(hak, symbol)); + /*HAK_ASSERT (hak, sym->size > 0);*/ - index = hcl_hash_oochars(symbol->slot, HCL_OBJ_GET_SIZE(symbol)) % newsz; - while (newbuc->slot[index] != hcl->_nil) index = (index + 1) % newsz; - newbuc->slot[index] = (hcl_oop_t)symbol; + index = hak_hash_oochars(symbol->slot, HAK_OBJ_GET_SIZE(symbol)) % newsz; + while (newbuc->slot[index] != hak->_nil) index = (index + 1) % newsz; + newbuc->slot[index] = (hak_oop_t)symbol; } } return newbuc; } -static hcl_oop_t find_or_make_symbol (hcl_t* hcl, const hcl_ooch_t* ptr, hcl_oow_t len, int create) +static hak_oop_t find_or_make_symbol (hak_t* hak, const hak_ooch_t* ptr, hak_oow_t len, int create) { - hcl_ooi_t tally; - hcl_oow_t index; - hcl_oop_char_t sym; + hak_ooi_t tally; + hak_oow_t index; + hak_oop_char_t sym; - HCL_ASSERT (hcl, len > 0); + HAK_ASSERT (hak, len > 0); if (len <= 0) { /* i don't allow an empty symbol name */ - hcl_seterrnum (hcl, HCL_EINVAL); - return HCL_NULL; + hak_seterrnum (hak, HAK_EINVAL); + return HAK_NULL; } - HCL_ASSERT (hcl, HCL_IS_ARRAY(hcl, hcl->symtab->bucket)); - index = hcl_hash_oochars(ptr, len) % HCL_OBJ_GET_SIZE(hcl->symtab->bucket); + HAK_ASSERT (hak, HAK_IS_ARRAY(hak, hak->symtab->bucket)); + index = hak_hash_oochars(ptr, len) % HAK_OBJ_GET_SIZE(hak->symtab->bucket); /* find a matching symbol in the open-addressed symbol table */ - while (hcl->symtab->bucket->slot[index] != hcl->_nil) + while (hak->symtab->bucket->slot[index] != hak->_nil) { - sym = (hcl_oop_char_t)hcl->symtab->bucket->slot[index]; - HCL_ASSERT (hcl, HCL_IS_SYMBOL(hcl, sym)); + sym = (hak_oop_char_t)hak->symtab->bucket->slot[index]; + HAK_ASSERT (hak, HAK_IS_SYMBOL(hak, sym)); - if (len == HCL_OBJ_GET_SIZE(sym) && - hcl_equal_oochars(ptr, sym->slot, len)) + if (len == HAK_OBJ_GET_SIZE(sym) && + hak_equal_oochars(ptr, sym->slot, len)) { - return (hcl_oop_t)sym; + return (hak_oop_t)sym; } - index = (index + 1) % HCL_OBJ_GET_SIZE(hcl->symtab->bucket); + index = (index + 1) % HAK_OBJ_GET_SIZE(hak->symtab->bucket); } if (!create) { - hcl_seterrnum (hcl, HCL_ENOENT); - return HCL_NULL; + hak_seterrnum (hak, HAK_ENOENT); + return HAK_NULL; } /* make a new symbol and insert it */ - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(hcl->symtab->tally)); - tally = HCL_OOP_TO_SMOOI(hcl->symtab->tally); - if (tally >= HCL_SMOOI_MAX) + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(hak->symtab->tally)); + tally = HAK_OOP_TO_SMOOI(hak->symtab->tally); + if (tally >= HAK_SMOOI_MAX) { /* this built-in table is not allowed to hold more than - * HCL_SMOOI_MAX items for efficiency sake */ - hcl_seterrnum (hcl, HCL_EDFULL); - return HCL_NULL; + * HAK_SMOOI_MAX items for efficiency sake */ + hak_seterrnum (hak, HAK_EDFULL); + return HAK_NULL; } - /* no conversion to hcl_oow_t is necessary for tally + 1. - * the maximum value of tally is checked to be HCL_SMOOI_MAX - 1. - * tally + 1 can produce at most HCL_SMOOI_MAX. above all, - * HCL_SMOOI_MAX is way smaller than HCL_TYPE_MAX(hcl_ooi_t). */ - if (tally + 1 >= HCL_OBJ_GET_SIZE(hcl->symtab->bucket)) + /* no conversion to hak_oow_t is necessary for tally + 1. + * the maximum value of tally is checked to be HAK_SMOOI_MAX - 1. + * tally + 1 can produce at most HAK_SMOOI_MAX. above all, + * HAK_SMOOI_MAX is way smaller than HAK_TYPE_MAX(hak_ooi_t). */ + if (tally + 1 >= HAK_OBJ_GET_SIZE(hak->symtab->bucket)) { - hcl_oop_oop_t bucket; + hak_oop_oop_t bucket; /* TODO: make the growth policy configurable instead of growing it just before it gets full. The polcy can be grow it @@ -145,76 +145,76 @@ static hcl_oop_t find_or_make_symbol (hcl_t* hcl, const hcl_ooch_t* ptr, hcl_oow * make sure that it has at least one free slot left * after having added a new symbol. this is to help * traversal end at a _nil slot if no entry is found. */ - bucket = expand_bucket(hcl, hcl->symtab->bucket); - if (!bucket) return HCL_NULL; + bucket = expand_bucket(hak, hak->symtab->bucket); + if (!bucket) return HAK_NULL; - hcl->symtab->bucket = bucket; + hak->symtab->bucket = bucket; /* recalculate the index for the expanded bucket */ - index = hcl_hash_oochars(ptr, len) % HCL_OBJ_GET_SIZE(hcl->symtab->bucket); + index = hak_hash_oochars(ptr, len) % HAK_OBJ_GET_SIZE(hak->symtab->bucket); - while (hcl->symtab->bucket->slot[index] != hcl->_nil) - index = (index + 1) % HCL_OBJ_GET_SIZE(hcl->symtab->bucket); + while (hak->symtab->bucket->slot[index] != hak->_nil) + index = (index + 1) % HAK_OBJ_GET_SIZE(hak->symtab->bucket); } /* create a new symbol since it isn't found in the symbol table */ - /*sym = (hcl_oop_char_t)hcl_alloccharobj(hcl, HCL_BRAND_SYMBOL, ptr, len);*/ - sym = (hcl_oop_char_t)hcl_instantiate(hcl, hcl->c_symbol, ptr, len); - if (HCL_LIKELY(sym)) + /*sym = (hak_oop_char_t)hak_alloccharobj(hak, HAK_BRAND_SYMBOL, ptr, len);*/ + sym = (hak_oop_char_t)hak_instantiate(hak, hak->c_symbol, ptr, len); + if (HAK_LIKELY(sym)) { - HCL_ASSERT (hcl, tally < HCL_SMOOI_MAX); - hcl->symtab->tally = HCL_SMOOI_TO_OOP(tally + 1); - hcl->symtab->bucket->slot[index] = (hcl_oop_t)sym; + HAK_ASSERT (hak, tally < HAK_SMOOI_MAX); + hak->symtab->tally = HAK_SMOOI_TO_OOP(tally + 1); + hak->symtab->bucket->slot[index] = (hak_oop_t)sym; } else { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), - "unable to instantiate %O with %.*js - %js", hcl->c_symbol->name, len, ptr, orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), + "unable to instantiate %O with %.*js - %js", hak->c_symbol->name, len, ptr, orgmsg); } - return (hcl_oop_t)sym; + return (hak_oop_t)sym; } -hcl_oop_t hcl_makesymbol (hcl_t* hcl, const hcl_ooch_t* ptr, hcl_oow_t len) +hak_oop_t hak_makesymbol (hak_t* hak, const hak_ooch_t* ptr, hak_oow_t len) { - return find_or_make_symbol(hcl, ptr, len, 1); + return find_or_make_symbol(hak, ptr, len, 1); } -hcl_oop_t hcl_findsymbol (hcl_t* hcl, const hcl_ooch_t* ptr, hcl_oow_t len) +hak_oop_t hak_findsymbol (hak_t* hak, const hak_ooch_t* ptr, hak_oow_t len) { - return find_or_make_symbol(hcl, ptr, len, 0); + return find_or_make_symbol(hak, ptr, len, 0); } -hcl_oop_t hcl_makesymbolwithbcstr (hcl_t* hcl, const hcl_bch_t* ptr) +hak_oop_t hak_makesymbolwithbcstr (hak_t* hak, const hak_bch_t* ptr) { -#if defined(HCL_OOCH_IS_UCH) - hcl_uch_t* ucsptr; - hcl_oow_t ucslen; - hcl_oop_t v; +#if defined(HAK_OOCH_IS_UCH) + hak_uch_t* ucsptr; + hak_oow_t ucslen; + hak_oop_t v; /* TODO: no duplication? */ - ucsptr = hcl_dupbtoucstr(hcl, ptr, &ucslen); - if (HCL_UNLIKELY(!ucsptr)) return HCL_NULL; - v = hcl_makesymbol(hcl, ucsptr, ucslen); - hcl_freemem (hcl, ucsptr); + ucsptr = hak_dupbtoucstr(hak, ptr, &ucslen); + if (HAK_UNLIKELY(!ucsptr)) return HAK_NULL; + v = hak_makesymbol(hak, ucsptr, ucslen); + hak_freemem (hak, ucsptr); return v; #else - return hcl_makesymbol(hcl, ptr, hcl_count_bcstr(ptr)); + return hak_makesymbol(hak, ptr, hak_count_bcstr(ptr)); #endif } -hcl_oop_t hcl_makesymbolwithucstr (hcl_t* hcl, const hcl_uch_t* ptr) +hak_oop_t hak_makesymbolwithucstr (hak_t* hak, const hak_uch_t* ptr) { -#if defined(HCL_OOCH_IS_UCH) - return hcl_makesymbol(hcl, ptr, hcl_count_ucstr(ptr)); +#if defined(HAK_OOCH_IS_UCH) + return hak_makesymbol(hak, ptr, hak_count_ucstr(ptr)); #else - hcl_uch_t* bcsptr; - hcl_oow_t bcslen; - hcl_oop_t v; + hak_uch_t* bcsptr; + hak_oow_t bcslen; + hak_oop_t v; /* TODO: no duplication? */ - bcsptr = hcl_duputobcstr(hcl, ptr, &bcslen); - if (HCL_UNLIKELY(!bcsptr)) return HCL_NULL; - v = hcl_makesymbol(hcl, bcsptr, bcslen); - hcl_freemem (hcl, bcsptr); + bcsptr = hak_duputobcstr(hak, ptr, &bcslen); + if (HAK_UNLIKELY(!bcsptr)) return HAK_NULL; + v = hak_makesymbol(hak, bcsptr, bcslen); + hak_freemem (hak, bcsptr); return v; #endif } diff --git a/lib/tmr.c b/lib/tmr.c index 39549d2..bb9fad3 100644 --- a/lib/tmr.c +++ b/lib/tmr.c @@ -22,92 +22,92 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include "hcl-prv.h" +#include +#include "hak-prv.h" #define HEAP_PARENT(x) (((x) - 1) / 2) #define HEAP_LEFT(x) ((x) * 2 + 1) #define HEAP_RIGHT(x) ((x) * 2 + 2) -#define YOUNGER_THAN(x,y) (HCL_CMP_NTIME(&(x)->when, &(y)->when) < 0) +#define YOUNGER_THAN(x,y) (HAK_CMP_NTIME(&(x)->when, &(y)->when) < 0) -hcl_tmr_t* hcl_tmr_open (hcl_t* hcl, hcl_oow_t xtnsize, hcl_oow_t capa) +hak_tmr_t* hak_tmr_open (hak_t* hak, hak_oow_t xtnsize, hak_oow_t capa) { - hcl_tmr_t* tmr; + hak_tmr_t* tmr; - tmr = (hcl_tmr_t*)hcl_allocmem(hcl, HCL_SIZEOF(*tmr) + xtnsize); + tmr = (hak_tmr_t*)hak_allocmem(hak, HAK_SIZEOF(*tmr) + xtnsize); if (tmr) { - if (hcl_tmr_init(tmr, hcl, capa) <= -1) + if (hak_tmr_init(tmr, hak, capa) <= -1) { - hcl_freemem (tmr->hcl, tmr); - return HCL_NULL; + hak_freemem (tmr->hak, tmr); + return HAK_NULL; } - else HCL_MEMSET (tmr + 1, 0, xtnsize); + else HAK_MEMSET (tmr + 1, 0, xtnsize); } return tmr; } -void hcl_tmr_close (hcl_tmr_t* tmr) +void hak_tmr_close (hak_tmr_t* tmr) { - hcl_tmr_fini (tmr); - hcl_freemem (tmr->hcl, tmr); + hak_tmr_fini (tmr); + hak_freemem (tmr->hak, tmr); } -int hcl_tmr_init (hcl_tmr_t* tmr, hcl_t* hcl, hcl_oow_t capa) +int hak_tmr_init (hak_tmr_t* tmr, hak_t* hak, hak_oow_t capa) { - hcl_tmr_event_t* tmp; + hak_tmr_event_t* tmp; - HCL_MEMSET (tmr, 0, HCL_SIZEOF(*tmr)); + HAK_MEMSET (tmr, 0, HAK_SIZEOF(*tmr)); if (capa <= 0) capa = 1; - tmp = (hcl_tmr_event_t*)hcl_allocmem(hcl, capa * HCL_SIZEOF(*tmp)); + tmp = (hak_tmr_event_t*)hak_allocmem(hak, capa * HAK_SIZEOF(*tmp)); if (!tmp) return -1; - tmr->hcl = hcl; + tmr->hak = hak; tmr->capa = capa; tmr->event = tmp; return 0; } -void hcl_tmr_fini (hcl_tmr_t* tmr) +void hak_tmr_fini (hak_tmr_t* tmr) { - hcl_tmr_clear (tmr); + hak_tmr_clear (tmr); if (tmr->event) { - hcl_freemem (tmr->hcl, tmr->event); - tmr->event = HCL_NULL; + hak_freemem (tmr->hak, tmr->event); + tmr->event = HAK_NULL; } } /* -hcl_mmgr_t* hcl_tmr_getmmgr (hcl_tmr_t* tmr) +hak_mmgr_t* hak_tmr_getmmgr (hak_tmr_t* tmr) { - return tmr->hcl->mmgr; + return tmr->hak->mmgr; }*/ -void* hcl_tmr_getxtn (hcl_tmr_t* tmr) +void* hak_tmr_getxtn (hak_tmr_t* tmr) { return (void*)(tmr + 1); } -void hcl_tmr_clear (hcl_tmr_t* tmr) +void hak_tmr_clear (hak_tmr_t* tmr) { - while (tmr->size > 0) hcl_tmr_delete (tmr, 0); + while (tmr->size > 0) hak_tmr_delete (tmr, 0); } -static hcl_tmr_index_t sift_up (hcl_tmr_t* tmr, hcl_tmr_index_t index, int notify) +static hak_tmr_index_t sift_up (hak_tmr_t* tmr, hak_tmr_index_t index, int notify) { - hcl_oow_t parent; + hak_oow_t parent; parent = HEAP_PARENT(index); if (index > 0 && YOUNGER_THAN(&tmr->event[index], &tmr->event[parent])) { - hcl_tmr_event_t item; - hcl_oow_t old_index; + hak_tmr_event_t item; + hak_oow_t old_index; item = tmr->event[index]; old_index = index; @@ -124,8 +124,8 @@ static hcl_tmr_index_t sift_up (hcl_tmr_t* tmr, hcl_tmr_index_t index, int notif } while (index > 0 && YOUNGER_THAN(&item, &tmr->event[parent])); - /* we send no notification if the item is added with hcl_tmr_insert() - * or updated with hcl_tmr_update(). the caller of these functions + /* we send no notification if the item is added with hak_tmr_insert() + * or updated with hak_tmr_update(). the caller of these functions * must rely on the return value. */ tmr->event[index] = item; if (notify && index != old_index) @@ -135,21 +135,21 @@ static hcl_tmr_index_t sift_up (hcl_tmr_t* tmr, hcl_tmr_index_t index, int notif return index; } -static hcl_tmr_index_t sift_down (hcl_tmr_t* tmr, hcl_tmr_index_t index, int notify) +static hak_tmr_index_t sift_down (hak_tmr_t* tmr, hak_tmr_index_t index, int notify) { - hcl_oow_t base = tmr->size / 2; + hak_oow_t base = tmr->size / 2; if (index < base) /* at least 1 child is under the 'index' position */ { - hcl_tmr_event_t item; - hcl_oow_t old_index; + hak_tmr_event_t item; + hak_oow_t old_index; item = tmr->event[index]; old_index = index; do { - hcl_oow_t left, right, younger; + hak_oow_t left, right, younger; left = HEAP_LEFT(index); right = HEAP_RIGHT(index); @@ -180,14 +180,14 @@ static hcl_tmr_index_t sift_down (hcl_tmr_t* tmr, hcl_tmr_index_t index, int not return index; } -void hcl_tmr_delete (hcl_tmr_t* tmr, hcl_tmr_index_t index) +void hak_tmr_delete (hak_tmr_t* tmr, hak_tmr_index_t index) { - hcl_tmr_event_t item; + hak_tmr_event_t item; - HCL_ASSERT (tmr->hcl, index < tmr->size); + HAK_ASSERT (tmr->hak, index < tmr->size); item = tmr->event[index]; - tmr->event[index].updater (tmr, index, HCL_TMR_INVALID_INDEX, &tmr->event[index]); + tmr->event[index].updater (tmr, index, HAK_TMR_INVALID_INDEX, &tmr->event[index]); tmr->size = tmr->size - 1; if (tmr->size > 0 && index != tmr->size) @@ -198,61 +198,61 @@ void hcl_tmr_delete (hcl_tmr_t* tmr, hcl_tmr_index_t index) } } -hcl_tmr_index_t hcl_tmr_insert (hcl_tmr_t* tmr, const hcl_tmr_event_t* event) +hak_tmr_index_t hak_tmr_insert (hak_tmr_t* tmr, const hak_tmr_event_t* event) { - hcl_tmr_index_t index = tmr->size; + hak_tmr_index_t index = tmr->size; if (index >= tmr->capa) { - hcl_tmr_event_t* tmp; - hcl_oow_t new_capa; + hak_tmr_event_t* tmp; + hak_oow_t new_capa; - HCL_ASSERT (tmr->hcl, tmr->capa >= 1); + HAK_ASSERT (tmr->hak, tmr->capa >= 1); new_capa = tmr->capa * 2; - tmp = (hcl_tmr_event_t*)hcl_reallocmem(tmr->hcl, tmr->event, new_capa * HCL_SIZEOF(*tmp)); - if (!tmp) return HCL_TMR_INVALID_INDEX; + tmp = (hak_tmr_event_t*)hak_reallocmem(tmr->hak, tmr->event, new_capa * HAK_SIZEOF(*tmp)); + if (!tmp) return HAK_TMR_INVALID_INDEX; tmr->event = tmp; tmr->capa = new_capa; } - HCL_ASSERT (tmr->hcl, event->handler != HCL_NULL); - HCL_ASSERT (tmr->hcl, event->updater != HCL_NULL); + HAK_ASSERT (tmr->hak, event->handler != HAK_NULL); + HAK_ASSERT (tmr->hak, event->updater != HAK_NULL); tmr->size = tmr->size + 1; tmr->event[index] = *event; return sift_up(tmr, index, 0); } -hcl_tmr_index_t hcl_tmr_update (hcl_tmr_t* tmr, hcl_oow_t index, const hcl_tmr_event_t* event) +hak_tmr_index_t hak_tmr_update (hak_tmr_t* tmr, hak_oow_t index, const hak_tmr_event_t* event) { - hcl_tmr_event_t item; + hak_tmr_event_t item; - HCL_ASSERT (tmr->hcl, event->handler != HCL_NULL); - HCL_ASSERT (tmr->hcl, event->updater != HCL_NULL); + HAK_ASSERT (tmr->hak, event->handler != HAK_NULL); + HAK_ASSERT (tmr->hak, event->updater != HAK_NULL); item = tmr->event[index]; tmr->event[index] = *event; return YOUNGER_THAN(event, &item)? sift_up(tmr, index, 0): sift_down(tmr, index, 0); } -int hcl_tmr_fire (hcl_tmr_t* tmr, const hcl_ntime_t* tm, hcl_oow_t* firecnt) +int hak_tmr_fire (hak_tmr_t* tmr, const hak_ntime_t* tm, hak_oow_t* firecnt) { - hcl_ntime_t now; - hcl_tmr_event_t event; - hcl_oow_t fire_count = 0; + hak_ntime_t now; + hak_tmr_event_t event; + hak_oow_t fire_count = 0; /* if the current time is not specified, get it from the system */ if (tm) now = *tm; - /*else if (hcl_gettime(&now) <= -1) return -1;*/ - tmr->hcl->vmprim.vm_gettime (tmr->hcl, &now); + /*else if (hak_gettime(&now) <= -1) return -1;*/ + tmr->hak->vmprim.vm_gettime (tmr->hak, &now); while (tmr->size > 0) { - if (HCL_CMP_NTIME(&tmr->event[0].when, &now) > 0) break; + if (HAK_CMP_NTIME(&tmr->event[0].when, &now) > 0) break; event = tmr->event[0]; - hcl_tmr_delete (tmr, 0); /* remove the registered event structure */ + hak_tmr_delete (tmr, 0); /* remove the registered event structure */ fire_count++; event.handler (tmr, &now, &event); /* then fire the event */ @@ -262,25 +262,25 @@ int hcl_tmr_fire (hcl_tmr_t* tmr, const hcl_ntime_t* tm, hcl_oow_t* firecnt) return 0; } -int hcl_tmr_gettmout (hcl_tmr_t* tmr, const hcl_ntime_t* tm, hcl_ntime_t* tmout) +int hak_tmr_gettmout (hak_tmr_t* tmr, const hak_ntime_t* tm, hak_ntime_t* tmout) { - hcl_ntime_t now; + hak_ntime_t now; /* time-out can't be calculated when there's no event scheduled */ if (tmr->size <= 0) return -1; /* if the current time is not specified, get it from the system */ if (tm) now = *tm; - /*else if (hcl_gettime(&now) <= -1) return -1;*/ - tmr->hcl->vmprim.vm_gettime (tmr->hcl, &now); + /*else if (hak_gettime(&now) <= -1) return -1;*/ + tmr->hak->vmprim.vm_gettime (tmr->hak, &now); - HCL_SUB_NTIME (tmout, &tmr->event[0].when, &now); - if (tmout->sec < 0) HCL_CLEAR_NTIME (tmout); + HAK_SUB_NTIME (tmout, &tmr->event[0].when, &now); + if (tmout->sec < 0) HAK_CLEAR_NTIME (tmout); return 0; } -hcl_tmr_event_t* hcl_tmr_getevent (hcl_tmr_t* tmr, hcl_tmr_index_t index) +hak_tmr_event_t* hak_tmr_getevent (hak_tmr_t* tmr, hak_tmr_index_t index) { - return (index < 0 || index >= tmr->size)? HCL_NULL: &tmr->event[index]; + return (index < 0 || index >= tmr->size)? HAK_NULL: &tmr->event[index]; } diff --git a/lib/uch-case.h b/lib/uch-case.h index 9b6742a..414f84b 100644 --- a/lib/uch-case.h +++ b/lib/uch-case.h @@ -5,8 +5,8 @@ typedef struct uch_case_page_t uch_case_page_t; struct uch_case_page_t { - hcl_int32_t upper; - hcl_int32_t lower; + hak_int32_t upper; + hak_int32_t lower; }; diff --git a/lib/uch-prop.h b/lib/uch-prop.h index 5d6044a..ae68c1e 100644 --- a/lib/uch-prop.h +++ b/lib/uch-prop.h @@ -2,247 +2,247 @@ #define UCH_PROP_MAX 0xFFFF -static hcl_uint16_t uch_prop_page_003A[256] = +static hak_uint16_t uch_prop_page_003A[256] = { 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -253,341 +253,341 @@ static hcl_uint16_t uch_prop_page_003A[256] = 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0 }; -static hcl_uint16_t uch_prop_page_0039[256] = +static hak_uint16_t uch_prop_page_0039[256] = { - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT }; -static hcl_uint16_t uch_prop_page_0038[256] = +static hak_uint16_t uch_prop_page_0038[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -604,126 +604,126 @@ static hcl_uint16_t uch_prop_page_0038[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -764,33 +764,33 @@ static hcl_uint16_t uch_prop_page_0038[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0 }; -static hcl_uint16_t uch_prop_page_0037[256] = +static hak_uint16_t uch_prop_page_0037[256] = { - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -803,181 +803,181 @@ static hcl_uint16_t uch_prop_page_0037[256] = 0, 0, 0, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -995,273 +995,273 @@ static hcl_uint16_t uch_prop_page_0037[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH }; -static hcl_uint16_t uch_prop_page_0036[256] = +static hak_uint16_t uch_prop_page_0036[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -1302,7 +1302,7 @@ static hcl_uint16_t uch_prop_page_0036[256] = 0 }; -static hcl_uint16_t uch_prop_page_0035[256] = +static hak_uint16_t uch_prop_page_0035[256] = { 0, 0, @@ -1562,172 +1562,172 @@ static hcl_uint16_t uch_prop_page_0035[256] = 0 }; -static hcl_uint16_t uch_prop_page_0034[256] = +static hak_uint16_t uch_prop_page_0034[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -1740,113 +1740,113 @@ static hcl_uint16_t uch_prop_page_0034[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0 }; -static hcl_uint16_t uch_prop_page_0033[256] = +static hak_uint16_t uch_prop_page_0033[256] = { 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -1856,76 +1856,76 @@ static hcl_uint16_t uch_prop_page_0033[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -1936,144 +1936,144 @@ static hcl_uint16_t uch_prop_page_0033[256] = 0, 0, 0, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -2082,63 +2082,63 @@ static hcl_uint16_t uch_prop_page_0033[256] = 0 }; -static hcl_uint16_t uch_prop_page_0032[256] = +static hak_uint16_t uch_prop_page_0032[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -2148,137 +2148,137 @@ static hcl_uint16_t uch_prop_page_0032[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -2303,34 +2303,34 @@ static hcl_uint16_t uch_prop_page_0032[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -2342,92 +2342,92 @@ static hcl_uint16_t uch_prop_page_0032[256] = 0 }; -static hcl_uint16_t uch_prop_page_0031[256] = +static hak_uint16_t uch_prop_page_0031[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -2439,291 +2439,291 @@ static hcl_uint16_t uch_prop_page_0031[256] = 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0 }; -static hcl_uint16_t uch_prop_page_0030[256] = +static hak_uint16_t uch_prop_page_0030[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -2732,76 +2732,76 @@ static hcl_uint16_t uch_prop_page_0030[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -2810,246 +2810,246 @@ static hcl_uint16_t uch_prop_page_0030[256] = 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT }; -static hcl_uint16_t uch_prop_page_002F[256] = +static hak_uint16_t uch_prop_page_002F[256] = { - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -3111,63 +3111,63 @@ static hcl_uint16_t uch_prop_page_002F[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH }; -static hcl_uint16_t uch_prop_page_002E[256] = +static hak_uint16_t uch_prop_page_002E[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -3188,190 +3188,190 @@ static hcl_uint16_t uch_prop_page_002E[256] = 0, 0, 0, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -3382,207 +3382,207 @@ static hcl_uint16_t uch_prop_page_002E[256] = 0 }; -static hcl_uint16_t uch_prop_page_002D[256] = +static hak_uint16_t uch_prop_page_002D[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -3592,298 +3592,298 @@ static hcl_uint16_t uch_prop_page_002D[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT }; -static hcl_uint16_t uch_prop_page_002C[256] = +static hak_uint16_t uch_prop_page_002C[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -3902,190 +3902,190 @@ static hcl_uint16_t uch_prop_page_002C[256] = 0 }; -static hcl_uint16_t uch_prop_page_002B[256] = +static hak_uint16_t uch_prop_page_002B[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -4096,562 +4096,562 @@ static hcl_uint16_t uch_prop_page_002B[256] = 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT }; -static hcl_uint16_t uch_prop_page_002A[256] = +static hak_uint16_t uch_prop_page_002A[256] = { - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0 }; -static hcl_uint16_t uch_prop_page_0029[256] = +static hak_uint16_t uch_prop_page_0029[256] = { 0, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -4664,500 +4664,500 @@ static hcl_uint16_t uch_prop_page_0029[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH }; -static hcl_uint16_t uch_prop_page_0028[256] = +static hak_uint16_t uch_prop_page_0028[256] = { - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_BLANK, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_BLANK, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH }; -static hcl_uint16_t uch_prop_page_0027[256] = +static hak_uint16_t uch_prop_page_0027[256] = { - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -5184,105 +5184,105 @@ static hcl_uint16_t uch_prop_page_0027[256] = 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, 0 }; -static hcl_uint16_t uch_prop_page_0026[256] = +static hak_uint16_t uch_prop_page_0026[256] = { - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -5332,122 +5332,122 @@ static hcl_uint16_t uch_prop_page_0026[256] = 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -5462,112 +5462,112 @@ static hcl_uint16_t uch_prop_page_0026[256] = 0 }; -static hcl_uint16_t uch_prop_page_0025[256] = +static hak_uint16_t uch_prop_page_0025[256] = { - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, 0, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -5575,8 +5575,8 @@ static hcl_uint16_t uch_prop_page_0025[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -5591,30 +5591,30 @@ static hcl_uint16_t uch_prop_page_0025[256] = 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -5624,665 +5624,665 @@ static hcl_uint16_t uch_prop_page_0025[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH }; -static hcl_uint16_t uch_prop_page_0024[256] = +static hak_uint16_t uch_prop_page_0024[256] = { - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT }; -static hcl_uint16_t uch_prop_page_0023[256] = +static hak_uint16_t uch_prop_page_0023[256] = { - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0 }; -static hcl_uint16_t uch_prop_page_0022[256] = +static hak_uint16_t uch_prop_page_0022[256] = { - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -6308,17 +6308,17 @@ static hcl_uint16_t uch_prop_page_0022[256] = 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -6340,882 +6340,882 @@ static hcl_uint16_t uch_prop_page_0022[256] = 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT }; -static hcl_uint16_t uch_prop_page_0021[256] = +static hak_uint16_t uch_prop_page_0021[256] = { - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT }; -static hcl_uint16_t uch_prop_page_0020[256] = +static hak_uint16_t uch_prop_page_0020[256] = { - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT }; -static hcl_uint16_t uch_prop_page_001F[256] = +static hak_uint16_t uch_prop_page_001F[256] = { - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_BLANK, - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_BLANK, - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_BLANK, - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_BLANK, - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_BLANK, - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_BLANK, - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_BLANK, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_BLANK, - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_BLANK, - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_BLANK, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_BLANK, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_BLANK, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_BLANK, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_BLANK, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_BLANK, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_BLANK, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_BLANK, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_BLANK, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_BLANK, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_BLANK, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_BLANK, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_BLANK, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -7232,39 +7232,39 @@ static hcl_uint16_t uch_prop_page_001F[256] = 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -7282,925 +7282,925 @@ static hcl_uint16_t uch_prop_page_001F[256] = 0 }; -static hcl_uint16_t uch_prop_page_001E[256] = +static hak_uint16_t uch_prop_page_001E[256] = { - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0 }; -static hcl_uint16_t uch_prop_page_001D[256] = +static hak_uint16_t uch_prop_page_001D[256] = { - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH }; -static hcl_uint16_t uch_prop_page_001C[256] = +static hak_uint16_t uch_prop_page_001C[256] = { - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT }; -static hcl_uint16_t uch_prop_page_001B[256] = +static hak_uint16_t uch_prop_page_001B[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -8208,62 +8208,62 @@ static hcl_uint16_t uch_prop_page_001B[256] = 0, 0, 0, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -8272,48 +8272,48 @@ static hcl_uint16_t uch_prop_page_001B[256] = 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -8322,252 +8322,252 @@ static hcl_uint16_t uch_prop_page_001B[256] = 0 }; -static hcl_uint16_t uch_prop_page_001A[256] = +static hak_uint16_t uch_prop_page_001A[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -8576,205 +8576,205 @@ static hcl_uint16_t uch_prop_page_001A[256] = 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT }; -static hcl_uint16_t uch_prop_page_0019[256] = +static hak_uint16_t uch_prop_page_0019[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -8842,125 +8842,125 @@ static hcl_uint16_t uch_prop_page_0019[256] = 0 }; -static hcl_uint16_t uch_prop_page_0018[256] = +static hak_uint16_t uch_prop_page_0018[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -8972,259 +8972,259 @@ static hcl_uint16_t uch_prop_page_0018[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT }; -static hcl_uint16_t uch_prop_page_0017[256] = +static hak_uint16_t uch_prop_page_0017[256] = { - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -9232,124 +9232,124 @@ static hcl_uint16_t uch_prop_page_0017[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -9362,29 +9362,29 @@ static hcl_uint16_t uch_prop_page_0017[256] = 0 }; -static hcl_uint16_t uch_prop_page_0016[256] = +static hak_uint16_t uch_prop_page_0016[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -9396,29 +9396,29 @@ static hcl_uint16_t uch_prop_page_0016[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -9428,26 +9428,26 @@ static hcl_uint16_t uch_prop_page_0016[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -9460,26 +9460,26 @@ static hcl_uint16_t uch_prop_page_0016[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -9492,128 +9492,128 @@ static hcl_uint16_t uch_prop_page_0016[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -9622,257 +9622,257 @@ static hcl_uint16_t uch_prop_page_0016[256] = 0 }; -static hcl_uint16_t uch_prop_page_0015[256] = +static hak_uint16_t uch_prop_page_0015[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_BLANK, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_BLANK, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -9882,1527 +9882,1527 @@ static hcl_uint16_t uch_prop_page_0015[256] = 0 }; -static hcl_uint16_t uch_prop_page_0014[256] = +static hak_uint16_t uch_prop_page_0014[256] = { - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH }; -static hcl_uint16_t uch_prop_page_0013[256] = +static hak_uint16_t uch_prop_page_0013[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, 0, 0, 0, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0 }; -static hcl_uint16_t uch_prop_page_0012[256] = +static hak_uint16_t uch_prop_page_0012[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH }; -static hcl_uint16_t uch_prop_page_0011[256] = +static hak_uint16_t uch_prop_page_0011[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH }; -static hcl_uint16_t uch_prop_page_0010[256] = +static hak_uint16_t uch_prop_page_0010[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, 0, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH }; -static hcl_uint16_t uch_prop_page_000F[256] = +static hak_uint16_t uch_prop_page_000F[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -11442,100 +11442,100 @@ static hcl_uint16_t uch_prop_page_000F[256] = 0 }; -static hcl_uint16_t uch_prop_page_000E[256] = +static hak_uint16_t uch_prop_page_000E[256] = { 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -11573,101 +11573,101 @@ static hcl_uint16_t uch_prop_page_000E[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -11702,253 +11702,253 @@ static hcl_uint16_t uch_prop_page_000E[256] = 0 }; -static hcl_uint16_t uch_prop_page_000D[256] = +static hak_uint16_t uch_prop_page_000D[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -11962,86 +11962,86 @@ static hcl_uint16_t uch_prop_page_000D[256] = 0 }; -static hcl_uint16_t uch_prop_page_000C[256] = +static hak_uint16_t uch_prop_page_000C[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -12049,33 +12049,33 @@ static hcl_uint16_t uch_prop_page_000C[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -12084,92 +12084,92 @@ static hcl_uint16_t uch_prop_page_000C[256] = 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -12177,8 +12177,8 @@ static hcl_uint16_t uch_prop_page_000C[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -12186,27 +12186,27 @@ static hcl_uint16_t uch_prop_page_000C[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -12222,86 +12222,86 @@ static hcl_uint16_t uch_prop_page_000C[256] = 0 }; -static hcl_uint16_t uch_prop_page_000B[256] = +static hak_uint16_t uch_prop_page_000B[256] = { 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -12310,40 +12310,40 @@ static hcl_uint16_t uch_prop_page_000B[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -12354,92 +12354,92 @@ static hcl_uint16_t uch_prop_page_000B[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -12454,27 +12454,27 @@ static hcl_uint16_t uch_prop_page_000B[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -12482,90 +12482,90 @@ static hcl_uint16_t uch_prop_page_000B[256] = 0 }; -static hcl_uint16_t uch_prop_page_000A[256] = +static hak_uint16_t uch_prop_page_000A[256] = { 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -12573,12 +12573,12 @@ static hcl_uint16_t uch_prop_page_000A[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -12586,23 +12586,23 @@ static hcl_uint16_t uch_prop_page_000A[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -12613,86 +12613,86 @@ static hcl_uint16_t uch_prop_page_000A[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -12708,24 +12708,24 @@ static hcl_uint16_t uch_prop_page_000A[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -12733,224 +12733,224 @@ static hcl_uint16_t uch_prop_page_000A[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT }; -static hcl_uint16_t uch_prop_page_0009[256] = +static hak_uint16_t uch_prop_page_0009[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -12959,158 +12959,158 @@ static hcl_uint16_t uch_prop_page_0009[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0 }; -static hcl_uint16_t uch_prop_page_0008[256] = +static hak_uint16_t uch_prop_page_0008[256] = { - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -13164,36 +13164,36 @@ static hcl_uint16_t uch_prop_page_0008[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -13215,233 +13215,233 @@ static hcl_uint16_t uch_prop_page_0008[256] = 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH }; -static hcl_uint16_t uch_prop_page_0007[256] = +static hak_uint16_t uch_prop_page_0007[256] = { - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -13456,534 +13456,534 @@ static hcl_uint16_t uch_prop_page_0007[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT }; -static hcl_uint16_t uch_prop_page_0006[256] = +static hak_uint16_t uch_prop_page_0006[256] = { - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH }; -static hcl_uint16_t uch_prop_page_0005[256] = +static hak_uint16_t uch_prop_page_0005[256] = { - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, @@ -13992,43 +13992,43 @@ static hcl_uint16_t uch_prop_page_0005[256] = 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, 0, 0, 0, @@ -14042,1307 +14042,1307 @@ static hcl_uint16_t uch_prop_page_0005[256] = 0 }; -static hcl_uint16_t uch_prop_page_0004[256] = +static hak_uint16_t uch_prop_page_0004[256] = { - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH }; -static hcl_uint16_t uch_prop_page_0003[256] = +static hak_uint16_t uch_prop_page_0003[256] = { - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, 0, 0, 0, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, 0, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH }; -static hcl_uint16_t uch_prop_page_0002[256] = +static hak_uint16_t uch_prop_page_0002[256] = { - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT }; -static hcl_uint16_t uch_prop_page_0001[256] = +static hak_uint16_t uch_prop_page_0001[256] = { - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH }; -static hcl_uint16_t uch_prop_page_0000[256] = +static hak_uint16_t uch_prop_page_0000[256] = { - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_CNTRL | HCL_UCH_PROP_BLANK, - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_SPACE | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_BLANK, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_DIGIT | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_DIGIT | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_DIGIT | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_DIGIT | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_DIGIT | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_DIGIT | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_DIGIT | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_DIGIT | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_DIGIT | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_DIGIT | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_XDIGIT | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_CNTRL, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_UPPER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH | HCL_UCH_PROP_PUNCT, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH, - HCL_UCH_PROP_LOWER | HCL_UCH_PROP_ALPHA | HCL_UCH_PROP_ALNUM | HCL_UCH_PROP_PRINT | HCL_UCH_PROP_GRAPH + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_CNTRL | HAK_UCH_PROP_BLANK, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_SPACE | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_BLANK, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_DIGIT | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_DIGIT | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_DIGIT | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_DIGIT | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_DIGIT | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_DIGIT | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_DIGIT | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_DIGIT | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_DIGIT | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_DIGIT | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_XDIGIT | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_CNTRL, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_UPPER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH | HAK_UCH_PROP_PUNCT, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH, + HAK_UCH_PROP_LOWER | HAK_UCH_PROP_ALPHA | HAK_UCH_PROP_ALNUM | HAK_UCH_PROP_PRINT | HAK_UCH_PROP_GRAPH }; -static hcl_uint16_t* uch_prop_map[256] = +static hak_uint16_t* uch_prop_map[256] = { /* 0x0-0xFF */ uch_prop_page_0000, /* 0x100-0x1FF */ uch_prop_page_0001, diff --git a/lib/utf16.c b/lib/utf16.c index 9692f90..33674c5 100644 --- a/lib/utf16.c +++ b/lib/utf16.c @@ -22,7 +22,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "hcl-chr.h" +#include "hak-chr.h" /* TODO: handle different endians - UTF16BE or UTF16LE */ @@ -34,16 +34,16 @@ enum LOW_SURROGATE_END = 0xDFFF }; -hcl_oow_t hcl_uc_to_utf16 (hcl_uch_t uc, hcl_bch_t* utf16, hcl_oow_t size) +hak_oow_t hak_uc_to_utf16 (hak_uch_t uc, hak_bch_t* utf16, hak_oow_t size) { - hcl_uint16_t* u16 = (hcl_uint16_t*)utf16; + hak_uint16_t* u16 = (hak_uint16_t*)utf16; if (uc <= 0xFFFF) { - u16[0] = (hcl_uint16_t)uc; + u16[0] = (hak_uint16_t)uc; return 2; } -#if (HCL_SIZEOF_UCH_T > 2) +#if (HAK_SIZEOF_UCH_T > 2) else if (uc <= 0x10FFFF) { u16[0] = HIGH_SURROGATE_START | (((uc >> 16) & 0x1F) - 1) | (uc >> 10); @@ -55,9 +55,9 @@ hcl_oow_t hcl_uc_to_utf16 (hcl_uch_t uc, hcl_bch_t* utf16, hcl_oow_t size) return 0; /* illegal character */ } -hcl_oow_t hcl_utf16_to_uc (const hcl_bch_t* utf16, hcl_oow_t size, hcl_uch_t* uc) +hak_oow_t hak_utf16_to_uc (const hak_bch_t* utf16, hak_oow_t size, hak_uch_t* uc) { - const hcl_uint16_t* u16 = (const hcl_uint16_t*)utf16; + const hak_uint16_t* u16 = (const hak_uint16_t*)utf16; if (size < 2) return 0; /* incomplete sequence */ @@ -67,7 +67,7 @@ hcl_oow_t hcl_utf16_to_uc (const hcl_bch_t* utf16, hcl_oow_t size, hcl_uch_t* uc *uc = u16[0]; return 2; } -#if (HCL_SIZEOF_UCH_T > 2) +#if (HAK_SIZEOF_UCH_T > 2) else if (u16[0] >= HIGH_SURROGATE_START && u16[0] <= HIGH_SURROGATE_END) /* high-surrogate */ { if (size < 4) return 0; /* incomplete */ diff --git a/lib/utf8.c b/lib/utf8.c index 564f943..6893a47 100644 --- a/lib/utf8.c +++ b/lib/utf8.c @@ -22,7 +22,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include +#include /*#define RETAIN_RFC2279 1*/ @@ -46,11 +46,11 @@ struct __utf8_t { - hcl_uint32_t lower; - hcl_uint32_t upper; - hcl_uint8_t fbyte; /* mask to the first utf8 byte */ - hcl_uint8_t mask; - hcl_uint8_t fmask; + hak_uint32_t lower; + hak_uint32_t upper; + hak_uint8_t fbyte; /* mask to the first utf8 byte */ + hak_uint8_t mask; + hak_uint8_t fmask; int length; /* number of bytes */ }; @@ -70,14 +70,14 @@ static __utf8_t utf8_table[] = #endif }; -static HCL_INLINE __utf8_t* get_utf8_slot (hcl_uch_t uc) +static HAK_INLINE __utf8_t* get_utf8_slot (hak_uch_t uc) { __utf8_t* cur, * end; - /*HCL_ASSERT (hcl, HCL_SIZEOF(hcl_bch_t) == 1); - HCL_ASSERT (hcl, HCL_SIZEOF(hcl_uch_t) >= 2);*/ + /*HAK_ASSERT (hak, HAK_SIZEOF(hak_bch_t) == 1); + HAK_ASSERT (hak, HAK_SIZEOF(hak_uch_t) >= 2);*/ - end = utf8_table + HCL_COUNTOF(utf8_table); + end = utf8_table + HAK_COUNTOF(utf8_table); cur = utf8_table; while (cur < end) @@ -86,14 +86,14 @@ static HCL_INLINE __utf8_t* get_utf8_slot (hcl_uch_t uc) cur++; } - return HCL_NULL; /* invalid character */ + return HAK_NULL; /* invalid character */ } -hcl_oow_t hcl_uc_to_utf8 (hcl_uch_t uc, hcl_bch_t* utf8, hcl_oow_t size) +hak_oow_t hak_uc_to_utf8 (hak_uch_t uc, hak_bch_t* utf8, hak_oow_t size) { __utf8_t* cur = get_utf8_slot(uc); - if (cur == HCL_NULL) return 0; /* illegal character */ + if (cur == HAK_NULL) return 0; /* illegal character */ if (utf8 && cur->length <= size) { @@ -113,19 +113,19 @@ hcl_oow_t hcl_uc_to_utf8 (hcl_uch_t uc, hcl_bch_t* utf8, hcl_oow_t size) /* small buffer is also indicated by this return value * greater than 'size'. */ - return (hcl_oow_t)cur->length; + return (hak_oow_t)cur->length; } -hcl_oow_t hcl_utf8_to_uc (const hcl_bch_t* utf8, hcl_oow_t size, hcl_uch_t* uc) +hak_oow_t hak_utf8_to_uc (const hak_bch_t* utf8, hak_oow_t size, hak_uch_t* uc) { __utf8_t* cur, * end; - /*HCL_ASSERT (hcl, utf8 != HCL_NULL); - HCL_ASSERT (hcl, size > 0); - HCL_ASSERT (hcl, HCL_SIZEOF(hcl_bch_t) == 1); - HCL_ASSERT (hcl, HCL_SIZEOF(hcl_uch_t) >= 2);*/ + /*HAK_ASSERT (hak, utf8 != HAK_NULL); + HAK_ASSERT (hak, size > 0); + HAK_ASSERT (hak, HAK_SIZEOF(hak_bch_t) == 1); + HAK_ASSERT (hak, HAK_SIZEOF(hak_uch_t) >= 2);*/ - end = utf8_table + HCL_COUNTOF(utf8_table); + end = utf8_table + HAK_COUNTOF(utf8_table); cur = utf8_table; while (cur < end) @@ -143,7 +143,7 @@ hcl_oow_t hcl_utf8_to_uc (const hcl_bch_t* utf8, hcl_oow_t size, hcl_uch_t* uc) if (uc) { - hcl_uch_t w; + hak_uch_t w; w = utf8[0] & cur->fmask; for (i = 1; i < cur->length; i++) @@ -179,7 +179,7 @@ hcl_oow_t hcl_utf8_to_uc (const hcl_bch_t* utf8, hcl_oow_t size, hcl_uch_t* uc) * and * the incomplete seqeunce error (size < cur->length). */ - return (hcl_oow_t)cur->length; + return (hak_oow_t)cur->length; } cur++; } diff --git a/lib/utl.c b/lib/utl.c index fe2d819..0214892 100644 --- a/lib/utl.c +++ b/lib/utl.c @@ -22,9 +22,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include -#include +#include +#include +#include /* some naming conventions * bchars, uchars -> pointer and length @@ -35,73 +35,73 @@ * utobcstr -> ucstr to bcstr */ -hcl_oow_t hcl_hash_bytes_ (const hcl_oob_t* ptr, hcl_oow_t len) +hak_oow_t hak_hash_bytes_ (const hak_oob_t* ptr, hak_oow_t len) { - hcl_oow_t hv; - HCL_HASH_BYTES (hv, ptr, len); + hak_oow_t hv; + HAK_HASH_BYTES (hv, ptr, len); /* constrain the hash value to be representable in a small integer * for convenience sake */ - return hv % ((hcl_oow_t)HCL_SMOOI_MAX + 1); + return hv % ((hak_oow_t)HAK_SMOOI_MAX + 1); } /* ----------------------------------------------------------------------- */ -int hcl_convbtouchars (hcl_t* hcl, const hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_uch_t* ucs, hcl_oow_t* ucslen) +int hak_convbtouchars (hak_t* hak, const hak_bch_t* bcs, hak_oow_t* bcslen, hak_uch_t* ucs, hak_oow_t* ucslen) { /* length bound */ int n; - n = hcl_conv_bchars_to_uchars_with_cmgr(bcs, bcslen, ucs, ucslen, HCL_CMGR(hcl), 0); + n = hak_conv_bchars_to_uchars_with_cmgr(bcs, bcslen, ucs, ucslen, HAK_CMGR(hak), 0); if (n <= -1) { /* -1: illegal character, -2: buffer too small, -3: incomplete sequence */ - hcl_seterrnum (hcl, (n == -2)? HCL_EBUFFULL: HCL_EECERR); + hak_seterrnum (hak, (n == -2)? HAK_EBUFFULL: HAK_EECERR); } return n; } -int hcl_convutobchars (hcl_t* hcl, const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_bch_t* bcs, hcl_oow_t* bcslen) +int hak_convutobchars (hak_t* hak, const hak_uch_t* ucs, hak_oow_t* ucslen, hak_bch_t* bcs, hak_oow_t* bcslen) { /* length bound */ int n; - n = hcl_conv_uchars_to_bchars_with_cmgr(ucs, ucslen, bcs, bcslen, HCL_CMGR(hcl)); + n = hak_conv_uchars_to_bchars_with_cmgr(ucs, ucslen, bcs, bcslen, HAK_CMGR(hak)); if (n <= -1) { - hcl_seterrnum (hcl, (n == -2)? HCL_EBUFFULL: HCL_EECERR); + hak_seterrnum (hak, (n == -2)? HAK_EBUFFULL: HAK_EECERR); } return n; } -int hcl_convbtoucstr (hcl_t* hcl, const hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_uch_t* ucs, hcl_oow_t* ucslen) +int hak_convbtoucstr (hak_t* hak, const hak_bch_t* bcs, hak_oow_t* bcslen, hak_uch_t* ucs, hak_oow_t* ucslen) { /* null-terminated. */ int n; - n = hcl_conv_bcstr_to_ucstr_with_cmgr(bcs, bcslen, ucs, ucslen, HCL_CMGR(hcl), 0); + n = hak_conv_bcstr_to_ucstr_with_cmgr(bcs, bcslen, ucs, ucslen, HAK_CMGR(hak), 0); if (n <= -1) { - hcl_seterrnum (hcl, (n == -2)? HCL_EBUFFULL: HCL_EECERR); + hak_seterrnum (hak, (n == -2)? HAK_EBUFFULL: HAK_EECERR); } return n; } -int hcl_convutobcstr (hcl_t* hcl, const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_bch_t* bcs, hcl_oow_t* bcslen) +int hak_convutobcstr (hak_t* hak, const hak_uch_t* ucs, hak_oow_t* ucslen, hak_bch_t* bcs, hak_oow_t* bcslen) { /* null-terminated */ int n; - n = hcl_conv_ucstr_to_bcstr_with_cmgr(ucs, ucslen, bcs, bcslen, HCL_CMGR(hcl)); + n = hak_conv_ucstr_to_bcstr_with_cmgr(ucs, ucslen, bcs, bcslen, HAK_CMGR(hak)); if (n <= -1) { - hcl_seterrnum (hcl, (n == -2)? HCL_EBUFFULL: HCL_EECERR); + hak_seterrnum (hak, (n == -2)? HAK_EBUFFULL: HAK_EECERR); } return n; @@ -109,169 +109,169 @@ int hcl_convutobcstr (hcl_t* hcl, const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_b /* ----------------------------------------------------------------------- */ -hcl_uch_t* hcl_dupbtoucharswithheadroom (hcl_t* hcl, hcl_oow_t headroom_bytes, const hcl_bch_t* bcs, hcl_oow_t bcslen, hcl_oow_t* ucslen) +hak_uch_t* hak_dupbtoucharswithheadroom (hak_t* hak, hak_oow_t headroom_bytes, const hak_bch_t* bcs, hak_oow_t bcslen, hak_oow_t* ucslen) { - hcl_oow_t inlen, outlen; - hcl_uch_t* ptr; + hak_oow_t inlen, outlen; + hak_uch_t* ptr; inlen = bcslen; - if (hcl_convbtouchars (hcl, bcs, &inlen, HCL_NULL, &outlen) <= -1) + if (hak_convbtouchars (hak, bcs, &inlen, HAK_NULL, &outlen) <= -1) { /* note it's also an error if no full conversion is made in this function */ - return HCL_NULL; + return HAK_NULL; } - ptr = (hcl_uch_t*)hcl_allocmem(hcl, headroom_bytes + ((outlen + 1) * HCL_SIZEOF(hcl_uch_t))); - if (HCL_UNLIKELY(!ptr)) return HCL_NULL; + ptr = (hak_uch_t*)hak_allocmem(hak, headroom_bytes + ((outlen + 1) * HAK_SIZEOF(hak_uch_t))); + if (HAK_UNLIKELY(!ptr)) return HAK_NULL; inlen = bcslen; - ptr = (hcl_uch_t*)((hcl_oob_t*)ptr + headroom_bytes); - hcl_convbtouchars (hcl, bcs, &inlen, ptr, &outlen); + ptr = (hak_uch_t*)((hak_oob_t*)ptr + headroom_bytes); + hak_convbtouchars (hak, bcs, &inlen, ptr, &outlen); - /* hcl_convbtouchars() doesn't null-terminate the target. - * but in hcl_dupbtouchars(), i allocate space. so i don't mind + /* hak_convbtouchars() doesn't null-terminate the target. + * but in hak_dupbtouchars(), i allocate space. so i don't mind * null-terminating it with 1 extra character overhead */ ptr[outlen] = '\0'; if (ucslen) *ucslen = outlen; return ptr; } -hcl_uch_t* hcl_dupbtouchars (hcl_t* hcl, const hcl_bch_t* bcs, hcl_oow_t bcslen, hcl_oow_t* ucslen) +hak_uch_t* hak_dupbtouchars (hak_t* hak, const hak_bch_t* bcs, hak_oow_t bcslen, hak_oow_t* ucslen) { - return hcl_dupbtoucharswithheadroom (hcl, 0, bcs, bcslen, ucslen); + return hak_dupbtoucharswithheadroom (hak, 0, bcs, bcslen, ucslen); } -hcl_bch_t* hcl_duputobcharswithheadroom (hcl_t* hcl, hcl_oow_t headroom_bytes, const hcl_uch_t* ucs, hcl_oow_t ucslen, hcl_oow_t* bcslen) +hak_bch_t* hak_duputobcharswithheadroom (hak_t* hak, hak_oow_t headroom_bytes, const hak_uch_t* ucs, hak_oow_t ucslen, hak_oow_t* bcslen) { - hcl_oow_t inlen, outlen; - hcl_bch_t* ptr; + hak_oow_t inlen, outlen; + hak_bch_t* ptr; inlen = ucslen; - if (hcl_convutobchars(hcl, ucs, &inlen, HCL_NULL, &outlen) <= -1) + if (hak_convutobchars(hak, ucs, &inlen, HAK_NULL, &outlen) <= -1) { /* note it's also an error if no full conversion is made in this function */ - return HCL_NULL; + return HAK_NULL; } - ptr = (hcl_bch_t*)hcl_allocmem(hcl, headroom_bytes + ((outlen + 1) * HCL_SIZEOF(hcl_bch_t))); - if (HCL_UNLIKELY(!ptr)) return HCL_NULL; + ptr = (hak_bch_t*)hak_allocmem(hak, headroom_bytes + ((outlen + 1) * HAK_SIZEOF(hak_bch_t))); + if (HAK_UNLIKELY(!ptr)) return HAK_NULL; inlen = ucslen; - ptr = (hcl_bch_t*)((hcl_oob_t*)ptr + headroom_bytes); - hcl_convutobchars (hcl, ucs, &inlen, ptr, &outlen); + ptr = (hak_bch_t*)((hak_oob_t*)ptr + headroom_bytes); + hak_convutobchars (hak, ucs, &inlen, ptr, &outlen); ptr[outlen] = '\0'; if (bcslen) *bcslen = outlen; return ptr; } -hcl_bch_t* hcl_duputobchars (hcl_t* hcl, const hcl_uch_t* ucs, hcl_oow_t ucslen, hcl_oow_t* bcslen) +hak_bch_t* hak_duputobchars (hak_t* hak, const hak_uch_t* ucs, hak_oow_t ucslen, hak_oow_t* bcslen) { - return hcl_duputobcharswithheadroom (hcl, 0, ucs, ucslen, bcslen); + return hak_duputobcharswithheadroom (hak, 0, ucs, ucslen, bcslen); } /* ----------------------------------------------------------------------- */ -hcl_uch_t* hcl_dupbtoucstrwithheadroom (hcl_t* hcl, hcl_oow_t headroom_bytes, const hcl_bch_t* bcs, hcl_oow_t* ucslen) +hak_uch_t* hak_dupbtoucstrwithheadroom (hak_t* hak, hak_oow_t headroom_bytes, const hak_bch_t* bcs, hak_oow_t* ucslen) { - hcl_oow_t inlen, outlen; - hcl_uch_t* ptr; + hak_oow_t inlen, outlen; + hak_uch_t* ptr; - if (hcl_convbtoucstr(hcl, bcs, &inlen, HCL_NULL, &outlen) <= -1) + if (hak_convbtoucstr(hak, bcs, &inlen, HAK_NULL, &outlen) <= -1) { /* note it's also an error if no full conversion is made in this function */ - return HCL_NULL; + return HAK_NULL; } outlen++; - ptr = (hcl_uch_t*)hcl_allocmem(hcl, headroom_bytes + (outlen * HCL_SIZEOF(hcl_uch_t))); - if (HCL_UNLIKELY(!ptr)) return HCL_NULL; + ptr = (hak_uch_t*)hak_allocmem(hak, headroom_bytes + (outlen * HAK_SIZEOF(hak_uch_t))); + if (HAK_UNLIKELY(!ptr)) return HAK_NULL; - hcl_convbtoucstr (hcl, bcs, &inlen, ptr, &outlen); + hak_convbtoucstr (hak, bcs, &inlen, ptr, &outlen); if (ucslen) *ucslen = outlen; return ptr; } -hcl_uch_t* hcl_dupbtoucstr (hcl_t* hcl, const hcl_bch_t* bcs, hcl_oow_t* ucslen) +hak_uch_t* hak_dupbtoucstr (hak_t* hak, const hak_bch_t* bcs, hak_oow_t* ucslen) { - return hcl_dupbtoucstrwithheadroom (hcl, 0, bcs, ucslen); + return hak_dupbtoucstrwithheadroom (hak, 0, bcs, ucslen); } -hcl_bch_t* hcl_duputobcstrwithheadroom (hcl_t* hcl, hcl_oow_t headroom_bytes, const hcl_uch_t* ucs, hcl_oow_t* bcslen) +hak_bch_t* hak_duputobcstrwithheadroom (hak_t* hak, hak_oow_t headroom_bytes, const hak_uch_t* ucs, hak_oow_t* bcslen) { - hcl_oow_t inlen, outlen; - hcl_bch_t* ptr; + hak_oow_t inlen, outlen; + hak_bch_t* ptr; - if (hcl_convutobcstr (hcl, ucs, &inlen, HCL_NULL, &outlen) <= -1) + if (hak_convutobcstr (hak, ucs, &inlen, HAK_NULL, &outlen) <= -1) { /* note it's also an error if no full conversion is made in this function */ - return HCL_NULL; + return HAK_NULL; } outlen++; - ptr = (hcl_bch_t*)hcl_allocmem(hcl, headroom_bytes + (outlen * HCL_SIZEOF(hcl_bch_t))); - if (HCL_UNLIKELY(!ptr)) return HCL_NULL; + ptr = (hak_bch_t*)hak_allocmem(hak, headroom_bytes + (outlen * HAK_SIZEOF(hak_bch_t))); + if (HAK_UNLIKELY(!ptr)) return HAK_NULL; - ptr = (hcl_bch_t*)((hcl_oob_t*)ptr + headroom_bytes); + ptr = (hak_bch_t*)((hak_oob_t*)ptr + headroom_bytes); - hcl_convutobcstr (hcl, ucs, &inlen, ptr, &outlen); + hak_convutobcstr (hak, ucs, &inlen, ptr, &outlen); if (bcslen) *bcslen = outlen; return ptr; } -hcl_bch_t* hcl_duputobcstr (hcl_t* hcl, const hcl_uch_t* ucs, hcl_oow_t* bcslen) +hak_bch_t* hak_duputobcstr (hak_t* hak, const hak_uch_t* ucs, hak_oow_t* bcslen) { - return hcl_duputobcstrwithheadroom (hcl, 0, ucs, bcslen); + return hak_duputobcstrwithheadroom (hak, 0, ucs, bcslen); } /* ----------------------------------------------------------------------- */ -hcl_uch_t* hcl_dupuchars (hcl_t* hcl, const hcl_uch_t* ucs, hcl_oow_t ucslen) +hak_uch_t* hak_dupuchars (hak_t* hak, const hak_uch_t* ucs, hak_oow_t ucslen) { - hcl_uch_t* ptr; + hak_uch_t* ptr; - ptr = (hcl_uch_t*)hcl_allocmem(hcl, (ucslen + 1) * HCL_SIZEOF(hcl_uch_t)); - if (HCL_UNLIKELY(!ptr)) return HCL_NULL; + ptr = (hak_uch_t*)hak_allocmem(hak, (ucslen + 1) * HAK_SIZEOF(hak_uch_t)); + if (HAK_UNLIKELY(!ptr)) return HAK_NULL; - hcl_copy_uchars (ptr, ucs, ucslen); + hak_copy_uchars (ptr, ucs, ucslen); ptr[ucslen] = '\0'; return ptr; } -hcl_bch_t* hcl_dupbchars (hcl_t* hcl, const hcl_bch_t* bcs, hcl_oow_t bcslen) +hak_bch_t* hak_dupbchars (hak_t* hak, const hak_bch_t* bcs, hak_oow_t bcslen) { - hcl_bch_t* ptr; + hak_bch_t* ptr; - ptr = (hcl_bch_t*)hcl_allocmem(hcl, (bcslen + 1) * HCL_SIZEOF(hcl_bch_t)); - if (HCL_UNLIKELY(!ptr)) return HCL_NULL; + ptr = (hak_bch_t*)hak_allocmem(hak, (bcslen + 1) * HAK_SIZEOF(hak_bch_t)); + if (HAK_UNLIKELY(!ptr)) return HAK_NULL; - hcl_copy_bchars (ptr, bcs, bcslen); + hak_copy_bchars (ptr, bcs, bcslen); ptr[bcslen] = '\0'; return ptr; } -hcl_uch_t* hcl_dupucstr (hcl_t* hcl, const hcl_uch_t* ucs, hcl_oow_t* ucslen) +hak_uch_t* hak_dupucstr (hak_t* hak, const hak_uch_t* ucs, hak_oow_t* ucslen) { - hcl_oow_t len; - hcl_uch_t* ptr; + hak_oow_t len; + hak_uch_t* ptr; - len = hcl_count_ucstr(ucs); - ptr = hcl_dupuchars(hcl, ucs, len); - if (HCL_UNLIKELY(!ptr)) return HCL_NULL; + len = hak_count_ucstr(ucs); + ptr = hak_dupuchars(hak, ucs, len); + if (HAK_UNLIKELY(!ptr)) return HAK_NULL; if (ucslen) *ucslen = len; return ptr; } -hcl_bch_t* hcl_dupbcstr (hcl_t* hcl, const hcl_bch_t* bcs, hcl_oow_t* bcslen) +hak_bch_t* hak_dupbcstr (hak_t* hak, const hak_bch_t* bcs, hak_oow_t* bcslen) { - hcl_oow_t len; - hcl_bch_t* ptr; + hak_oow_t len; + hak_bch_t* ptr; - len = hcl_count_bcstr(bcs); - ptr = hcl_dupbchars(hcl, bcs, len); - if (HCL_UNLIKELY(!ptr)) return HCL_NULL; + len = hak_count_bcstr(bcs); + ptr = hak_dupbchars(hak, bcs, len); + if (HAK_UNLIKELY(!ptr)) return HAK_NULL; if (bcslen) *bcslen = len; return ptr; @@ -279,19 +279,19 @@ hcl_bch_t* hcl_dupbcstr (hcl_t* hcl, const hcl_bch_t* bcs, hcl_oow_t* bcslen) /* ----------------------------------------------------------------------- */ -void hcl_add_ntime (hcl_ntime_t* z, const hcl_ntime_t* x, const hcl_ntime_t* y) +void hak_add_ntime (hak_ntime_t* z, const hak_ntime_t* x, const hak_ntime_t* y) { - hcl_ntime_sec_t xs, ys; - hcl_ntime_nsec_t ns; + hak_ntime_sec_t xs, ys; + hak_ntime_nsec_t ns; - /*HCL_ASSERT (x->nsec >= 0 && x->nsec < HCL_NSECS_PER_SEC); - HCL_ASSERT (y->nsec >= 0 && y->nsec < HCL_NSECS_PER_SEC);*/ + /*HAK_ASSERT (x->nsec >= 0 && x->nsec < HAK_NSECS_PER_SEC); + HAK_ASSERT (y->nsec >= 0 && y->nsec < HAK_NSECS_PER_SEC);*/ ns = x->nsec + y->nsec; - if (ns >= HCL_NSECS_PER_SEC) + if (ns >= HAK_NSECS_PER_SEC) { - ns = ns - HCL_NSECS_PER_SEC; - if (x->sec == HCL_TYPE_MAX(hcl_ntime_sec_t)) + ns = ns - HAK_NSECS_PER_SEC; + if (x->sec == HAK_TYPE_MAX(hak_ntime_sec_t)) { if (y->sec >= 0) goto overflow; xs = x->sec; @@ -309,18 +309,18 @@ void hcl_add_ntime (hcl_ntime_t* z, const hcl_ntime_t* x, const hcl_ntime_t* y) ys = y->sec; } - if ((ys >= 1 && xs > HCL_TYPE_MAX(hcl_ntime_sec_t) - ys) || - (ys <= -1 && xs < HCL_TYPE_MIN(hcl_ntime_sec_t) - ys)) + if ((ys >= 1 && xs > HAK_TYPE_MAX(hak_ntime_sec_t) - ys) || + (ys <= -1 && xs < HAK_TYPE_MIN(hak_ntime_sec_t) - ys)) { if (xs >= 0) { overflow: - xs = HCL_TYPE_MAX(hcl_ntime_sec_t); - ns = HCL_NSECS_PER_SEC - 1; + xs = HAK_TYPE_MAX(hak_ntime_sec_t); + ns = HAK_NSECS_PER_SEC - 1; } else { - xs = HCL_TYPE_MIN(hcl_ntime_sec_t); + xs = HAK_TYPE_MIN(hak_ntime_sec_t); ns = 0; } } @@ -333,19 +333,19 @@ void hcl_add_ntime (hcl_ntime_t* z, const hcl_ntime_t* x, const hcl_ntime_t* y) z->nsec = ns; } -void hcl_sub_ntime (hcl_ntime_t* z, const hcl_ntime_t* x, const hcl_ntime_t* y) +void hak_sub_ntime (hak_ntime_t* z, const hak_ntime_t* x, const hak_ntime_t* y) { - hcl_ntime_sec_t xs, ys; - hcl_ntime_nsec_t ns; + hak_ntime_sec_t xs, ys; + hak_ntime_nsec_t ns; - /*HCL_ASSERT (x->nsec >= 0 && x->nsec < HCL_NSECS_PER_SEC); - HCL_ASSERT (y->nsec >= 0 && y->nsec < HCL_NSECS_PER_SEC);*/ + /*HAK_ASSERT (x->nsec >= 0 && x->nsec < HAK_NSECS_PER_SEC); + HAK_ASSERT (y->nsec >= 0 && y->nsec < HAK_NSECS_PER_SEC);*/ ns = x->nsec - y->nsec; if (ns < 0) { - ns = ns + HCL_NSECS_PER_SEC; - if (x->sec == HCL_TYPE_MIN(hcl_ntime_sec_t)) + ns = ns + HAK_NSECS_PER_SEC; + if (x->sec == HAK_TYPE_MIN(hak_ntime_sec_t)) { if (y->sec <= 0) goto underflow; xs = x->sec; @@ -363,18 +363,18 @@ void hcl_sub_ntime (hcl_ntime_t* z, const hcl_ntime_t* x, const hcl_ntime_t* y) ys = y->sec; } - if ((ys >= 1 && xs < HCL_TYPE_MIN(hcl_ntime_sec_t) + ys) || - (ys <= -1 && xs > HCL_TYPE_MAX(hcl_ntime_sec_t) + ys)) + if ((ys >= 1 && xs < HAK_TYPE_MIN(hak_ntime_sec_t) + ys) || + (ys <= -1 && xs > HAK_TYPE_MAX(hak_ntime_sec_t) + ys)) { if (xs >= 0) { - xs = HCL_TYPE_MAX(hcl_ntime_sec_t); - ns = HCL_NSECS_PER_SEC - 1; + xs = HAK_TYPE_MAX(hak_ntime_sec_t); + ns = HAK_NSECS_PER_SEC - 1; } else { underflow: - xs = HCL_TYPE_MIN(hcl_ntime_sec_t); + xs = HAK_TYPE_MIN(hak_ntime_sec_t); ns = 0; } } @@ -389,26 +389,26 @@ void hcl_sub_ntime (hcl_ntime_t* z, const hcl_ntime_t* x, const hcl_ntime_t* y) /* ----------------------------------------------------------------------- */ -const hcl_bch_t* hcl_get_base_name_from_bcstr_path (const hcl_bch_t* path) +const hak_bch_t* hak_get_base_name_from_bcstr_path (const hak_bch_t* path) { - const hcl_bch_t* p, * last = HCL_NULL; + const hak_bch_t* p, * last = HAK_NULL; for (p = path; *p != '\0'; p++) { - if (HCL_IS_PATH_SEP(*p)) last = p; + if (HAK_IS_PATH_SEP(*p)) last = p; } - return (last == HCL_NULL)? path: (last + 1); + return (last == HAK_NULL)? path: (last + 1); } -const hcl_uch_t* hcl_get_base_name_from_ucstr_path (const hcl_uch_t* path) +const hak_uch_t* hak_get_base_name_from_ucstr_path (const hak_uch_t* path) { - const hcl_uch_t* p, * last = HCL_NULL; + const hak_uch_t* p, * last = HAK_NULL; for (p = path; *p != '\0'; p++) { - if (HCL_IS_PATH_SEP(*p)) last = p; + if (HAK_IS_PATH_SEP(*p)) last = p; } - return (last == HCL_NULL)? path: (last + 1); + return (last == HAK_NULL)? path: (last + 1); } diff --git a/lib/x-client.c b/lib/x-client.c index 9b345fc..454062e 100644 --- a/lib/x-client.c +++ b/lib/x-client.c @@ -23,17 +23,17 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include -#include "hcl-prv.h" +#include +#include +#include "hak-prv.h" #include #include #include -#define HCL_SERVER_TOKEN_NAME_ALIGN 64 -#define HCL_SERVER_WID_MAP_ALIGN 512 -#define HCL_XPROTO_REPLY_BUF_SIZE 1300 +#define HAK_SERVER_TOKEN_NAME_ALIGN 64 +#define HAK_SERVER_WID_MAP_ALIGN 512 +#define HAK_XPROTO_REPLY_BUF_SIZE 1300 #if defined(_WIN32) # include @@ -67,11 +67,11 @@ # include #endif -struct client_hcl_xtn_t +struct client_hak_xtn_t { - hcl_client_t* client; + hak_client_t* client; }; -typedef struct client_hcl_xtn_t client_hcl_xtn_t; +typedef struct client_hak_xtn_t client_hak_xtn_t; enum state_flag_t { @@ -79,36 +79,36 @@ enum state_flag_t STATE_LOCAL_OUT_CLOSED = (1 << 1), STATE_REMOTE_IN_CLOSED = (1 << 2), - HCL_CLIENT_ALL_CLOSED = (STATE_LOCAL_IN_CLOSED | STATE_LOCAL_OUT_CLOSED | STATE_REMOTE_IN_CLOSED) + HAK_CLIENT_ALL_CLOSED = (STATE_LOCAL_IN_CLOSED | STATE_LOCAL_OUT_CLOSED | STATE_REMOTE_IN_CLOSED) }; typedef enum state_flag_t state_flag_t; -struct hcl_client_t +struct hak_client_t { - hcl_oow_t _instsize; - hcl_mmgr_t* _mmgr; - hcl_cmgr_t* _cmgr; + hak_oow_t _instsize; + hak_mmgr_t* _mmgr; + hak_cmgr_t* _cmgr; - hcl_client_prim_t prim; - hcl_t* dummy_hcl; + hak_client_prim_t prim; + hak_t* dummy_hak; - hcl_errnum_t errnum; + hak_errnum_t errnum; struct { - #if defined(HCL_OOCH_IS_BCH) - hcl_uch_t xerrmsg[HCL_ERRMSG_CAPA]; + #if defined(HAK_OOCH_IS_BCH) + hak_uch_t xerrmsg[HAK_ERRMSG_CAPA]; #else - hcl_bch_t xerrmsg[HCL_ERRMSG_CAPA * 2]; + hak_bch_t xerrmsg[HAK_ERRMSG_CAPA * 2]; #endif - hcl_ooch_t buf[HCL_ERRMSG_CAPA]; - hcl_oow_t len; + hak_ooch_t buf[HAK_ERRMSG_CAPA]; + hak_oow_t len; } errmsg; int stopreq; struct { - hcl_bitmask_t trait; - hcl_bitmask_t logmask; + hak_bitmask_t trait; + hak_bitmask_t logmask; } cfg; int mux_pipe[2]; /* pipe to break the blocking multiplexer in the main server loop */ @@ -117,7 +117,7 @@ struct hcl_client_t struct { int sck; - hcl_xproto_t* proto; + hak_xproto_t* proto; } remote; struct @@ -128,73 +128,73 @@ struct hcl_client_t struct { - hcl_uint8_t* ptr; - hcl_oow_t capa; - hcl_oow_t pos; - hcl_oow_t len; + hak_uint8_t* ptr; + hak_oow_t capa; + hak_oow_t pos; + hak_oow_t len; } pw2r; /* pending write to the remote side */ } local; struct { - hcl_bch_t buf[4096]; - hcl_oow_t pos; - hcl_oow_t len; + hak_bch_t buf[4096]; + hak_oow_t pos; + hak_oow_t len; } script; }; /* ========================================================================= */ -static void client_log_write_for_dummy (hcl_t* hcl, hcl_bitmask_t mask, const hcl_ooch_t* msg, hcl_oow_t len) +static void client_log_write_for_dummy (hak_t* hak, hak_bitmask_t mask, const hak_ooch_t* msg, hak_oow_t len) { - client_hcl_xtn_t* xtn = (client_hcl_xtn_t*)hcl_getxtn(hcl); - hcl_client_t* client; + client_hak_xtn_t* xtn = (client_hak_xtn_t*)hak_getxtn(hak); + hak_client_t* client; client = xtn->client; client->prim.log_write (client, mask, msg, len); } -hcl_client_t* hcl_client_open (hcl_mmgr_t* mmgr, hcl_oow_t xtnsize, hcl_client_prim_t* prim, hcl_errnum_t* errnum) +hak_client_t* hak_client_open (hak_mmgr_t* mmgr, hak_oow_t xtnsize, hak_client_prim_t* prim, hak_errnum_t* errnum) { - hcl_client_t* client = HCL_NULL; - hcl_t* hcl = HCL_NULL; - client_hcl_xtn_t* xtn; + hak_client_t* client = HAK_NULL; + hak_t* hak = HAK_NULL; + client_hak_xtn_t* xtn; int pfd[2]; - client = (hcl_client_t*)HCL_MMGR_ALLOC(mmgr, HCL_SIZEOF(*client) + xtnsize); - if (HCL_UNLIKELY(!client)) + client = (hak_client_t*)HAK_MMGR_ALLOC(mmgr, HAK_SIZEOF(*client) + xtnsize); + if (HAK_UNLIKELY(!client)) { - if (errnum) *errnum = HCL_ESYSMEM; - return HCL_NULL; + if (errnum) *errnum = HAK_ESYSMEM; + return HAK_NULL; } - hcl = hcl_openstdwithmmgr(mmgr, HCL_SIZEOF(*xtn), errnum); - if (HCL_UNLIKELY(!hcl)) + hak = hak_openstdwithmmgr(mmgr, HAK_SIZEOF(*xtn), errnum); + if (HAK_UNLIKELY(!hak)) { - HCL_MMGR_FREE (mmgr, client); - return HCL_NULL; + HAK_MMGR_FREE (mmgr, client); + return HAK_NULL; } - if (hcl_sys_open_pipes(pfd, 1) <= -1) + if (hak_sys_open_pipes(pfd, 1) <= -1) { - if (errnum) *errnum = hcl->vmprim.syserrstrb(hcl, 0, errno, HCL_NULL, 0); + if (errnum) *errnum = hak->vmprim.syserrstrb(hak, 0, errno, HAK_NULL, 0); goto oops; } /* replace the vmprim.log_write function */ - hcl->vmprim.log_write = client_log_write_for_dummy; + hak->vmprim.log_write = client_log_write_for_dummy; - xtn = (client_hcl_xtn_t*)hcl_getxtn(hcl); + xtn = (client_hak_xtn_t*)hak_getxtn(hak); xtn->client = client; - HCL_MEMSET (client, 0, HCL_SIZEOF(*client) + xtnsize); - client->_instsize = HCL_SIZEOF(*client); + HAK_MEMSET (client, 0, HAK_SIZEOF(*client) + xtnsize); + client->_instsize = HAK_SIZEOF(*client); client->_mmgr = mmgr; - client->_cmgr = hcl_get_utf8_cmgr(); + client->_cmgr = hak_get_utf8_cmgr(); client->prim = *prim; - client->dummy_hcl = hcl; + client->dummy_hak = hak; client->mux_pipe[0] = pfd[0]; client->mux_pipe[1] = pfd[1]; client->remote.sck = -1; @@ -202,21 +202,21 @@ hcl_client_t* hcl_client_open (hcl_mmgr_t* mmgr, hcl_oow_t xtnsize, hcl_client_p client->local.out = -1; client->local.err = -1; - client->cfg.logmask = ~(hcl_bitmask_t)0; + client->cfg.logmask = ~(hak_bitmask_t)0; - /* the dummy hcl is used for this client to perform primitive operations + /* the dummy hak is used for this client to perform primitive operations * such as getting system time or logging. so the heap size doesn't * need to be changed from the tiny value set above. */ - hcl_setoption (client->dummy_hcl, HCL_LOG_MASK, &client->cfg.logmask); - hcl_setcmgr (client->dummy_hcl, client->_cmgr); + hak_setoption (client->dummy_hak, HAK_LOG_MASK, &client->cfg.logmask); + hak_setcmgr (client->dummy_hak, client->_cmgr); return client; oops: /* NOTE: pipe should be closed if jump to here is made after pipe() above */ - if (hcl) hcl_close (hcl); - if (client) HCL_MMGR_FREE (mmgr, client); - return HCL_NULL; + if (hak) hak_close (hak); + if (client) HAK_MMGR_FREE (mmgr, client); + return HAK_NULL; } static int is_stdio_fd (int fd) @@ -224,261 +224,261 @@ static int is_stdio_fd (int fd) return fd == STDIN_FILENO || fd == STDOUT_FILENO || fd == STDERR_FILENO; } -void hcl_client_close (hcl_client_t* client) +void hak_client_close (hak_client_t* client) { - if (client->remote.proto) hcl_xproto_close (client->remote.proto); + if (client->remote.proto) hak_xproto_close (client->remote.proto); if (client->remote.sck >= 0) close (client->remote.sck); if (client->local.in >= 0 && is_stdio_fd(client->local.in)) close (client->local.in); if (client->local.out >= 0 && is_stdio_fd(client->local.out)) close (client->local.out); if (client->local.err >= 0 && is_stdio_fd(client->local.err)) close (client->local.err); - hcl_sys_close_pipes(client->mux_pipe); - hcl_close (client->dummy_hcl); - HCL_MMGR_FREE (client->_mmgr, client); + hak_sys_close_pipes(client->mux_pipe); + hak_close (client->dummy_hak); + HAK_MMGR_FREE (client->_mmgr, client); } -int hcl_client_setoption (hcl_client_t* client, hcl_client_option_t id, const void* value) +int hak_client_setoption (hak_client_t* client, hak_client_option_t id, const void* value) { switch (id) { - case HCL_CLIENT_TRAIT: - client->cfg.trait = *(const hcl_bitmask_t*)value; + case HAK_CLIENT_TRAIT: + client->cfg.trait = *(const hak_bitmask_t*)value; return 0; - case HCL_CLIENT_LOG_MASK: - client->cfg.logmask = *(const hcl_bitmask_t*)value; - if (client->dummy_hcl) + case HAK_CLIENT_LOG_MASK: + client->cfg.logmask = *(const hak_bitmask_t*)value; + if (client->dummy_hak) { - /* setting this affects the dummy hcl immediately. - * existing hcl instances inside worker threads won't get - * affected. new hcl instances to be created later + /* setting this affects the dummy hak immediately. + * existing hak instances inside worker threads won't get + * affected. new hak instances to be created later * is supposed to use the new value */ - hcl_setoption (client->dummy_hcl, HCL_LOG_MASK, value); + hak_setoption (client->dummy_hak, HAK_LOG_MASK, value); } return 0; } - hcl_client_seterrnum (client, HCL_EINVAL); + hak_client_seterrnum (client, HAK_EINVAL); return -1; } -int hcl_client_getoption (hcl_client_t* client, hcl_client_option_t id, void* value) +int hak_client_getoption (hak_client_t* client, hak_client_option_t id, void* value) { switch (id) { - case HCL_CLIENT_TRAIT: - *(hcl_bitmask_t*)value = client->cfg.trait; + case HAK_CLIENT_TRAIT: + *(hak_bitmask_t*)value = client->cfg.trait; return 0; - case HCL_CLIENT_LOG_MASK: - *(hcl_bitmask_t*)value = client->cfg.logmask; + case HAK_CLIENT_LOG_MASK: + *(hak_bitmask_t*)value = client->cfg.logmask; return 0; }; - hcl_client_seterrnum (client, HCL_EINVAL); + hak_client_seterrnum (client, HAK_EINVAL); return -1; } -void* hcl_client_getxtn (hcl_client_t* client) +void* hak_client_getxtn (hak_client_t* client) { - return (void*)((hcl_uint8_t*)client + client->_instsize); + return (void*)((hak_uint8_t*)client + client->_instsize); } -hcl_mmgr_t* hcl_client_getmmgr (hcl_client_t* client) +hak_mmgr_t* hak_client_getmmgr (hak_client_t* client) { return client->_mmgr; } -hcl_cmgr_t* hcl_client_getcmgr (hcl_client_t* client) +hak_cmgr_t* hak_client_getcmgr (hak_client_t* client) { return client->_cmgr; } -void hcl_client_setcmgr (hcl_client_t* client, hcl_cmgr_t* cmgr) +void hak_client_setcmgr (hak_client_t* client, hak_cmgr_t* cmgr) { client->_cmgr = cmgr; } -hcl_errnum_t hcl_client_geterrnum (hcl_client_t* client) +hak_errnum_t hak_client_geterrnum (hak_client_t* client) { return client->errnum; } -const hcl_ooch_t* hcl_client_geterrstr (hcl_client_t* client) +const hak_ooch_t* hak_client_geterrstr (hak_client_t* client) { - return hcl_errnum_to_errstr(client->errnum); + return hak_errnum_to_errstr(client->errnum); } -const hcl_ooch_t* hcl_client_geterrmsg (hcl_client_t* client) +const hak_ooch_t* hak_client_geterrmsg (hak_client_t* client) { - if (client->errmsg.len <= 0) return hcl_errnum_to_errstr(client->errnum); + if (client->errmsg.len <= 0) return hak_errnum_to_errstr(client->errnum); return client->errmsg.buf; } -const hcl_bch_t* hcl_client_geterrbmsg (hcl_client_t* client) +const hak_bch_t* hak_client_geterrbmsg (hak_client_t* client) { -#if defined(HCL_OOCH_IS_BCH) - return (client->errmsg.len <= 0)? hcl_errnum_to_errstr(client->errnum): client->errmsg.buf; +#if defined(HAK_OOCH_IS_BCH) + return (client->errmsg.len <= 0)? hak_errnum_to_errstr(client->errnum): client->errmsg.buf; #else - const hcl_ooch_t* msg; - hcl_oow_t wcslen, mbslen; + const hak_ooch_t* msg; + hak_oow_t wcslen, mbslen; - msg = (client->errmsg.len <= 0)? hcl_errnum_to_errstr(client->errnum): client->errmsg.buf; + msg = (client->errmsg.len <= 0)? hak_errnum_to_errstr(client->errnum): client->errmsg.buf; - mbslen = HCL_COUNTOF(client->errmsg.xerrmsg); - hcl_conv_ucstr_to_bcstr_with_cmgr (msg, &wcslen, client->errmsg.xerrmsg, &mbslen, client->_cmgr); + mbslen = HAK_COUNTOF(client->errmsg.xerrmsg); + hak_conv_ucstr_to_bcstr_with_cmgr (msg, &wcslen, client->errmsg.xerrmsg, &mbslen, client->_cmgr); return client->errmsg.xerrmsg; #endif } -const hcl_uch_t* hcl_client_geterrumsg (hcl_client_t* client) +const hak_uch_t* hak_client_geterrumsg (hak_client_t* client) { -#if defined(HCL_OOCH_IS_BCH) - const hcl_ooch_t* msg; - hcl_oow_t wcslen, mbslen; +#if defined(HAK_OOCH_IS_BCH) + const hak_ooch_t* msg; + hak_oow_t wcslen, mbslen; - msg = (client->errmsg.len <= 0)? hcl_errnum_to_errstr(client->errnum): client->errmsg.buf; + msg = (client->errmsg.len <= 0)? hak_errnum_to_errstr(client->errnum): client->errmsg.buf; - wcslen = HCL_COUNTOF(client->errmsg.xerrmsg); - hcl_conv_bcstr_to_ucstr_with_cmgr (msg, &mbslen, client->errmsg.xerrmsg, &wcslen, client->_cmgr, 1); + wcslen = HAK_COUNTOF(client->errmsg.xerrmsg); + hak_conv_bcstr_to_ucstr_with_cmgr (msg, &mbslen, client->errmsg.xerrmsg, &wcslen, client->_cmgr, 1); return client->errmsg.xerrmsg; #else - return (client->errmsg.len == '\0')? hcl_errnum_to_errstr(client->errnum): client->errmsg.buf; + return (client->errmsg.len == '\0')? hak_errnum_to_errstr(client->errnum): client->errmsg.buf; #endif } -void hcl_client_seterrnum (hcl_client_t* client, hcl_errnum_t errnum) +void hak_client_seterrnum (hak_client_t* client, hak_errnum_t errnum) { /*if (client->shuterr) return; */ client->errnum = errnum; client->errmsg.len = 0; } -void hcl_client_seterrbfmt (hcl_client_t* client, hcl_errnum_t errnum, const hcl_bch_t* fmt, ...) +void hak_client_seterrbfmt (hak_client_t* client, hak_errnum_t errnum, const hak_bch_t* fmt, ...) { va_list ap; va_start (ap, fmt); - hcl_seterrbfmtv (client->dummy_hcl, errnum, fmt, ap); + hak_seterrbfmtv (client->dummy_hak, errnum, fmt, ap); va_end (ap); - HCL_ASSERT (client->dummy_hcl, HCL_COUNTOF(client->errmsg.buf) == HCL_COUNTOF(client->dummy_hcl->errmsg.buf)); + HAK_ASSERT (client->dummy_hak, HAK_COUNTOF(client->errmsg.buf) == HAK_COUNTOF(client->dummy_hak->errmsg.buf)); client->errnum = errnum; - hcl_copy_oochars (client->errmsg.buf, client->dummy_hcl->errmsg.buf, HCL_COUNTOF(client->errmsg.buf)); - client->errmsg.len = client->dummy_hcl->errmsg.len; + hak_copy_oochars (client->errmsg.buf, client->dummy_hak->errmsg.buf, HAK_COUNTOF(client->errmsg.buf)); + client->errmsg.len = client->dummy_hak->errmsg.len; } -void hcl_client_seterrufmt (hcl_client_t* client, hcl_errnum_t errnum, const hcl_uch_t* fmt, ...) +void hak_client_seterrufmt (hak_client_t* client, hak_errnum_t errnum, const hak_uch_t* fmt, ...) { va_list ap; va_start (ap, fmt); - hcl_seterrufmtv (client->dummy_hcl, errnum, fmt, ap); + hak_seterrufmtv (client->dummy_hak, errnum, fmt, ap); va_end (ap); - HCL_ASSERT (client->dummy_hcl, HCL_COUNTOF(client->errmsg.buf) == HCL_COUNTOF(client->dummy_hcl->errmsg.buf)); + HAK_ASSERT (client->dummy_hak, HAK_COUNTOF(client->errmsg.buf) == HAK_COUNTOF(client->dummy_hak->errmsg.buf)); client->errnum = errnum; - hcl_copy_oochars (client->errmsg.buf, client->dummy_hcl->errmsg.buf, HCL_COUNTOF(client->errmsg.buf)); - client->errmsg.len = client->dummy_hcl->errmsg.len; + hak_copy_oochars (client->errmsg.buf, client->dummy_hak->errmsg.buf, HAK_COUNTOF(client->errmsg.buf)); + client->errmsg.len = client->dummy_hak->errmsg.len; } /* ========================================================================= */ -void hcl_client_logbfmt (hcl_client_t* client, hcl_bitmask_t mask, const hcl_bch_t* fmt, ...) +void hak_client_logbfmt (hak_client_t* client, hak_bitmask_t mask, const hak_bch_t* fmt, ...) { va_list ap; va_start (ap, fmt); - hcl_logbfmtv (client->dummy_hcl, mask, fmt, ap); + hak_logbfmtv (client->dummy_hak, mask, fmt, ap); va_end (ap); } -void hcl_client_logufmt (hcl_client_t* client, hcl_bitmask_t mask, const hcl_uch_t* fmt, ...) +void hak_client_logufmt (hak_client_t* client, hak_bitmask_t mask, const hak_uch_t* fmt, ...) { va_list ap; va_start (ap, fmt); - hcl_logufmtv (client->dummy_hcl, mask, fmt, ap); + hak_logufmtv (client->dummy_hak, mask, fmt, ap); va_end (ap); } /* ========================================================================= */ -void* hcl_client_allocmem (hcl_client_t* client, hcl_oow_t size) +void* hak_client_allocmem (hak_client_t* client, hak_oow_t size) { void* ptr; - ptr = HCL_MMGR_ALLOC(client->_mmgr, size); - if (!ptr) hcl_client_seterrnum (client, HCL_ESYSMEM); + ptr = HAK_MMGR_ALLOC(client->_mmgr, size); + if (!ptr) hak_client_seterrnum (client, HAK_ESYSMEM); return ptr; } -void* hcl_client_callocmem (hcl_client_t* client, hcl_oow_t size) +void* hak_client_callocmem (hak_client_t* client, hak_oow_t size) { void* ptr; - ptr = HCL_MMGR_ALLOC(client->_mmgr, size); - if (!ptr) hcl_client_seterrnum (client, HCL_ESYSMEM); - else HCL_MEMSET (ptr, 0, size); + ptr = HAK_MMGR_ALLOC(client->_mmgr, size); + if (!ptr) hak_client_seterrnum (client, HAK_ESYSMEM); + else HAK_MEMSET (ptr, 0, size); return ptr; } -void* hcl_client_reallocmem (hcl_client_t* client, void* ptr, hcl_oow_t size) +void* hak_client_reallocmem (hak_client_t* client, void* ptr, hak_oow_t size) { - ptr = HCL_MMGR_REALLOC(client->_mmgr, ptr, size); - if (!ptr) hcl_client_seterrnum (client, HCL_ESYSMEM); + ptr = HAK_MMGR_REALLOC(client->_mmgr, ptr, size); + if (!ptr) hak_client_seterrnum (client, HAK_ESYSMEM); return ptr; } -void hcl_client_freemem (hcl_client_t* client, void* ptr) +void hak_client_freemem (hak_client_t* client, void* ptr) { - HCL_MMGR_FREE (client->_mmgr, ptr); + HAK_MMGR_FREE (client->_mmgr, ptr); } /* ========================================================================= */ struct proto_xtn_t { - hcl_client_t* client; + hak_client_t* client; }; typedef struct proto_xtn_t proto_xtn_t; -static int proto_on_packet (hcl_xproto_t* proto, hcl_xpkt_type_t type, const void* data, hcl_oow_t len) +static int proto_on_packet (hak_xproto_t* proto, hak_xpkt_type_t type, const void* data, hak_oow_t len) { proto_xtn_t* proto_xtn; - hcl_client_t* client; - proto_xtn = hcl_xproto_getxtn(proto); + hak_client_t* client; + proto_xtn = hak_xproto_getxtn(proto); client = proto_xtn->client; return client->prim.on_packet(client, type, data, len); } -static int client_connect_to_server (hcl_client_t* client, const char* ipaddr) +static int client_connect_to_server (hak_client_t* client, const char* ipaddr) { - hcl_sckaddr_t sckaddr; - hcl_scklen_t scklen; + hak_sckaddr_t sckaddr; + hak_scklen_t scklen; int sckfam; int sck = -1; - hcl_xproto_t* proto = HCL_NULL; + hak_xproto_t* proto = HAK_NULL; proto_xtn_t* proto_xtn; - hcl_xproto_cb_t proto_cb; + hak_xproto_cb_t proto_cb; - sckfam = hcl_bchars_to_sckaddr(ipaddr, strlen(ipaddr), &sckaddr, &scklen); + sckfam = hak_bchars_to_sckaddr(ipaddr, strlen(ipaddr), &sckaddr, &scklen); if (sckfam <= -1) { - hcl_client_seterrbfmt (client, HCL_EINVAL, "cannot convert ip address - %hs", ipaddr); + hak_client_seterrbfmt (client, HAK_EINVAL, "cannot convert ip address - %hs", ipaddr); goto oops; } sck = socket(sckfam, SOCK_STREAM, 0); if (sck <= -1) { - hcl_client_seterrbfmt (client, HCL_ESYSERR, "cannot create socket - %hs", strerror(errno)); + hak_client_seterrbfmt (client, HAK_ESYSERR, "cannot create socket - %hs", strerror(errno)); goto oops; } - hcl_sys_set_cloexec(sck, 1); + hak_sys_set_cloexec(sck, 1); #if 0 if (sckfam == AF_INET) @@ -486,11 +486,11 @@ static int client_connect_to_server (hcl_client_t* client, const char* ipaddr) struct sockaddr_in anyaddr; int opt = 1; setsockopt(sck, SOL_SOCKET, SO_REUSEADDR, (char *)&opt, sizeof(opt)); - HCL_MEMSET (&anyaddr, 0, HCL_SIZEOF(anyaddr)); + HAK_MEMSET (&anyaddr, 0, HAK_SIZEOF(anyaddr)); anyaddr.sin_family = sckfam; if (bind(sck, (struct sockaddr *)&anyaddr, scklen) <= -1) { - hcl_client_seterrbfmt (client, HCL_ESYSERR, + hak_client_seterrbfmt (client, HAK_ESYSERR, "cannot bind socket %d - %hs", sck, strerror(errno)); goto oops; } @@ -500,11 +500,11 @@ static int client_connect_to_server (hcl_client_t* client, const char* ipaddr) struct sockaddr_in6 anyaddr; int opt = 1; setsockopt(sck, SOL_SOCKET, SO_REUSEADDR, (char *)&opt, sizeof(opt)); - HCL_MEMSET (&anyaddr, 0, HCL_SIZEOF(anyaddr)); + HAK_MEMSET (&anyaddr, 0, HAK_SIZEOF(anyaddr)); anyaddr.sin6_family = sckfam; if (bind(sck, (struct sockaddr *)&anyaddr, scklen) <= -1) { - hcl_client_seterrbfmt (client, HCL_ESYSERR, + hak_client_seterrbfmt (client, HAK_ESYSERR, "cannot bind socket %d - %hs", sck, strerror(errno)); goto oops; } @@ -515,23 +515,23 @@ static int client_connect_to_server (hcl_client_t* client, const char* ipaddr) /* TODO: connect timeout */ if (connect(sck, (struct sockaddr*)&sckaddr, scklen) <= -1) { - hcl_client_seterrbfmt (client, HCL_ESYSERR, + hak_client_seterrbfmt (client, HAK_ESYSERR, "cannot connect socket %d to %hs - %hs", sck, ipaddr, strerror(errno)); goto oops; } - hcl_sys_set_nonblock(sck, 1); /* make it nonblocking after connection has been established */ + hak_sys_set_nonblock(sck, 1); /* make it nonblocking after connection has been established */ - HCL_MEMSET (&proto, 0, HCL_SIZEOF(proto_cb)); + HAK_MEMSET (&proto, 0, HAK_SIZEOF(proto_cb)); proto_cb.on_packet = proto_on_packet; - proto = hcl_xproto_open(hcl_client_getmmgr(client), &proto_cb, HCL_SIZEOF(*proto_xtn)); - if (HCL_UNLIKELY(!proto)) + proto = hak_xproto_open(hak_client_getmmgr(client), &proto_cb, HAK_SIZEOF(*proto_xtn)); + if (HAK_UNLIKELY(!proto)) { - hcl_client_seterrbfmt (client, HCL_ESYSERR, "cannot open protocol to %s", ipaddr); + hak_client_seterrbfmt (client, HAK_ESYSERR, "cannot open protocol to %s", ipaddr); goto oops; } - proto_xtn = hcl_xproto_getxtn(proto); + proto_xtn = hak_xproto_getxtn(proto); proto_xtn->client = client; client->remote.sck = sck; @@ -539,18 +539,18 @@ static int client_connect_to_server (hcl_client_t* client, const char* ipaddr) return 0; oops: - if (proto) hcl_xproto_close (proto); + if (proto) hak_xproto_close (proto); if (sck >= 0) close (sck); return -1; } -static void client_close (hcl_client_t* client) +static void client_close (hak_client_t* client) { if (client->remote.proto) { - hcl_xproto_close (client->remote.proto); - client->remote.proto = HCL_NULL; + hak_xproto_close (client->remote.proto); + client->remote.proto = HAK_NULL; } if (client->remote.sck >= 0) @@ -560,36 +560,36 @@ static void client_close (hcl_client_t* client) } } -static int client_add_to_local_pw2r (hcl_client_t* client, const hcl_uint8_t* ptr, hcl_oow_t len) +static int client_add_to_local_pw2r (hak_client_t* client, const hak_uint8_t* ptr, hak_oow_t len) { if (client->local.pw2r.len >= client->local.pw2r.capa) { - hcl_uint8_t* tmp; - hcl_oow_t newcapa; + hak_uint8_t* tmp; + hak_oow_t newcapa; - newcapa = HCL_ALIGN_POW2(client->local.pw2r.capa + len, 128); - tmp = hcl_client_reallocmem(client, client->local.pw2r.ptr, newcapa * HCL_SIZEOF(*client->local.pw2r.ptr)); - if (HCL_UNLIKELY(!tmp)) return -1; + newcapa = HAK_ALIGN_POW2(client->local.pw2r.capa + len, 128); + tmp = hak_client_reallocmem(client, client->local.pw2r.ptr, newcapa * HAK_SIZEOF(*client->local.pw2r.ptr)); + if (HAK_UNLIKELY(!tmp)) return -1; client->local.pw2r.capa = newcapa; client->local.pw2r.ptr = tmp; } - HCL_MEMCPY (&client->local.pw2r.ptr[client->local.pw2r.len], ptr, len); + HAK_MEMCPY (&client->local.pw2r.ptr[client->local.pw2r.len], ptr, len); client->local.pw2r.len += len; return 0; } -static int client_send_to_remote (hcl_client_t* client, hcl_xpkt_type_t pktype, const hcl_uint8_t* ptr, hcl_oow_t len) +static int client_send_to_remote (hak_client_t* client, hak_xpkt_type_t pktype, const hak_uint8_t* ptr, hak_oow_t len) { - hcl_xpkt_hdr_t hdr; + hak_xpkt_hdr_t hdr; struct iovec iov[2]; - hcl_uint16_t seglen; + hak_uint16_t seglen; int n, i; do { - seglen = (len > HCL_XPKT_MAX_PLD_LEN)? HCL_XPKT_MAX_PLD_LEN: len; + seglen = (len > HAK_XPKT_MAX_PLD_LEN)? HAK_XPKT_MAX_PLD_LEN: len; hdr.id = 1; /* TODO: */ hdr.type = pktype | (((seglen >> 8) & 0x0F) << 4); @@ -597,14 +597,14 @@ static int client_send_to_remote (hcl_client_t* client, hcl_xpkt_type_t pktype, i = 0; iov[i].iov_base = &hdr; - iov[i++].iov_len = HCL_SIZEOF(hdr); + iov[i++].iov_len = HAK_SIZEOF(hdr); if (seglen > 0) { iov[i].iov_base = ptr; iov[i++].iov_len = seglen; } - n = hcl_sys_send_iov(client->remote.sck, iov, i); + n = hak_sys_send_iov(client->remote.sck, iov, i); if (n <= -1) return -1; if (n < i || iov[n - 1].iov_len > 0) @@ -632,25 +632,25 @@ static int client_send_to_remote (hcl_client_t* client, hcl_xpkt_type_t pktype, /* ========================================================================= */ -static void on_control_event (hcl_client_t* client, struct pollfd* pfd) +static void on_control_event (hak_client_t* client, struct pollfd* pfd) { char tmp[128]; -hcl_client_logbfmt(client, HCL_LOG_STDERR, "ON CONTROL EVENT \n"); - while (read(client->mux_pipe[0], tmp, HCL_SIZEOF(tmp)) > 0) /* nothing */; +hak_client_logbfmt(client, HAK_LOG_STDERR, "ON CONTROL EVENT \n"); + while (read(client->mux_pipe[0], tmp, HAK_SIZEOF(tmp)) > 0) /* nothing */; /* TODO: handle different command? */ } -static void on_remote_event (hcl_client_t* client, struct pollfd* pfd, int shut_wr_after_req) +static void on_remote_event (hak_client_t* client, struct pollfd* pfd, int shut_wr_after_req) { -//hcl_client_logbfmt(client, HCL_LOG_STDERR, "ON REMOTE EVENT \n"); +//hak_client_logbfmt(client, HAK_LOG_STDERR, "ON REMOTE EVENT \n"); if (pfd->revents & POLLOUT) { ssize_t n; - hcl_oow_t len; + hak_oow_t len; len = client->local.pw2r.len - client->local.pw2r.pos; - n = hcl_sys_send(client->remote.sck, &client->local.pw2r.ptr[client->local.pw2r.pos], &len); + n = hak_sys_send(client->remote.sck, &client->local.pw2r.ptr[client->local.pw2r.pos], &len); client->local.pw2r.pos += len; if (client->local.pw2r.pos >= client->local.pw2r.len) { @@ -662,39 +662,39 @@ static void on_remote_event (hcl_client_t* client, struct pollfd* pfd, int shut_ if (n <= -1) { /* TODO: logging */ -hcl_client_logbfmt(client, HCL_LOG_STDERR, "send error - %hs\n", strerror(errno)); +hak_client_logbfmt(client, HAK_LOG_STDERR, "send error - %hs\n", strerror(errno)); goto reqstop; } } if (pfd->revents & POLLIN) { - hcl_oow_t bcap; - hcl_uint8_t* bptr; + hak_oow_t bcap; + hak_uint8_t* bptr; ssize_t x; - bptr = hcl_xproto_getbuf(client->remote.proto, &bcap);; + bptr = hak_xproto_getbuf(client->remote.proto, &bcap);; x = recv(client->remote.sck, bptr, bcap, 0); if (x <= -1) { if (errno == EINTR) goto carry_on; /* didn't read read */ -hcl_client_logbfmt(client, HCL_LOG_STDERR, "recv error from remote - %hs", strerror(errno)); - /*hcl_seterrwithsyserr (hcl, 0, errno); */ +hak_client_logbfmt(client, HAK_LOG_STDERR, "recv error from remote - %hs", strerror(errno)); + /*hak_seterrwithsyserr (hak, 0, errno); */ /* TODO: error info set... */ goto reqstop; } - if (x == 0) hcl_xproto_seteof(client->remote.proto, 1); - hcl_xproto_advbuf (client->remote.proto, x); + if (x == 0) hak_xproto_seteof(client->remote.proto, 1); + hak_xproto_advbuf (client->remote.proto, x); } carry_on: /* handle the data received from the remote side */ - while (hcl_xproto_ready(client->remote.proto)) + while (hak_xproto_ready(client->remote.proto)) { int n; - if ((n = hcl_xproto_process(client->remote.proto)) <= -1) + if ((n = hak_xproto_process(client->remote.proto)) <= -1) { /* TODO: proper error message */ printf ("PROTOCOL PROCESSING ERROR...\n"); @@ -708,7 +708,7 @@ carry_on: } } - if (hcl_xproto_geteof(client->remote.proto)) + if (hak_xproto_geteof(client->remote.proto)) { client->state |= STATE_REMOTE_IN_CLOSED; goto reqstop; @@ -720,43 +720,43 @@ reqstop: return; } -static void on_local_in_event (hcl_client_t* client, struct pollfd* pfd) +static void on_local_in_event (hak_client_t* client, struct pollfd* pfd) { ssize_t n; - hcl_uint8_t buf[128]; + hak_uint8_t buf[128]; -//hcl_client_logbfmt(client, HCL_LOG_STDERR, "local in on %d\n", pfd->fd); - n = read(pfd->fd, buf, HCL_SIZEOF(buf)); +//hak_client_logbfmt(client, HAK_LOG_STDERR, "local in on %d\n", pfd->fd); + n = read(pfd->fd, buf, HAK_SIZEOF(buf)); if (n <= -1) { - //if (hcl_sys_is_errno_wb(errno)) ... -hcl_client_logbfmt(client, HCL_LOG_STDERR, "local in read error - %hs\n", strerror(errno)); + //if (hak_sys_is_errno_wb(errno)) ... +hak_client_logbfmt(client, HAK_LOG_STDERR, "local in read error - %hs\n", strerror(errno)); client->stopreq = 1; } else if (n == 0) { -/*hcl_client_logbfmt(client, HCL_LOG_STDERR, "local in eof\n");*/ +/*hak_client_logbfmt(client, HAK_LOG_STDERR, "local in eof\n");*/ /* TODO ARRANGE TO FINISH.. AFTER EXUCTION OF REMAINING STUFF... */ //client->stopreq = 1; client->state |= STATE_LOCAL_IN_CLOSED; - n = client_send_to_remote(client, HCL_XPKT_EXECUTE, HCL_NULL, 0); + n = client_send_to_remote(client, HAK_XPKT_EXECUTE, HAK_NULL, 0); if (n <= -1) { -hcl_client_logbfmt(client, HCL_LOG_STDERR, "local to remote (execute)- %hs\n", strerror(errno)); +hak_client_logbfmt(client, HAK_LOG_STDERR, "local to remote (execute)- %hs\n", strerror(errno)); } } else { -/*hcl_client_logbfmt(client, HCL_LOG_STDERR, "local read - %ld\n", (long)n);*/ - n = client_send_to_remote(client, HCL_XPKT_CODE, buf, n); +/*hak_client_logbfmt(client, HAK_LOG_STDERR, "local read - %ld\n", (long)n);*/ + n = client_send_to_remote(client, HAK_XPKT_CODE, buf, n); if (n <= -1) { -hcl_client_logbfmt(client, HCL_LOG_STDERR, "local to remote (code)- %hs\n", strerror(errno)); +hak_client_logbfmt(client, HAK_LOG_STDERR, "local to remote (code)- %hs\n", strerror(errno)); } } } -static int client_setup_local(hcl_client_t* client) +static int client_setup_local(hak_client_t* client) { client->local.in = STDIN_FILENO; client->local.out = STDOUT_FILENO; @@ -764,29 +764,29 @@ static int client_setup_local(hcl_client_t* client) return 0; } -int hcl_client_start (hcl_client_t* client, const char* ipaddr, int shut_wr_after_req) +int hak_client_start (hak_client_t* client, const char* ipaddr, int shut_wr_after_req) { /* TODO: cin, cout, cerr could be actual files or something other than the console. the actual loop won't begin until all these file descriptors are ready */ client->stopreq = 0; if (client_setup_local(client) <= -1) return -1; -hcl_client_logbfmt(client, HCL_LOG_STDERR, "staritg XXXXXXXXXXX loop... ...\n"); +hak_client_logbfmt(client, HAK_LOG_STDERR, "staritg XXXXXXXXXXX loop... ...\n"); if (client_connect_to_server(client, ipaddr) <= -1) return -1; /* TODO: support time out or abort while connecting... */ -hcl_client_logbfmt(client, HCL_LOG_STDERR, "staritg client loop... ...\n"); +hak_client_logbfmt(client, HAK_LOG_STDERR, "staritg client loop... ...\n"); while (!client->stopreq) { int nfds, i; struct pollfd pfd[10]; - if ((client->state & HCL_CLIENT_ALL_CLOSED) == HCL_CLIENT_ALL_CLOSED) + if ((client->state & HAK_CLIENT_ALL_CLOSED) == HAK_CLIENT_ALL_CLOSED) { /* no explicit stop request. but all file descriptors reached EOF */ break; } - HCL_MEMSET (pfd, 0, HCL_SIZEOF(pfd)); + HAK_MEMSET (pfd, 0, HAK_SIZEOF(pfd)); nfds = 0; /* always monitor the control channel */ @@ -807,7 +807,7 @@ hcl_client_logbfmt(client, HCL_LOG_STDERR, "staritg client loop... ...\n"); { if (client->local.pw2r.pos >= client->local.pw2r.len) { -//hcl_client_logbfmt(client, HCL_LOG_STDERR, "ADDING LOCAL IN TO MULTIPLEX...\n"); +//hak_client_logbfmt(client, HAK_LOG_STDERR, "ADDING LOCAL IN TO MULTIPLEX...\n"); pfd[nfds].fd = client->local.in; pfd[nfds].events = POLLIN; pfd[nfds++].revents = 0; @@ -815,10 +815,10 @@ hcl_client_logbfmt(client, HCL_LOG_STDERR, "staritg client loop... ...\n"); } i = poll(pfd, nfds, 1000); -//hcl_client_logbfmt(client, HCL_LOG_STDERR, "poll returned %d\n", i); +//hak_client_logbfmt(client, HAK_LOG_STDERR, "poll returned %d\n", i); if (i <= -1) { - hcl_client_seterrbfmt (client, HCL_ESYSERR, "poll error - %hs", strerror(errno)); + hak_client_seterrbfmt (client, HAK_ESYSERR, "poll error - %hs", strerror(errno)); goto oops; } @@ -832,7 +832,7 @@ hcl_client_logbfmt(client, HCL_LOG_STDERR, "staritg client loop... ...\n"); { if (!pfd[i].revents) continue; -//hcl_client_logbfmt(client, HCL_LOG_STDERR, "EVENT ON %d mux[%d], remote[%d], local[%d]\n", pfd[i].fd, client->mux_pipe[0], client->remote.sck, client->local.in); +//hak_client_logbfmt(client, HAK_LOG_STDERR, "EVENT ON %d mux[%d], remote[%d], local[%d]\n", pfd[i].fd, client->mux_pipe[0], client->remote.sck, client->local.in); if (pfd[i].fd == client->mux_pipe[0]) { on_control_event (client, &pfd[i]); @@ -867,7 +867,7 @@ oops: return -1; } -void hcl_client_stop (hcl_client_t* client) +void hak_client_stop (hak_client_t* client) { client->stopreq = 1; write (client->mux_pipe[1], "Q", 1); /* don't care about failure */ diff --git a/lib/x-proto.c b/lib/x-proto.c index feb297d..33fcab6 100644 --- a/lib/x-proto.c +++ b/lib/x-proto.c @@ -22,37 +22,37 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include "hcl-prv.h" +#include +#include "hak-prv.h" -enum hcl_xproto_rcv_state_t +enum hak_xproto_rcv_state_t { - HCL_XPROTO_RCV_HDR, - HCL_XPROTO_RCV_PLD + HAK_XPROTO_RCV_HDR, + HAK_XPROTO_RCV_PLD }; -typedef enum hcl_xproto_rcv_state_t hcl_xproto_rcv_state_t; +typedef enum hak_xproto_rcv_state_t hak_xproto_rcv_state_t; -struct hcl_xproto_t +struct hak_xproto_t { - hcl_oow_t _instsize; - hcl_mmgr_t* _mmgr; - hcl_xproto_cb_t _cb; + hak_oow_t _instsize; + hak_mmgr_t* _mmgr; + hak_xproto_cb_t _cb; struct { - hcl_xproto_rcv_state_t state; - hcl_oow_t len_needed; + hak_xproto_rcv_state_t state; + hak_oow_t len_needed; unsigned int eof: 1; - hcl_oow_t len; - hcl_uint8_t buf[HCL_XPKT_MAX_PLD_LEN]; + hak_oow_t len; + hak_uint8_t buf[HAK_XPKT_MAX_PLD_LEN]; - /* normalize header of hcl_xpkt_hdr_t with combined bits into separate placeholders */ + /* normalize header of hak_xpkt_hdr_t with combined bits into separate placeholders */ struct { - hcl_uint8_t id; - hcl_uint8_t type; - hcl_uint16_t len; /* this is wider than the len field of hcl_xpkt_hdr_t */ + hak_uint8_t id; + hak_uint8_t type; + hak_uint16_t len; /* this is wider than the len field of hak_xpkt_hdr_t */ } hdr; } rcv; @@ -62,84 +62,84 @@ struct hcl_xproto_t } snd; }; -hcl_xproto_t* hcl_xproto_open (hcl_mmgr_t* mmgr, hcl_xproto_cb_t* cb, hcl_oow_t xtnsize) +hak_xproto_t* hak_xproto_open (hak_mmgr_t* mmgr, hak_xproto_cb_t* cb, hak_oow_t xtnsize) { - hcl_xproto_t* proto; + hak_xproto_t* proto; - proto = (hcl_xproto_t*)HCL_MMGR_ALLOC(mmgr, HCL_SIZEOF(*proto) + xtnsize); - if (HCL_UNLIKELY(!proto)) return HCL_NULL; + proto = (hak_xproto_t*)HAK_MMGR_ALLOC(mmgr, HAK_SIZEOF(*proto) + xtnsize); + if (HAK_UNLIKELY(!proto)) return HAK_NULL; - HCL_MEMSET (proto, 0, HCL_SIZEOF(*proto)); - proto->_instsize = HCL_SIZEOF(*proto); + HAK_MEMSET (proto, 0, HAK_SIZEOF(*proto)); + proto->_instsize = HAK_SIZEOF(*proto); proto->_mmgr = mmgr; proto->_cb = *cb; - proto->rcv.state = HCL_XPROTO_RCV_HDR; - proto->rcv.len_needed = HCL_XPKT_HDR_LEN; + proto->rcv.state = HAK_XPROTO_RCV_HDR; + proto->rcv.len_needed = HAK_XPKT_HDR_LEN; proto->rcv.eof = 0; return proto; } -void hcl_xproto_close (hcl_xproto_t* proto) +void hak_xproto_close (hak_xproto_t* proto) { - HCL_MMGR_FREE (proto->_mmgr, proto); + HAK_MMGR_FREE (proto->_mmgr, proto); } -void* hcl_xproto_getxtn (hcl_xproto_t* proto) +void* hak_xproto_getxtn (hak_xproto_t* proto) { return (proto + 1); } -hcl_uint8_t* hcl_xproto_getbuf (hcl_xproto_t* proto, hcl_oow_t* capa) +hak_uint8_t* hak_xproto_getbuf (hak_xproto_t* proto, hak_oow_t* capa) { - *capa = HCL_COUNTOF(proto->rcv.buf) - proto->rcv.len; + *capa = HAK_COUNTOF(proto->rcv.buf) - proto->rcv.len; return &proto->rcv.buf[proto->rcv.len]; } -int hcl_xproto_geteof (hcl_xproto_t* proto) +int hak_xproto_geteof (hak_xproto_t* proto) { return proto->rcv.eof; } -void hcl_xproto_seteof (hcl_xproto_t* proto, int v) +void hak_xproto_seteof (hak_xproto_t* proto, int v) { proto->rcv.eof = v; } -void hcl_xproto_advbuf (hcl_xproto_t* proto, hcl_oow_t inc) +void hak_xproto_advbuf (hak_xproto_t* proto, hak_oow_t inc) { proto->rcv.len += inc; } -int hcl_xproto_ready (hcl_xproto_t* proto) +int hak_xproto_ready (hak_xproto_t* proto) { /* has it received suffient data for processing? */ return proto->rcv.len >= proto->rcv.len_needed; } -int hcl_xproto_process (hcl_xproto_t* proto) +int hak_xproto_process (hak_xproto_t* proto) { int n; - hcl_xpkt_hdr_t* hdr; + hak_xpkt_hdr_t* hdr; switch (proto->rcv.state) { - case HCL_XPROTO_RCV_HDR: - if (proto->rcv.len < HCL_XPKT_HDR_LEN) goto carry_on; /* need more data */ + case HAK_XPROTO_RCV_HDR: + if (proto->rcv.len < HAK_XPKT_HDR_LEN) goto carry_on; /* need more data */ - hdr = (hcl_xpkt_hdr_t*)proto->rcv.buf; + hdr = (hak_xpkt_hdr_t*)proto->rcv.buf; proto->rcv.hdr.id = hdr->id; proto->rcv.hdr.type = hdr->type & 0x0F; - proto->rcv.hdr.len = (hcl_uint16_t)hdr->len | ((hcl_uint16_t)(hdr->type >> 4) << 8); + proto->rcv.hdr.len = (hak_uint16_t)hdr->len | ((hak_uint16_t)(hdr->type >> 4) << 8); /* consume the header */ - HCL_MEMMOVE (proto->rcv.buf, &proto->rcv.buf[HCL_XPKT_HDR_LEN], proto->rcv.len - HCL_XPKT_HDR_LEN); - proto->rcv.len -= HCL_XPKT_HDR_LEN; + HAK_MEMMOVE (proto->rcv.buf, &proto->rcv.buf[HAK_XPKT_HDR_LEN], proto->rcv.len - HAK_XPKT_HDR_LEN); + proto->rcv.len -= HAK_XPKT_HDR_LEN; /* switch to the payload mode */ if (proto->rcv.hdr.len > 0) { - proto->rcv.state = HCL_XPROTO_RCV_PLD; + proto->rcv.state = HAK_XPROTO_RCV_PLD; proto->rcv.len_needed = proto->rcv.hdr.len; } else @@ -153,7 +153,7 @@ int hcl_xproto_process (hcl_xproto_t* proto) break; - case HCL_XPROTO_RCV_PLD: + case HAK_XPROTO_RCV_PLD: if (proto->rcv.len < proto->rcv.hdr.len) goto carry_on; /* need more payload data */ n = proto->_cb.on_packet(proto, proto->rcv.hdr.type, proto->rcv.buf, proto->rcv.hdr.len); @@ -161,12 +161,12 @@ int hcl_xproto_process (hcl_xproto_t* proto) /* switch to the header mode */ if (proto->rcv.hdr.len > 0) { -/* TODO: minimize the use of HCL_MEMOVE... use the buffer */ - HCL_MEMMOVE (proto->rcv.buf, &proto->rcv.buf[proto->rcv.hdr.len], proto->rcv.len - proto->rcv.hdr.len); +/* TODO: minimize the use of HAK_MEMOVE... use the buffer */ + HAK_MEMMOVE (proto->rcv.buf, &proto->rcv.buf[proto->rcv.hdr.len], proto->rcv.len - proto->rcv.hdr.len); proto->rcv.len -= proto->rcv.hdr.len; } - proto->rcv.state = HCL_XPROTO_RCV_HDR; - proto->rcv.len_needed = HCL_XPKT_HDR_LEN; + proto->rcv.state = HAK_XPROTO_RCV_HDR; + proto->rcv.len_needed = HAK_XPKT_HDR_LEN; if (n <= -1) goto fail_with_errmsg; if (n == 0) return 0; @@ -175,7 +175,7 @@ int hcl_xproto_process (hcl_xproto_t* proto) default: /* - hcl_seterrbfmt (hcl, HCL_EINTERN, "invalid request state %d", (int)proto->rcv.state); + hak_seterrbfmt (hak, HAK_EINTERN, "invalid request state %d", (int)proto->rcv.state); */ /* TODO: call back */ goto fail_with_errmsg; @@ -186,8 +186,8 @@ carry_on: fail_with_errmsg: // TODO: proper error handling - //send_proto_hcl_error (proto); - //HCL_LOG1 (hcl, SERVER_LOGMASK_ERROR, "Unable to compile .SCRIPT contents - %js\n", hcl_geterrmsg(worker->hcl)); + //send_proto_hak_error (proto); + //HAK_LOG1 (hak, SERVER_LOGMASK_ERROR, "Unable to compile .SCRIPT contents - %js\n", hak_geterrmsg(worker->hak)); return -1; } diff --git a/lib/x-server.c b/lib/x-server.c index dfed0b2..ac5fd91 100644 --- a/lib/x-server.c +++ b/lib/x-server.c @@ -22,17 +22,17 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include -#include "hcl-prv.h" +#include +#include +#include "hak-prv.h" #include #include #include -#define HCL_SERVER_TOKEN_NAME_ALIGN 64 -#define HCL_SERVER_WID_MAP_ALIGN 512 -#define HCL_XPROTO_REPLY_BUF_SIZE 1300 +#define HAK_SERVER_TOKEN_NAME_ALIGN 64 +#define HAK_SERVER_WID_MAP_ALIGN 512 +#define HAK_XPROTO_REPLY_BUF_SIZE 1300 #if defined(_WIN32) # include @@ -82,134 +82,134 @@ struct bb_t { char buf[1024]; - hcl_oow_t pos; - hcl_oow_t len; + hak_oow_t pos; + hak_oow_t len; int fd; - hcl_bch_t* fn; + hak_bch_t* fn; }; typedef struct bb_t bb_t; struct proto_xtn_t { - hcl_server_worker_t* worker; + hak_server_worker_t* worker; }; typedef struct proto_xtn_t proto_xtn_t; -struct worker_hcl_xtn_t +struct worker_hak_xtn_t { - hcl_server_worker_t* worker; + hak_server_worker_t* worker; int vm_running; }; -typedef struct worker_hcl_xtn_t worker_hcl_xtn_t; +typedef struct worker_hak_xtn_t worker_hak_xtn_t; -struct server_hcl_xtn_t +struct server_hak_xtn_t { - hcl_server_t* server; + hak_server_t* server; }; -typedef struct server_hcl_xtn_t server_hcl_xtn_t; +typedef struct server_hak_xtn_t server_hak_xtn_t; /* ---------------------------------- */ -enum hcl_server_worker_state_t +enum hak_server_worker_state_t { - HCL_SERVER_WORKER_STATE_DEAD = 0, - HCL_SERVER_WORKER_STATE_ALIVE = 1, - HCL_SERVER_WORKER_STATE_ZOMBIE = 2 /* the worker is not chained in the server's client list */ + HAK_SERVER_WORKER_STATE_DEAD = 0, + HAK_SERVER_WORKER_STATE_ALIVE = 1, + HAK_SERVER_WORKER_STATE_ZOMBIE = 2 /* the worker is not chained in the server's client list */ }; -typedef enum hcl_server_worker_state_t hcl_server_worker_state_t; +typedef enum hak_server_worker_state_t hak_server_worker_state_t; -enum hcl_server_worker_opstate_t +enum hak_server_worker_opstate_t { - HCL_SERVER_WORKER_OPSTATE_IDLE = 0, - HCL_SERVER_WORKER_OPSTATE_ERROR = 1, - HCL_SERVER_WORKER_OPSTATE_WAIT = 2, - HCL_SERVER_WORKER_OPSTATE_READ = 3, - HCL_SERVER_WORKER_OPSTATE_COMPILE = 4, - HCL_SERVER_WORKER_OPSTATE_EXECUTE = 5 + HAK_SERVER_WORKER_OPSTATE_IDLE = 0, + HAK_SERVER_WORKER_OPSTATE_ERROR = 1, + HAK_SERVER_WORKER_OPSTATE_WAIT = 2, + HAK_SERVER_WORKER_OPSTATE_READ = 3, + HAK_SERVER_WORKER_OPSTATE_COMPILE = 4, + HAK_SERVER_WORKER_OPSTATE_EXECUTE = 5 }; -typedef enum hcl_server_worker_opstate_t hcl_server_worker_opstate_t; +typedef enum hak_server_worker_opstate_t hak_server_worker_opstate_t; -struct hcl_server_worker_t +struct hak_server_worker_t { pthread_t thr; - hcl_oow_t wid; + hak_oow_t wid; int sck; - hcl_sckaddr_t peeraddr; + hak_sckaddr_t peeraddr; int claimed; - hcl_ntime_t alloc_time; - hcl_server_worker_state_t state; - hcl_server_worker_opstate_t opstate; - hcl_tmr_index_t exec_runtime_event_index; - hcl_xproto_t* proto; - hcl_t* hcl; + hak_ntime_t alloc_time; + hak_server_worker_state_t state; + hak_server_worker_opstate_t opstate; + hak_tmr_index_t exec_runtime_event_index; + hak_xproto_t* proto; + hak_t* hak; - hcl_server_t* server; - hcl_server_worker_t* prev_worker; - hcl_server_worker_t* next_worker; + hak_server_t* server; + hak_server_worker_t* prev_worker; + hak_server_worker_t* next_worker; }; -struct hcl_server_wid_map_data_t +struct hak_server_wid_map_data_t { int used; union { - hcl_server_worker_t* worker; - hcl_oow_t next; + hak_server_worker_t* worker; + hak_oow_t next; } u; }; -typedef struct hcl_server_wid_map_data_t hcl_server_wid_map_data_t; +typedef struct hak_server_wid_map_data_t hak_server_wid_map_data_t; -typedef struct hcl_server_listener_t hcl_server_listener_t; -struct hcl_server_listener_t +typedef struct hak_server_listener_t hak_server_listener_t; +struct hak_server_listener_t { int sck; - hcl_sckaddr_t sckaddr; - hcl_server_listener_t* next_listener; + hak_sckaddr_t sckaddr; + hak_server_listener_t* next_listener; }; -struct hcl_server_t +struct hak_server_t { - hcl_oow_t _instsize; - hcl_mmgr_t* _mmgr; - hcl_cmgr_t* _cmgr; - hcl_server_prim_t prim; + hak_oow_t _instsize; + hak_mmgr_t* _mmgr; + hak_cmgr_t* _cmgr; + hak_server_prim_t prim; /* [NOTE] - * this dummy_hcl is used when the main thread requires logging mostly. - * as there is no explicit locking when calling HCL_LOG() functions, + * this dummy_hak is used when the main thread requires logging mostly. + * as there is no explicit locking when calling HAK_LOG() functions, * the code must ensure that the logging functions are called in the * context of the main server thraed only. error message setting is * also performed in the main thread context for the same reason. * - * however, you may have noticed mixed use of HCL_ASSERT with dummy_hcl + * however, you may have noticed mixed use of HAK_ASSERT with dummy_hak * in both the server thread context and the client thread contexts. * it should be ok as assertion is only for debugging and it's operation * is thread safe. */ - hcl_t* dummy_hcl; + hak_t* dummy_hak; - hcl_tmr_t* tmr; + hak_tmr_t* tmr; - hcl_errnum_t errnum; + hak_errnum_t errnum; struct { - hcl_ooch_t buf[HCL_ERRMSG_CAPA]; - hcl_oow_t len; + hak_ooch_t buf[HAK_ERRMSG_CAPA]; + hak_oow_t len; } errmsg; int stopreq; struct { - hcl_bitmask_t trait; - hcl_bitmask_t logmask; - hcl_oow_t worker_stack_size; - hcl_oow_t worker_max_count; - hcl_ntime_t worker_idle_timeout; - hcl_oow_t actor_heap_size; - hcl_ntime_t actor_max_runtime; - hcl_ooch_t script_include_path[HCL_PATH_MAX + 1]; + hak_bitmask_t trait; + hak_bitmask_t logmask; + hak_oow_t worker_stack_size; + hak_oow_t worker_max_count; + hak_ntime_t worker_idle_timeout; + hak_oow_t actor_heap_size; + hak_ntime_t actor_max_runtime; + hak_ooch_t script_include_path[HAK_PATH_MAX + 1]; void* module_inctx; } cfg; @@ -219,23 +219,23 @@ struct hcl_server_t int ep_fd; struct epoll_event ev_buf[128]; #endif - hcl_server_listener_t* head; - hcl_oow_t count; + hak_server_listener_t* head; + hak_oow_t count; } listener; struct { - hcl_server_worker_t* head; - hcl_server_worker_t* tail; - hcl_oow_t count; + hak_server_worker_t* head; + hak_server_worker_t* tail; + hak_oow_t count; } worker_list[2]; /* DEAD and ALIVE oly. ZOMBIEs are not chained here */ struct { - hcl_server_wid_map_data_t* ptr; - hcl_oow_t capa; - hcl_oow_t free_first; - hcl_oow_t free_last; + hak_server_wid_map_data_t* ptr; + hak_oow_t capa; + hak_oow_t free_first; + hak_oow_t free_last; } wid_map; /* worker's id map */ int mux_pipe[2]; /* pipe to break the blocking multiplexer in the main server loop */ @@ -246,21 +246,21 @@ struct hcl_server_t }; /* ========================================================================= */ -static int send_bytes (hcl_xproto_t* proto, hcl_xpkt_type_t xpkt_code, const hcl_bch_t* data, hcl_oow_t len); +static int send_bytes (hak_xproto_t* proto, hak_xpkt_type_t xpkt_code, const hak_bch_t* data, hak_oow_t len); -#if defined(HCL_OOCH_IS_UCH) -static int send_chars (hcl_xproto_t* proto, hcl_xpkt_type_t xpkt_code, const hcl_ooch_t* data, hcl_oow_t len); +#if defined(HAK_OOCH_IS_UCH) +static int send_chars (hak_xproto_t* proto, hak_xpkt_type_t xpkt_code, const hak_ooch_t* data, hak_oow_t len); #else #define send_chars(proto,xpkt_code,data,len) send_bytes(proto,xpkt_code,data,len) #endif /* ========================================================================= */ -static HCL_INLINE int open_read_stream (hcl_t* hcl, hcl_io_cciarg_t* arg) +static HAK_INLINE int open_read_stream (hak_t* hak, hak_io_cciarg_t* arg) { - worker_hcl_xtn_t* xtn = (worker_hcl_xtn_t*)hcl_getxtn(hcl); - bb_t* bb = HCL_NULL; - hcl_server_t* server; + worker_hak_xtn_t* xtn = (worker_hak_xtn_t*)hak_getxtn(hak); + bb_t* bb = HAK_NULL; + hak_server_t* server; server = xtn->worker->server; @@ -269,76 +269,76 @@ static HCL_INLINE int open_read_stream (hcl_t* hcl, hcl_io_cciarg_t* arg) /* includee */ /* TOOD: Do i need to skip prepending the include path if the included path is an absolute path? * it may be good for security if i don't skip it. we can lock the included files in a given directory */ - hcl_oow_t ucslen, bcslen, parlen; - const hcl_bch_t* fn, * fb; + hak_oow_t ucslen, bcslen, parlen; + const hak_bch_t* fn, * fb; - #if defined(HCL_OOCH_IS_UCH) - if (hcl_convootobcstr(hcl, arg->name, &ucslen, HCL_NULL, &bcslen) <= -1) goto oops; + #if defined(HAK_OOCH_IS_UCH) + if (hak_convootobcstr(hak, arg->name, &ucslen, HAK_NULL, &bcslen) <= -1) goto oops; #else - bcslen = hcl_count_bcstr(arg->name); + bcslen = hak_count_bcstr(arg->name); #endif fn = ((bb_t*)arg->includer->handle)->fn; if (fn[0] == '\0' && server->cfg.script_include_path[0] != '\0') { - #if defined(HCL_OOCH_IS_UCH) - if (hcl_convootobcstr(hcl, server->cfg.script_include_path, &ucslen, HCL_NULL, &parlen) <= -1) goto oops; + #if defined(HAK_OOCH_IS_UCH) + if (hak_convootobcstr(hak, server->cfg.script_include_path, &ucslen, HAK_NULL, &parlen) <= -1) goto oops; #else - parlen = hcl_count_bcstr(server->cfg.script_include_path); + parlen = hak_count_bcstr(server->cfg.script_include_path); #endif } else { - fb = hcl_get_base_name_from_bcstr_path(fn); + fb = hak_get_base_name_from_bcstr_path(fn); parlen = fb - fn; } - bb = (bb_t*)hcl_callocmem(hcl, HCL_SIZEOF(*bb) + (HCL_SIZEOF(hcl_bch_t) * (parlen + bcslen + 2))); - if (HCL_UNLIKELY(!bb)) goto oops; + bb = (bb_t*)hak_callocmem(hak, HAK_SIZEOF(*bb) + (HAK_SIZEOF(hak_bch_t) * (parlen + bcslen + 2))); + if (HAK_UNLIKELY(!bb)) goto oops; - bb->fn = (hcl_bch_t*)(bb + 1); + bb->fn = (hak_bch_t*)(bb + 1); if (fn[0] == '\0' && server->cfg.script_include_path[0] != '\0') { - #if defined(HCL_OOCH_IS_UCH) - hcl_convootobcstr (hcl, server->cfg.script_include_path, &ucslen, bb->fn, &parlen); + #if defined(HAK_OOCH_IS_UCH) + hak_convootobcstr (hak, server->cfg.script_include_path, &ucslen, bb->fn, &parlen); #else - hcl_copy_bchars (bb->fn, server->cfg.script_include_path, parlen); + hak_copy_bchars (bb->fn, server->cfg.script_include_path, parlen); #endif - if (!HCL_IS_PATH_SEP(bb->fn[parlen])) bb->fn[parlen++] = HCL_DFL_PATH_SEP; /* +2 was used in hcl_callocmem() for this (+1 for this, +1 for '\0' */ + if (!HAK_IS_PATH_SEP(bb->fn[parlen])) bb->fn[parlen++] = HAK_DFL_PATH_SEP; /* +2 was used in hak_callocmem() for this (+1 for this, +1 for '\0' */ } else { - hcl_copy_bchars (bb->fn, fn, parlen); + hak_copy_bchars (bb->fn, fn, parlen); } - #if defined(HCL_OOCH_IS_UCH) - hcl_convootobcstr (hcl, arg->name, &ucslen, &bb->fn[parlen], &bcslen); + #if defined(HAK_OOCH_IS_UCH) + hak_convootobcstr (hak, arg->name, &ucslen, &bb->fn[parlen], &bcslen); #else - hcl_copy_bcstr (&bb->fn[parlen], bcslen + 1, arg->name); + hak_copy_bcstr (&bb->fn[parlen], bcslen + 1, arg->name); #endif bb->fd = open(bb->fn, O_RDONLY, 0); if (bb->fd <= -1) { - hcl_seterrnum (hcl, HCL_EIOERR); + hak_seterrnum (hak, HAK_EIOERR); goto oops; } } else { /* main stream */ - hcl_oow_t pathlen = 0; - bb = (bb_t*)hcl_callocmem(hcl, HCL_SIZEOF(*bb) + (HCL_SIZEOF(hcl_bch_t) * (pathlen + 1))); - if (HCL_UNLIKELY(!bb)) goto oops; + hak_oow_t pathlen = 0; + bb = (bb_t*)hak_callocmem(hak, HAK_SIZEOF(*bb) + (HAK_SIZEOF(hak_bch_t) * (pathlen + 1))); + if (HAK_UNLIKELY(!bb)) goto oops; /* copy ane empty string as a main stream's name */ - bb->fn = (hcl_bch_t*)(bb + 1); - hcl_copy_bcstr (bb->fn, pathlen + 1, ""); + bb->fn = (hak_bch_t*)(bb + 1); + hak_copy_bcstr (bb->fn, pathlen + 1, ""); bb->fd = xtn->worker->sck; } - HCL_ASSERT (hcl, bb->fd >= 0); + HAK_ASSERT (hak, bb->fd >= 0); arg->handle = bb; return 0; @@ -347,37 +347,37 @@ oops: if (bb) { if (bb->fd >= 0 && bb->fd != xtn->worker->sck) close (bb->fd); - hcl_freemem (hcl, bb); + hak_freemem (hak, bb); } return -1; } -static HCL_INLINE int close_read_stream (hcl_t* hcl, hcl_io_cciarg_t* arg) +static HAK_INLINE int close_read_stream (hak_t* hak, hak_io_cciarg_t* arg) { - worker_hcl_xtn_t* xtn = (worker_hcl_xtn_t*)hcl_getxtn(hcl); + worker_hak_xtn_t* xtn = (worker_hak_xtn_t*)hak_getxtn(hak); bb_t* bb; bb = (bb_t*)arg->handle; - HCL_ASSERT (hcl, bb != HCL_NULL && bb->fd >= 0); + HAK_ASSERT (hak, bb != HAK_NULL && bb->fd >= 0); if (bb->fd != xtn->worker->sck) close (bb->fd); - hcl_freemem (hcl, bb); + hak_freemem (hak, bb); - arg->handle = HCL_NULL; + arg->handle = HAK_NULL; return 0; } -static HCL_INLINE int read_read_stream (hcl_t* hcl, hcl_io_cciarg_t* arg) +static HAK_INLINE int read_read_stream (hak_t* hak, hak_io_cciarg_t* arg) { - worker_hcl_xtn_t* xtn = (worker_hcl_xtn_t*)hcl_getxtn(hcl); + worker_hak_xtn_t* xtn = (worker_hak_xtn_t*)hak_getxtn(hak); bb_t* bb; - hcl_oow_t bcslen, ucslen, remlen; - hcl_server_worker_t* worker; + hak_oow_t bcslen, ucslen, remlen; + hak_server_worker_t* worker; ssize_t x; int y; bb = (bb_t*)arg->handle; - HCL_ASSERT (hcl, bb != HCL_NULL && bb->fd >= 0); + HAK_ASSERT (hak, bb != HAK_NULL && bb->fd >= 0); worker = xtn->worker; @@ -385,17 +385,17 @@ start_over: if (arg->includer) { /* includee */ - if (HCL_UNLIKELY(worker->server->stopreq)) + if (HAK_UNLIKELY(worker->server->stopreq)) { - hcl_seterrbfmt (hcl, HCL_EGENERIC, "stop requested"); + hak_seterrbfmt (hak, HAK_EGENERIC, "stop requested"); return -1; } - x = read(bb->fd, &bb->buf[bb->len], HCL_COUNTOF(bb->buf) - bb->len); + x = read(bb->fd, &bb->buf[bb->len], HAK_COUNTOF(bb->buf) - bb->len); if (x <= -1) { if (errno == EINTR) goto start_over; - hcl_seterrwithsyserr (hcl, 0, errno); + hak_seterrwithsyserr (hak, 0, errno); return -1; } @@ -404,9 +404,9 @@ start_over: else { /* main stream */ - hcl_server_t* server; + hak_server_t* server; - HCL_ASSERT (hcl, bb->fd == worker->sck); + HAK_ASSERT (hak, bb->fd == worker->sck); server = worker->server; while (1) @@ -415,13 +415,13 @@ start_over: struct pollfd pfd; int tmout, actual_tmout; - if (HCL_UNLIKELY(server->stopreq)) + if (HAK_UNLIKELY(server->stopreq)) { - hcl_seterrbfmt (hcl, HCL_EGENERIC, "stop requested"); + hak_seterrbfmt (hak, HAK_EGENERIC, "stop requested"); return -1; } - tmout = HCL_SECNSEC_TO_MSEC(server->cfg.worker_idle_timeout.sec, server->cfg.worker_idle_timeout.nsec); + tmout = HAK_SECNSEC_TO_MSEC(server->cfg.worker_idle_timeout.sec, server->cfg.worker_idle_timeout.nsec); actual_tmout = (tmout <= 0)? 10000: tmout; pfd.fd = bb->fd; @@ -430,7 +430,7 @@ start_over: if (n <= -1) { if (errno == EINTR) goto start_over; - hcl_seterrwithsyserr (hcl, 0, errno); + hak_seterrwithsyserr (hak, 0, errno); return -1; } else if (n >= 1) break; @@ -438,26 +438,26 @@ start_over: /* timed out - no activity on the pfd */ if (tmout > 0) { - hcl_seterrbfmt (hcl, HCL_EGENERIC, "no activity on the worker socket %d", bb->fd); + hak_seterrbfmt (hak, HAK_EGENERIC, "no activity on the worker socket %d", bb->fd); return -1; } } - x = recv(bb->fd, &bb->buf[bb->len], HCL_COUNTOF(bb->buf) - bb->len, 0); + x = recv(bb->fd, &bb->buf[bb->len], HAK_COUNTOF(bb->buf) - bb->len, 0); if (x <= -1) { if (errno == EINTR) goto start_over; - hcl_seterrwithsyserr (hcl, 0, errno); + hak_seterrwithsyserr (hak, 0, errno); return -1; } bb->len += x; } -#if defined(HCL_OOCH_IS_UCH) +#if defined(HAK_OOCH_IS_UCH) bcslen = bb->len; - ucslen = HCL_COUNTOF(arg->buf.c); - y = hcl_convbtooochars(hcl, bb->buf, &bcslen, arg->buf.c, &ucslen); + ucslen = HAK_COUNTOF(arg->buf.c); + y = hak_convbtooochars(hak, bb->buf, &bcslen, arg->buf.c, &ucslen); if (y <= -1 && ucslen <= 0) { if (y == -3 && x != 0) goto start_over; /* incomplete sequence and not EOF yet */ @@ -466,13 +466,13 @@ start_over: /* if ucslen is greater than 0, i see that some characters have been * converted properly */ #else - bcslen = (bb->len < HCL_COUNTOF(arg->buf.b))? bb->len: HCL_COUNTOF(arg->buf.b); + bcslen = (bb->len < HAK_COUNTOF(arg->buf.b))? bb->len: HAK_COUNTOF(arg->buf.b); ucslen = bcslen; - hcl_copy_bchars (arg->buf.b, bb->buf, bcslen); + hak_copy_bchars (arg->buf.b, bb->buf, bcslen); #endif remlen = bb->len - bcslen; - if (remlen > 0) HCL_MEMMOVE (bb->buf, &bb->buf[bcslen], remlen); + if (remlen > 0) HAK_MEMMOVE (bb->buf, &bb->buf[bcslen], remlen); bb->len = remlen; arg->xlen = ucslen; @@ -480,43 +480,43 @@ start_over: } -static int read_handler (hcl_t* hcl, hcl_io_cmd_t cmd, void* arg) +static int read_handler (hak_t* hak, hak_io_cmd_t cmd, void* arg) { switch (cmd) { - case HCL_IO_OPEN: - return open_read_stream(hcl, (hcl_io_cciarg_t*)arg); + case HAK_IO_OPEN: + return open_read_stream(hak, (hak_io_cciarg_t*)arg); - case HCL_IO_CLOSE: - return close_read_stream(hcl, (hcl_io_cciarg_t*)arg); + case HAK_IO_CLOSE: + return close_read_stream(hak, (hak_io_cciarg_t*)arg); - case HCL_IO_READ: - return read_read_stream(hcl, (hcl_io_cciarg_t*)arg); + case HAK_IO_READ: + return read_read_stream(hak, (hak_io_cciarg_t*)arg); default: - hcl_seterrnum (hcl, HCL_EINTERN); + hak_seterrnum (hak, HAK_EINTERN); return -1; } } -static int scan_handler (hcl_t* hcl, hcl_io_cmd_t cmd, void* arg) +static int scan_handler (hak_t* hak, hak_io_cmd_t cmd, void* arg) { switch (cmd) { - case HCL_IO_OPEN: + case HAK_IO_OPEN: return 0; - case HCL_IO_CLOSE: + case HAK_IO_CLOSE: return 0; - case HCL_IO_READ: + case HAK_IO_READ: #if 0 { - worker_hcl_xtn_t* xtn = (worker_hcl_xtn_t*)hcl_getxtn(hcl); - hcl_io_udiarg_t* inarg = (hcl_io_udiarg_t*)arg; + worker_hak_xtn_t* xtn = (worker_hak_xtn_t*)hak_getxtn(hak); + hak_io_udiarg_t* inarg = (hak_io_udiarg_t*)arg; // what if it writes a request to require more input?? - if (hcl_xproto_handle_incoming(xtn->proto) <= -1) + if (hak_xproto_handle_incoming(xtn->proto) <= -1) { } } @@ -525,79 +525,79 @@ static int scan_handler (hcl_t* hcl, hcl_io_cmd_t cmd, void* arg) #endif default: - hcl_seterrnum (hcl, HCL_EINTERN); + hak_seterrnum (hak, HAK_EINTERN); return -1; } } -static int print_handler (hcl_t* hcl, hcl_io_cmd_t cmd, void* arg) +static int print_handler (hak_t* hak, hak_io_cmd_t cmd, void* arg) { switch (cmd) { - case HCL_IO_OPEN: + case HAK_IO_OPEN: printf ("IO OPEN SOMETHING...........\n"); return 0; - case HCL_IO_CLOSE: + case HAK_IO_CLOSE: printf ("IO CLOSE SOMETHING...........\n"); return 0; - case HCL_IO_WRITE: + case HAK_IO_WRITE: { - worker_hcl_xtn_t* xtn = (worker_hcl_xtn_t*)hcl_getxtn(hcl); - hcl_io_udoarg_t* outarg = (hcl_io_udoarg_t*)arg; + worker_hak_xtn_t* xtn = (worker_hak_xtn_t*)hak_getxtn(hak); + hak_io_udoarg_t* outarg = (hak_io_udoarg_t*)arg; /*printf ("IO WRITE SOMETHING...........\n");*/ - if (send_chars(xtn->worker->proto, HCL_XPKT_STDOUT, outarg->ptr, outarg->len) <= -1) + if (send_chars(xtn->worker->proto, HAK_XPKT_STDOUT, outarg->ptr, outarg->len) <= -1) { /* TODO: change error code and message. propagage the errormessage from proto */ - hcl_seterrbfmt (hcl, HCL_EIOERR, "failed to write message via proto"); + hak_seterrbfmt (hak, HAK_EIOERR, "failed to write message via proto"); /* writing failure on the socket is a critical failure. * execution must get aborted */ - hcl_abort (hcl); + hak_abort (hak); return -1; } outarg->xlen = outarg->len; return 0; } - case HCL_IO_WRITE_BYTES: + case HAK_IO_WRITE_BYTES: { - worker_hcl_xtn_t* xtn = (worker_hcl_xtn_t*)hcl_getxtn(hcl); - hcl_io_udoarg_t* outarg = (hcl_io_udoarg_t*)arg; + worker_hak_xtn_t* xtn = (worker_hak_xtn_t*)hak_getxtn(hak); + hak_io_udoarg_t* outarg = (hak_io_udoarg_t*)arg; /*printf ("IO WRITE SOMETHING BYTES...........\n");*/ - if (send_bytes(xtn->worker->proto, HCL_XPKT_STDOUT, outarg->ptr, outarg->len) <= -1) + if (send_bytes(xtn->worker->proto, HAK_XPKT_STDOUT, outarg->ptr, outarg->len) <= -1) { /* TODO: change error code and message. propagage the errormessage from proto */ - hcl_seterrbfmt (hcl, HCL_EIOERR, "failed to write message via proto"); + hak_seterrbfmt (hak, HAK_EIOERR, "failed to write message via proto"); /* writing failure on the socket is a critical failure. * execution must get aborted */ - hcl_abort (hcl); + hak_abort (hak); return -1; } outarg->xlen = outarg->len; return 0; } - case HCL_IO_FLUSH: + case HAK_IO_FLUSH: /* TODO: flush data... */ return 0; default: - hcl_seterrnum (hcl, HCL_EINTERN); + hak_seterrnum (hak, HAK_EINTERN); return -1; } } /* ========================================================================= */ -static void server_log_write (hcl_t* hcl, hcl_bitmask_t mask, const hcl_ooch_t* msg, hcl_oow_t len) +static void server_log_write (hak_t* hak, hak_bitmask_t mask, const hak_ooch_t* msg, hak_oow_t len) { - worker_hcl_xtn_t* xtn = (worker_hcl_xtn_t*)hcl_getxtn(hcl); - hcl_server_t* server; + worker_hak_xtn_t* xtn = (worker_hak_xtn_t*)hak_getxtn(hak); + hak_server_t* server; server = xtn->worker->server; pthread_mutex_lock (&server->log_mutex); @@ -605,73 +605,73 @@ static void server_log_write (hcl_t* hcl, hcl_bitmask_t mask, const hcl_ooch_t* pthread_mutex_unlock (&server->log_mutex); } -static void server_log_write_for_dummy (hcl_t* hcl, hcl_bitmask_t mask, const hcl_ooch_t* msg, hcl_oow_t len) +static void server_log_write_for_dummy (hak_t* hak, hak_bitmask_t mask, const hak_ooch_t* msg, hak_oow_t len) { - server_hcl_xtn_t* xtn = (server_hcl_xtn_t*)hcl_getxtn(hcl); - hcl_server_t* server; + server_hak_xtn_t* xtn = (server_hak_xtn_t*)hak_getxtn(hak); + hak_server_t* server; server = xtn->server; pthread_mutex_lock (&server->log_mutex); - server->prim.log_write (server, HCL_SERVER_WID_INVALID, mask, msg, len); + server->prim.log_write (server, HAK_SERVER_WID_INVALID, mask, msg, len); pthread_mutex_unlock (&server->log_mutex); } /* ========================================================================= */ -static int vm_startup (hcl_t* hcl) +static int vm_startup (hak_t* hak) { - worker_hcl_xtn_t* xtn = (worker_hcl_xtn_t*)hcl_getxtn(hcl); + worker_hak_xtn_t* xtn = (worker_hak_xtn_t*)hak_getxtn(hak); xtn->vm_running = 1; return 0; } -static void vm_cleanup (hcl_t* hcl) +static void vm_cleanup (hak_t* hak) { - worker_hcl_xtn_t* xtn = (worker_hcl_xtn_t*)hcl_getxtn(hcl); + worker_hak_xtn_t* xtn = (worker_hak_xtn_t*)hak_getxtn(hak); xtn->vm_running = 0; } -static void vm_checkbc (hcl_t* hcl, hcl_oob_t bcode) +static void vm_checkbc (hak_t* hak, hak_oob_t bcode) { - worker_hcl_xtn_t* xtn = (worker_hcl_xtn_t*)hcl_getxtn(hcl); - if (xtn->worker->server->stopreq) hcl_abort(hcl); + worker_hak_xtn_t* xtn = (worker_hak_xtn_t*)hak_getxtn(hak); + if (xtn->worker->server->stopreq) hak_abort(hak); } /* -static void gc_hcl (hcl_t* hcl) +static void gc_hak (hak_t* hak) { - worker_hcl_xtn_t* xtn = (worker_hcl_xtn_t*)hcl_getxtn(hcl); + worker_hak_xtn_t* xtn = (worker_hak_xtn_t*)hak_getxtn(hak); } -static void fini_hcl (hcl_t* hcl) +static void fini_hak (hak_t* hak) { - worker_hcl_xtn_t* xtn = (worker_hcl_xtn_t*)hcl_getxtn(hcl); + worker_hak_xtn_t* xtn = (worker_hak_xtn_t*)hak_getxtn(hak); } */ /* ========================================================================= */ -static hcl_server_worker_t* proto_to_worker (hcl_xproto_t* proto) +static hak_server_worker_t* proto_to_worker (hak_xproto_t* proto) { proto_xtn_t* prtxtn; - prtxtn = (proto_xtn_t*)hcl_xproto_getxtn(proto); + prtxtn = (proto_xtn_t*)hak_xproto_getxtn(proto); return prtxtn->worker; } /* ========================================================================= */ -#define SERVER_LOGMASK_INFO (HCL_LOG_INFO | HCL_LOG_APP) -#define SERVER_LOGMASK_ERROR (HCL_LOG_ERROR | HCL_LOG_APP) +#define SERVER_LOGMASK_INFO (HAK_LOG_INFO | HAK_LOG_APP) +#define SERVER_LOGMASK_ERROR (HAK_LOG_ERROR | HAK_LOG_APP) -static int on_fed_cnode (hcl_t* hcl, hcl_cnode_t* obj) +static int on_fed_cnode (hak_t* hak, hak_cnode_t* obj) { - worker_hcl_xtn_t* hcl_xtn = (worker_hcl_xtn_t*)hcl_getxtn(hcl); - hcl_server_worker_t* worker; - hcl_xproto_t* proto; + worker_hak_xtn_t* hak_xtn = (worker_hak_xtn_t*)hak_getxtn(hak); + hak_server_worker_t* worker; + hak_xproto_t* proto; int flags = 0; - hcl_xtn = (worker_hcl_xtn_t*)hcl_getxtn(hcl); - worker = hcl_xtn->worker; + hak_xtn = (worker_hak_xtn_t*)hak_getxtn(hak); + worker = hak_xtn->worker; proto = worker->proto; /* the compile error must not break the input loop. @@ -680,140 +680,140 @@ static int on_fed_cnode (hcl_t* hcl, hcl_cnode_t* obj) * if a single line or continued lines contain multiple expressions, * execution is delayed until the last expression is compiled. */ - if (hcl_compile(hcl, obj, flags) <= -1) + if (hak_compile(hak, obj, flags) <= -1) { - const hcl_bch_t* errmsg = hcl_geterrbmsg(hcl); - send_bytes(proto, HCL_XPKT_ERROR, errmsg, hcl_count_bcstr(errmsg)); + const hak_bch_t* errmsg = hak_geterrbmsg(hak); + send_bytes(proto, HAK_XPKT_ERROR, errmsg, hak_count_bcstr(errmsg)); /* TODO: ignore the whole line??? */ } return 0; } -static void exec_runtime_handler (hcl_tmr_t* tmr, const hcl_ntime_t* now, hcl_tmr_event_t* evt) +static void exec_runtime_handler (hak_tmr_t* tmr, const hak_ntime_t* now, hak_tmr_event_t* evt) { /* [NOTE] this handler is executed in the main server thread - * when it calls hcl_tmr_fire(). */ - hcl_server_worker_t* worker; + * when it calls hak_tmr_fire(). */ + hak_server_worker_t* worker; - worker = proto_to_worker((hcl_xproto_t*)evt->ctx); -/* TODO: can we use worker->hcl for logging before abort?? */ - HCL_LOG1 (worker->server->dummy_hcl, SERVER_LOGMASK_INFO, "Aborting script execution for max_actor_runtime exceeded [%zu]\n", worker->wid); - hcl_abort (worker->hcl); + worker = proto_to_worker((hak_xproto_t*)evt->ctx); +/* TODO: can we use worker->hak for logging before abort?? */ + HAK_LOG1 (worker->server->dummy_hak, SERVER_LOGMASK_INFO, "Aborting script execution for max_actor_runtime exceeded [%zu]\n", worker->wid); + hak_abort (worker->hak); } -static void exec_runtime_updater (hcl_tmr_t* tmr, hcl_tmr_index_t old_index, hcl_tmr_index_t new_index, hcl_tmr_event_t* evt) +static void exec_runtime_updater (hak_tmr_t* tmr, hak_tmr_index_t old_index, hak_tmr_index_t new_index, hak_tmr_event_t* evt) { /* [NOTE] this handler is executed in the main server thread - * when it calls hcl_tmr_fire() */ - hcl_xproto_t* proto; - hcl_server_worker_t* worker; + * when it calls hak_tmr_fire() */ + hak_xproto_t* proto; + hak_server_worker_t* worker; - proto = (hcl_xproto_t*)evt->ctx; + proto = (hak_xproto_t*)evt->ctx; worker = proto_to_worker(proto); - HCL_ASSERT (worker->hcl, worker->exec_runtime_event_index == old_index); + HAK_ASSERT (worker->hak, worker->exec_runtime_event_index == old_index); - /* the event is being removed by hcl_tmr_fire() or by hcl_tmr_delete() - * if new_index is HCL_TMR_INVALID_INDEX. it's being updated if not. */ + /* the event is being removed by hak_tmr_fire() or by hak_tmr_delete() + * if new_index is HAK_TMR_INVALID_INDEX. it's being updated if not. */ worker->exec_runtime_event_index = new_index; } -static int insert_exec_timer (hcl_xproto_t* proto, const hcl_ntime_t* tmout) +static int insert_exec_timer (hak_xproto_t* proto, const hak_ntime_t* tmout) { /* [NOTE] this is executed in the worker thread */ - hcl_tmr_event_t event; - hcl_tmr_index_t index; - hcl_server_worker_t* worker; - hcl_server_t* server; + hak_tmr_event_t event; + hak_tmr_index_t index; + hak_server_worker_t* worker; + hak_server_t* server; worker = proto_to_worker(proto); server = worker->server; - HCL_ASSERT (worker->hcl, worker->exec_runtime_event_index == HCL_TMR_INVALID_INDEX); + HAK_ASSERT (worker->hak, worker->exec_runtime_event_index == HAK_TMR_INVALID_INDEX); - HCL_MEMSET (&event, 0, HCL_SIZEOF(event)); + HAK_MEMSET (&event, 0, HAK_SIZEOF(event)); event.ctx = proto; - worker->hcl->vmprim.vm_gettime (worker->hcl, &event.when); - HCL_ADD_NTIME (&event.when, &event.when, tmout); + worker->hak->vmprim.vm_gettime (worker->hak, &event.when); + HAK_ADD_NTIME (&event.when, &event.when, tmout); event.handler = exec_runtime_handler; event.updater = exec_runtime_updater; pthread_mutex_lock (&server->tmr_mutex); - index = hcl_tmr_insert(server->tmr, &event); + index = hak_tmr_insert(server->tmr, &event); worker->exec_runtime_event_index = index; - if (index != HCL_TMR_INVALID_INDEX) + if (index != HAK_TMR_INVALID_INDEX) { /* inform the server of timer event change */ write (server->mux_pipe[1], "X", 1); /* don't care even if it fails */ } pthread_mutex_unlock (&server->tmr_mutex); - return (index == HCL_TMR_INVALID_INDEX)? -1: 0; + return (index == HAK_TMR_INVALID_INDEX)? -1: 0; } -static void delete_exec_timer (hcl_xproto_t* proto) +static void delete_exec_timer (hak_xproto_t* proto) { /* [NOTE] this is executed in the worker thread. if the event has been fired * in the server thread, worker->exec_runtime_event_index should be - * HCL_TMR_INVALID_INDEX as set by exec_runtime_handler */ - hcl_server_worker_t* worker; - hcl_server_t* server; + * HAK_TMR_INVALID_INDEX as set by exec_runtime_handler */ + hak_server_worker_t* worker; + hak_server_t* server; worker = proto_to_worker(proto); server = worker->server; pthread_mutex_lock (&server->tmr_mutex); - if (worker->exec_runtime_event_index != HCL_TMR_INVALID_INDEX) + if (worker->exec_runtime_event_index != HAK_TMR_INVALID_INDEX) { /* the event has not been fired yet. let's delete it - * if it has been fired, the index it shall be HCL_TMR_INVALID_INDEX already */ + * if it has been fired, the index it shall be HAK_TMR_INVALID_INDEX already */ - hcl_tmr_delete (server->tmr, worker->exec_runtime_event_index); - HCL_ASSERT (worker->hcl, worker->exec_runtime_event_index == HCL_TMR_INVALID_INDEX); - /*worker->exec_runtime_event_index = HCL_TMR_INVALID_INDEX; */ + hak_tmr_delete (server->tmr, worker->exec_runtime_event_index); + HAK_ASSERT (worker->hak, worker->exec_runtime_event_index == HAK_TMR_INVALID_INDEX); + /*worker->exec_runtime_event_index = HAK_TMR_INVALID_INDEX; */ } pthread_mutex_unlock (&server->tmr_mutex); } -static int execute_script (hcl_xproto_t* proto, const hcl_bch_t* trigger) +static int execute_script (hak_xproto_t* proto, const hak_bch_t* trigger) { - hcl_oop_t obj; - const hcl_ooch_t* failmsg = HCL_NULL; - hcl_server_worker_t* worker; - hcl_server_t* server; + hak_oop_t obj; + const hak_ooch_t* failmsg = HAK_NULL; + hak_server_worker_t* worker; + hak_server_t* server; worker = proto_to_worker(proto); server = worker->server; #if 0 - hcl_xproto_start_reply (proto); + hak_xproto_start_reply (proto); #endif if (server->cfg.actor_max_runtime.sec <= 0 && server->cfg.actor_max_runtime.sec <= 0) { - obj = hcl_execute(worker->hcl); - if (!obj) failmsg = hcl_geterrmsg(worker->hcl); + obj = hak_execute(worker->hak); + if (!obj) failmsg = hak_geterrmsg(worker->hak); } else { if (insert_exec_timer(proto, &server->cfg.actor_max_runtime) <= -1) { - HCL_LOG0 (worker->hcl, SERVER_LOGMASK_ERROR, "Cannot start execution timer\n"); - hcl_seterrbfmt (worker->hcl, HCL_ESYSMEM, "cannot start execution timer"); /* i do this just to compose the error message */ - failmsg = hcl_geterrmsg(worker->hcl); + HAK_LOG0 (worker->hak, SERVER_LOGMASK_ERROR, "Cannot start execution timer\n"); + hak_seterrbfmt (worker->hak, HAK_ESYSMEM, "cannot start execution timer"); /* i do this just to compose the error message */ + failmsg = hak_geterrmsg(worker->hak); } else { - obj = hcl_execute(worker->hcl); - if (!obj) failmsg = hcl_geterrmsg(worker->hcl); + obj = hak_execute(worker->hak); + if (!obj) failmsg = hak_geterrmsg(worker->hak); delete_exec_timer (proto); } } #if 0 - if (hcl_xproto_end_reply(proto, failmsg) <= -1) + if (hak_xproto_end_reply(proto, failmsg) <= -1) { - HCL_LOG1 (worker->hcl, SERVER_LOGMASK_ERROR, "Cannot finalize reply for %hs\n", trigger); + HAK_LOG1 (worker->hak, SERVER_LOGMASK_ERROR, "Cannot finalize reply for %hs\n", trigger); return -1; } #endif @@ -822,28 +822,28 @@ static int execute_script (hcl_xproto_t* proto, const hcl_bch_t* trigger) } -static void send_error_message (hcl_xproto_t* proto, const hcl_ooch_t* errmsg) +static void send_error_message (hak_xproto_t* proto, const hak_ooch_t* errmsg) { #if 0 - hcl_xproto_start_reply (proto); - if (hcl_xproto_end_reply(proto, errmsg) <= -1) + hak_xproto_start_reply (proto); + if (hak_xproto_end_reply(proto, errmsg) <= -1) { - HCL_LOG1 (proto->hcl, SERVER_LOGMASK_ERROR, "Unable to send error message - %s\n", errmsg); + HAK_LOG1 (proto->hak, SERVER_LOGMASK_ERROR, "Unable to send error message - %s\n", errmsg); } #endif } -static void reformat_synerr (hcl_t* hcl) +static void reformat_synerr (hak_t* hak) { - hcl_synerr_t synerr; - const hcl_ooch_t* orgmsg; - static hcl_ooch_t nullstr[] = { '\0' }; + hak_synerr_t synerr; + const hak_ooch_t* orgmsg; + static hak_ooch_t nullstr[] = { '\0' }; - hcl_getsynerr (hcl, &synerr); + hak_getsynerr (hak, &synerr); - orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt ( - hcl, HCL_ESYNERR, + orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt ( + hak, HAK_ESYNERR, "%js%hs%.*js at %js%hsline %zu column %zu", orgmsg, (synerr.tgt.len > 0? " near ": ""), @@ -854,35 +854,35 @@ static void reformat_synerr (hcl_t* hcl) ); } -static void send_proto_hcl_error (hcl_xproto_t* proto) +static void send_proto_hak_error (hak_xproto_t* proto) { - hcl_server_worker_t* worker; + hak_server_worker_t* worker; worker = proto_to_worker(proto); - if (HCL_ERRNUM(worker->hcl) == HCL_ESYNERR) reformat_synerr (worker->hcl); - send_error_message (proto, hcl_geterrmsg(worker->hcl)); + if (HAK_ERRNUM(worker->hak) == HAK_ESYNERR) reformat_synerr (worker->hak); + send_error_message (proto, hak_geterrmsg(worker->hak)); } -static void show_server_workers (hcl_xproto_t* proto) +static void show_server_workers (hak_xproto_t* proto) { - hcl_server_worker_t* worker, * w; - hcl_server_t* server; + hak_server_worker_t* worker, * w; + hak_server_t* server; worker = proto_to_worker(proto); server = worker->server; pthread_mutex_lock (&server->worker_mutex); - for (w = server->worker_list[HCL_SERVER_WORKER_STATE_ALIVE].head; w; w = w->next_worker) + for (w = server->worker_list[HAK_SERVER_WORKER_STATE_ALIVE].head; w; w = w->next_worker) { /* TODO: implement this better... */ - hcl_prbfmt (worker->hcl, "%zu %d %d\n", w->wid, w->sck, 1000); + hak_prbfmt (worker->hak, "%zu %d %d\n", w->wid, w->sck, 1000); } pthread_mutex_unlock (&server->worker_mutex); } -static int kill_server_worker (hcl_xproto_t* proto, hcl_oow_t wid) +static int kill_server_worker (hak_xproto_t* proto, hak_oow_t wid) { - hcl_server_worker_t* worker; - hcl_server_t* server; + hak_server_worker_t* worker; + hak_server_t* server; int xret = 0; worker = proto_to_worker(proto); @@ -891,16 +891,16 @@ static int kill_server_worker (hcl_xproto_t* proto, hcl_oow_t wid) pthread_mutex_lock (&server->worker_mutex); if (wid >= server->wid_map.capa) { - hcl_server_seterrnum (server, HCL_ENOENT); + hak_server_seterrnum (server, HAK_ENOENT); xret = -1; } else { - hcl_server_worker_t* worker; + hak_server_worker_t* worker; if (!server->wid_map.ptr[wid].used) { - hcl_server_seterrnum (server, HCL_ENOENT); + hak_server_seterrnum (server, HAK_ENOENT); xret = -1; } else @@ -908,13 +908,13 @@ static int kill_server_worker (hcl_xproto_t* proto, hcl_oow_t wid) worker = server->wid_map.ptr[wid].u.worker; if (!worker) { - hcl_server_seterrnum (server, HCL_ENOENT); + hak_server_seterrnum (server, HAK_ENOENT); xret = -1; } else { if (worker->sck) shutdown (worker->sck, SHUT_RDWR); - if (worker->hcl) hcl_abort (worker->hcl); + if (worker->hak) hak_abort (worker->hak); } } } @@ -922,56 +922,56 @@ static int kill_server_worker (hcl_xproto_t* proto, hcl_oow_t wid) return xret; } -static int server_on_packet (hcl_xproto_t* proto, hcl_xpkt_type_t type, const void* data, hcl_oow_t len) +static int server_on_packet (hak_xproto_t* proto, hak_xpkt_type_t type, const void* data, hak_oow_t len) { - hcl_server_worker_t* worker; - hcl_t* hcl; + hak_server_worker_t* worker; + hak_t* hak; worker = proto_to_worker(proto); - hcl = worker->hcl; + hak = worker->hak; printf ("HANDLE PACKET TYPE => %d\n", type); switch (type) { - case HCL_XPKT_CODE: + case HAK_XPKT_CODE: printf ("FEEDING [%.*s]\n", (int)len, data); - if (hcl_feedbchars(hcl, data, len) <= -1) + if (hak_feedbchars(hak, data, len) <= -1) { /* TODO: backup error message...and create a new message */ goto oops; } break; - case HCL_XPKT_EXECUTE: + case HAK_XPKT_EXECUTE: { - hcl_oop_t retv; -printf ("EXECUTING hcl_executing......\n"); + hak_oop_t retv; +printf ("EXECUTING hak_executing......\n"); - hcl_decode (hcl, hcl_getcode(hcl), 0, hcl_getbclen(hcl)); - if (hcl_feedpending(hcl)) + hak_decode (hak, hak_getcode(hak), 0, hak_getbclen(hak)); + if (hak_feedpending(hak)) { /* TODO: change the message */ - if (send_bytes(proto, HCL_XPKT_ERROR, "feed more", 9) <=-1) + if (send_bytes(proto, HAK_XPKT_ERROR, "feed more", 9) <=-1) { /* TODO: error handling */ } break; } - retv = hcl_execute(hcl); - if (HCL_UNLIKELY(!retv)) + retv = hak_execute(hak); + if (HAK_UNLIKELY(!retv)) { - hcl_bch_t errmsg[512]; - hcl_oow_t errlen; + hak_bch_t errmsg[512]; + hak_oow_t errlen; /* TODO: backup error message...and create a new message */ /* save error message before other calls override erro info */ - errlen = hcl_copyerrbmsg(hcl, errmsg, HCL_COUNTOF(errmsg)); + errlen = hak_copyerrbmsg(hak, errmsg, HAK_COUNTOF(errmsg)); - hcl_flushudio (hcl); - hcl_clearcode (hcl); + hak_flushudio (hak); + hak_clearcode (hak); - if (send_bytes(proto, HCL_XPKT_ERROR, errmsg, errlen) <= -1) + if (send_bytes(proto, HAK_XPKT_ERROR, errmsg, errlen) <= -1) { /* TODO: error handling */ } @@ -980,15 +980,15 @@ printf ("EXECUTING hcl_executing......\n"); } else { - hcl_bch_t rvbuf[512]; /* TODO make this dynamic in side? */ - hcl_oow_t rvlen; + hak_bch_t rvbuf[512]; /* TODO make this dynamic in side? */ + hak_oow_t rvlen; - hcl_flushudio (hcl); - hcl_clearcode (hcl); + hak_flushudio (hak); + hak_clearcode (hak); - /* TODO or make hcl_fmtXXXX that accepts the output function */ - rvlen = hcl_fmttobcstr(hcl, rvbuf, HCL_COUNTOF(rvbuf), "[%O]", retv); - if (send_bytes(proto, HCL_XPKT_RETVAL, rvbuf, rvlen) <= -1) + /* TODO or make hak_fmtXXXX that accepts the output function */ + rvlen = hak_fmttobcstr(hak, rvbuf, HAK_COUNTOF(rvbuf), "[%O]", retv); + if (send_bytes(proto, HAK_XPKT_RETVAL, rvbuf, rvlen) <= -1) { } } @@ -997,18 +997,18 @@ printf ("EXECUTING hcl_executing......\n"); break; } - case HCL_XPKT_STDIN: + case HAK_XPKT_STDIN: /* store ... push stdin pipe... */ - /*if (hcl_feedstdin() <= -1) */ + /*if (hak_feedstdin() <= -1) */ break; - case HCL_XPKT_LIST_WORKERS: + case HAK_XPKT_LIST_WORKERS: break; - case HCL_XPKT_KILL_WORKER: + case HAK_XPKT_KILL_WORKER: break; - case HCL_XPKT_DISCONNECT: + case HAK_XPKT_DISCONNECT: return 0; /* disconnect received */ default: @@ -1024,13 +1024,13 @@ oops: return -1; } -static int send_bytes (hcl_xproto_t* proto, hcl_xpkt_type_t xpkt_type, const hcl_bch_t* data, hcl_oow_t len) +static int send_bytes (hak_xproto_t* proto, hak_xpkt_type_t xpkt_type, const hak_bch_t* data, hak_oow_t len) { - hcl_server_worker_t* worker; - hcl_xpkt_hdr_t hdr; + hak_server_worker_t* worker; + hak_xpkt_hdr_t hdr; struct iovec iov[2]; - const hcl_bch_t* ptr, * cur, * end; - hcl_uint16_t seglen; + const hak_bch_t* ptr, * cur, * end; + hak_uint16_t seglen; worker = proto_to_worker(proto); @@ -1042,7 +1042,7 @@ static int send_bytes (hcl_xproto_t* proto, hcl_xpkt_type_t xpkt_type, const hcl { int nv; - while (cur != end && cur - ptr < HCL_XPKT_MAX_PLD_LEN) cur++; + while (cur != end && cur - ptr < HAK_XPKT_MAX_PLD_LEN) cur++; seglen = cur - ptr; @@ -1052,14 +1052,14 @@ static int send_bytes (hcl_xproto_t* proto, hcl_xpkt_type_t xpkt_type, const hcl nv = 0; iov[nv].iov_base = &hdr; - iov[nv++].iov_len = HCL_SIZEOF(hdr); + iov[nv++].iov_len = HAK_SIZEOF(hdr); if (seglen > 0) { iov[nv].iov_base = ptr; iov[nv++].iov_len = seglen; } - if (hcl_sys_send_iov(worker->sck, iov, nv) <= -1) + if (hak_sys_send_iov(worker->sck, iov, nv) <= -1) { /* TODO: error message */ fprintf (stderr, "Unable to sendmsg on %d - %s\n", worker->sck, strerror(errno)); @@ -1073,13 +1073,13 @@ fprintf (stderr, "Unable to sendmsg on %d - %s\n", worker->sck, strerror(errno)) return 0; } -#if defined(HCL_OOCH_IS_UCH) -static int send_chars (hcl_xproto_t* proto, hcl_xpkt_type_t xpkt_type, const hcl_ooch_t* data, hcl_oow_t len) +#if defined(HAK_OOCH_IS_UCH) +static int send_chars (hak_xproto_t* proto, hak_xpkt_type_t xpkt_type, const hak_ooch_t* data, hak_oow_t len) { - hcl_server_worker_t* worker; - const hcl_ooch_t* ptr, * end; - hcl_bch_t tmp[256]; - hcl_oow_t tln, pln; + hak_server_worker_t* worker; + const hak_ooch_t* ptr, * end; + hak_bch_t tmp[256]; + hak_oow_t tln, pln; int n; worker = proto_to_worker(proto); @@ -1090,8 +1090,8 @@ static int send_chars (hcl_xproto_t* proto, hcl_xpkt_type_t xpkt_type, const hcl while (ptr < end) { pln = end - ptr; - tln = HCL_COUNTOF(tmp); - n = hcl_convutobchars(worker->hcl, ptr, &pln, tmp, &tln); + tln = HAK_COUNTOF(tmp); + n = hak_convutobchars(worker->hak, ptr, &pln, tmp, &tln); if (n <= -1 && n != -2) return -1; if (send_bytes(proto, xpkt_type, tmp, tln) <= -1) return -1; @@ -1105,141 +1105,141 @@ static int send_chars (hcl_xproto_t* proto, hcl_xpkt_type_t xpkt_type, const hcl /* ========================================================================= */ -hcl_server_t* hcl_server_open (hcl_mmgr_t* mmgr, hcl_oow_t xtnsize, hcl_server_prim_t* prim, hcl_errnum_t* errnum) +hak_server_t* hak_server_open (hak_mmgr_t* mmgr, hak_oow_t xtnsize, hak_server_prim_t* prim, hak_errnum_t* errnum) { - hcl_server_t* server = HCL_NULL; - hcl_t* hcl = HCL_NULL; - hcl_tmr_t* tmr = HCL_NULL; - server_hcl_xtn_t* xtn; + hak_server_t* server = HAK_NULL; + hak_t* hak = HAK_NULL; + hak_tmr_t* tmr = HAK_NULL; + server_hak_xtn_t* xtn; int pfd[2], fcv; - hcl_bitmask_t trait; + hak_bitmask_t trait; - server = (hcl_server_t*)HCL_MMGR_ALLOC(mmgr, HCL_SIZEOF(*server) + xtnsize); + server = (hak_server_t*)HAK_MMGR_ALLOC(mmgr, HAK_SIZEOF(*server) + xtnsize); if (!server) { - if (errnum) *errnum = HCL_ESYSMEM; - return HCL_NULL; + if (errnum) *errnum = HAK_ESYSMEM; + return HAK_NULL; } - hcl = hcl_openstdwithmmgr(mmgr, HCL_SIZEOF(*xtn), errnum); - if (!hcl) goto oops; + hak = hak_openstdwithmmgr(mmgr, HAK_SIZEOF(*xtn), errnum); + if (!hak) goto oops; /* replace the vmprim.log_write function */ - hcl->vmprim.log_write = server_log_write_for_dummy; + hak->vmprim.log_write = server_log_write_for_dummy; - tmr = hcl_tmr_open(hcl, 0, 1024); /* TOOD: make the timer's default size configurable */ + tmr = hak_tmr_open(hak, 0, 1024); /* TOOD: make the timer's default size configurable */ if (!tmr) { - if (errnum) *errnum = HCL_ESYSMEM; + if (errnum) *errnum = HAK_ESYSMEM; goto oops; } - if (hcl_sys_open_pipes(pfd, 1) <= -1) + if (hak_sys_open_pipes(pfd, 1) <= -1) { - if (errnum) *errnum = hcl->vmprim.syserrstrb(hcl, 0, errno, HCL_NULL, 0); + if (errnum) *errnum = hak->vmprim.syserrstrb(hak, 0, errno, HAK_NULL, 0); goto oops; } - xtn = (server_hcl_xtn_t*)hcl_getxtn(hcl); + xtn = (server_hak_xtn_t*)hak_getxtn(hak); xtn->server = server; - HCL_MEMSET (server, 0, HCL_SIZEOF(*server) + xtnsize); - server->_instsize = HCL_SIZEOF(*server); + HAK_MEMSET (server, 0, HAK_SIZEOF(*server) + xtnsize); + server->_instsize = HAK_SIZEOF(*server); server->_mmgr = mmgr; - server->_cmgr = hcl_get_utf8_cmgr(); + server->_cmgr = hak_get_utf8_cmgr(); server->prim = *prim; - server->dummy_hcl = hcl; + server->dummy_hak = hak; server->tmr = tmr; - server->cfg.logmask = ~(hcl_bitmask_t)0; + server->cfg.logmask = ~(hak_bitmask_t)0; server->cfg.worker_stack_size = 512000UL; server->cfg.actor_heap_size = 512000UL; - HCL_INIT_NTIME (&server->cfg.worker_idle_timeout, 0, 0); - HCL_INIT_NTIME (&server->cfg.actor_max_runtime, 0, 0); + HAK_INIT_NTIME (&server->cfg.worker_idle_timeout, 0, 0); + HAK_INIT_NTIME (&server->cfg.actor_max_runtime, 0, 0); server->mux_pipe[0] = pfd[0]; server->mux_pipe[1] = pfd[1]; - server->wid_map.free_first = HCL_SERVER_WID_INVALID; - server->wid_map.free_last = HCL_SERVER_WID_INVALID; + server->wid_map.free_first = HAK_SERVER_WID_INVALID; + server->wid_map.free_last = HAK_SERVER_WID_INVALID; server->listener.ep_fd = -1; - pthread_mutex_init (&server->worker_mutex, HCL_NULL); - pthread_mutex_init (&server->tmr_mutex, HCL_NULL); - pthread_mutex_init (&server->log_mutex, HCL_NULL); + pthread_mutex_init (&server->worker_mutex, HAK_NULL); + pthread_mutex_init (&server->tmr_mutex, HAK_NULL); + pthread_mutex_init (&server->log_mutex, HAK_NULL); - /* the dummy hcl is used for this server to perform primitive operations + /* the dummy hak is used for this server to perform primitive operations * such as getting system time or logging. so the heap size doesn't * need to be changed from the tiny value set above. */ - hcl_setoption (server->dummy_hcl, HCL_LOG_MASK, &server->cfg.logmask); - hcl_setcmgr (server->dummy_hcl, hcl_server_getcmgr(server)); - hcl_getoption (server->dummy_hcl, HCL_TRAIT, &trait); -#if defined(HCL_BUILD_DEBUG) - if (server->cfg.trait & HCL_SERVER_TRAIT_DEBUG_GC) trait |= HCL_TRAIT_DEBUG_GC; - if (server->cfg.trait & HCL_SERVER_TRAIT_DEBUG_BIGINT) trait |= HCL_TRAIT_DEBUG_BIGINT; + hak_setoption (server->dummy_hak, HAK_LOG_MASK, &server->cfg.logmask); + hak_setcmgr (server->dummy_hak, hak_server_getcmgr(server)); + hak_getoption (server->dummy_hak, HAK_TRAIT, &trait); +#if defined(HAK_BUILD_DEBUG) + if (server->cfg.trait & HAK_SERVER_TRAIT_DEBUG_GC) trait |= HAK_TRAIT_DEBUG_GC; + if (server->cfg.trait & HAK_SERVER_TRAIT_DEBUG_BIGINT) trait |= HAK_TRAIT_DEBUG_BIGINT; #endif - hcl_setoption (server->dummy_hcl, HCL_TRAIT, &trait); + hak_setoption (server->dummy_hak, HAK_TRAIT, &trait); return server; oops: /* NOTE: pipe should be closed if jump to here is made after pipe() above */ - if (tmr) hcl_tmr_close (tmr); - if (hcl) hcl_close (hcl); - if (server) HCL_MMGR_FREE (mmgr, server); - return HCL_NULL; + if (tmr) hak_tmr_close (tmr); + if (hak) hak_close (hak); + if (server) HAK_MMGR_FREE (mmgr, server); + return HAK_NULL; } -void hcl_server_close (hcl_server_t* server) +void hak_server_close (hak_server_t* server) { - HCL_ASSERT (server->dummy_hcl, server->listener.head == HCL_NULL); - HCL_ASSERT (server->dummy_hcl, server->listener.count == 0); - HCL_ASSERT (server->dummy_hcl, server->listener.ep_fd == -1); + HAK_ASSERT (server->dummy_hak, server->listener.head == HAK_NULL); + HAK_ASSERT (server->dummy_hak, server->listener.count == 0); + HAK_ASSERT (server->dummy_hak, server->listener.ep_fd == -1); if (server->wid_map.ptr) { - hcl_server_freemem(server, server->wid_map.ptr); + hak_server_freemem(server, server->wid_map.ptr); server->wid_map.capa = 0; - server->wid_map.free_first = HCL_SERVER_WID_INVALID; - server->wid_map.free_last = HCL_SERVER_WID_INVALID; + server->wid_map.free_first = HAK_SERVER_WID_INVALID; + server->wid_map.free_last = HAK_SERVER_WID_INVALID; } pthread_mutex_destroy (&server->log_mutex); pthread_mutex_destroy (&server->tmr_mutex); pthread_mutex_destroy (&server->worker_mutex); - hcl_sys_close_pipes (server->mux_pipe); + hak_sys_close_pipes (server->mux_pipe); - hcl_tmr_close (server->tmr); - hcl_close (server->dummy_hcl); + hak_tmr_close (server->tmr); + hak_close (server->dummy_hak); - HCL_MMGR_FREE (server->_mmgr, server); + HAK_MMGR_FREE (server->_mmgr, server); } -static HCL_INLINE int prepare_to_acquire_wid (hcl_server_t* server) +static HAK_INLINE int prepare_to_acquire_wid (hak_server_t* server) { - hcl_oow_t new_capa; - hcl_oow_t i, j; - hcl_server_wid_map_data_t* tmp; + hak_oow_t new_capa; + hak_oow_t i, j; + hak_server_wid_map_data_t* tmp; - HCL_ASSERT (server->dummy_hcl, server->wid_map.free_first == HCL_SERVER_WID_INVALID); - HCL_ASSERT (server->dummy_hcl, server->wid_map.free_last == HCL_SERVER_WID_INVALID); + HAK_ASSERT (server->dummy_hak, server->wid_map.free_first == HAK_SERVER_WID_INVALID); + HAK_ASSERT (server->dummy_hak, server->wid_map.free_last == HAK_SERVER_WID_INVALID); - new_capa = HCL_ALIGN_POW2(server->wid_map.capa + 1, HCL_SERVER_WID_MAP_ALIGN); - if (new_capa > HCL_SERVER_WID_MAX) + new_capa = HAK_ALIGN_POW2(server->wid_map.capa + 1, HAK_SERVER_WID_MAP_ALIGN); + if (new_capa > HAK_SERVER_WID_MAX) { - if (server->wid_map.capa >= HCL_SERVER_WID_MAX) + if (server->wid_map.capa >= HAK_SERVER_WID_MAX) { - hcl_server_seterrnum (server, HCL_EFLOOD); + hak_server_seterrnum (server, HAK_EFLOOD); return -1; } - new_capa = HCL_SERVER_WID_MAX; + new_capa = HAK_SERVER_WID_MAX; } - tmp = (hcl_server_wid_map_data_t*)hcl_server_reallocmem(server, server->wid_map.ptr, HCL_SIZEOF(*tmp) * new_capa); + tmp = (hak_server_wid_map_data_t*)hak_server_reallocmem(server, server->wid_map.ptr, HAK_SIZEOF(*tmp) * new_capa); if (!tmp) return -1; server->wid_map.free_first = server->wid_map.capa; @@ -1249,7 +1249,7 @@ static HCL_INLINE int prepare_to_acquire_wid (hcl_server_t* server) tmp[i].u.next = j; } tmp[i].used = 0; - tmp[i].u.next = HCL_SERVER_WID_INVALID; + tmp[i].u.next = HAK_SERVER_WID_INVALID; server->wid_map.free_last = i; server->wid_map.ptr = tmp; @@ -1258,32 +1258,32 @@ static HCL_INLINE int prepare_to_acquire_wid (hcl_server_t* server) return 0; } -static HCL_INLINE void acquire_wid (hcl_server_t* server, hcl_server_worker_t* worker) +static HAK_INLINE void acquire_wid (hak_server_t* server, hak_server_worker_t* worker) { - hcl_oow_t wid; + hak_oow_t wid; wid = server->wid_map.free_first; worker->wid = wid; server->wid_map.free_first = server->wid_map.ptr[wid].u.next; - if (server->wid_map.free_first == HCL_SERVER_WID_INVALID) server->wid_map.free_last = HCL_SERVER_WID_INVALID; + if (server->wid_map.free_first == HAK_SERVER_WID_INVALID) server->wid_map.free_last = HAK_SERVER_WID_INVALID; server->wid_map.ptr[wid].used = 1; server->wid_map.ptr[wid].u.worker = worker; } -static HCL_INLINE void release_wid (hcl_server_t* server, hcl_server_worker_t* worker) +static HAK_INLINE void release_wid (hak_server_t* server, hak_server_worker_t* worker) { - hcl_oow_t wid; + hak_oow_t wid; wid = worker->wid; - HCL_ASSERT (server->dummy_hcl, wid < server->wid_map.capa && wid != HCL_SERVER_WID_INVALID); + HAK_ASSERT (server->dummy_hak, wid < server->wid_map.capa && wid != HAK_SERVER_WID_INVALID); server->wid_map.ptr[wid].used = 0; - server->wid_map.ptr[wid].u.next = HCL_SERVER_WID_INVALID; - if (server->wid_map.free_last == HCL_SERVER_WID_INVALID) + server->wid_map.ptr[wid].u.next = HAK_SERVER_WID_INVALID; + if (server->wid_map.free_last == HAK_SERVER_WID_INVALID) { - HCL_ASSERT (server->dummy_hcl, server->wid_map.free_first <= HCL_SERVER_WID_INVALID); + HAK_ASSERT (server->dummy_hak, server->wid_map.free_first <= HAK_SERVER_WID_INVALID); server->wid_map.free_first = wid; } else @@ -1291,100 +1291,100 @@ static HCL_INLINE void release_wid (hcl_server_t* server, hcl_server_worker_t* w server->wid_map.ptr[server->wid_map.free_last].u.next = wid; } server->wid_map.free_last = wid; - worker->wid = HCL_SERVER_WID_INVALID; + worker->wid = HAK_SERVER_WID_INVALID; } -static hcl_server_worker_t* alloc_worker (hcl_server_t* server, int cli_sck, const hcl_sckaddr_t* peeraddr) +static hak_server_worker_t* alloc_worker (hak_server_t* server, int cli_sck, const hak_sckaddr_t* peeraddr) { - hcl_server_worker_t* worker; + hak_server_worker_t* worker; - worker = (hcl_server_worker_t*)hcl_server_allocmem(server, HCL_SIZEOF(*worker)); - if (!worker) return HCL_NULL; + worker = (hak_server_worker_t*)hak_server_allocmem(server, HAK_SIZEOF(*worker)); + if (!worker) return HAK_NULL; - HCL_MEMSET (worker, 0, HCL_SIZEOF(*worker)); - worker->state = HCL_SERVER_WORKER_STATE_ZOMBIE; - worker->opstate = HCL_SERVER_WORKER_OPSTATE_IDLE; + HAK_MEMSET (worker, 0, HAK_SIZEOF(*worker)); + worker->state = HAK_SERVER_WORKER_STATE_ZOMBIE; + worker->opstate = HAK_SERVER_WORKER_OPSTATE_IDLE; worker->sck = cli_sck; worker->peeraddr = *peeraddr; worker->server = server; - worker->exec_runtime_event_index = HCL_TMR_INVALID_INDEX; + worker->exec_runtime_event_index = HAK_TMR_INVALID_INDEX; - server->dummy_hcl->vmprim.vm_gettime (server->dummy_hcl, &worker->alloc_time); /* TODO: the callback may return monotonic time. find a way to guarantee it is realtime??? */ + server->dummy_hak->vmprim.vm_gettime (server->dummy_hak, &worker->alloc_time); /* TODO: the callback may return monotonic time. find a way to guarantee it is realtime??? */ - if (server->wid_map.free_first == HCL_SERVER_WID_INVALID && prepare_to_acquire_wid(server) <= -1) + if (server->wid_map.free_first == HAK_SERVER_WID_INVALID && prepare_to_acquire_wid(server) <= -1) { - hcl_server_freemem (server, worker); - return HCL_NULL; + hak_server_freemem (server, worker); + return HAK_NULL; } acquire_wid (server, worker); return worker; } -static void fini_worker_socket (hcl_server_worker_t* worker) +static void fini_worker_socket (hak_server_worker_t* worker) { if (worker->sck >= 0) { - if (worker->hcl) + if (worker->hak) { - HCL_LOG2 (worker->hcl, SERVER_LOGMASK_INFO, "Closing worker socket %d [%zu]\n", worker->sck, worker->wid); + HAK_LOG2 (worker->hak, SERVER_LOGMASK_INFO, "Closing worker socket %d [%zu]\n", worker->sck, worker->wid); } else { - /* this should be in the main server thread. i use dummy_hcl for logging */ - HCL_LOG2 (worker->server->dummy_hcl, SERVER_LOGMASK_INFO, "Closing worker socket %d [%zu]\n", worker->sck, worker->wid); + /* this should be in the main server thread. i use dummy_hak for logging */ + HAK_LOG2 (worker->server->dummy_hak, SERVER_LOGMASK_INFO, "Closing worker socket %d [%zu]\n", worker->sck, worker->wid); } close (worker->sck); worker->sck = -1; } } -static void free_worker (hcl_server_worker_t* worker) +static void free_worker (hak_server_worker_t* worker) { fini_worker_socket (worker); - if (worker->hcl) + if (worker->hak) { - HCL_LOG1 (worker->hcl, SERVER_LOGMASK_INFO, "Killing worker [%zu]\n", worker->wid); + HAK_LOG1 (worker->hak, SERVER_LOGMASK_INFO, "Killing worker [%zu]\n", worker->wid); } else { - /* this should be in the main server thread. i use dummy_hcl for logging */ - HCL_LOG1 (worker->server->dummy_hcl, SERVER_LOGMASK_INFO, "Killing worker [%zu]\n", worker->wid); + /* this should be in the main server thread. i use dummy_hak for logging */ + HAK_LOG1 (worker->server->dummy_hak, SERVER_LOGMASK_INFO, "Killing worker [%zu]\n", worker->wid); } release_wid (worker->server, worker); - hcl_server_freemem (worker->server, worker); + hak_server_freemem (worker->server, worker); } -static void add_worker_to_server (hcl_server_t* server, hcl_server_worker_state_t wstate, hcl_server_worker_t* worker) +static void add_worker_to_server (hak_server_t* server, hak_server_worker_state_t wstate, hak_server_worker_t* worker) { - HCL_ASSERT (server->dummy_hcl, worker->server == server); + HAK_ASSERT (server->dummy_hak, worker->server == server); if (server->worker_list[wstate].tail) { server->worker_list[wstate].tail->next_worker = worker; worker->prev_worker = server->worker_list[wstate].tail; server->worker_list[wstate].tail = worker; - worker->next_worker = HCL_NULL; + worker->next_worker = HAK_NULL; } else { server->worker_list[wstate].tail = worker; server->worker_list[wstate].head = worker; - worker->prev_worker = HCL_NULL; - worker->next_worker = HCL_NULL; + worker->prev_worker = HAK_NULL; + worker->next_worker = HAK_NULL; } server->worker_list[wstate].count++; worker->state = wstate; } -static void zap_worker_in_server (hcl_server_t* server, hcl_server_worker_t* worker) +static void zap_worker_in_server (hak_server_t* server, hak_server_worker_t* worker) { - hcl_server_worker_state_t wstate; + hak_server_worker_state_t wstate; - HCL_ASSERT (server->dummy_hcl, worker->server == server); + HAK_ASSERT (server->dummy_hak, worker->server == server); wstate = worker->state; if (worker->prev_worker) worker->prev_worker->next_worker = worker->next_worker; @@ -1392,38 +1392,38 @@ static void zap_worker_in_server (hcl_server_t* server, hcl_server_worker_t* wor if (worker->next_worker) worker->next_worker->prev_worker = worker->prev_worker; else server->worker_list[wstate].tail = worker->prev_worker; - HCL_ASSERT (server->dummy_hcl, server->worker_list[wstate].count > 0); + HAK_ASSERT (server->dummy_hak, server->worker_list[wstate].count > 0); server->worker_list[wstate].count--; - worker->state = HCL_SERVER_WORKER_STATE_ZOMBIE; - worker->prev_worker = HCL_NULL; - worker->next_worker = HCL_NULL; + worker->state = HAK_SERVER_WORKER_STATE_ZOMBIE; + worker->prev_worker = HAK_NULL; + worker->next_worker = HAK_NULL; } -static int worker_step (hcl_server_worker_t* worker) +static int worker_step (hak_server_worker_t* worker) { - hcl_xproto_t* proto = worker->proto; - hcl_server_t* server = worker->server; - hcl_t* hcl = worker->hcl; + hak_xproto_t* proto = worker->proto; + hak_server_t* server = worker->server; + hak_t* hak = worker->hak; struct pollfd pfd; int tmout, actual_tmout; ssize_t x; int n; - //HCL_ASSERT (hcl, proto->rcv.len < proto->rcv.len_needed); + //HAK_ASSERT (hak, proto->rcv.len < proto->rcv.len_needed); - if (HCL_UNLIKELY(hcl_xproto_geteof(proto))) + if (HAK_UNLIKELY(hak_xproto_geteof(proto))) { // TODO: may not be an error if writable needs to be checked... - hcl_seterrbfmt (hcl, HCL_EGENERIC, "connection closed"); + hak_seterrbfmt (hak, HAK_EGENERIC, "connection closed"); return -1; } - tmout = HCL_SECNSEC_TO_MSEC(server->cfg.worker_idle_timeout.sec, server->cfg.worker_idle_timeout.nsec); + tmout = HAK_SECNSEC_TO_MSEC(server->cfg.worker_idle_timeout.sec, server->cfg.worker_idle_timeout.nsec); actual_tmout = (tmout <= 0)? 10000: tmout; pfd.fd = worker->sck; pfd.events = 0; - if (!hcl_xproto_ready(proto)) pfd.events |= POLLIN; + if (!hak_xproto_ready(proto)) pfd.events |= POLLIN; //if (proto->snd.len > 0) pfd.events |= POLLOUT; if (pfd.events) @@ -1432,7 +1432,7 @@ static int worker_step (hcl_server_worker_t* worker) if (n <= -1) { if (errno == EINTR) return 0; - hcl_seterrwithsyserr (hcl, 0, errno); + hak_seterrwithsyserr (hak, 0, errno); return -1; } else if (n == 0) @@ -1441,7 +1441,7 @@ static int worker_step (hcl_server_worker_t* worker) if (tmout > 0) { /* timeout explicity set. no activity for that duration. considered idle */ - hcl_seterrbfmt (hcl, HCL_EGENERIC, "no activity on the worker socket %d", worker->sck); + hak_seterrbfmt (hak, HAK_EGENERIC, "no activity on the worker socket %d", worker->sck); return -1; } @@ -1450,7 +1450,7 @@ static int worker_step (hcl_server_worker_t* worker) if (pfd.revents & POLLERR) { - hcl_seterrbfmt (hcl, HCL_EGENERIC, "error condition detected on workder socket %d", worker->sck); + hak_seterrbfmt (hak, HAK_EGENERIC, "error condition detected on workder socket %d", worker->sck); return -1; } @@ -1460,27 +1460,27 @@ static int worker_step (hcl_server_worker_t* worker) if (pfd.revents & POLLIN) { - hcl_oow_t bcap; - hcl_uint8_t* bptr; + hak_oow_t bcap; + hak_uint8_t* bptr; - bptr = hcl_xproto_getbuf(proto, &bcap);; + bptr = hak_xproto_getbuf(proto, &bcap);; x = recv(worker->sck, bptr, bcap, 0); if (x <= -1) { if (errno == EINTR) goto carry_on; /* didn't read read */ - hcl_seterrwithsyserr (hcl, 0, errno); + hak_seterrwithsyserr (hak, 0, errno); return -1; } - if (x == 0) hcl_xproto_seteof(proto, 1); - hcl_xproto_advbuf (proto, x); + if (x == 0) hak_xproto_seteof(proto, 1); + hak_xproto_advbuf (proto, x); } } /* the receiver buffer has enough data */ - while (hcl_xproto_ready(worker->proto)) + while (hak_xproto_ready(worker->proto)) { - if ((n = hcl_xproto_process(worker->proto)) <= -1) + if ((n = hak_xproto_process(worker->proto)) <= -1) { /* TODO: proper error message */ return -1; @@ -1496,162 +1496,162 @@ carry_on: return 1; /* carry on */ } -static int init_worker_hcl (hcl_server_worker_t* worker) +static int init_worker_hak (hak_server_worker_t* worker) { - hcl_server_t* server = worker->server; - hcl_t* hcl; - worker_hcl_xtn_t* xtn; - hcl_bitmask_t trait; - hcl_cb_t hclcb; + hak_server_t* server = worker->server; + hak_t* hak; + worker_hak_xtn_t* xtn; + hak_bitmask_t trait; + hak_cb_t hakcb; - hcl = hcl_openstdwithmmgr(hcl_server_getmmgr(server), HCL_SIZEOF(*xtn), HCL_NULL); - if (HCL_UNLIKELY(!hcl)) goto oops; + hak = hak_openstdwithmmgr(hak_server_getmmgr(server), HAK_SIZEOF(*xtn), HAK_NULL); + if (HAK_UNLIKELY(!hak)) goto oops; /* replace the vmprim.log_write function */ - hcl->vmprim.log_write = server_log_write; + hak->vmprim.log_write = server_log_write; - xtn = (worker_hcl_xtn_t*)hcl_getxtn(hcl); + xtn = (worker_hak_xtn_t*)hak_getxtn(hak); xtn->worker = worker; - hcl_setoption (hcl, HCL_MOD_INCTX, &server->cfg.module_inctx); - hcl_setoption (hcl, HCL_LOG_MASK, &server->cfg.logmask); - hcl_setcmgr (hcl, hcl_server_getcmgr(server)); + hak_setoption (hak, HAK_MOD_INCTX, &server->cfg.module_inctx); + hak_setoption (hak, HAK_LOG_MASK, &server->cfg.logmask); + hak_setcmgr (hak, hak_server_getcmgr(server)); - hcl_getoption (hcl, HCL_TRAIT, &trait); -#if defined(HCL_BUILD_DEBUG) - if (server->cfg.trait & HCL_SERVER_TRAIT_DEBUG_GC) trait |= HCL_TRAIT_DEBUG_GC; - if (server->cfg.trait & HCL_SERVER_TRAIT_DEBUG_BIGINT) trait |= HCL_TRAIT_DEBUG_BIGINT; + hak_getoption (hak, HAK_TRAIT, &trait); +#if defined(HAK_BUILD_DEBUG) + if (server->cfg.trait & HAK_SERVER_TRAIT_DEBUG_GC) trait |= HAK_TRAIT_DEBUG_GC; + if (server->cfg.trait & HAK_SERVER_TRAIT_DEBUG_BIGINT) trait |= HAK_TRAIT_DEBUG_BIGINT; #endif - trait |= HCL_TRAIT_LANG_ENABLE_EOL; - hcl_setoption (hcl, HCL_TRAIT, &trait); + trait |= HAK_TRAIT_LANG_ENABLE_EOL; + hak_setoption (hak, HAK_TRAIT, &trait); - HCL_MEMSET (&hclcb, 0, HCL_SIZEOF(hclcb)); - /*hclcb.fini = fini_hcl; - hclcb.gc = gc_hcl;*/ - hclcb.vm_startup = vm_startup; - hclcb.vm_cleanup = vm_cleanup; - hclcb.vm_checkbc = vm_checkbc; - hcl_regcb (hcl, &hclcb); + HAK_MEMSET (&hakcb, 0, HAK_SIZEOF(hakcb)); + /*hakcb.fini = fini_hak; + hakcb.gc = gc_hak;*/ + hakcb.vm_startup = vm_startup; + hakcb.vm_cleanup = vm_cleanup; + hakcb.vm_checkbc = vm_checkbc; + hak_regcb (hak, &hakcb); - if (hcl_ignite(hcl, server->cfg.actor_heap_size) <= -1) goto oops; - if (hcl_addbuiltinprims(hcl) <= -1) goto oops; + if (hak_ignite(hak, server->cfg.actor_heap_size) <= -1) goto oops; + if (hak_addbuiltinprims(hak) <= -1) goto oops; - if (hcl_attachccio(hcl, read_handler) <= -1) goto oops; - if (hcl_attachudio(hcl, scan_handler, print_handler) <= -1) goto oops; + if (hak_attachccio(hak, read_handler) <= -1) goto oops; + if (hak_attachudio(hak, scan_handler, print_handler) <= -1) goto oops; - if (hcl_beginfeed(hcl, on_fed_cnode) <= -1) goto oops; + if (hak_beginfeed(hak, on_fed_cnode) <= -1) goto oops; - worker->hcl = hcl; + worker->hak = hak; return 0; oops: - if (hcl) hcl_close (hcl); + if (hak) hak_close (hak); return -1; } -static void fini_worker_hcl (hcl_server_worker_t* worker) +static void fini_worker_hak (hak_server_worker_t* worker) { - if (HCL_LIKELY(worker->hcl)) + if (HAK_LIKELY(worker->hak)) { - hcl_endfeed (worker->hcl); - hcl_close (worker->hcl); - worker->hcl = HCL_NULL; + hak_endfeed (worker->hak); + hak_close (worker->hak); + worker->hak = HAK_NULL; } } -static int init_worker_proto (hcl_server_worker_t* worker) +static int init_worker_proto (hak_server_worker_t* worker) { - hcl_xproto_t* proto; + hak_xproto_t* proto; proto_xtn_t* xtn; - hcl_xproto_cb_t cb; + hak_xproto_cb_t cb; - HCL_MEMSET (&cb, 0, HCL_SIZEOF(cb)); + HAK_MEMSET (&cb, 0, HAK_SIZEOF(cb)); cb.on_packet = server_on_packet; - proto = hcl_xproto_open(hcl_server_getmmgr(worker->server), &cb, HCL_SIZEOF(*xtn)); - if (HCL_UNLIKELY(!proto)) return -1; + proto = hak_xproto_open(hak_server_getmmgr(worker->server), &cb, HAK_SIZEOF(*xtn)); + if (HAK_UNLIKELY(!proto)) return -1; - xtn = hcl_xproto_getxtn(proto); + xtn = hak_xproto_getxtn(proto); xtn->worker = worker; worker->proto = proto; return 0; } -static void fini_worker_proto (hcl_server_worker_t* worker) +static void fini_worker_proto (hak_server_worker_t* worker) { - if (HCL_LIKELY(worker->proto)) + if (HAK_LIKELY(worker->proto)) { - hcl_xproto_close (worker->proto); - worker->proto = HCL_NULL; + hak_xproto_close (worker->proto); + worker->proto = HAK_NULL; } } static void* worker_main (void* ctx) { - hcl_server_worker_t* worker = (hcl_server_worker_t*)ctx; - hcl_server_t* server = worker->server; + hak_server_worker_t* worker = (hak_server_worker_t*)ctx; + hak_server_t* server = worker->server; sigset_t set; int n; sigfillset (&set); - pthread_sigmask (SIG_BLOCK, &set, HCL_NULL); + pthread_sigmask (SIG_BLOCK, &set, HAK_NULL); worker->thr = pthread_self(); - n = init_worker_hcl(worker); - if (HCL_UNLIKELY(n <= -1)) + n = init_worker_hak(worker); + if (HAK_UNLIKELY(n <= -1)) { /* TODO: capture error ... */ - return HCL_NULL; + return HAK_NULL; } n = init_worker_proto(worker); - if (HCL_UNLIKELY(n <= -1)) + if (HAK_UNLIKELY(n <= -1)) { - fini_worker_hcl (worker); - return HCL_NULL; + fini_worker_hak (worker); + return HAK_NULL; } pthread_mutex_lock (&server->worker_mutex); - add_worker_to_server (server, HCL_SERVER_WORKER_STATE_ALIVE, worker); + add_worker_to_server (server, HAK_SERVER_WORKER_STATE_ALIVE, worker); pthread_mutex_unlock (&server->worker_mutex); /* the worker loop */ while (!server->stopreq) { int n; - worker->opstate = HCL_SERVER_WORKER_OPSTATE_WAIT; + worker->opstate = HAK_SERVER_WORKER_OPSTATE_WAIT; if ((n = worker_step(worker)) <= 0) { - worker->opstate = (n <= -1)? HCL_SERVER_WORKER_OPSTATE_ERROR: HCL_SERVER_WORKER_OPSTATE_IDLE; + worker->opstate = (n <= -1)? HAK_SERVER_WORKER_OPSTATE_ERROR: HAK_SERVER_WORKER_OPSTATE_IDLE; break; } } - hcl_xproto_close (worker->proto); - worker->proto = HCL_NULL; + hak_xproto_close (worker->proto); + worker->proto = HAK_NULL; - fini_worker_hcl (worker); + fini_worker_hak (worker); pthread_mutex_lock (&server->worker_mutex); fini_worker_socket (worker); if (!worker->claimed) { zap_worker_in_server (server, worker); - add_worker_to_server (server, HCL_SERVER_WORKER_STATE_DEAD, worker); + add_worker_to_server (server, HAK_SERVER_WORKER_STATE_DEAD, worker); } pthread_mutex_unlock (&server->worker_mutex); - return HCL_NULL; + return HAK_NULL; } -static void purge_all_workers (hcl_server_t* server, hcl_server_worker_state_t wstate) +static void purge_all_workers (hak_server_t* server, hak_server_worker_state_t wstate) { - hcl_server_worker_t* worker; + hak_server_worker_t* worker; while (1) { @@ -1666,87 +1666,87 @@ static void purge_all_workers (hcl_server_t* server, hcl_server_worker_state_t w pthread_mutex_unlock (&server->worker_mutex); if (!worker) break; - pthread_join (worker->thr, HCL_NULL); + pthread_join (worker->thr, HAK_NULL); free_worker (worker); } } -void hcl_server_logbfmt (hcl_server_t* server, hcl_bitmask_t mask, const hcl_bch_t* fmt, ...) +void hak_server_logbfmt (hak_server_t* server, hak_bitmask_t mask, const hak_bch_t* fmt, ...) { va_list ap; va_start (ap, fmt); - hcl_logbfmtv (server->dummy_hcl, mask, fmt, ap); + hak_logbfmtv (server->dummy_hak, mask, fmt, ap); va_end (ap); } -void hcl_server_logufmt (hcl_server_t* server, hcl_bitmask_t mask, const hcl_uch_t* fmt, ...) +void hak_server_logufmt (hak_server_t* server, hak_bitmask_t mask, const hak_uch_t* fmt, ...) { va_list ap; va_start (ap, fmt); - hcl_logufmtv (server->dummy_hcl, mask, fmt, ap); + hak_logufmtv (server->dummy_hak, mask, fmt, ap); va_end (ap); } -static void set_err_with_syserr (hcl_server_t* server, int syserr_type, int syserr_code, const char* bfmt, ...) +static void set_err_with_syserr (hak_server_t* server, int syserr_type, int syserr_code, const char* bfmt, ...) { - hcl_t* hcl = server->dummy_hcl; - hcl_errnum_t errnum; - hcl_oow_t tmplen, tmplen2; + hak_t* hak = server->dummy_hak; + hak_errnum_t errnum; + hak_oow_t tmplen, tmplen2; va_list ap; - static hcl_bch_t b_dash[] = { ' ', '-', ' ', '\0' }; - static hcl_uch_t u_dash[] = { ' ', '-', ' ', '\0' }; + static hak_bch_t b_dash[] = { ' ', '-', ' ', '\0' }; + static hak_uch_t u_dash[] = { ' ', '-', ' ', '\0' }; - if (hcl->shuterr) return; + if (hak->shuterr) return; - if (hcl->vmprim.syserrstrb) + if (hak->vmprim.syserrstrb) { - errnum = hcl->vmprim.syserrstrb(hcl, syserr_type, syserr_code, hcl->errmsg.tmpbuf.bch, HCL_COUNTOF(hcl->errmsg.tmpbuf.bch)); + errnum = hak->vmprim.syserrstrb(hak, syserr_type, syserr_code, hak->errmsg.tmpbuf.bch, HAK_COUNTOF(hak->errmsg.tmpbuf.bch)); va_start (ap, bfmt); - hcl_seterrbfmtv (hcl, errnum, bfmt, ap); + hak_seterrbfmtv (hak, errnum, bfmt, ap); va_end (ap); - #if defined(HCL_OOCH_IS_UCH) - hcl->errmsg.len += hcl_copy_ucstr(&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, u_dash); - tmplen2 = HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len; - hcl_convbtoucstr (hcl, hcl->errmsg.tmpbuf.bch, &tmplen, &hcl->errmsg.buf[hcl->errmsg.len], &tmplen2); - hcl->errmsg.len += tmplen2; /* ignore conversion errors */ + #if defined(HAK_OOCH_IS_UCH) + hak->errmsg.len += hak_copy_ucstr(&hak->errmsg.buf[hak->errmsg.len], HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len, u_dash); + tmplen2 = HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len; + hak_convbtoucstr (hak, hak->errmsg.tmpbuf.bch, &tmplen, &hak->errmsg.buf[hak->errmsg.len], &tmplen2); + hak->errmsg.len += tmplen2; /* ignore conversion errors */ #else - hcl->errmsg.len += hcl_copy_bcstr(&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, b_dash); - hcl->errmsg.len += hcl_copy_bcstr(&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, hcl->errmsg.tmpbuf.bch); + hak->errmsg.len += hak_copy_bcstr(&hak->errmsg.buf[hak->errmsg.len], HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len, b_dash); + hak->errmsg.len += hak_copy_bcstr(&hak->errmsg.buf[hak->errmsg.len], HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len, hak->errmsg.tmpbuf.bch); #endif } else { - HCL_ASSERT (hcl, hcl->vmprim.syserrstru != HCL_NULL); + HAK_ASSERT (hak, hak->vmprim.syserrstru != HAK_NULL); - errnum = hcl->vmprim.syserrstru(hcl, syserr_type, syserr_code, hcl->errmsg.tmpbuf.uch, HCL_COUNTOF(hcl->errmsg.tmpbuf.uch)); + errnum = hak->vmprim.syserrstru(hak, syserr_type, syserr_code, hak->errmsg.tmpbuf.uch, HAK_COUNTOF(hak->errmsg.tmpbuf.uch)); va_start (ap, bfmt); - hcl_seterrbfmtv (hcl, errnum, bfmt, ap); + hak_seterrbfmtv (hak, errnum, bfmt, ap); va_end (ap); - #if defined(HCL_OOCH_IS_UCH) - hcl->errmsg.len += hcl_copy_ucstr(&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, u_dash); - hcl->errmsg.len += hcl_copy_ucstr(&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, hcl->errmsg.tmpbuf.uch); + #if defined(HAK_OOCH_IS_UCH) + hak->errmsg.len += hak_copy_ucstr(&hak->errmsg.buf[hak->errmsg.len], HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len, u_dash); + hak->errmsg.len += hak_copy_ucstr(&hak->errmsg.buf[hak->errmsg.len], HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len, hak->errmsg.tmpbuf.uch); #else - hcl->errmsg.len += hcl_copy_bcstr(&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, b_dash); - tmplen2 = HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len; - hcl_convutobcstr (hcl, hcl->errmsg.tmpbuf.uch, &tmplen, &hcl->errmsg.buf[hcl->errmsg.len], &tmplen2); - hcl->errmsg.len += tmplen2; /* ignore conversion errors */ + hak->errmsg.len += hak_copy_bcstr(&hak->errmsg.buf[hak->errmsg.len], HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len, b_dash); + tmplen2 = HAK_COUNTOF(hak->errmsg.buf) - hak->errmsg.len; + hak_convutobcstr (hak, hak->errmsg.tmpbuf.uch, &tmplen, &hak->errmsg.buf[hak->errmsg.len], &tmplen2); + hak->errmsg.len += tmplen2; /* ignore conversion errors */ #endif } server->errnum = errnum; - hcl_copy_oochars (server->errmsg.buf, server->dummy_hcl->errmsg.buf, HCL_COUNTOF(server->errmsg.buf)); - server->errmsg.len = server->dummy_hcl->errmsg.len; + hak_copy_oochars (server->errmsg.buf, server->dummy_hak->errmsg.buf, HAK_COUNTOF(server->errmsg.buf)); + server->errmsg.len = server->dummy_hak->errmsg.len; } -static void free_all_listeners (hcl_server_t* server) +static void free_all_listeners (hak_server_t* server) { - hcl_server_listener_t* lp; + hak_server_listener_t* lp; #if defined(USE_EPOLL) struct epoll_event dummy_ev; @@ -1763,19 +1763,19 @@ static void free_all_listeners (hcl_server_t* server) epoll_ctl (server->listener.ep_fd, EPOLL_CTL_DEL, lp->sck, &dummy_ev); #endif close (lp->sck); - hcl_server_freemem (server, lp); + hak_server_freemem (server, lp); } #if defined(USE_EPOLL) - HCL_ASSERT (server->dummy_hcl, server->listener.ep_fd >= 0); + HAK_ASSERT (server->dummy_hak, server->listener.ep_fd >= 0); close (server->listener.ep_fd); server->listener.ep_fd = -1; #endif } -static int setup_listeners (hcl_server_t* server, const hcl_bch_t* addrs) +static int setup_listeners (hak_server_t* server, const hak_bch_t* addrs) { - const hcl_bch_t* addr_ptr, * comma; + const hak_bch_t* addr_ptr, * comma; int ep_fd, fcv; #if defined(USE_EPOLL) struct epoll_event ev; @@ -1784,19 +1784,19 @@ static int setup_listeners (hcl_server_t* server, const hcl_bch_t* addrs) if (ep_fd <= -1) { set_err_with_syserr (server, 0, errno, "unable to create multiplexer"); - HCL_LOG1 (server->dummy_hcl, SERVER_LOGMASK_ERROR, "%js\n", hcl_server_geterrmsg(server)); + HAK_LOG1 (server->dummy_hak, SERVER_LOGMASK_ERROR, "%js\n", hak_server_geterrmsg(server)); return -1; } - hcl_sys_set_cloexec(ep_fd, 1); + hak_sys_set_cloexec(ep_fd, 1); - HCL_MEMSET (&ev, 0, HCL_SIZEOF(ev)); + HAK_MEMSET (&ev, 0, HAK_SIZEOF(ev)); ev.events = EPOLLIN | EPOLLHUP | EPOLLERR; ev.data.fd = server->mux_pipe[0]; if (epoll_ctl(ep_fd, EPOLL_CTL_ADD, server->mux_pipe[0], &ev) <= -1) { set_err_with_syserr (server, 0, errno, "unable to register pipe %d to multiplexer", server->mux_pipe[0]); - HCL_LOG1 (server->dummy_hcl, SERVER_LOGMASK_ERROR, "%js\n", hcl_server_geterrmsg(server)); + HAK_LOG1 (server->dummy_hak, SERVER_LOGMASK_ERROR, "%js\n", hak_server_geterrmsg(server)); close (ep_fd); return -1; } @@ -1806,21 +1806,21 @@ static int setup_listeners (hcl_server_t* server, const hcl_bch_t* addrs) addr_ptr = addrs; while (1) { - hcl_sckaddr_t srv_addr; + hak_sckaddr_t srv_addr; int srv_fd, sck_fam, optval; - hcl_scklen_t srv_len; - hcl_oow_t addr_len; - hcl_server_listener_t* listener; + hak_scklen_t srv_len; + hak_oow_t addr_len; + hak_server_listener_t* listener; - comma = hcl_find_bchar_in_bcstr(addr_ptr, ','); - addr_len = comma? comma - addr_ptr: hcl_count_bcstr(addr_ptr); + comma = hak_find_bchar_in_bcstr(addr_ptr, ','); + addr_len = comma? comma - addr_ptr: hak_count_bcstr(addr_ptr); /* [NOTE] no whitespaces are allowed before and after a comma */ - sck_fam = hcl_bchars_to_sckaddr(addr_ptr, addr_len, &srv_addr, &srv_len); + sck_fam = hak_bchars_to_sckaddr(addr_ptr, addr_len, &srv_addr, &srv_len); if (sck_fam <= -1) { - hcl_server_seterrbfmt (server, HCL_EINVAL, "unable to convert address - %.*hs", addr_len, addr_ptr); - HCL_LOG1 (server->dummy_hcl, SERVER_LOGMASK_ERROR, "%js\n", hcl_server_geterrmsg(server)); + hak_server_seterrbfmt (server, HAK_EINVAL, "unable to convert address - %.*hs", addr_len, addr_ptr); + HAK_LOG1 (server->dummy_hak, SERVER_LOGMASK_ERROR, "%js\n", hak_server_geterrmsg(server)); goto next_segment; } @@ -1828,19 +1828,19 @@ static int setup_listeners (hcl_server_t* server, const hcl_bch_t* addrs) if (srv_fd <= -1) { set_err_with_syserr (server, 0, errno, "unable to open server socket for %.*hs", addr_len, addr_ptr); - HCL_LOG1 (server->dummy_hcl, SERVER_LOGMASK_ERROR, "%js\n", hcl_server_geterrmsg(server)); + HAK_LOG1 (server->dummy_hak, SERVER_LOGMASK_ERROR, "%js\n", hak_server_geterrmsg(server)); goto next_segment; } optval = 1; - setsockopt (srv_fd, SOL_SOCKET, SO_REUSEADDR, &optval, HCL_SIZEOF(int)); - hcl_sys_set_nonblock (srv_fd, 1); /* the listening socket is non-blocking unlike accepted sockets */ - hcl_sys_set_cloexec (srv_fd, 1); + setsockopt (srv_fd, SOL_SOCKET, SO_REUSEADDR, &optval, HAK_SIZEOF(int)); + hak_sys_set_nonblock (srv_fd, 1); /* the listening socket is non-blocking unlike accepted sockets */ + hak_sys_set_cloexec (srv_fd, 1); if (bind(srv_fd, (struct sockaddr*)&srv_addr, srv_len) == -1) { set_err_with_syserr (server, 0, errno, "unable to bind server socket %d for %.*hs", srv_fd, addr_len, addr_ptr); - HCL_LOG1 (server->dummy_hcl, SERVER_LOGMASK_ERROR, "%js\n", hcl_server_geterrmsg(server)); + HAK_LOG1 (server->dummy_hak, SERVER_LOGMASK_ERROR, "%js\n", hak_server_geterrmsg(server)); close (srv_fd); goto next_segment; } @@ -1848,33 +1848,33 @@ static int setup_listeners (hcl_server_t* server, const hcl_bch_t* addrs) if (listen(srv_fd, 128) <= -1) { set_err_with_syserr (server, 0, errno, "unable to listen on server socket %d for %.*hs", srv_fd, addr_len, addr_ptr); - HCL_LOG1 (server->dummy_hcl, SERVER_LOGMASK_ERROR, "%js\n", hcl_server_geterrmsg(server)); + HAK_LOG1 (server->dummy_hak, SERVER_LOGMASK_ERROR, "%js\n", hak_server_geterrmsg(server)); close (srv_fd); goto next_segment; } #if defined(USE_EPOLL) - HCL_MEMSET (&ev, 0, HCL_SIZEOF(ev)); + HAK_MEMSET (&ev, 0, HAK_SIZEOF(ev)); ev.events = EPOLLIN | EPOLLHUP | EPOLLERR; ev.data.fd = srv_fd; if (epoll_ctl(ep_fd, EPOLL_CTL_ADD, srv_fd, &ev) <= -1) { set_err_with_syserr (server, 0, errno, "unable to register server socket %d to multiplexer for %.*hs", srv_fd, addr_len, addr_ptr); - HCL_LOG1 (server->dummy_hcl, SERVER_LOGMASK_ERROR, "%js\n", hcl_server_geterrmsg(server)); + HAK_LOG1 (server->dummy_hak, SERVER_LOGMASK_ERROR, "%js\n", hak_server_geterrmsg(server)); close (srv_fd); goto next_segment; } #endif - listener = (hcl_server_listener_t*)hcl_server_allocmem(server, HCL_SIZEOF(*listener)); + listener = (hak_server_listener_t*)hak_server_allocmem(server, HAK_SIZEOF(*listener)); if (!listener) { close(srv_fd); goto next_segment; } - HCL_MEMSET (listener, 0, HCL_SIZEOF(*listener)); + HAK_MEMSET (listener, 0, HAK_SIZEOF(*listener)); listener->sck = srv_fd; listener->sckaddr = srv_addr; listener->next_listener = server->listener.head; @@ -1890,7 +1890,7 @@ static int setup_listeners (hcl_server_t* server, const hcl_bch_t* addrs) if (!server->listener.head) { /* no valid server has been configured */ - hcl_server_seterrbfmt (server, HCL_EINVAL, "unable to set up listeners with %hs", addrs); + hak_server_seterrbfmt (server, HAK_EINVAL, "unable to set up listeners with %hs", addrs); free_all_listeners (server); return -1; } @@ -1898,7 +1898,7 @@ static int setup_listeners (hcl_server_t* server, const hcl_bch_t* addrs) return 0; } -int hcl_server_start (hcl_server_t* server, const hcl_bch_t* addrs) +int hak_server_start (hak_server_t* server, const hak_bch_t* addrs) { int xret = 0, fcv; pthread_attr_t thr_attr; @@ -1911,26 +1911,26 @@ int hcl_server_start (hcl_server_t* server, const hcl_bch_t* addrs) server->stopreq = 0; while (!server->stopreq) { - hcl_sckaddr_t cli_addr; - hcl_scklen_t cli_len; + hak_sckaddr_t cli_addr; + hak_scklen_t cli_len; int cli_fd; pthread_t thr; - hcl_ntime_t tmout; - hcl_server_worker_t* worker; + hak_ntime_t tmout; + hak_server_worker_t* worker; int n; pthread_mutex_lock (&server->tmr_mutex); - n = hcl_tmr_gettmout(server->tmr, HCL_NULL, &tmout); + n = hak_tmr_gettmout(server->tmr, HAK_NULL, &tmout); pthread_mutex_unlock (&server->tmr_mutex); - if (n <= -1) HCL_INIT_NTIME (&tmout, 10, 0); + if (n <= -1) HAK_INIT_NTIME (&tmout, 10, 0); #if defined(USE_EPOLL) - n = epoll_wait(server->listener.ep_fd, server->listener.ev_buf, HCL_COUNTOF(server->listener.ev_buf), HCL_SECNSEC_TO_MSEC(tmout.sec, tmout.nsec)); + n = epoll_wait(server->listener.ep_fd, server->listener.ev_buf, HAK_COUNTOF(server->listener.ev_buf), HAK_SECNSEC_TO_MSEC(tmout.sec, tmout.nsec)); #else n = poll(); /* TODO: */ #endif - purge_all_workers (server, HCL_SERVER_WORKER_STATE_DEAD); + purge_all_workers (server, HAK_SERVER_WORKER_STATE_DEAD); if (n <= -1) { if (server->stopreq) break; /* normal termination requested */ @@ -1942,7 +1942,7 @@ int hcl_server_start (hcl_server_t* server, const hcl_bch_t* addrs) } pthread_mutex_lock (&server->tmr_mutex); - hcl_tmr_fire (server->tmr, HCL_NULL, HCL_NULL); + hak_tmr_fire (server->tmr, HAK_NULL, HAK_NULL); pthread_mutex_unlock (&server->tmr_mutex); while (n > 0) @@ -1964,36 +1964,36 @@ int hcl_server_start (hcl_server_t* server, const hcl_bch_t* addrs) if (evp->data.fd == server->mux_pipe[0]) { char tmp[128]; - while (read(server->mux_pipe[0], tmp, HCL_SIZEOF(tmp)) > 0) /* nothing */; + while (read(server->mux_pipe[0], tmp, HAK_SIZEOF(tmp)) > 0) /* nothing */; } else { /* the reset should be the listener's socket */ - cli_len = HCL_SIZEOF(cli_addr); + cli_len = HAK_SIZEOF(cli_addr); cli_fd = accept(evp->data.fd, (struct sockaddr*)&cli_addr, &cli_len); if (cli_fd == -1) { if (server->stopreq) break; /* normal termination requested */ if (errno == EINTR) continue; /* interrupted but no termination requested */ - if (hcl_sys_is_errno_wb(errno)) continue; + if (hak_sys_is_errno_wb(errno)) continue; set_err_with_syserr (server, 0, errno, "unable to accept worker on server socket %d", evp->data.fd); xret = -1; break; } - hcl_sys_set_nonblock (cli_fd, 0); /* force the accepted socket to be blocking */ - hcl_sys_set_cloexec (cli_fd, 1); + hak_sys_set_nonblock (cli_fd, 0); /* force the accepted socket to be blocking */ + hak_sys_set_cloexec (cli_fd, 1); if (server->cfg.worker_max_count > 0) { int flood; pthread_mutex_lock (&server->worker_mutex); - flood = (server->worker_list[HCL_SERVER_WORKER_STATE_ALIVE].count >= server->cfg.worker_max_count); + flood = (server->worker_list[HAK_SERVER_WORKER_STATE_ALIVE].count >= server->cfg.worker_max_count); pthread_mutex_unlock (&server->worker_mutex); if (flood) { - HCL_LOG1 (server->dummy_hcl, SERVER_LOGMASK_ERROR, "Not accepting connection for too many workers - socket %d\n", cli_fd); + HAK_LOG1 (server->dummy_hak, SERVER_LOGMASK_ERROR, "Not accepting connection for too many workers - socket %d\n", cli_fd); goto drop_connection; } } @@ -2001,13 +2001,13 @@ int hcl_server_start (hcl_server_t* server, const hcl_bch_t* addrs) worker = alloc_worker(server, cli_fd, &cli_addr); if (!worker) { - HCL_LOG1 (server->dummy_hcl, SERVER_LOGMASK_ERROR, "Unable to accomodate worker - socket %d\n", cli_fd); + HAK_LOG1 (server->dummy_hak, SERVER_LOGMASK_ERROR, "Unable to accomodate worker - socket %d\n", cli_fd); drop_connection: close (cli_fd); } else { - HCL_LOG2 (server->dummy_hcl, SERVER_LOGMASK_INFO, "Accomodated worker [%zu] - socket %d\n", worker->wid, cli_fd); + HAK_LOG2 (server->dummy_hak, SERVER_LOGMASK_INFO, "Accomodated worker [%zu] - socket %d\n", worker->wid, cli_fd); if (pthread_create(&thr, &thr_attr, worker_main, worker) != 0) { free_worker (worker); @@ -2017,8 +2017,8 @@ int hcl_server_start (hcl_server_t* server, const hcl_bch_t* addrs) } } - purge_all_workers (server, HCL_SERVER_WORKER_STATE_ALIVE); - purge_all_workers (server, HCL_SERVER_WORKER_STATE_DEAD); + purge_all_workers (server, HAK_SERVER_WORKER_STATE_ALIVE); + purge_all_workers (server, HAK_SERVER_WORKER_STATE_DEAD); pthread_attr_destroy (&thr_attr); @@ -2026,224 +2026,224 @@ int hcl_server_start (hcl_server_t* server, const hcl_bch_t* addrs) return xret; } -void hcl_server_stop (hcl_server_t* server) +void hak_server_stop (hak_server_t* server) { server->stopreq = 1; write (server->mux_pipe[1], "Q", 1); /* don't care about failure */ } -int hcl_server_setoption (hcl_server_t* server, hcl_server_option_t id, const void* value) +int hak_server_setoption (hak_server_t* server, hak_server_option_t id, const void* value) { switch (id) { - case HCL_SERVER_TRAIT: - server->cfg.trait = *(const hcl_bitmask_t*)value; - if (server->dummy_hcl) + case HAK_SERVER_TRAIT: + server->cfg.trait = *(const hak_bitmask_t*)value; + if (server->dummy_hak) { - /* setting this affects the dummy hcl immediately. - * existing hcl instances inside worker threads won't get - * affected. new hcl instances to be created later + /* setting this affects the dummy hak immediately. + * existing hak instances inside worker threads won't get + * affected. new hak instances to be created later * is supposed to use the new value */ - hcl_bitmask_t trait; + hak_bitmask_t trait; - hcl_getoption (server->dummy_hcl, HCL_TRAIT, &trait); - #if defined(HCL_BUILD_DEBUG) - if (server->cfg.trait & HCL_SERVER_TRAIT_DEBUG_GC) trait |= HCL_TRAIT_DEBUG_GC; - if (server->cfg.trait & HCL_SERVER_TRAIT_DEBUG_BIGINT) trait |= HCL_TRAIT_DEBUG_BIGINT; + hak_getoption (server->dummy_hak, HAK_TRAIT, &trait); + #if defined(HAK_BUILD_DEBUG) + if (server->cfg.trait & HAK_SERVER_TRAIT_DEBUG_GC) trait |= HAK_TRAIT_DEBUG_GC; + if (server->cfg.trait & HAK_SERVER_TRAIT_DEBUG_BIGINT) trait |= HAK_TRAIT_DEBUG_BIGINT; #endif - hcl_setoption (server->dummy_hcl, HCL_TRAIT, &trait); + hak_setoption (server->dummy_hak, HAK_TRAIT, &trait); } return 0; - case HCL_SERVER_LOG_MASK: - server->cfg.logmask = *(const hcl_bitmask_t*)value; - if (server->dummy_hcl) + case HAK_SERVER_LOG_MASK: + server->cfg.logmask = *(const hak_bitmask_t*)value; + if (server->dummy_hak) { - /* setting this affects the dummy hcl immediately. - * existing hcl instances inside worker threads won't get - * affected. new hcl instances to be created later + /* setting this affects the dummy hak immediately. + * existing hak instances inside worker threads won't get + * affected. new hak instances to be created later * is supposed to use the new value */ - hcl_setoption (server->dummy_hcl, HCL_LOG_MASK, value); + hak_setoption (server->dummy_hak, HAK_LOG_MASK, value); } return 0; - case HCL_SERVER_WORKER_MAX_COUNT: - server->cfg.worker_max_count = *(hcl_oow_t*)value; + case HAK_SERVER_WORKER_MAX_COUNT: + server->cfg.worker_max_count = *(hak_oow_t*)value; return 0; - case HCL_SERVER_WORKER_STACK_SIZE: - server->cfg.worker_stack_size = *(hcl_oow_t*)value; + case HAK_SERVER_WORKER_STACK_SIZE: + server->cfg.worker_stack_size = *(hak_oow_t*)value; return 0; - case HCL_SERVER_WORKER_IDLE_TIMEOUT: - server->cfg.worker_idle_timeout = *(hcl_ntime_t*)value; + case HAK_SERVER_WORKER_IDLE_TIMEOUT: + server->cfg.worker_idle_timeout = *(hak_ntime_t*)value; return 0; - case HCL_SERVER_ACTOR_HEAP_SIZE: - server->cfg.actor_heap_size = *(hcl_oow_t*)value; + case HAK_SERVER_ACTOR_HEAP_SIZE: + server->cfg.actor_heap_size = *(hak_oow_t*)value; return 0; - case HCL_SERVER_ACTOR_MAX_RUNTIME: - server->cfg.actor_max_runtime = *(hcl_ntime_t*)value; + case HAK_SERVER_ACTOR_MAX_RUNTIME: + server->cfg.actor_max_runtime = *(hak_ntime_t*)value; return 0; - case HCL_SERVER_SCRIPT_INCLUDE_PATH: - hcl_copy_oocstr (server->cfg.script_include_path, HCL_COUNTOF(server->cfg.script_include_path), (const hcl_ooch_t*)value); + case HAK_SERVER_SCRIPT_INCLUDE_PATH: + hak_copy_oocstr (server->cfg.script_include_path, HAK_COUNTOF(server->cfg.script_include_path), (const hak_ooch_t*)value); return 0; - case HCL_SERVER_MODULE_INCTX: + case HAK_SERVER_MODULE_INCTX: server->cfg.module_inctx = *(void**)value; return 0; } - hcl_server_seterrnum (server, HCL_EINVAL); + hak_server_seterrnum (server, HAK_EINVAL); return -1; } -int hcl_server_getoption (hcl_server_t* server, hcl_server_option_t id, void* value) +int hak_server_getoption (hak_server_t* server, hak_server_option_t id, void* value) { switch (id) { - case HCL_SERVER_TRAIT: - *(hcl_bitmask_t*)value = server->cfg.trait; + case HAK_SERVER_TRAIT: + *(hak_bitmask_t*)value = server->cfg.trait; return 0; - case HCL_SERVER_LOG_MASK: - *(hcl_bitmask_t*)value = server->cfg.logmask; + case HAK_SERVER_LOG_MASK: + *(hak_bitmask_t*)value = server->cfg.logmask; return 0; - case HCL_SERVER_WORKER_MAX_COUNT: - *(hcl_oow_t*)value = server->cfg.worker_max_count; + case HAK_SERVER_WORKER_MAX_COUNT: + *(hak_oow_t*)value = server->cfg.worker_max_count; return 0; - case HCL_SERVER_WORKER_STACK_SIZE: - *(hcl_oow_t*)value = server->cfg.worker_stack_size; + case HAK_SERVER_WORKER_STACK_SIZE: + *(hak_oow_t*)value = server->cfg.worker_stack_size; return 0; - case HCL_SERVER_WORKER_IDLE_TIMEOUT: - *(hcl_ntime_t*)value = server->cfg.worker_idle_timeout; + case HAK_SERVER_WORKER_IDLE_TIMEOUT: + *(hak_ntime_t*)value = server->cfg.worker_idle_timeout; return 0; - case HCL_SERVER_ACTOR_HEAP_SIZE: - *(hcl_oow_t*)value = server->cfg.actor_heap_size; + case HAK_SERVER_ACTOR_HEAP_SIZE: + *(hak_oow_t*)value = server->cfg.actor_heap_size; return 0; - case HCL_SERVER_ACTOR_MAX_RUNTIME: - *(hcl_ntime_t*)value = server->cfg.actor_max_runtime; + case HAK_SERVER_ACTOR_MAX_RUNTIME: + *(hak_ntime_t*)value = server->cfg.actor_max_runtime; return 0; - case HCL_SERVER_SCRIPT_INCLUDE_PATH: - *(hcl_ooch_t**)value = server->cfg.script_include_path; + case HAK_SERVER_SCRIPT_INCLUDE_PATH: + *(hak_ooch_t**)value = server->cfg.script_include_path; return 0; - case HCL_SERVER_MODULE_INCTX: + case HAK_SERVER_MODULE_INCTX: *(void**)value = server->cfg.module_inctx; return 0; }; - hcl_server_seterrnum (server, HCL_EINVAL); + hak_server_seterrnum (server, HAK_EINVAL); return -1; } -void* hcl_server_getxtn (hcl_server_t* server) +void* hak_server_getxtn (hak_server_t* server) { - return (void*)((hcl_uint8_t*)server + server->_instsize); + return (void*)((hak_uint8_t*)server + server->_instsize); } -hcl_mmgr_t* hcl_server_getmmgr (hcl_server_t* server) +hak_mmgr_t* hak_server_getmmgr (hak_server_t* server) { return server->_mmgr; } -hcl_cmgr_t* hcl_server_getcmgr (hcl_server_t* server) +hak_cmgr_t* hak_server_getcmgr (hak_server_t* server) { return server->_cmgr; } -void hcl_server_setcmgr (hcl_server_t* server, hcl_cmgr_t* cmgr) +void hak_server_setcmgr (hak_server_t* server, hak_cmgr_t* cmgr) { server->_cmgr = cmgr; } -hcl_errnum_t hcl_server_geterrnum (hcl_server_t* server) +hak_errnum_t hak_server_geterrnum (hak_server_t* server) { return server->errnum; } -const hcl_ooch_t* hcl_server_geterrstr (hcl_server_t* server) +const hak_ooch_t* hak_server_geterrstr (hak_server_t* server) { - return hcl_errnum_to_errstr(server->errnum); + return hak_errnum_to_errstr(server->errnum); } -const hcl_ooch_t* hcl_server_geterrmsg (hcl_server_t* server) +const hak_ooch_t* hak_server_geterrmsg (hak_server_t* server) { - if (server->errmsg.len <= 0) return hcl_errnum_to_errstr(server->errnum); + if (server->errmsg.len <= 0) return hak_errnum_to_errstr(server->errnum); return server->errmsg.buf; } -void hcl_server_seterrnum (hcl_server_t* server, hcl_errnum_t errnum) +void hak_server_seterrnum (hak_server_t* server, hak_errnum_t errnum) { /*if (server->shuterr) return; */ server->errnum = errnum; server->errmsg.len = 0; } -void hcl_server_seterrbfmt (hcl_server_t* server, hcl_errnum_t errnum, const hcl_bch_t* fmt, ...) +void hak_server_seterrbfmt (hak_server_t* server, hak_errnum_t errnum, const hak_bch_t* fmt, ...) { va_list ap; va_start (ap, fmt); - hcl_seterrbfmtv (server->dummy_hcl, errnum, fmt, ap); + hak_seterrbfmtv (server->dummy_hak, errnum, fmt, ap); va_end (ap); - HCL_ASSERT (server->dummy_hcl, HCL_COUNTOF(server->errmsg.buf) == HCL_COUNTOF(server->dummy_hcl->errmsg.buf)); + HAK_ASSERT (server->dummy_hak, HAK_COUNTOF(server->errmsg.buf) == HAK_COUNTOF(server->dummy_hak->errmsg.buf)); server->errnum = errnum; - hcl_copy_oochars (server->errmsg.buf, server->dummy_hcl->errmsg.buf, HCL_COUNTOF(server->errmsg.buf)); - server->errmsg.len = server->dummy_hcl->errmsg.len; + hak_copy_oochars (server->errmsg.buf, server->dummy_hak->errmsg.buf, HAK_COUNTOF(server->errmsg.buf)); + server->errmsg.len = server->dummy_hak->errmsg.len; } -void hcl_server_seterrufmt (hcl_server_t* server, hcl_errnum_t errnum, const hcl_uch_t* fmt, ...) +void hak_server_seterrufmt (hak_server_t* server, hak_errnum_t errnum, const hak_uch_t* fmt, ...) { va_list ap; va_start (ap, fmt); - hcl_seterrufmtv (server->dummy_hcl, errnum, fmt, ap); + hak_seterrufmtv (server->dummy_hak, errnum, fmt, ap); va_end (ap); - HCL_ASSERT (server->dummy_hcl, HCL_COUNTOF(server->errmsg.buf) == HCL_COUNTOF(server->dummy_hcl->errmsg.buf)); + HAK_ASSERT (server->dummy_hak, HAK_COUNTOF(server->errmsg.buf) == HAK_COUNTOF(server->dummy_hak->errmsg.buf)); server->errnum = errnum; server->errnum = errnum; - hcl_copy_oochars (server->errmsg.buf, server->dummy_hcl->errmsg.buf, HCL_COUNTOF(server->errmsg.buf)); - server->errmsg.len = server->dummy_hcl->errmsg.len; + hak_copy_oochars (server->errmsg.buf, server->dummy_hak->errmsg.buf, HAK_COUNTOF(server->errmsg.buf)); + server->errmsg.len = server->dummy_hak->errmsg.len; } -void* hcl_server_allocmem (hcl_server_t* server, hcl_oow_t size) +void* hak_server_allocmem (hak_server_t* server, hak_oow_t size) { void* ptr; - ptr = HCL_MMGR_ALLOC(server->_mmgr, size); - if (!ptr) hcl_server_seterrnum (server, HCL_ESYSMEM); + ptr = HAK_MMGR_ALLOC(server->_mmgr, size); + if (!ptr) hak_server_seterrnum (server, HAK_ESYSMEM); return ptr; } -void* hcl_server_callocmem (hcl_server_t* server, hcl_oow_t size) +void* hak_server_callocmem (hak_server_t* server, hak_oow_t size) { void* ptr; - ptr = HCL_MMGR_ALLOC(server->_mmgr, size); - if (!ptr) hcl_server_seterrnum (server, HCL_ESYSMEM); - else HCL_MEMSET (ptr, 0, size); + ptr = HAK_MMGR_ALLOC(server->_mmgr, size); + if (!ptr) hak_server_seterrnum (server, HAK_ESYSMEM); + else HAK_MEMSET (ptr, 0, size); return ptr; } -void* hcl_server_reallocmem (hcl_server_t* server, void* ptr, hcl_oow_t size) +void* hak_server_reallocmem (hak_server_t* server, void* ptr, hak_oow_t size) { - ptr = HCL_MMGR_REALLOC(server->_mmgr, ptr, size); - if (!ptr) hcl_server_seterrnum (server, HCL_ESYSMEM); + ptr = HAK_MMGR_REALLOC(server->_mmgr, ptr, size); + if (!ptr) hak_server_seterrnum (server, HAK_ESYSMEM); return ptr; } -void hcl_server_freemem (hcl_server_t* server, void* ptr) +void hak_server_freemem (hak_server_t* server, void* ptr) { - HCL_MMGR_FREE (server->_mmgr, ptr); + HAK_MMGR_FREE (server->_mmgr, ptr); } diff --git a/lib/x-sys.c b/lib/x-sys.c index 3f9b0d6..0de1ddc 100644 --- a/lib/x-sys.c +++ b/lib/x-sys.c @@ -23,8 +23,8 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include "hcl-prv.h" +#include +#include "hak-prv.h" #include #include @@ -62,19 +62,19 @@ # include #endif -int hcl_sys_send (int sck, const void* data, hcl_oow_t* size) +int hak_sys_send (int sck, const void* data, hak_oow_t* size) { ssize_t n, seglen; - hcl_oow_t rem; + hak_oow_t rem; rem = *size; while (rem > 0) { - seglen = (rem > HCL_TYPE_MAX(ssize_t))? HCL_TYPE_MAX(ssize_t): rem; + seglen = (rem > HAK_TYPE_MAX(ssize_t))? HAK_TYPE_MAX(ssize_t): rem; n = send(sck, data, seglen, 0); if (n <= -1) { - if (hcl_sys_is_errno_wb(errno)) break; + if (hak_sys_is_errno_wb(errno)) break; *size -= rem; /* update the size to the bytes sent so far upon failure*/ return -1; } @@ -87,7 +87,7 @@ int hcl_sys_send (int sck, const void* data, hcl_oow_t* size) return 0; } -int hcl_sys_send_iov (int sck, hcl_iovec_t* iov, int count) +int hak_sys_send_iov (int sck, hak_iovec_t* iov, int count) { int index = 0; @@ -96,13 +96,13 @@ int hcl_sys_send_iov (int sck, hcl_iovec_t* iov, int count) ssize_t nwritten; struct msghdr msg; - HCL_MEMSET (&msg, 0, HCL_SIZEOF(msg)); + HAK_MEMSET (&msg, 0, HAK_SIZEOF(msg)); msg.msg_iov = (struct iovec*)&iov[index]; msg.msg_iovlen = count - index; nwritten = sendmsg(sck, &msg, 0); if (nwritten <= -1) { - if (hcl_sys_is_errno_wb(errno)) + if (hak_sys_is_errno_wb(errno)) { /* the incompelete write. the caller shall check the return code * and iov_len at the last written iov slot. */ @@ -119,7 +119,7 @@ int hcl_sys_send_iov (int sck, hcl_iovec_t* iov, int count) if (index == count) break; - iov[index].iov_base = (void*)((hcl_uint8_t*)iov[index].iov_base + nwritten); + iov[index].iov_base = (void*)((hak_uint8_t*)iov[index].iov_base + nwritten); iov[index].iov_len -= nwritten; } @@ -127,21 +127,21 @@ int hcl_sys_send_iov (int sck, hcl_iovec_t* iov, int count) } -int hcl_sys_open_pipes (int pfd[2], int nonblock) +int hak_sys_open_pipes (int pfd[2], int nonblock) { /* TODO: mimic open_pipes() in std.c */ if (pipe(pfd) <= -1) return -1; - hcl_sys_set_nonblock(pfd[0], nonblock); - hcl_sys_set_nonblock(pfd[1], nonblock); - hcl_sys_set_cloexec(pfd[0], 1); - hcl_sys_set_cloexec(pfd[1], 1); + hak_sys_set_nonblock(pfd[0], nonblock); + hak_sys_set_nonblock(pfd[1], nonblock); + hak_sys_set_cloexec(pfd[0], 1); + hak_sys_set_cloexec(pfd[1], 1); return 0; } -void hcl_sys_close_pipes (int pfd[2]) +void hak_sys_close_pipes (int pfd[2]) { if (pfd[0] >= 0) { @@ -155,7 +155,7 @@ void hcl_sys_close_pipes (int pfd[2]) } } -int hcl_sys_set_nonblock (int fd, int v) +int hak_sys_set_nonblock (int fd, int v) { #if defined(F_GETFL) && defined(F_SETFL) && defined(O_NONBLOCK) int flags; @@ -174,7 +174,7 @@ int hcl_sys_set_nonblock (int fd, int v) #endif } -int hcl_sys_set_cloexec (int fd, int v) +int hak_sys_set_cloexec (int fd, int v) { #if defined(F_GETFL) && defined(F_SETFL) && defined(FD_CLOEXEC) int flags; @@ -193,7 +193,7 @@ int hcl_sys_set_cloexec (int fd, int v) #endif } -int hcl_sys_is_errno_wb (int no) +int hak_sys_is_errno_wb (int no) { #if defined(EWOULDBLOCK) && defined(EAGAIN) && (EWOULDBLOCK != EAGAIN) return no == EWOULDBLOCK || no == EAGAIN; diff --git a/lib/x-utl-sa.h b/lib/x-utl-sa.h index bd6126b..68c2316 100644 --- a/lib/x-utl-sa.h +++ b/lib/x-utl-sa.h @@ -22,11 +22,11 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -static int str_to_ipv4 (const ooch_t* str, hcl_oow_t len, struct in_addr* inaddr) +static int str_to_ipv4 (const ooch_t* str, hak_oow_t len, struct in_addr* inaddr) { const ooch_t* end; int dots = 0, digits = 0; - hcl_uint32_t acc = 0, addr = 0; + hak_uint32_t acc = 0, addr = 0; ooch_t c; end = str + len; @@ -59,15 +59,15 @@ static int str_to_ipv4 (const ooch_t* str, hcl_oow_t len, struct in_addr* inaddr } while (1); - inaddr->s_addr = hcl_hton32(addr); + inaddr->s_addr = hak_hton32(addr); return 0; } -#if (HCL_SIZEOF_STRUCT_SOCKADDR_IN6 > 0) -static int str_to_ipv6 (const ooch_t* src, hcl_oow_t len, struct in6_addr* inaddr) +#if (HAK_SIZEOF_STRUCT_SOCKADDR_IN6 > 0) +static int str_to_ipv6 (const ooch_t* src, hak_oow_t len, struct in6_addr* inaddr) { - hcl_uint8_t* tp, * endp, * colonp; + hak_uint8_t* tp, * endp, * colonp; const ooch_t* curtok; ooch_t ch; int saw_xdigit; @@ -76,10 +76,10 @@ static int str_to_ipv6 (const ooch_t* src, hcl_oow_t len, struct in6_addr* inadd src_end = src + len; - HCL_MEMSET (inaddr, 0, HCL_SIZEOF(*inaddr)); + HAK_MEMSET (inaddr, 0, HAK_SIZEOF(*inaddr)); tp = &inaddr->s6_addr[0]; - endp = &inaddr->s6_addr[HCL_COUNTOF(inaddr->s6_addr)]; - colonp = HCL_NULL; + endp = &inaddr->s6_addr[HAK_COUNTOF(inaddr->s6_addr)]; + colonp = HAK_NULL; /* Leading :: requires some special handling. */ if (src < src_end && *src == ':') @@ -129,17 +129,17 @@ static int str_to_ipv6 (const ooch_t* src, hcl_oow_t len, struct in6_addr* inadd return -1; } - *tp++ = (hcl_uint8_t)(val >> 8) & 0xff; - *tp++ = (hcl_uint8_t)val & 0xff; + *tp++ = (hak_uint8_t)(val >> 8) & 0xff; + *tp++ = (hak_uint8_t)val & 0xff; saw_xdigit = 0; val = 0; continue; } - if (ch == '.' && ((tp + HCL_SIZEOF(struct in_addr)) <= endp) && + if (ch == '.' && ((tp + HAK_SIZEOF(struct in_addr)) <= endp) && str_to_ipv4(curtok, src_end - curtok, (struct in_addr*)tp) == 0) { - tp += HCL_SIZEOF(struct in_addr*); + tp += HAK_SIZEOF(struct in_addr*); saw_xdigit = 0; break; } @@ -149,18 +149,18 @@ static int str_to_ipv6 (const ooch_t* src, hcl_oow_t len, struct in6_addr* inadd if (saw_xdigit) { - if (tp + HCL_SIZEOF(hcl_uint16_t) > endp) return -1; - *tp++ = (hcl_uint8_t)(val >> 8) & 0xff; - *tp++ = (hcl_uint8_t)val & 0xff; + if (tp + HAK_SIZEOF(hak_uint16_t) > endp) return -1; + *tp++ = (hak_uint8_t)(val >> 8) & 0xff; + *tp++ = (hak_uint8_t)val & 0xff; } - if (colonp != HCL_NULL) + if (colonp != HAK_NULL) { /* * Since some memmove()'s erroneously fail to handle * overlapping regions, we'll do the shift by hand. */ - hcl_oow_t n = tp - colonp; - hcl_oow_t i; + hak_oow_t n = tp - colonp; + hak_oow_t i; for (i = 1; i <= n; i++) { @@ -176,7 +176,7 @@ static int str_to_ipv6 (const ooch_t* src, hcl_oow_t len, struct in6_addr* inadd } #endif -static int str_to_ifindex (hcl_t* hcl, const ooch_t* ptr, hcl_oow_t len, unsigned int* ifindex) +static int str_to_ifindex (hak_t* hak, const ooch_t* ptr, hak_oow_t len, unsigned int* ifindex) { #if defined(SIOCGIFINDEX) int h, x; @@ -186,24 +186,24 @@ static int str_to_ifindex (hcl_t* hcl, const ooch_t* ptr, hcl_oow_t len, unsigne h = socket(AF_INET6, SOCK_DGRAM, 0); if (h <= -1) { - hcl_seterrbfmtwithsyserr (hcl, 0, errno, "unable to open socket for if_nametoindex conversion"); + hak_seterrbfmtwithsyserr (hak, 0, errno, "unable to open socket for if_nametoindex conversion"); return -1; } - HCL_MEMSET (&ifr, 0, HCL_SIZEOF(ifr)); + HAK_MEMSET (&ifr, 0, HAK_SIZEOF(ifr)); #if (ooch_mode == 2) - hcl_oow_t ucslen, bcslen; + hak_oow_t ucslen, bcslen; ucslen = len; - bcslen = HCL_COUNTOF(ifr.ifr_name) - 1; - if (hcl_convutobchars(hcl, ptr, &ucslen, ifr.ifr_name, &bcslen) <= -1) + bcslen = HAK_COUNTOF(ifr.ifr_name) - 1; + if (hak_convutobchars(hak, ptr, &ucslen, ifr.ifr_name, &bcslen) <= -1) { close (h); return -1; } ifr.ifr_name[bcslen] = '\0'; #else - if (hcl_copy_bchars_to_bcstr(ifr.ifr_name, HCL_COUNTOF(ifr.ifr_name), ptr, len) < len) + if (hak_copy_bchars_to_bcstr(ifr.ifr_name, HAK_COUNTOF(ifr.ifr_name), ptr, len) < len) { close (h); return -1; @@ -225,12 +225,12 @@ static int str_to_ifindex (hcl_t* hcl, const ooch_t* ptr, hcl_oow_t len, unsigne return x; #else /* TODO: use if_nametoindex()? */ - hcl_seterrbfmt (hcl, HCL_ENOIMPL, "ifname to ifindex conversion not implemented"); + hak_seterrbfmt (hak, HAK_ENOIMPL, "ifname to ifindex conversion not implemented"); return -1; #endif } -int str_to_sockaddr (hcl_t* hcl, const ooch_t* str, hcl_oow_t len, hcl_sckaddr_t* sckaddr, hcl_scklen_t* scklen) +int str_to_sockaddr (hak_t* hak, const ooch_t* str, hak_oow_t len, hak_sckaddr_t* sckaddr, hak_scklen_t* scklen) { const ooch_t* p; const ooch_t* end; @@ -242,13 +242,13 @@ int str_to_sockaddr (hcl_t* hcl, const ooch_t* str, hcl_oow_t len, hcl_sckaddr_t if (p >= end) { - if (hcl) hcl_seterrbfmt (hcl, HCL_EINVAL, "blank address"); + if (hak) hak_seterrbfmt (hak, HAK_EINVAL, "blank address"); return -1; } - HCL_MEMSET (nwad, 0, HCL_SIZEOF(*nwad)); + HAK_MEMSET (nwad, 0, HAK_SIZEOF(*nwad)); -#if (HCL_SIZEOF_STRUCT_SOCKADDR_IN6 > 0) +#if (HAK_SIZEOF_STRUCT_SOCKADDR_IN6 > 0) if (*p == '[') { /* IPv6 address */ @@ -261,14 +261,14 @@ int str_to_sockaddr (hcl_t* hcl, const ooch_t* str, hcl_oow_t len, hcl_sckaddr_t if (*p == '%') { /* handle scope id */ - hcl_uint32_t x, y; + hak_uint32_t x, y; p++; /* skip % */ if (p >= end) { /* premature end */ - if (hcl) hcl_seterrbfmt (hcl, HCL_EINVAL, "scope id blank"); + if (hak) hak_seterrbfmt (hak, HAK_EINVAL, "scope id blank"); return -1; } @@ -281,7 +281,7 @@ int str_to_sockaddr (hcl_t* hcl, const ooch_t* str, hcl_oow_t len, hcl_sckaddr_t x = y * 10 + (*p - '0'); if (x < y) { - if (hcl) hcl_seterrbfmt (hcl, HCL_EINVAL, "scope id too large"); + if (hak) hak_seterrbfmt (hak, HAK_EINVAL, "scope id too large"); return -1; /* overflow */ } y = x; @@ -296,7 +296,7 @@ int str_to_sockaddr (hcl_t* hcl, const ooch_t* str, hcl_oow_t len, hcl_sckaddr_t const ooch_t* stmp = p; unsigned int index; do p++; while (p < end && *p != ']'); - if (str_to_ifindex(hcl, stmp, p - stmp, &index) <= -1) return -1; + if (str_to_ifindex(hak, stmp, p - stmp, &index) <= -1) return -1; nwad->in6.sin6_scope_id = index; } @@ -317,7 +317,7 @@ int str_to_sockaddr (hcl_t* hcl, const ooch_t* str, hcl_oow_t len, hcl_sckaddr_t if (str_to_ipv4(tmp.ptr, tmp.len, &nwad->in4.sin_addr) <= -1) { - #if (HCL_SIZEOF_STRUCT_SOCKADDR_IN6 > 0) + #if (HAK_SIZEOF_STRUCT_SOCKADDR_IN6 > 0) /* check if it is an IPv6 address not enclosed in []. * the port number can't be specified in this format. */ if (p >= end || *p != ':') @@ -334,14 +334,14 @@ int str_to_sockaddr (hcl_t* hcl, const ooch_t* str, hcl_oow_t len, hcl_sckaddr_t if (p < end && *p == '%') { /* handle scope id */ - hcl_uint32_t x, y; + hak_uint32_t x, y; p++; /* skip % */ if (p >= end) { /* premature end */ - if (hcl) hcl_seterrbfmt (hcl, HCL_EINVAL, "scope id blank"); + if (hak) hak_seterrbfmt (hak, HAK_EINVAL, "scope id blank"); return -1; } @@ -354,7 +354,7 @@ int str_to_sockaddr (hcl_t* hcl, const ooch_t* str, hcl_oow_t len, hcl_sckaddr_t x = y * 10 + (*p - '0'); if (x < y) { - if (hcl) hcl_seterrbfmt (hcl, HCL_EINVAL, "scope id too large"); + if (hak) hak_seterrbfmt (hak, HAK_EINVAL, "scope id too large"); return -1; /* overflow */ } y = x; @@ -369,7 +369,7 @@ int str_to_sockaddr (hcl_t* hcl, const ooch_t* str, hcl_oow_t len, hcl_sckaddr_t const ooch_t* stmp = p; unsigned int index; do p++; while (p < end); - if (str_to_ifindex(hcl, stmp, p - stmp, &index) <= -1) return -1; + if (str_to_ifindex(hak, stmp, p - stmp, &index) <= -1) return -1; nwad->in6.sin6_scope_id = index; } } @@ -377,7 +377,7 @@ int str_to_sockaddr (hcl_t* hcl, const ooch_t* str, hcl_oow_t len, hcl_sckaddr_t if (p < end) goto unrecog; /* some gargage after the end? */ nwad->in6.sin6_family = AF_INET6; - *scklen = HCL_SIZEOF(nwad->in6); + *scklen = HAK_SIZEOF(nwad->in6); return nwad->in6.sin6_family; #else goto unrecog; @@ -385,14 +385,14 @@ int str_to_sockaddr (hcl_t* hcl, const ooch_t* str, hcl_oow_t len, hcl_sckaddr_t } nwad->in4.sin_family = AF_INET; -#if (HCL_SIZEOF_STRUCT_SOCKADDR_IN6 > 0) +#if (HAK_SIZEOF_STRUCT_SOCKADDR_IN6 > 0) } #endif if (p < end && *p == ':') { /* port number */ - hcl_uint32_t port = 0; + hak_uint32_t port = 0; p++; /* skip : */ @@ -405,30 +405,30 @@ int str_to_sockaddr (hcl_t* hcl, const ooch_t* str, hcl_oow_t len, hcl_sckaddr_t tmp.len = p - tmp.ptr; if (tmp.len <= 0 || tmp.len >= 6 || - port > HCL_TYPE_MAX(hcl_uint16_t)) + port > HAK_TYPE_MAX(hak_uint16_t)) { - if (hcl) hcl_seterrbfmt (hcl, HCL_EINVAL, "port number blank or too large"); + if (hak) hak_seterrbfmt (hak, HAK_EINVAL, "port number blank or too large"); return -1; } - #if (HCL_SIZEOF_STRUCT_SOCKADDR_IN6 > 0) + #if (HAK_SIZEOF_STRUCT_SOCKADDR_IN6 > 0) if (nwad->in4.sin_family == AF_INET) - nwad->in4.sin_port = hcl_hton16(port); + nwad->in4.sin_port = hak_hton16(port); else - nwad->in6.sin6_port = hcl_hton16(port); + nwad->in6.sin6_port = hak_hton16(port); #else - nwad->in4.sin_port = hcl_hton16(port); + nwad->in4.sin_port = hak_hton16(port); #endif } - *scklen = (nwad->in4.sin_family == AF_INET)? HCL_SIZEOF(nwad->in4): HCL_SIZEOF(nwad->in6); + *scklen = (nwad->in4.sin_family == AF_INET)? HAK_SIZEOF(nwad->in4): HAK_SIZEOF(nwad->in6); return nwad->in4.sin_family; unrecog: - if (hcl) hcl_seterrbfmt (hcl, HCL_EINVAL, "unrecognized address"); + if (hak) hak_seterrbfmt (hak, HAK_EINVAL, "unrecognized address"); return -1; no_rbrack: - if (hcl) hcl_seterrbfmt (hcl, HCL_EINVAL, "missing right bracket"); + if (hak) hak_seterrbfmt (hak, HAK_EINVAL, "missing right bracket"); return -1; } diff --git a/lib/x-utl.c b/lib/x-utl.c index 826492a..3fb7e1d 100644 --- a/lib/x-utl.c +++ b/lib/x-utl.c @@ -22,8 +22,8 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include "hcl-prv.h" +#include +#include "hak-prv.h" #if defined(_WIN32) # include @@ -51,10 +51,10 @@ union sockaddr_t { struct sockaddr sa; -#if (HCL_SIZEOF_STRUCT_SOCKADDR_IN > 0) +#if (HAK_SIZEOF_STRUCT_SOCKADDR_IN > 0) struct sockaddr_in in4; #endif -#if (HCL_SIZEOF_STRUCT_SOCKADDR_IN6 > 0) +#if (HAK_SIZEOF_STRUCT_SOCKADDR_IN6 > 0) struct sockaddr_in6 in6; #endif }; @@ -69,12 +69,12 @@ typedef union sockaddr_t sockaddr_t; #undef str_to_ifindex #define ooch_mode (1) -#define ooch_t hcl_bch_t -#define oocs_t hcl_bcs_t +#define ooch_t hak_bch_t +#define oocs_t hak_bcs_t #define str_to_ipv4 bchars_to_ipv4 #define str_to_ipv6 bchars_to_ipv6 #define str_to_ifindex bchars_to_ifindex -#define str_to_sockaddr hcl_bcharstosckaddr +#define str_to_sockaddr hak_bcharstosckaddr #include "x-utl-sa.h" #undef ooch_mode @@ -86,30 +86,30 @@ typedef union sockaddr_t sockaddr_t; #undef str_to_sockaddr #define ooch_mode (2) -#define ooch_t hcl_uch_t -#define oocs_t hcl_ucs_t +#define ooch_t hak_uch_t +#define oocs_t hak_ucs_t #define str_to_ipv4 uchars_to_ipv4 #define str_to_ipv6 uchars_to_ipv6 #define str_to_ifindex uchars_to_ifindex -#define str_to_sockaddr hcl_ucharstosckaddr +#define str_to_sockaddr hak_ucharstosckaddr #include "x-utl-sa.h" -int hcl_get_sckaddr_info (const hcl_sckaddr_t* sckaddr, hcl_scklen_t* scklen) +int hak_get_sckaddr_info (const hak_sckaddr_t* sckaddr, hak_scklen_t* scklen) { sockaddr_t* sa = (sockaddr_t*)sckaddr; if (scklen) { switch (sa->sa.sa_family) { - #if (HCL_SIZEOF_STRUCT_SOCKADDR_IN > 0) + #if (HAK_SIZEOF_STRUCT_SOCKADDR_IN > 0) case AF_INET: - *scklen = HCL_SIZEOF(sa->in4); + *scklen = HAK_SIZEOF(sa->in4); break; #endif - #if (HCL_SIZEOF_STRUCT_SOCKADDR_IN6 > 0) + #if (HAK_SIZEOF_STRUCT_SOCKADDR_IN6 > 0) case AF_INET6: - *scklen = HCL_SIZEOF(sa->in6); + *scklen = HAK_SIZEOF(sa->in6); break; #endif diff --git a/lib/xchg.c b/lib/xchg.c index 160740e..53d87f7 100644 --- a/lib/xchg.c +++ b/lib/xchg.c @@ -22,230 +22,230 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "hcl-prv.h" +#include "hak-prv.h" /* compiler's literal representation */ -#include -struct hcl_xchg_hdr_t +#include +struct hak_xchg_hdr_t { - hcl_uint8_t ver; - hcl_uint8_t oow_size; + hak_uint8_t ver; + hak_uint8_t oow_size; }; -typedef struct hcl_xchg_hdr_t hcl_xchg_hdr_t; -#include +typedef struct hak_xchg_hdr_t hak_xchg_hdr_t; +#include -enum hcl_xchg_type_t +enum hak_xchg_type_t { /* byte code */ - HCL_XCHG_BC = 0x00, + HAK_XCHG_BC = 0x00, /* literals */ - HCL_XCHG_STRING_U, - HCL_XCHG_STRING_B, - HCL_XCHG_SYMLIT_U, /* literal symbol */ - HCL_XCHG_SYMLIT_B, /* literal symbol */ - HCL_XCHG_SYMBOL_U, /* contained in a cons cell */ - HCL_XCHG_SYMBOL_B, /* contained in a cons cell */ - HCL_XCHG_SMOOI, - HCL_XCHG_PBIGINT, - HCL_XCHG_NBIGINT, - HCL_XCHG_FPDEC_1, /* smooi + smooi */ - HCL_XCHG_FPDEC_2, /* pbigint + smooi */ - HCL_XCHG_FPDEC_3, /* nbigint + smooi */ - HCL_XCHG_PRIM, + HAK_XCHG_STRING_U, + HAK_XCHG_STRING_B, + HAK_XCHG_SYMLIT_U, /* literal symbol */ + HAK_XCHG_SYMLIT_B, /* literal symbol */ + HAK_XCHG_SYMBOL_U, /* contained in a cons cell */ + HAK_XCHG_SYMBOL_B, /* contained in a cons cell */ + HAK_XCHG_SMOOI, + HAK_XCHG_PBIGINT, + HAK_XCHG_NBIGINT, + HAK_XCHG_FPDEC_1, /* smooi + smooi */ + HAK_XCHG_FPDEC_2, /* pbigint + smooi */ + HAK_XCHG_FPDEC_3, /* nbigint + smooi */ + HAK_XCHG_PRIM, /* end marker */ - HCL_XCHG_END =0xFF /* end marker. not a real literal type */ + HAK_XCHG_END =0xFF /* end marker. not a real literal type */ }; -typedef enum hcl_xchg_type_t hcl_xchg_type_t; +typedef enum hak_xchg_type_t hak_xchg_type_t; /* -------------------------------------------------------------------- */ -int hcl_marshalcode (hcl_t* hcl, const hcl_code_t* code, hcl_xchg_writer_t wrtr, void* ctx) +int hak_marshalcode (hak_t* hak, const hak_code_t* code, hak_xchg_writer_t wrtr, void* ctx) { - hcl_oow_t i, lfbase = 0; - hcl_oop_t tmp; - hcl_oop_class_t _class; + hak_oow_t i, lfbase = 0; + hak_oop_t tmp; + hak_oop_class_t _class; int brand; - hcl_oow_t tsize; - hcl_uint8_t b; - hcl_oow_t w; - hcl_xchg_hdr_t h; + hak_oow_t tsize; + hak_uint8_t b; + hak_oow_t w; + hak_xchg_hdr_t h; - lfbase = (hcl->option.trait & HCL_TRAIT_INTERACTIVE)? hcl->c->funblk.info[hcl->c->funblk.depth].lfbase: 0; + lfbase = (hak->option.trait & HAK_TRAIT_INTERACTIVE)? hak->c->funblk.info[hak->c->funblk.depth].lfbase: 0; /* start with a header */ h.ver = 1; - h.oow_size = (hcl_uint8_t)HCL_SIZEOF(hcl_oow_t); /* the size must not exceed 256 */ - if (wrtr(hcl, &h, HCL_SIZEOF(h), ctx) <= -1) goto oops; + h.oow_size = (hak_uint8_t)HAK_SIZEOF(hak_oow_t); /* the size must not exceed 256 */ + if (wrtr(hak, &h, HAK_SIZEOF(h), ctx) <= -1) goto oops; /* write the byte-code */ - b = HCL_XCHG_BC; - if (wrtr(hcl, &b, HCL_SIZEOF(b), ctx) <= -1) goto oops; - w = hcl_htoleoow(code->bc.len); - if (wrtr(hcl, &w, HCL_SIZEOF(w), ctx) <= -1) goto oops; - if (wrtr(hcl, code->bc.ptr, code->bc.len, ctx) <= -1) goto oops; + b = HAK_XCHG_BC; + if (wrtr(hak, &b, HAK_SIZEOF(b), ctx) <= -1) goto oops; + w = hak_htoleoow(code->bc.len); + if (wrtr(hak, &w, HAK_SIZEOF(w), ctx) <= -1) goto oops; + if (wrtr(hak, code->bc.ptr, code->bc.len, ctx) <= -1) goto oops; /* write actual literals */ for (i = lfbase; i < code->lit.len; i++) { - tmp = ((hcl_oop_oop_t)code->lit.arr)->slot[i]; - if (HCL_OOP_IS_SMOOI(tmp)) + tmp = ((hak_oop_oop_t)code->lit.arr)->slot[i]; + if (HAK_OOP_IS_SMOOI(tmp)) { - b = HCL_XCHG_SMOOI; - if (wrtr(hcl, &b, HCL_SIZEOF(b), ctx) <= -1) goto oops; - w = hcl_htoleoow((hcl_oow_t)HCL_OOP_TO_SMOOI(tmp)); - if (wrtr(hcl, &w, HCL_SIZEOF(w), ctx) <= -1) goto oops; + b = HAK_XCHG_SMOOI; + if (wrtr(hak, &b, HAK_SIZEOF(b), ctx) <= -1) goto oops; + w = hak_htoleoow((hak_oow_t)HAK_OOP_TO_SMOOI(tmp)); + if (wrtr(hak, &w, HAK_SIZEOF(w), ctx) <= -1) goto oops; continue; } - _class = (hcl_oop_class_t)HCL_CLASSOF(hcl, tmp); - brand = HCL_OOP_TO_SMOOI(_class->ibrand); - tsize = HCL_OBJ_GET_SIZE(tmp); + _class = (hak_oop_class_t)HAK_CLASSOF(hak, tmp); + brand = HAK_OOP_TO_SMOOI(_class->ibrand); + tsize = HAK_OBJ_GET_SIZE(tmp); switch (brand) { - case HCL_BRAND_PBIGINT: - case HCL_BRAND_NBIGINT: + case HAK_BRAND_PBIGINT: + case HAK_BRAND_NBIGINT: { - hcl_oow_t nbytes; - hcl_oow_t j; - hcl_liw_t liw; + hak_oow_t nbytes; + hak_oow_t j; + hak_liw_t liw; /* write the brand */ - b = (brand == HCL_BRAND_PBIGINT ? HCL_XCHG_PBIGINT : HCL_XCHG_NBIGINT); - if (wrtr(hcl, &b, HCL_SIZEOF(b), ctx) <= -1) goto oops; + b = (brand == HAK_BRAND_PBIGINT ? HAK_XCHG_PBIGINT : HAK_XCHG_NBIGINT); + if (wrtr(hak, &b, HAK_SIZEOF(b), ctx) <= -1) goto oops; bigint_body: /* write the number of bytes in the little-endian */ - nbytes = tsize * HCL_SIZEOF(hcl_liw_t); - w = hcl_htoleoow(nbytes); - if (wrtr(hcl, &w, HCL_SIZEOF(w), ctx) <= -1) goto oops; + nbytes = tsize * HAK_SIZEOF(hak_liw_t); + w = hak_htoleoow(nbytes); + if (wrtr(hak, &w, HAK_SIZEOF(w), ctx) <= -1) goto oops; for (j = 0; j < tsize; j++) { - liw = HCL_OBJ_GET_LIWORD_VAL(tmp, j); - liw = hcl_htoleliw(liw); - if (wrtr(hcl, &liw, HCL_SIZEOF(liw), ctx) <= -1) goto oops; + liw = HAK_OBJ_GET_LIWORD_VAL(tmp, j); + liw = hak_htoleliw(liw); + if (wrtr(hak, &liw, HAK_SIZEOF(liw), ctx) <= -1) goto oops; } break; } - case HCL_BRAND_FPDEC: + case HAK_BRAND_FPDEC: { - hcl_oop_fpdec_t f; + hak_oop_fpdec_t f; - f = (hcl_oop_fpdec_t)tmp; - HCL_ASSERT (hcl, HCL_OOP_IS_SMOOI(f->scale)); - HCL_ASSERT(hcl, HCL_OOP_IS_SMOOI(f->value) || HCL_OOP_IS_POINTER(f->value)); + f = (hak_oop_fpdec_t)tmp; + HAK_ASSERT (hak, HAK_OOP_IS_SMOOI(f->scale)); + HAK_ASSERT(hak, HAK_OOP_IS_SMOOI(f->value) || HAK_OOP_IS_POINTER(f->value)); /* write 1-byte brand */ - if (HCL_OOP_IS_SMOOI(f->value)) b = HCL_XCHG_FPDEC_1; - else if (HCL_IS_PBIGINT(hcl, f->value)) b = HCL_XCHG_FPDEC_2; + if (HAK_OOP_IS_SMOOI(f->value)) b = HAK_XCHG_FPDEC_1; + else if (HAK_IS_PBIGINT(hak, f->value)) b = HAK_XCHG_FPDEC_2; else { - HCL_ASSERT(hcl, HCL_IS_NBIGINT(hcl, f->value)); - b = HCL_XCHG_FPDEC_2; + HAK_ASSERT(hak, HAK_IS_NBIGINT(hak, f->value)); + b = HAK_XCHG_FPDEC_2; } - if (wrtr(hcl, &b, HCL_SIZEOF(b), ctx) <= -1) goto oops; + if (wrtr(hak, &b, HAK_SIZEOF(b), ctx) <= -1) goto oops; - /* cast the scale part from hcl_ooi_t to hcl_oow_t and write it */ - w = hcl_htoleoow((hcl_oow_t)HCL_OOP_TO_SMOOI(f->scale)); - if (wrtr(hcl, &w, HCL_SIZEOF(w), ctx) <= -1) goto oops; + /* cast the scale part from hak_ooi_t to hak_oow_t and write it */ + w = hak_htoleoow((hak_oow_t)HAK_OOP_TO_SMOOI(f->scale)); + if (wrtr(hak, &w, HAK_SIZEOF(w), ctx) <= -1) goto oops; /* write the value part */ - if (b == HCL_XCHG_FPDEC_1) + if (b == HAK_XCHG_FPDEC_1) { - w = hcl_htoleoow((hcl_oow_t)HCL_OOP_TO_SMOOI(f->value)); - if (wrtr(hcl, &w, HCL_SIZEOF(w), ctx) <= -1) goto oops; + w = hak_htoleoow((hak_oow_t)HAK_OOP_TO_SMOOI(f->value)); + if (wrtr(hak, &w, HAK_SIZEOF(w), ctx) <= -1) goto oops; } else { tmp = f->value; - tsize = HCL_OBJ_GET_SIZE(tmp); + tsize = HAK_OBJ_GET_SIZE(tmp); goto bigint_body; } break; } - case HCL_BRAND_CONS: + case HAK_BRAND_CONS: { /* write 1-byte brand */ - #if defined(HCL_OOCH_IS_UCH) - b = (hcl_uint8_t)HCL_XCHG_SYMBOL_U; + #if defined(HAK_OOCH_IS_UCH) + b = (hak_uint8_t)HAK_XCHG_SYMBOL_U; #else - b = (hcl_uint8_t)HCL_XCHG_SYMBOL_B; + b = (hak_uint8_t)HAK_XCHG_SYMBOL_B; #endif - if (wrtr(hcl, &b, HCL_SIZEOF(b), ctx) <= -1) goto oops; + if (wrtr(hak, &b, HAK_SIZEOF(b), ctx) <= -1) goto oops; /* get the symbol at CAR and make it as if it is the current object processed.*/ - tmp = HCL_CONS_CAR(tmp); - tsize = HCL_OBJ_GET_SIZE(tmp); + tmp = HAK_CONS_CAR(tmp); + tsize = HAK_OBJ_GET_SIZE(tmp); - HCL_ASSERT(hcl, HCL_CLASSOF(hcl, tmp) == (hcl_oop_t)hcl->c_symbol); + HAK_ASSERT(hak, HAK_CLASSOF(hak, tmp) == (hak_oop_t)hak->c_symbol); goto string_body; } - case HCL_BRAND_STRING: - case HCL_BRAND_SYMBOL: + case HAK_BRAND_STRING: + case HAK_BRAND_SYMBOL: { - #if defined(HCL_OOCH_IS_UCH) - hcl_uch_t* ucsptr; - hcl_oow_t ucspos, ucslen; - hcl_bch_t bcsbuf[128]; - hcl_oow_t bcslen; + #if defined(HAK_OOCH_IS_UCH) + hak_uch_t* ucsptr; + hak_oow_t ucspos, ucslen; + hak_bch_t bcsbuf[128]; + hak_oow_t bcslen; int n; /* write 1-byte brand */ - b = (hcl_uint8_t)(brand == HCL_BRAND_STRING? HCL_XCHG_STRING_U: HCL_XCHG_SYMLIT_U); - if (wrtr(hcl, &b, HCL_SIZEOF(b), ctx) <= -1) goto oops; + b = (hak_uint8_t)(brand == HAK_BRAND_STRING? HAK_XCHG_STRING_U: HAK_XCHG_SYMLIT_U); + if (wrtr(hak, &b, HAK_SIZEOF(b), ctx) <= -1) goto oops; string_body: - ucsptr = HCL_OBJ_GET_CHAR_SLOT(tmp); + ucsptr = HAK_OBJ_GET_CHAR_SLOT(tmp); ucslen = tsize; - if (hcl_convutobchars(hcl, ucsptr, &ucslen, HCL_NULL, &bcslen) <= -1) goto oops; + if (hak_convutobchars(hak, ucsptr, &ucslen, HAK_NULL, &bcslen) <= -1) goto oops; /* write the number of characters in the little endian */ - w = hcl_htoleoow(tsize); - if (wrtr(hcl, &w, HCL_SIZEOF(w), ctx) <= -1) goto oops; + w = hak_htoleoow(tsize); + if (wrtr(hak, &w, HAK_SIZEOF(w), ctx) <= -1) goto oops; /* write the number of bytes in the little endian */ - w = hcl_htoleoow(bcslen); - if (wrtr(hcl, &w, HCL_SIZEOF(w), ctx) <= -1) goto oops; + w = hak_htoleoow(bcslen); + if (wrtr(hak, &w, HAK_SIZEOF(w), ctx) <= -1) goto oops; /* write string in bytess and write to the callback.*/ ucspos = 0; while (ucspos < tsize) { - bcslen = HCL_COUNTOF(bcsbuf); + bcslen = HAK_COUNTOF(bcsbuf); ucslen = tsize - ucspos; - n = hcl_convutobchars(hcl, &ucsptr[ucspos], &ucslen, bcsbuf, &bcslen); + n = hak_convutobchars(hak, &ucsptr[ucspos], &ucslen, bcsbuf, &bcslen); if (n <= -1 && bcslen == 0) goto oops; - if (wrtr(hcl, bcsbuf, bcslen, ctx) <= -1) goto oops; + if (wrtr(hak, bcsbuf, bcslen, ctx) <= -1) goto oops; ucspos += ucslen; } #else /* write 1-byte brand */ - if (wrtr(hcl, &b, HCL_SIZEOF(b), ctx) <= -1) goto oops; + if (wrtr(hak, &b, HAK_SIZEOF(b), ctx) <= -1) goto oops; string_body: - w = hcl_htoleoow(tsize); - if (wrtr(hcl, &w, HCL_SIZEOF(w), ctx) <= -1) goto oops; + w = hak_htoleoow(tsize); + if (wrtr(hak, &w, HAK_SIZEOF(w), ctx) <= -1) goto oops; - if (wrtr(hcl, HCL_OBJ_GET_CHAR_SLOT(tmp), tsize, ctx) <= -1) goto oops; + if (wrtr(hak, HAK_OBJ_GET_CHAR_SLOT(tmp), tsize, ctx) <= -1) goto oops; #endif break; } - case HCL_BRAND_PRIM: + case HAK_BRAND_PRIM: /* TODO: can't have resolved pointer... need module name and the functio name??? */ break; } } - b = HCL_XCHG_END; - if (wrtr(hcl, &b, HCL_SIZEOF(b), ctx) <= -1) goto oops; + b = HAK_XCHG_END; + if (wrtr(hak, &b, HAK_SIZEOF(b), ctx) <= -1) goto oops; return 0; oops: @@ -254,140 +254,140 @@ oops: /* -------------------------------------------------------------------- */ -static void set_rdr_ioerr (hcl_t* hcl, const hcl_bch_t* msg) +static void set_rdr_ioerr (hak_t* hak, const hak_bch_t* msg) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt(hcl, HCL_EIOERR, "%hs - %js", orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt(hak, HAK_EIOERR, "%hs - %js", orgmsg); } -int hcl_unmarshalcode (hcl_t* hcl, hcl_code_t* code, hcl_xchg_reader_t rdr, void* ctx) +int hak_unmarshalcode (hak_t* hak, hak_code_t* code, hak_xchg_reader_t rdr, void* ctx) { int n; - hcl_xchg_hdr_t h; - hcl_uint8_t b; - hcl_oow_t w; + hak_xchg_hdr_t h; + hak_uint8_t b; + hak_oow_t w; - hcl_uch_t* usym_buf = HCL_NULL; - hcl_oow_t usym_buf_capa = 0; + hak_uch_t* usym_buf = HAK_NULL; + hak_oow_t usym_buf_capa = 0; /* [NOTE] * this function may pollute the code data when it fails because it doesn't * roll back changed made to the memory pointed to by 'code'. the caller side - * may use two code structs. and switch between them for each call to hcl_unmarshalcode() + * may use two code structs. and switch between them for each call to hak_unmarshalcode() * to avoid this issue. */ - if (hcl_brewcode(hcl, code) <= -1) goto oops; + if (hak_brewcode(hak, code) <= -1) goto oops; - n = rdr(hcl, &h, HCL_SIZEOF(h), ctx); + n = rdr(hak, &h, HAK_SIZEOF(h), ctx); if (n <= -1) { - set_rdr_ioerr(hcl, "erroneous or insufficient header"); + set_rdr_ioerr(hak, "erroneous or insufficient header"); goto oops; } if (h.ver != 1) { - hcl_seterrbfmt(hcl, HCL_EIOERR, "unsupported header version %d", (int)h.ver); + hak_seterrbfmt(hak, HAK_EIOERR, "unsupported header version %d", (int)h.ver); goto oops; } - if (h.oow_size != HCL_SIZEOF(hcl_oow_t)) + if (h.oow_size != HAK_SIZEOF(hak_oow_t)) { /* no support for cross-architecture exchange yet */ - hcl_seterrbfmt(hcl, HCL_EIOERR, "unsupported word size %d", (int)h.oow_size); + hak_seterrbfmt(hak, HAK_EIOERR, "unsupported word size %d", (int)h.oow_size); goto oops; } while (1) { /* read 1-byte brand */ - n = rdr(hcl, &b, HCL_SIZEOF(b), ctx); + n = rdr(hak, &b, HAK_SIZEOF(b), ctx); if (n <= -1) { - set_rdr_ioerr(hcl, "erroneous or insufficient record type"); + set_rdr_ioerr(hak, "erroneous or insufficient record type"); goto oops; } - if (b == HCL_XCHG_END) break; + if (b == HAK_XCHG_END) break; switch (b) { - case HCL_XCHG_BC: + case HAK_XCHG_BC: { - hcl_oow_t nbytes; + hak_oow_t nbytes; /* this must appear only once but never mind about multiple occurrences */ - n = rdr(hcl, &w, HCL_SIZEOF(w), ctx); + n = rdr(hak, &w, HAK_SIZEOF(w), ctx); if (n <= -1) { - set_rdr_ioerr(hcl, "erroneous or insufficient record length"); + set_rdr_ioerr(hak, "erroneous or insufficient record length"); goto oops; } - nbytes = hcl_leoowtoh(w); + nbytes = hak_leoowtoh(w); if (nbytes > code->bc.capa) { /* grow the buffer */ - hcl_oow_t newcapa; - hcl_oob_t* newptr; + hak_oow_t newcapa; + hak_oob_t* newptr; newcapa = nbytes; - if (HCL_UNLIKELY(newcapa <= 0)) newcapa++; - newcapa = HCL_ALIGN(newcapa, HCL_BC_BUFFER_ALIGN); - newptr = (hcl_oob_t*)hcl_reallocmem(hcl, code->bc.ptr, newcapa); - if (HCL_UNLIKELY(!newptr)) goto oops; + if (HAK_UNLIKELY(newcapa <= 0)) newcapa++; + newcapa = HAK_ALIGN(newcapa, HAK_BC_BUFFER_ALIGN); + newptr = (hak_oob_t*)hak_reallocmem(hak, code->bc.ptr, newcapa); + if (HAK_UNLIKELY(!newptr)) goto oops; code->bc.ptr = newptr; code->bc.capa = newcapa; } - n = rdr(hcl, code->bc.ptr, nbytes, ctx); + n = rdr(hak, code->bc.ptr, nbytes, ctx); if (n <= -1) goto oops; code->bc.len = nbytes; break; } - case HCL_XCHG_STRING_U: - case HCL_XCHG_SYMLIT_U: - case HCL_XCHG_SYMBOL_U: + case HAK_XCHG_STRING_U: + case HAK_XCHG_SYMLIT_U: + case HAK_XCHG_SYMBOL_U: { - hcl_bch_t bcsbuf[64]; - hcl_uch_t* ucsptr; - hcl_oow_t bcslen, bcsres, ucslen, ucspos; - hcl_oow_t nbytes, nchars; - hcl_oop_t ns; + hak_bch_t bcsbuf[64]; + hak_uch_t* ucsptr; + hak_oow_t bcslen, bcsres, ucslen, ucspos; + hak_oow_t nbytes, nchars; + hak_oop_t ns; - n = rdr(hcl, &w, HCL_SIZEOF(w), ctx); + n = rdr(hak, &w, HAK_SIZEOF(w), ctx); if (n <= -1) { - set_rdr_ioerr(hcl, "erroneous or insufficient record length"); + set_rdr_ioerr(hak, "erroneous or insufficient record length"); goto oops; } - nchars = hcl_leoowtoh(w); + nchars = hak_leoowtoh(w); - n = rdr(hcl, &w, HCL_SIZEOF(w), ctx); + n = rdr(hak, &w, HAK_SIZEOF(w), ctx); if (n <= -1) { - set_rdr_ioerr(hcl, "erroneous or insufficient record length"); + set_rdr_ioerr(hak, "erroneous or insufficient record length"); goto oops; } - nbytes = hcl_leoowtoh(w); + nbytes = hak_leoowtoh(w); - if (b == HCL_XCHG_STRING_U) + if (b == HAK_XCHG_STRING_U) { - ns = hcl_makestring(hcl, HCL_NULL, nchars); - if (HCL_UNLIKELY(!ns)) goto oops; - ucsptr = HCL_OBJ_GET_CHAR_PTR(ns, 0); + ns = hak_makestring(hak, HAK_NULL, nchars); + if (HAK_UNLIKELY(!ns)) goto oops; + ucsptr = HAK_OBJ_GET_CHAR_PTR(ns, 0); } else { if (nchars > usym_buf_capa) { - usym_buf_capa = nchars * HCL_SIZEOF(usym_buf[0]); - usym_buf = (hcl_uch_t*)hcl_allocmem(hcl, usym_buf_capa); - if (HCL_UNLIKELY(!usym_buf)) goto oops; + usym_buf_capa = nchars * HAK_SIZEOF(usym_buf[0]); + usym_buf = (hak_uch_t*)hak_allocmem(hak, usym_buf_capa); + if (HAK_UNLIKELY(!usym_buf)) goto oops; } ucsptr = usym_buf; } @@ -396,18 +396,18 @@ int hcl_unmarshalcode (hcl_t* hcl, hcl_code_t* code, hcl_xchg_reader_t rdr, void bcsres = 0; while (nbytes > 0) { - bcslen = nbytes <= HCL_SIZEOF(bcsbuf)? nbytes : HCL_SIZEOF(bcsbuf); - n = rdr(hcl, &bcsbuf[bcsres], bcslen - bcsres, ctx); + bcslen = nbytes <= HAK_SIZEOF(bcsbuf)? nbytes : HAK_SIZEOF(bcsbuf); + n = rdr(hak, &bcsbuf[bcsres], bcslen - bcsres, ctx); if (n <= -1) { - set_rdr_ioerr(hcl, "erroneous or insufficient record data"); + set_rdr_ioerr(hak, "erroneous or insufficient record data"); goto oops; } - HCL_ASSERT(hcl, ucspos < nchars); + HAK_ASSERT(hak, ucspos < nchars); bcsres = bcslen; ucslen = nchars - ucspos; - if (hcl_convbtouchars(hcl, bcsbuf, &bcslen, &ucsptr[ucspos], &ucslen) <= -1 && bcslen <= 0) + if (hak_convbtouchars(hak, bcsbuf, &bcslen, &ucsptr[ucspos], &ucslen) <= -1 && bcslen <= 0) { goto oops; } @@ -415,144 +415,144 @@ int hcl_unmarshalcode (hcl_t* hcl, hcl_code_t* code, hcl_xchg_reader_t rdr, void ucspos += ucslen; nbytes -= bcslen; bcsres -= bcslen; - if (bcsres > 0) HCL_MEMMOVE(bcsbuf, &bcsbuf[bcslen], bcsres); + if (bcsres > 0) HAK_MEMMOVE(bcsbuf, &bcsbuf[bcslen], bcsres); } - HCL_ASSERT(hcl, ucspos == nchars); + HAK_ASSERT(hak, ucspos == nchars); - if (b != HCL_XCHG_STRING_U) + if (b != HAK_XCHG_STRING_U) { - ns = hcl_makesymbol(hcl, usym_buf, nchars); - if (HCL_UNLIKELY(!ns)) goto oops; + ns = hak_makesymbol(hak, usym_buf, nchars); + if (HAK_UNLIKELY(!ns)) goto oops; - if (b == HCL_XCHG_SYMBOL_U) + if (b == HAK_XCHG_SYMBOL_U) { /* form a cons cell */ - hcl_oop_t nc; - hcl_pushvolat(hcl, &ns); - nc = hcl_makecons(hcl, ns, hcl->_nil); - hcl_popvolat(hcl); - if (HCL_UNLIKELY(!nc)) goto oops; + hak_oop_t nc; + hak_pushvolat(hak, &ns); + nc = hak_makecons(hak, ns, hak->_nil); + hak_popvolat(hak); + if (HAK_UNLIKELY(!nc)) goto oops; ns = nc; } } - if (hcl_addliteraltocode(hcl, code, ns, 0, HCL_NULL) <= -1) goto oops; + if (hak_addliteraltocode(hak, code, ns, 0, HAK_NULL) <= -1) goto oops; break; } - case HCL_XCHG_STRING_B: - case HCL_XCHG_SYMBOL_B: + case HAK_XCHG_STRING_B: + case HAK_XCHG_SYMBOL_B: /* TODO */ break; - case HCL_XCHG_SMOOI: + case HAK_XCHG_SMOOI: { - hcl_oop_t ns; - if (rdr(hcl, &w, HCL_SIZEOF(w), ctx) <= -1) goto oops; - w = hcl_leoowtoh(w); - ns = HCL_SMOOI_TO_OOP((hcl_ooi_t)w); - if (hcl_addliteraltocode(hcl, code, ns, 0, HCL_NULL) <= -1) goto oops; + hak_oop_t ns; + if (rdr(hak, &w, HAK_SIZEOF(w), ctx) <= -1) goto oops; + w = hak_leoowtoh(w); + ns = HAK_SMOOI_TO_OOP((hak_ooi_t)w); + if (hak_addliteraltocode(hak, code, ns, 0, HAK_NULL) <= -1) goto oops; break; } - case HCL_XCHG_PBIGINT: - case HCL_XCHG_NBIGINT: + case HAK_XCHG_PBIGINT: + case HAK_XCHG_NBIGINT: { - hcl_oow_t nbytes, nwords, j; - hcl_liw_t liw; - hcl_oop_t ns; + hak_oow_t nbytes, nwords, j; + hak_liw_t liw; + hak_oop_t ns; - n = rdr(hcl, &w, HCL_SIZEOF(w), ctx); + n = rdr(hak, &w, HAK_SIZEOF(w), ctx); if (n <= -1) { - set_rdr_ioerr(hcl, "erroneous or insufficient bigint length"); + set_rdr_ioerr(hak, "erroneous or insufficient bigint length"); goto oops; } - nbytes = hcl_leoowtoh(w); + nbytes = hak_leoowtoh(w); - if (nbytes % HCL_SIZEOF(hcl_liw_t)) goto oops; /* not the right number of bytes */ - nwords = nbytes / HCL_SIZEOF(hcl_liw_t); + if (nbytes % HAK_SIZEOF(hak_liw_t)) goto oops; /* not the right number of bytes */ + nwords = nbytes / HAK_SIZEOF(hak_liw_t); - ns = hcl_instantiate(hcl, ((b == HCL_XCHG_PBIGINT)? hcl->c_large_positive_integer: hcl->c_large_negative_integer), HCL_NULL, nwords); - if (HCL_UNLIKELY(!ns)) goto oops; + ns = hak_instantiate(hak, ((b == HAK_XCHG_PBIGINT)? hak->c_large_positive_integer: hak->c_large_negative_integer), HAK_NULL, nwords); + if (HAK_UNLIKELY(!ns)) goto oops; for (j = 0; j < nwords; j ++) { - if (rdr(hcl, &liw, HCL_SIZEOF(liw), ctx) <= -1) goto oops; - liw = hcl_leliwtoh(liw); - HCL_OBJ_SET_LIWORD_VAL(ns, j, liw); + if (rdr(hak, &liw, HAK_SIZEOF(liw), ctx) <= -1) goto oops; + liw = hak_leliwtoh(liw); + HAK_OBJ_SET_LIWORD_VAL(ns, j, liw); } - if (hcl_addliteraltocode(hcl, code, ns, 0, HCL_NULL) <= -1) goto oops; + if (hak_addliteraltocode(hak, code, ns, 0, HAK_NULL) <= -1) goto oops; break; } - case HCL_XCHG_FPDEC_1: - case HCL_XCHG_FPDEC_2: - case HCL_XCHG_FPDEC_3: + case HAK_XCHG_FPDEC_1: + case HAK_XCHG_FPDEC_2: + case HAK_XCHG_FPDEC_3: { - hcl_ooi_t scale; - hcl_oop_t ns; + hak_ooi_t scale; + hak_oop_t ns; /* read scale */ - n = rdr(hcl, &w, HCL_SIZEOF(w), ctx); + n = rdr(hak, &w, HAK_SIZEOF(w), ctx); if (n <= -1) { - set_rdr_ioerr(hcl, "erroneous or insufficient record length"); + set_rdr_ioerr(hak, "erroneous or insufficient record length"); goto oops; } - scale = (hcl_ooi_t)hcl_leoowtoh(w); + scale = (hak_ooi_t)hak_leoowtoh(w); - if (b == HCL_XCHG_FPDEC_1) + if (b == HAK_XCHG_FPDEC_1) { - hcl_ooi_t value; - n = rdr(hcl, &w, HCL_SIZEOF(w), ctx); + hak_ooi_t value; + n = rdr(hak, &w, HAK_SIZEOF(w), ctx); if (n <= -1) { - set_rdr_ioerr(hcl, "erroneous or insufficient record length"); + set_rdr_ioerr(hak, "erroneous or insufficient record length"); goto oops; } - value = (hcl_ooi_t)hcl_leoowtoh(w); - ns = hcl_makefpdec(hcl, HCL_SMOOI_TO_OOP(value), scale); - if (HCL_UNLIKELY(!ns)) goto oops; + value = (hak_ooi_t)hak_leoowtoh(w); + ns = hak_makefpdec(hak, HAK_SMOOI_TO_OOP(value), scale); + if (HAK_UNLIKELY(!ns)) goto oops; } else { - hcl_oow_t j, nbytes, nwords; - hcl_liw_t liw; - hcl_oop_t v; + hak_oow_t j, nbytes, nwords; + hak_liw_t liw; + hak_oop_t v; - n = rdr(hcl, &w, HCL_SIZEOF(w), ctx); + n = rdr(hak, &w, HAK_SIZEOF(w), ctx); if (n <= -1) { - set_rdr_ioerr(hcl, "erroneous or insufficient record length"); + set_rdr_ioerr(hak, "erroneous or insufficient record length"); goto oops; } - nbytes = hcl_leoowtoh(w); + nbytes = hak_leoowtoh(w); - if (nbytes % HCL_SIZEOF(hcl_liw_t)) goto oops; /* not the right number of bytes */ - nwords = nbytes / HCL_SIZEOF(hcl_liw_t); + if (nbytes % HAK_SIZEOF(hak_liw_t)) goto oops; /* not the right number of bytes */ + nwords = nbytes / HAK_SIZEOF(hak_liw_t); - v = hcl_instantiate(hcl, ((b == HCL_XCHG_FPDEC_2) ? hcl->c_large_positive_integer : hcl->c_large_negative_integer), HCL_NULL, nwords); - if (HCL_UNLIKELY(!v)) goto oops; + v = hak_instantiate(hak, ((b == HAK_XCHG_FPDEC_2) ? hak->c_large_positive_integer : hak->c_large_negative_integer), HAK_NULL, nwords); + if (HAK_UNLIKELY(!v)) goto oops; for (j = 0; j < nwords; j++) { - if (rdr(hcl, &liw, HCL_SIZEOF(liw), ctx) <= -1) goto oops; - liw = hcl_leliwtoh(liw); - HCL_OBJ_SET_LIWORD_VAL(v, j, liw); + if (rdr(hak, &liw, HAK_SIZEOF(liw), ctx) <= -1) goto oops; + liw = hak_leliwtoh(liw); + HAK_OBJ_SET_LIWORD_VAL(v, j, liw); } - hcl_pushvolat (hcl, &v); - ns = hcl_makefpdec(hcl, v, scale); - hcl_popvolat (hcl); - if (HCL_UNLIKELY(!ns)) goto oops; + hak_pushvolat (hak, &v); + ns = hak_makefpdec(hak, v, scale); + hak_popvolat (hak); + if (HAK_UNLIKELY(!ns)) goto oops; } - if (hcl_addliteraltocode(hcl, code, ns, 0, HCL_NULL) <= -1) goto oops; + if (hak_addliteraltocode(hak, code, ns, 0, HAK_NULL) <= -1) goto oops; break; } - case HCL_XCHG_PRIM: + case HAK_XCHG_PRIM: /* TODO: */ break; } @@ -561,168 +561,168 @@ int hcl_unmarshalcode (hcl_t* hcl, hcl_code_t* code, hcl_xchg_reader_t rdr, void return 0; oops: - if (usym_buf) hcl_freemem (hcl, usym_buf); + if (usym_buf) hak_freemem (hak, usym_buf); return -1; } /* -------------------------------------------------------------------- */ -static int mem_code_writer (hcl_t* hcl, const void* ptr, hcl_oow_t len, void* ctx) +static int mem_code_writer (hak_t* hak, const void* ptr, hak_oow_t len, void* ctx) { - hcl_ptlc_t* dst = (hcl_ptlc_t*)ctx; - const hcl_uint8_t* p = (const hcl_uint8_t*)ptr; - const hcl_uint8_t* e = p + len; + hak_ptlc_t* dst = (hak_ptlc_t*)ctx; + const hak_uint8_t* p = (const hak_uint8_t*)ptr; + const hak_uint8_t* e = p + len; if (dst->capa - dst->len < len) { - hcl_oow_t newcapa; - hcl_uint8_t* newptr; + hak_oow_t newcapa; + hak_uint8_t* newptr; newcapa = dst->len + len; - newcapa = HCL_ALIGN_POW2(newcapa, 64); - newptr = (hcl_uint8_t*)hcl_reallocmem(hcl, dst->ptr, newcapa); - if (HCL_UNLIKELY(!newptr)) return -1; + newcapa = HAK_ALIGN_POW2(newcapa, 64); + newptr = (hak_uint8_t*)hak_reallocmem(hak, dst->ptr, newcapa); + if (HAK_UNLIKELY(!newptr)) return -1; dst->ptr = newptr; dst->capa = newcapa; } - while (p < e) ((hcl_uint8_t*)dst->ptr)[dst->len++] = *p++; + while (p < e) ((hak_uint8_t*)dst->ptr)[dst->len++] = *p++; return 0; } -int hcl_marshalcodetomem (hcl_t* hcl, const hcl_code_t* code, hcl_ptlc_t* dst) +int hak_marshalcodetomem (hak_t* hak, const hak_code_t* code, hak_ptlc_t* dst) { - return hcl_marshalcode(hcl, code, mem_code_writer, dst); + return hak_marshalcode(hak, code, mem_code_writer, dst); } /* -------------------------------------------------------------------- */ struct cmr_t { - const hcl_ptl_t* src; - hcl_oow_t pos; + const hak_ptl_t* src; + hak_oow_t pos; }; -static int mem_code_reader(hcl_t* hcl, void* ptr, hcl_oow_t len, void* ctx) +static int mem_code_reader(hak_t* hak, void* ptr, hak_oow_t len, void* ctx) { struct cmr_t* cmr = (struct cmr_t*)ctx; - hcl_uint8_t* p = (hcl_uint8_t*)ptr; - hcl_uint8_t* e = p + len; + hak_uint8_t* p = (hak_uint8_t*)ptr; + hak_uint8_t* e = p + len; - HCL_ASSERT (hcl, cmr->pos <= cmr->src->len); + HAK_ASSERT (hak, cmr->pos <= cmr->src->len); if (cmr->src->len - cmr->pos < len) { - hcl_seterrbfmt (hcl, HCL_ENOENT, "no more data"); + hak_seterrbfmt (hak, HAK_ENOENT, "no more data"); return -1; } - while (p < e) *p++ = ((const hcl_uint8_t*)cmr->src->ptr)[cmr->pos++]; + while (p < e) *p++ = ((const hak_uint8_t*)cmr->src->ptr)[cmr->pos++]; return 0; } -int hcl_unmarshalcodefrommem (hcl_t* hcl, hcl_code_t* code, const hcl_ptl_t* src) +int hak_unmarshalcodefrommem (hak_t* hak, hak_code_t* code, const hak_ptl_t* src) { struct cmr_t cmr; cmr.src = src; cmr.pos = 0; - return hcl_unmarshalcode(hcl, code, mem_code_reader, &cmr); + return hak_unmarshalcode(hak, code, mem_code_reader, &cmr); } /* -------------------------------------------------------------------- */ -int hcl_brewcode (hcl_t* hcl, hcl_code_t* code) +int hak_brewcode (hak_t* hak, hak_code_t* code) { /* create space to hold byte code and debug information */ if (!code->bc.ptr) { - code->bc.ptr = (hcl_oob_t*)hcl_allocmem(hcl, HCL_SIZEOF(*code->bc.ptr) * HCL_BC_BUFFER_INIT); /* TODO: set a proper intial size */ - if (HCL_UNLIKELY(!code->bc.ptr)) + code->bc.ptr = (hak_oob_t*)hak_allocmem(hak, HAK_SIZEOF(*code->bc.ptr) * HAK_BC_BUFFER_INIT); /* TODO: set a proper intial size */ + if (HAK_UNLIKELY(!code->bc.ptr)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), "unable to allocate code buffer - %js", orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), "unable to allocate code buffer - %js", orgmsg); return -1; } - HCL_ASSERT (hcl, code->bc.len == 0); - code->bc.capa = HCL_BC_BUFFER_INIT; + HAK_ASSERT (hak, code->bc.len == 0); + code->bc.capa = HAK_BC_BUFFER_INIT; } if (!code->dbgi) { - code->dbgi = (hcl_dbgi_t*)hcl_allocmem(hcl, HCL_SIZEOF(*code->dbgi) * HCL_BC_BUFFER_INIT); - if (HCL_UNLIKELY(!code->dbgi)) + code->dbgi = (hak_dbgi_t*)hak_allocmem(hak, HAK_SIZEOF(*code->dbgi) * HAK_BC_BUFFER_INIT); + if (HAK_UNLIKELY(!code->dbgi)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), "unable to allocate debug info buffer - %js", orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), "unable to allocate debug info buffer - %js", orgmsg); /* bc.ptr and dbgi go together. so free bc.ptr if dbgi allocation fails */ - hcl_freemem (hcl, code->bc.ptr); - code->bc.ptr = HCL_NULL; + hak_freemem (hak, code->bc.ptr); + code->bc.ptr = HAK_NULL; code->bc.len = 0; code->bc.capa = 0; return -1; } - HCL_MEMSET (code->dbgi, 0, HCL_SIZEOF(*code->dbgi) * HCL_BC_BUFFER_INIT); + HAK_MEMSET (code->dbgi, 0, HAK_SIZEOF(*code->dbgi) * HAK_BC_BUFFER_INIT); } - /* TODO: move code.lit.arr creation to hcl_init() after swithching to hcl_allocmem? */ + /* TODO: move code.lit.arr creation to hak_init() after swithching to hak_allocmem? */ if (!code->lit.arr) { - code->lit.arr = (hcl_oop_oop_t)hcl_makengcarray(hcl, HCL_LIT_BUFFER_INIT); /* TOOD: set a proper initial size */ - if (HCL_UNLIKELY(!code->lit.arr)) + code->lit.arr = (hak_oop_oop_t)hak_makengcarray(hak, HAK_LIT_BUFFER_INIT); /* TOOD: set a proper initial size */ + if (HAK_UNLIKELY(!code->lit.arr)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), "unable to allocate literal frame - %js", orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), "unable to allocate literal frame - %js", orgmsg); return -1; } - HCL_ASSERT (hcl, code->lit.len == 0); + HAK_ASSERT (hak, code->lit.len == 0); } return 0; } -void hcl_purgecode (hcl_t* hcl, hcl_code_t* code) +void hak_purgecode (hak_t* hak, hak_code_t* code) { if (code->dbgi) { - hcl_freemem (hcl, code->dbgi); - code->dbgi = HCL_NULL; + hak_freemem (hak, code->dbgi); + code->dbgi = HAK_NULL; } if (code->bc.ptr) { - hcl_freemem (hcl, code->bc.ptr); - code->bc.ptr = HCL_NULL; + hak_freemem (hak, code->bc.ptr); + code->bc.ptr = HAK_NULL; code->bc.len = 0; code->bc.capa = 0; } if (code->lit.arr) { - hcl_freengcobj (hcl, (hcl_oop_t)code->lit.arr); - code->lit.arr = HCL_NULL; + hak_freengcobj (hak, (hak_oop_t)code->lit.arr); + code->lit.arr = HAK_NULL; code->lit.len = 0; } - HCL_MEMSET (&code, 0, HCL_SIZEOF(code)); + HAK_MEMSET (&code, 0, HAK_SIZEOF(code)); } /* -------------------------------------------------------------------- */ -int hcl_addliteraltocode (hcl_t* hcl, hcl_code_t* code, hcl_oop_t obj, hcl_oow_t lfbase, hcl_oow_t* index) +int hak_addliteraltocode (hak_t* hak, hak_code_t* code, hak_oop_t obj, hak_oow_t lfbase, hak_oow_t* index) { - hcl_oow_t capa, i; - hcl_oop_t tmp; + hak_oow_t capa, i; + hak_oop_t tmp; /* TODO: speed up the following duplicate check loop */ for (i = lfbase; i < code->lit.len; i++) { - tmp = ((hcl_oop_oop_t)code->lit.arr)->slot[i]; + tmp = ((hak_oop_oop_t)code->lit.arr)->slot[i]; - if (tmp == obj || hcl_equalobjs(hcl, obj, tmp)) + if (tmp == obj || hak_equalobjs(hak, obj, tmp)) { /* this removes redundancy of symbols, characters, and integers. * a string object requires equality check. however, @@ -734,30 +734,30 @@ int hcl_addliteraltocode (hcl_t* hcl, hcl_code_t* code, hcl_oop_t obj, hcl_oow_t } } - capa = HCL_OBJ_GET_SIZE(code->lit.arr); + capa = HAK_OBJ_GET_SIZE(code->lit.arr); if (code->lit.len >= capa) { - hcl_oop_t tmp; - hcl_oow_t newcapa; + hak_oop_t tmp; + hak_oow_t newcapa; - newcapa = HCL_ALIGN(capa + 1, HCL_LIT_BUFFER_ALIGN); - tmp = hcl_remakengcarray(hcl, (hcl_oop_t)code->lit.arr, newcapa); - if (HCL_UNLIKELY(!tmp)) + newcapa = HAK_ALIGN(capa + 1, HAK_LIT_BUFFER_ALIGN); + tmp = hak_remakengcarray(hak, (hak_oop_t)code->lit.arr, newcapa); + if (HAK_UNLIKELY(!tmp)) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_ERRNUM(hcl), "unable to resize literal frame - %js", orgmsg); + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_ERRNUM(hak), "unable to resize literal frame - %js", orgmsg); return -1; } - code->lit.arr = (hcl_oop_oop_t)tmp; + code->lit.arr = (hak_oop_oop_t)tmp; } if (index) *index = code->lit.len - lfbase; - ((hcl_oop_oop_t)code->lit.arr)->slot[code->lit.len++] = obj; + ((hak_oop_oop_t)code->lit.arr)->slot[code->lit.len++] = obj; /* make read-only an object in the literal table. * some immutable objects(e.g. literal symbol) don't need this part * but we just execute it regardless */ - if (HCL_OOP_IS_POINTER(obj)) HCL_OBJ_SET_FLAGS_RDONLY (obj, 1); + if (HAK_OOP_IS_POINTER(obj)) HAK_OBJ_SET_FLAGS_RDONLY (obj, 1); return 0; } diff --git a/lib/xma.c b/lib/xma.c index 64858e6..6569cf8 100644 --- a/lib/xma.c +++ b/lib/xma.c @@ -22,9 +22,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include "hcl-prv.h" -#include /* TODO: replace assert() with HCL_ASSERT() or something */ +#include +#include "hak-prv.h" +#include /* TODO: replace assert() with HAK_ASSERT() or something */ /* @@ -46,48 +46,48 @@ $1 = (xxx_int_t *) 0x7fffea722f78 /* set ALIGN to twice the pointer size to prevent unaligned memory access by * instructions dealing with data larger than the system word size. e.g. movaps on x86_64 */ -#define ALIGN (HCL_SIZEOF_VOID_P * 2) /* this must be a power of 2 */ +#define ALIGN (HAK_SIZEOF_VOID_P * 2) /* this must be a power of 2 */ -#define MBLKHDRSIZE (HCL_SIZEOF(hcl_xma_mblk_t)) -#define MINALLOCSIZE (HCL_SIZEOF(hcl_xma_fblk_t) - HCL_SIZEOF(hcl_xma_mblk_t)) -#define FBLKMINSIZE (MBLKHDRSIZE + MINALLOCSIZE) /* or HCL_SIZEOF(hcl_xma_fblk_t) - need space for the free links when the block is freeed */ +#define MBLKHDRSIZE (HAK_SIZEOF(hak_xma_mblk_t)) +#define MINALLOCSIZE (HAK_SIZEOF(hak_xma_fblk_t) - HAK_SIZEOF(hak_xma_mblk_t)) +#define FBLKMINSIZE (MBLKHDRSIZE + MINALLOCSIZE) /* or HAK_SIZEOF(hak_xma_fblk_t) - need space for the free links when the block is freeed */ /* NOTE: you must ensure that FBLKMINSIZE is equal to ALIGN or multiples of ALIGN */ -#define SYS_TO_USR(b) ((hcl_uint8_t*)(b) + MBLKHDRSIZE) -#define USR_TO_SYS(b) ((hcl_uint8_t*)(b) - MBLKHDRSIZE) +#define SYS_TO_USR(b) ((hak_uint8_t*)(b) + MBLKHDRSIZE) +#define USR_TO_SYS(b) ((hak_uint8_t*)(b) - MBLKHDRSIZE) /* * the xfree array is divided into three region * 0 ....................... FIXED ......................... XFIMAX-1 ... XFIMAX * | small fixed-size chains | large chains | huge chain | */ -#define FIXED HCL_XMA_FIXED -#define XFIMAX(xma) (HCL_COUNTOF(xma->xfree)-1) +#define FIXED HAK_XMA_FIXED +#define XFIMAX(xma) (HAK_COUNTOF(xma->xfree)-1) -#define fblk_free(b) (((hcl_xma_fblk_t*)(b))->free) -#define fblk_size(b) (((hcl_xma_fblk_t*)(b))->size) -#define fblk_prev_size(b) (((hcl_xma_fblk_t*)(b))->prev_size) +#define fblk_free(b) (((hak_xma_fblk_t*)(b))->free) +#define fblk_size(b) (((hak_xma_fblk_t*)(b))->size) +#define fblk_prev_size(b) (((hak_xma_fblk_t*)(b))->prev_size) #if 0 -#define mblk_free(b) (((hcl_xma_mblk_t*)(b))->free) -#define mblk_size(b) (((hcl_xma_mblk_t*)(b))->size) -#define mblk_prev_size(b) (((hcl_xma_mblk_t*)(b))->prev_size) +#define mblk_free(b) (((hak_xma_mblk_t*)(b))->free) +#define mblk_size(b) (((hak_xma_mblk_t*)(b))->size) +#define mblk_prev_size(b) (((hak_xma_mblk_t*)(b))->prev_size) #else /* Let mblk_free(), mblk_size(), mblk_prev_size() be an alias to * fblk_free(), fblk_size(), fblk_prev_size() to follow strict aliasing rule. - * if gcc/clang is used, specifying __attribute__((__may_alias__)) to hcl_xma_mblk_t - * and hcl_xma_fblk_t would also work. */ + * if gcc/clang is used, specifying __attribute__((__may_alias__)) to hak_xma_mblk_t + * and hak_xma_fblk_t would also work. */ #define mblk_free(b) fblk_free(b) #define mblk_size(b) fblk_size(b) #define mblk_prev_size(b) fblk_prev_size(b) #endif -#define next_mblk(b) ((hcl_xma_mblk_t*)((hcl_uint8_t*)b + MBLKHDRSIZE + mblk_size(b))) -#define prev_mblk(b) ((hcl_xma_mblk_t*)((hcl_uint8_t*)b - (MBLKHDRSIZE + mblk_prev_size(b)))) +#define next_mblk(b) ((hak_xma_mblk_t*)((hak_uint8_t*)b + MBLKHDRSIZE + mblk_size(b))) +#define prev_mblk(b) ((hak_xma_mblk_t*)((hak_uint8_t*)b - (MBLKHDRSIZE + mblk_prev_size(b)))) -struct hcl_xma_mblk_t +struct hak_xma_mblk_t { - hcl_oow_t prev_size; + hak_oow_t prev_size; /* the block size is shifted by 1 bit and the maximum value is * offset by 1 bit because of the 'free' bit-field. @@ -96,42 +96,42 @@ struct hcl_xma_mblk_t * never be 1. i don't think there is a practical use case where * you need to allocate a huge chunk covering the entire * address space of your machine. */ - hcl_oow_t free: 1; - hcl_oow_t size: HCL_XMA_SIZE_BITS; /**< block size */ + hak_oow_t free: 1; + hak_oow_t size: HAK_XMA_SIZE_BITS; /**< block size */ }; -struct hcl_xma_fblk_t +struct hak_xma_fblk_t { - hcl_oow_t prev_size; - hcl_oow_t free: 1; - hcl_oow_t size: HCL_XMA_SIZE_BITS;/**< block size */ + hak_oow_t prev_size; + hak_oow_t free: 1; + hak_oow_t size: HAK_XMA_SIZE_BITS;/**< block size */ - /* the fields are must be identical to the fields of hcl_xma_mblk_t */ + /* the fields are must be identical to the fields of hak_xma_mblk_t */ /* the two fields below are used only if the block is free */ - hcl_xma_fblk_t* free_prev; /**< link to the previous free block */ - hcl_xma_fblk_t* free_next; /**< link to the next free block */ + hak_xma_fblk_t* free_prev; /**< link to the previous free block */ + hak_xma_fblk_t* free_next; /**< link to the next free block */ }; /*#define VERIFY*/ #if defined(VERIFY) -static void DBG_VERIFY (hcl_xma_t* xma, const char* desc) +static void DBG_VERIFY (hak_xma_t* xma, const char* desc) { - hcl_xma_mblk_t* tmp, * next; - hcl_oow_t cnt; - hcl_oow_t fsum, asum; -#if defined(HCL_XMA_ENABLE_STAT) - hcl_oow_t isum; + hak_xma_mblk_t* tmp, * next; + hak_oow_t cnt; + hak_oow_t fsum, asum; +#if defined(HAK_XMA_ENABLE_STAT) + hak_oow_t isum; #endif - for (tmp = (hcl_xma_mblk_t*)xma->start, cnt = 0, fsum = 0, asum = 0; (hcl_uint8_t*)tmp < xma->end; tmp = next, cnt++) + for (tmp = (hak_xma_mblk_t*)xma->start, cnt = 0, fsum = 0, asum = 0; (hak_uint8_t*)tmp < xma->end; tmp = next, cnt++) { next = next_mblk(tmp); - if ((hcl_uint8_t*)tmp == xma->start) + if ((hak_uint8_t*)tmp == xma->start) { assert (tmp->prev_size == 0); } - if ((hcl_uint8_t*)next < xma->end) + if ((hak_uint8_t*)next < xma->end) { assert (next->prev_size == tmp->size); } @@ -140,7 +140,7 @@ static void DBG_VERIFY (hcl_xma_t* xma, const char* desc) else asum += tmp->size; } -#if defined(HCL_XMA_ENABLE_STAT) +#if defined(HAK_XMA_ENABLE_STAT) isum = (xma->stat.nfree + xma->stat.nused) * MBLKHDRSIZE; assert (asum == xma->stat.alloc); assert (fsum == xma->stat.avail); @@ -152,7 +152,7 @@ static void DBG_VERIFY (hcl_xma_t* xma, const char* desc) #define DBG_VERIFY(xma, desc) #endif -static HCL_INLINE hcl_oow_t szlog2 (hcl_oow_t n) +static HAK_INLINE hak_oow_t szlog2 (hak_oow_t n) { /* * 2**x = n; @@ -163,90 +163,90 @@ static HCL_INLINE hcl_oow_t szlog2 (hcl_oow_t n) * return x; */ -#define BITS (HCL_SIZEOF_OOW_T * 8) +#define BITS (HAK_SIZEOF_OOW_T * 8) int x = BITS - 1; -#if HCL_SIZEOF_OOW_T >= 128 -# error hcl_oow_t too large. unsupported platform +#if HAK_SIZEOF_OOW_T >= 128 +# error hak_oow_t too large. unsupported platform #endif -#if HCL_SIZEOF_OOW_T >= 64 - if ((n & (~(hcl_oow_t)0 << (BITS-128))) == 0) { x -= 256; n <<= 256; } +#if HAK_SIZEOF_OOW_T >= 64 + if ((n & (~(hak_oow_t)0 << (BITS-128))) == 0) { x -= 256; n <<= 256; } #endif -#if HCL_SIZEOF_OOW_T >= 32 - if ((n & (~(hcl_oow_t)0 << (BITS-128))) == 0) { x -= 128; n <<= 128; } +#if HAK_SIZEOF_OOW_T >= 32 + if ((n & (~(hak_oow_t)0 << (BITS-128))) == 0) { x -= 128; n <<= 128; } #endif -#if HCL_SIZEOF_OOW_T >= 16 - if ((n & (~(hcl_oow_t)0 << (BITS-64))) == 0) { x -= 64; n <<= 64; } +#if HAK_SIZEOF_OOW_T >= 16 + if ((n & (~(hak_oow_t)0 << (BITS-64))) == 0) { x -= 64; n <<= 64; } #endif -#if HCL_SIZEOF_OOW_T >= 8 - if ((n & (~(hcl_oow_t)0 << (BITS-32))) == 0) { x -= 32; n <<= 32; } +#if HAK_SIZEOF_OOW_T >= 8 + if ((n & (~(hak_oow_t)0 << (BITS-32))) == 0) { x -= 32; n <<= 32; } #endif -#if HCL_SIZEOF_OOW_T >= 4 - if ((n & (~(hcl_oow_t)0 << (BITS-16))) == 0) { x -= 16; n <<= 16; } +#if HAK_SIZEOF_OOW_T >= 4 + if ((n & (~(hak_oow_t)0 << (BITS-16))) == 0) { x -= 16; n <<= 16; } #endif -#if HCL_SIZEOF_OOW_T >= 2 - if ((n & (~(hcl_oow_t)0 << (BITS-8))) == 0) { x -= 8; n <<= 8; } +#if HAK_SIZEOF_OOW_T >= 2 + if ((n & (~(hak_oow_t)0 << (BITS-8))) == 0) { x -= 8; n <<= 8; } #endif -#if HCL_SIZEOF_OOW_T >= 1 - if ((n & (~(hcl_oow_t)0 << (BITS-4))) == 0) { x -= 4; n <<= 4; } +#if HAK_SIZEOF_OOW_T >= 1 + if ((n & (~(hak_oow_t)0 << (BITS-4))) == 0) { x -= 4; n <<= 4; } #endif - if ((n & (~(hcl_oow_t)0 << (BITS-2))) == 0) { x -= 2; n <<= 2; } - if ((n & (~(hcl_oow_t)0 << (BITS-1))) == 0) { x -= 1; } + if ((n & (~(hak_oow_t)0 << (BITS-2))) == 0) { x -= 2; n <<= 2; } + if ((n & (~(hak_oow_t)0 << (BITS-1))) == 0) { x -= 1; } return x; #undef BITS } -static HCL_INLINE hcl_oow_t getxfi (hcl_xma_t* xma, hcl_oow_t size) +static HAK_INLINE hak_oow_t getxfi (hak_xma_t* xma, hak_oow_t size) { - hcl_oow_t xfi = ((size) / ALIGN) - 1; + hak_oow_t xfi = ((size) / ALIGN) - 1; if (xfi >= FIXED) xfi = szlog2(size) - (xma)->bdec + FIXED; if (xfi > XFIMAX(xma)) xfi = XFIMAX(xma); return xfi; } -hcl_xma_t* hcl_xma_open (hcl_mmgr_t* mmgr, hcl_oow_t xtnsize, void* zoneptr, hcl_oow_t zonesize) +hak_xma_t* hak_xma_open (hak_mmgr_t* mmgr, hak_oow_t xtnsize, void* zoneptr, hak_oow_t zonesize) { - hcl_xma_t* xma; + hak_xma_t* xma; - xma = (hcl_xma_t*)HCL_MMGR_ALLOC(mmgr, HCL_SIZEOF(*xma) + xtnsize); - if (HCL_UNLIKELY(!xma)) return HCL_NULL; + xma = (hak_xma_t*)HAK_MMGR_ALLOC(mmgr, HAK_SIZEOF(*xma) + xtnsize); + if (HAK_UNLIKELY(!xma)) return HAK_NULL; - if (hcl_xma_init(xma, mmgr, zoneptr, zonesize) <= -1) + if (hak_xma_init(xma, mmgr, zoneptr, zonesize) <= -1) { - HCL_MMGR_FREE (mmgr, xma); - return HCL_NULL; + HAK_MMGR_FREE (mmgr, xma); + return HAK_NULL; } - HCL_MEMSET (xma + 1, 0, xtnsize); + HAK_MEMSET (xma + 1, 0, xtnsize); return xma; } -void hcl_xma_close (hcl_xma_t* xma) +void hak_xma_close (hak_xma_t* xma) { - hcl_xma_fini (xma); - HCL_MMGR_FREE (xma->_mmgr, xma); + hak_xma_fini (xma); + HAK_MMGR_FREE (xma->_mmgr, xma); } -int hcl_xma_init (hcl_xma_t* xma, hcl_mmgr_t* mmgr, void* zoneptr, hcl_oow_t zonesize) +int hak_xma_init (hak_xma_t* xma, hak_mmgr_t* mmgr, void* zoneptr, hak_oow_t zonesize) { - hcl_xma_fblk_t* first; - hcl_oow_t xfi; + hak_xma_fblk_t* first; + hak_oow_t xfi; int internal = 0; if (!zoneptr) { /* round 'zonesize' to be the multiples of ALIGN */ - zonesize = HCL_ALIGN_POW2(zonesize, ALIGN); + zonesize = HAK_ALIGN_POW2(zonesize, ALIGN); /* adjust 'zonesize' to be large enough to hold a single smallest block */ if (zonesize < FBLKMINSIZE) zonesize = FBLKMINSIZE; - zoneptr = HCL_MMGR_ALLOC(mmgr, zonesize); - if (HCL_UNLIKELY(!zoneptr)) return -1; + zoneptr = HAK_MMGR_ALLOC(mmgr, zonesize); + if (HAK_UNLIKELY(!zoneptr)) return -1; - internal = 1; /* internally created. must be freed upon hcl_xma_fini() */ + internal = 1; /* internally created. must be freed upon hak_xma_fini() */ } else if (zonesize < FBLKMINSIZE) { @@ -255,16 +255,16 @@ int hcl_xma_init (hcl_xma_t* xma, hcl_mmgr_t* mmgr, void* zoneptr, hcl_oow_t zon return -1; } - first = (hcl_xma_fblk_t*)zoneptr; + first = (hak_xma_fblk_t*)zoneptr; /* initialize the header part of the free chunk. the entire zone is a single free block */ first->prev_size = 0; first->free = 1; first->size = zonesize - MBLKHDRSIZE; /* size excluding the block header */ - first->free_prev = HCL_NULL; - first->free_next = HCL_NULL; + first->free_prev = HAK_NULL; + first->free_next = HAK_NULL; - HCL_MEMSET(xma, 0, HCL_SIZEOF(*xma)); + HAK_MEMSET(xma, 0, HAK_SIZEOF(*xma)); xma->_mmgr = mmgr; xma->bdec = szlog2(FIXED * ALIGN); /* precalculate the decrement value */ @@ -275,12 +275,12 @@ int hcl_xma_init (hcl_xma_t* xma, hcl_mmgr_t* mmgr, void* zoneptr, hcl_oow_t zon /* locate it into an apporopriate slot */ xma->xfree[xfi] = first; /* let it be the head, which is natural with only a block */ - xma->start = (hcl_uint8_t*)first; + xma->start = (hak_uint8_t*)first; xma->end = xma->start + zonesize; xma->internal = internal; /* initialize some statistical variables */ -#if defined(HCL_XMA_ENABLE_STAT) +#if defined(HAK_XMA_ENABLE_STAT) xma->stat.total = zonesize; xma->stat.alloc = 0; xma->stat.avail = zonesize - MBLKHDRSIZE; @@ -300,35 +300,35 @@ int hcl_xma_init (hcl_xma_t* xma, hcl_mmgr_t* mmgr, void* zoneptr, hcl_oow_t zon return 0; } -void hcl_xma_fini (hcl_xma_t* xma) +void hak_xma_fini (hak_xma_t* xma) { /* the head must point to the free chunk allocated in init(). * let's deallocate it */ - if (xma->internal) HCL_MMGR_FREE (xma->_mmgr, xma->start); - xma->start = HCL_NULL; - xma->end = HCL_NULL; + if (xma->internal) HAK_MMGR_FREE (xma->_mmgr, xma->start); + xma->start = HAK_NULL; + xma->end = HAK_NULL; } -static HCL_INLINE void attach_to_freelist (hcl_xma_t* xma, hcl_xma_fblk_t* b) +static HAK_INLINE void attach_to_freelist (hak_xma_t* xma, hak_xma_fblk_t* b) { /* * attach a block to a free list */ /* get the free list index for the block size */ - hcl_oow_t xfi = getxfi(xma, b->size); + hak_oow_t xfi = getxfi(xma, b->size); /* let it be the head of the free list doubly-linked */ - b->free_prev = HCL_NULL; + b->free_prev = HAK_NULL; b->free_next = xma->xfree[xfi]; if (xma->xfree[xfi]) xma->xfree[xfi]->free_prev = b; xma->xfree[xfi] = b; } -static HCL_INLINE void detach_from_freelist (hcl_xma_t* xma, hcl_xma_fblk_t* b) +static HAK_INLINE void detach_from_freelist (hak_xma_t* xma, hak_xma_fblk_t* b) { /* detach a block from a free list */ - hcl_xma_fblk_t* p, * n; + hak_xma_fblk_t* p, * n; /* alias the previous and the next with short variable names */ p = b->free_prev; @@ -344,7 +344,7 @@ static HCL_INLINE void detach_from_freelist (hcl_xma_t* xma, hcl_xma_fblk_t* b) { /* the previous item does not exist. the block is the first * item in the free list. */ - hcl_oow_t xfi = getxfi(xma, b->size); + hak_oow_t xfi = getxfi(xma, b->size); assert (b == xma->xfree[xfi]); /* let's update the free list head */ xma->xfree[xfi] = n; @@ -355,22 +355,22 @@ static HCL_INLINE void detach_from_freelist (hcl_xma_t* xma, hcl_xma_fblk_t* b) if (n) n->free_prev = p; } -static hcl_xma_fblk_t* alloc_from_freelist (hcl_xma_t* xma, hcl_oow_t xfi, hcl_oow_t size) +static hak_xma_fblk_t* alloc_from_freelist (hak_xma_t* xma, hak_oow_t xfi, hak_oow_t size) { - hcl_xma_fblk_t* cand; + hak_xma_fblk_t* cand; for (cand = xma->xfree[xfi]; cand; cand = cand->free_next) { if (cand->size >= size) { - hcl_oow_t rem; + hak_oow_t rem; detach_from_freelist(xma, cand); rem = cand->size - size; if (rem >= FBLKMINSIZE) { - hcl_xma_mblk_t* y, * z; + hak_xma_mblk_t* y, * z; /* the remaining part is large enough to hold * another block. let's split it @@ -388,16 +388,16 @@ static hcl_xma_fblk_t* alloc_from_freelist (hcl_xma_t* xma, hcl_oow_t xfi, hcl_o y->prev_size = cand->size; /* add the remaining part to the free list */ - attach_to_freelist(xma, (hcl_xma_fblk_t*)y); + attach_to_freelist(xma, (hak_xma_fblk_t*)y); z = next_mblk(y); - if ((hcl_uint8_t*)z < xma->end) z->prev_size = y->size; + if ((hak_uint8_t*)z < xma->end) z->prev_size = y->size; -#if defined(HCL_XMA_ENABLE_STAT) +#if defined(HAK_XMA_ENABLE_STAT) xma->stat.avail -= MBLKHDRSIZE; #endif } -#if defined(HCL_XMA_ENABLE_STAT) +#if defined(HAK_XMA_ENABLE_STAT) else { /* decrement the number of free blocks as the current @@ -408,11 +408,11 @@ static hcl_xma_fblk_t* alloc_from_freelist (hcl_xma_t* xma, hcl_oow_t xfi, hcl_o cand->free = 0; /* - cand->free_next = HCL_NULL; - cand->free_prev = HCL_NULL; + cand->free_next = HAK_NULL; + cand->free_prev = HAK_NULL; */ -#if defined(HCL_XMA_ENABLE_STAT) +#if defined(HAK_XMA_ENABLE_STAT) xma->stat.nused++; xma->stat.alloc += cand->size; xma->stat.avail -= cand->size; @@ -422,24 +422,24 @@ static hcl_xma_fblk_t* alloc_from_freelist (hcl_xma_t* xma, hcl_oow_t xfi, hcl_o } } - return HCL_NULL; + return HAK_NULL; } -void* hcl_xma_alloc (hcl_xma_t* xma, hcl_oow_t size) +void* hak_xma_alloc (hak_xma_t* xma, hak_oow_t size) { - hcl_xma_fblk_t* cand; - hcl_oow_t xfi, native_xfi; + hak_xma_fblk_t* cand; + hak_oow_t xfi, native_xfi; DBG_VERIFY(xma, "alloc start"); -#if defined(HCL_XMA_ENABLE_STAT) +#if defined(HAK_XMA_ENABLE_STAT) xma->stat.nallocops++; #endif /* round up 'size' to the multiples of ALIGN */ if (size < MINALLOCSIZE) size = MINALLOCSIZE; - size = HCL_ALIGN_POW2(size, ALIGN); + size = HAK_ALIGN_POW2(size, ALIGN); assert (size >= ALIGN); xfi = getxfi(xma, size); @@ -457,7 +457,7 @@ void* hcl_xma_alloc (hcl_xma_t* xma, hcl_oow_t size) detach_from_freelist(xma, cand); cand->free = 0; -#if defined(HCL_XMA_ENABLE_STAT) +#if defined(HAK_XMA_ENABLE_STAT) xma->stat.nfree--; xma->stat.nused++; xma->stat.alloc += cand->size; @@ -471,10 +471,10 @@ void* hcl_xma_alloc (hcl_xma_t* xma, hcl_oow_t size) cand = alloc_from_freelist(xma, XFIMAX(xma), size); if (!cand) { - #if defined(HCL_XMA_ENABLE_STAT) + #if defined(HAK_XMA_ENABLE_STAT) xma->stat.nallocbadops++; #endif - return HCL_NULL; + return HAK_NULL; } } else @@ -514,50 +514,50 @@ void* hcl_xma_alloc (hcl_xma_t* xma, hcl_oow_t size) } if (!cand) { - #if defined(HCL_XMA_ENABLE_STAT) + #if defined(HAK_XMA_ENABLE_STAT) xma->stat.nallocbadops++; #endif - return HCL_NULL; + return HAK_NULL; } } } } -#if defined(HCL_XMA_ENABLE_STAT) +#if defined(HAK_XMA_ENABLE_STAT) xma->stat.nallocgoodops++; #endif DBG_VERIFY(xma, "alloc end"); return SYS_TO_USR(cand); } -static void* _realloc_merge (hcl_xma_t* xma, void* b, hcl_oow_t size) +static void* _realloc_merge (hak_xma_t* xma, void* b, hak_oow_t size) { - hcl_uint8_t* blk = (hcl_uint8_t*)USR_TO_SYS(b); + hak_uint8_t* blk = (hak_uint8_t*)USR_TO_SYS(b); DBG_VERIFY(xma, "realloc merge start"); /* rounds up 'size' to be multiples of ALIGN */ if (size < MINALLOCSIZE) size = MINALLOCSIZE; - size = HCL_ALIGN_POW2(size, ALIGN); + size = HAK_ALIGN_POW2(size, ALIGN); if (size > mblk_size(blk)) { /* grow the current block */ - hcl_oow_t req; - hcl_uint8_t* n; - hcl_oow_t rem; + hak_oow_t req; + hak_uint8_t* n; + hak_oow_t rem; req = size - mblk_size(blk); /* required size additionally */ - n = (hcl_uint8_t*)next_mblk(blk); + n = (hak_uint8_t*)next_mblk(blk); /* check if the next adjacent block is available */ - if (n >= xma->end || !mblk_free(n) || req > mblk_size(n)) return HCL_NULL; /* no! */ + if (n >= xma->end || !mblk_free(n) || req > mblk_size(n)) return HAK_NULL; /* no! */ /* TODO: check more blocks if the next block is free but small in size. * check the previous adjacent blocks also */ assert(mblk_size(blk) == mblk_prev_size(n)); /* let's merge the current block with the next block */ - detach_from_freelist(xma, (hcl_xma_fblk_t*)n); + detach_from_freelist(xma, (hak_xma_fblk_t*)n); rem = (MBLKHDRSIZE + mblk_size(n)) - req; if (rem >= FBLKMINSIZE) @@ -566,19 +566,19 @@ static void* _realloc_merge (hcl_xma_t* xma, void* b, hcl_oow_t size) * the remaining part of the next block is large enough * to hold a block. break the next block. */ - hcl_uint8_t* y, * z; + hak_uint8_t* y, * z; mblk_size(blk) += req; - y = (hcl_uint8_t*)next_mblk(blk); + y = (hak_uint8_t*)next_mblk(blk); mblk_free(y) = 1; mblk_size(y) = rem - MBLKHDRSIZE; mblk_prev_size(y) = mblk_size(blk); - attach_to_freelist(xma, (hcl_xma_fblk_t*)y); + attach_to_freelist(xma, (hak_xma_fblk_t*)y); - z = (hcl_uint8_t*)next_mblk(y); + z = (hak_uint8_t*)next_mblk(y); if (z < xma->end) mblk_prev_size(z) = mblk_size(y); - #if defined(HCL_XMA_ENABLE_STAT) + #if defined(HAK_XMA_ENABLE_STAT) xma->stat.alloc += req; xma->stat.avail -= req; /* req + MBLKHDRSIZE(tmp) - MBLKHDRSIZE(n) */ if (xma->stat.alloc > xma->stat.alloc_hwmark) xma->stat.alloc_hwmark = xma->stat.alloc; @@ -586,16 +586,16 @@ static void* _realloc_merge (hcl_xma_t* xma, void* b, hcl_oow_t size) } else { - hcl_uint8_t* z; + hak_uint8_t* z; /* the remaining part of the next block is too small to form an indepent block. * utilize the whole block by merging to the resizing block */ mblk_size(blk) += MBLKHDRSIZE + mblk_size(n); - z = (hcl_uint8_t*)next_mblk(blk); + z = (hak_uint8_t*)next_mblk(blk); if (z < xma->end) mblk_prev_size(z) = mblk_size(blk); - #if defined(HCL_XMA_ENABLE_STAT) + #if defined(HAK_XMA_ENABLE_STAT) xma->stat.nfree--; xma->stat.alloc += MBLKHDRSIZE + mblk_size(n); xma->stat.avail -= mblk_size(n); @@ -606,57 +606,57 @@ static void* _realloc_merge (hcl_xma_t* xma, void* b, hcl_oow_t size) else if (size < mblk_size(blk)) { /* shrink the block */ - hcl_oow_t rem = mblk_size(blk) - size; + hak_oow_t rem = mblk_size(blk) - size; if (rem >= FBLKMINSIZE) { - hcl_uint8_t* n; + hak_uint8_t* n; - n = (hcl_uint8_t*)next_mblk(blk); + n = (hak_uint8_t*)next_mblk(blk); /* the leftover is large enough to hold a block of minimum size.split the current block */ if (n < xma->end && mblk_free(n)) { - hcl_uint8_t* y, * z; + hak_uint8_t* y, * z; /* make the leftover block merge with the next block */ - detach_from_freelist(xma, (hcl_xma_fblk_t*)n); + detach_from_freelist(xma, (hak_xma_fblk_t*)n); mblk_size(blk) = size; - y = (hcl_uint8_t*)next_mblk(blk); /* update y to the leftover block with the new block size set above */ + y = (hak_uint8_t*)next_mblk(blk); /* update y to the leftover block with the new block size set above */ mblk_free(y) = 1; mblk_size(y) = rem + mblk_size(n); /* add up the adjust block - (rem + MBLKHDRSIZE(n) + n->size) - MBLKHDRSIZE(y) */ mblk_prev_size(y) = mblk_size(blk); /* add 'y' to the free list */ - attach_to_freelist(xma, (hcl_xma_fblk_t*)y); + attach_to_freelist(xma, (hak_xma_fblk_t*)y); - z = (hcl_uint8_t*)next_mblk(y); /* get adjacent block to the merged block */ + z = (hak_uint8_t*)next_mblk(y); /* get adjacent block to the merged block */ if (z < xma->end) mblk_prev_size(z) = mblk_size(y); - #if defined(HCL_XMA_ENABLE_STAT) + #if defined(HAK_XMA_ENABLE_STAT) xma->stat.alloc -= rem; xma->stat.avail += rem; /* rem - MBLKHDRSIZE(y) + MBLKHDRSIZE(n) */ #endif } else { - hcl_uint8_t* y; + hak_uint8_t* y; /* link the leftover block to the free list */ mblk_size(blk) = size; - y = (hcl_uint8_t*)next_mblk(blk); /* update y to the leftover block with the new block size set above */ + y = (hak_uint8_t*)next_mblk(blk); /* update y to the leftover block with the new block size set above */ mblk_free(y) = 1; mblk_size(y) = rem - MBLKHDRSIZE; mblk_prev_size(y) = mblk_size(blk); - attach_to_freelist(xma, (hcl_xma_fblk_t*)y); - /*n = (hcl_uint8_t*)next_mblk(y); + attach_to_freelist(xma, (hak_xma_fblk_t*)y); + /*n = (hak_uint8_t*)next_mblk(y); if (n < xma->end)*/ mblk_prev_size(n) = mblk_size(y); - #if defined(HCL_XMA_ENABLE_STAT) + #if defined(HAK_XMA_ENABLE_STAT) xma->stat.nfree++; xma->stat.alloc -= rem; xma->stat.avail += mblk_size(y); @@ -669,21 +669,21 @@ static void* _realloc_merge (hcl_xma_t* xma, void* b, hcl_oow_t size) return b; } -void* hcl_xma_calloc (hcl_xma_t* xma, hcl_oow_t size) +void* hak_xma_calloc (hak_xma_t* xma, hak_oow_t size) { - void* ptr = hcl_xma_alloc(xma, size); - if (ptr) HCL_MEMSET (ptr, 0, size); + void* ptr = hak_xma_alloc(xma, size); + if (ptr) HAK_MEMSET (ptr, 0, size); return ptr; } -void* hcl_xma_realloc (hcl_xma_t* xma, void* b, hcl_oow_t size) +void* hak_xma_realloc (hak_xma_t* xma, void* b, hak_oow_t size) { void* n; if (!b) { /* 'realloc' with NULL is the same as 'alloc' */ - n = hcl_xma_alloc(xma, size); + n = hak_xma_alloc(xma, size); } else { @@ -694,21 +694,21 @@ void* hcl_xma_realloc (hcl_xma_t* xma, void* b, hcl_oow_t size) n = _realloc_merge(xma, b, size); if (!n) { - #if defined(HCL_XMA_ENABLE_STAT) + #if defined(HAK_XMA_ENABLE_STAT) xma->stat.nreallocbadops++; #endif /* reallocation by merging failed. fall back to the slow * allocation-copy-free scheme */ - n = hcl_xma_alloc(xma, size); + n = hak_xma_alloc(xma, size); if (n) { - HCL_MEMCPY(n, b, size); - hcl_xma_free(xma, b); + HAK_MEMCPY(n, b, size); + hak_xma_free(xma, b); } } else { - #if defined(HCL_XMA_ENABLE_STAT) + #if defined(HAK_XMA_ENABLE_STAT) xma->stat.nreallocgoodops++; #endif } @@ -717,25 +717,25 @@ void* hcl_xma_realloc (hcl_xma_t* xma, void* b, hcl_oow_t size) return n; } -void hcl_xma_free (hcl_xma_t* xma, void* b) +void hak_xma_free (hak_xma_t* xma, void* b) { - hcl_uint8_t* blk = (hcl_uint8_t*)USR_TO_SYS(b); - hcl_uint8_t* x, * y; - hcl_oow_t org_blk_size; + hak_uint8_t* blk = (hak_uint8_t*)USR_TO_SYS(b); + hak_uint8_t* x, * y; + hak_oow_t org_blk_size; DBG_VERIFY(xma, "free start"); org_blk_size = mblk_size(blk); -#if defined(HCL_XMA_ENABLE_STAT) +#if defined(HAK_XMA_ENABLE_STAT) /* update statistical variables */ xma->stat.nused--; xma->stat.alloc -= org_blk_size; xma->stat.nfreeops++; #endif - x = (hcl_uint8_t*)prev_mblk(blk); - y = (hcl_uint8_t*)next_mblk(blk); + x = (hak_uint8_t*)prev_mblk(blk); + y = (hak_uint8_t*)next_mblk(blk); if ((x >= xma->start && mblk_free(x)) && (y < xma->end && mblk_free(y))) { /* @@ -755,21 +755,21 @@ void hcl_xma_free (hcl_xma_t* xma, void* b) * */ - hcl_uint8_t* z; - hcl_oow_t ns = MBLKHDRSIZE + org_blk_size + MBLKHDRSIZE; + hak_uint8_t* z; + hak_oow_t ns = MBLKHDRSIZE + org_blk_size + MBLKHDRSIZE; /* blk's header size + blk->size + y's header size */ - hcl_oow_t bs = ns + mblk_size(y); + hak_oow_t bs = ns + mblk_size(y); - detach_from_freelist(xma, (hcl_xma_fblk_t*)x); - detach_from_freelist(xma, (hcl_xma_fblk_t*)y); + detach_from_freelist(xma, (hak_xma_fblk_t*)x); + detach_from_freelist(xma, (hak_xma_fblk_t*)y); mblk_size(x) += bs; - attach_to_freelist(xma, (hcl_xma_fblk_t*)x); + attach_to_freelist(xma, (hak_xma_fblk_t*)x); - z = (hcl_uint8_t*)next_mblk(x); - if ((hcl_uint8_t*)z < xma->end) mblk_prev_size(z) = mblk_size(x); + z = (hak_uint8_t*)next_mblk(x); + if ((hak_uint8_t*)z < xma->end) mblk_prev_size(z) = mblk_size(x); -#if defined(HCL_XMA_ENABLE_STAT) +#if defined(HAK_XMA_ENABLE_STAT) xma->stat.nfree--; xma->stat.avail += ns; #endif @@ -797,10 +797,10 @@ void hcl_xma_free (hcl_xma_t* xma, void* b) * * */ - hcl_uint8_t* z = (hcl_uint8_t*)next_mblk(y); + hak_uint8_t* z = (hak_uint8_t*)next_mblk(y); /* detach y from the free list */ - detach_from_freelist(xma, (hcl_xma_fblk_t*)y); + detach_from_freelist(xma, (hak_xma_fblk_t*)y); /* update the block availability */ mblk_free(blk) = 1; @@ -808,12 +808,12 @@ void hcl_xma_free (hcl_xma_t* xma, void* b) mblk_size(blk) += MBLKHDRSIZE + mblk_size(y); /* update the backward link of Y */ - if ((hcl_uint8_t*)z < xma->end) mblk_prev_size(z) = mblk_size(blk); + if ((hak_uint8_t*)z < xma->end) mblk_prev_size(z) = mblk_size(blk); /* attach blk to the free list */ - attach_to_freelist(xma, (hcl_xma_fblk_t*)blk); + attach_to_freelist(xma, (hak_xma_fblk_t*)blk); -#if defined(HCL_XMA_ENABLE_STAT) +#if defined(HAK_XMA_ENABLE_STAT) xma->stat.avail += org_blk_size + MBLKHDRSIZE; #endif } @@ -833,25 +833,25 @@ void hcl_xma_free (hcl_xma_t* xma, void* b) * | X | Y | * +-------------------------+------------+ */ - detach_from_freelist(xma, (hcl_xma_fblk_t*)x); + detach_from_freelist(xma, (hak_xma_fblk_t*)x); mblk_size(x) += MBLKHDRSIZE + org_blk_size; assert(y == next_mblk(x)); - if ((hcl_uint8_t*)y < xma->end) mblk_prev_size(y) = mblk_size(x); + if ((hak_uint8_t*)y < xma->end) mblk_prev_size(y) = mblk_size(x); - attach_to_freelist(xma, (hcl_xma_fblk_t*)x); + attach_to_freelist(xma, (hak_xma_fblk_t*)x); -#if defined(HCL_XMA_ENABLE_STAT) +#if defined(HAK_XMA_ENABLE_STAT) xma->stat.avail += MBLKHDRSIZE + org_blk_size; #endif } else { mblk_free(blk) = 1; - attach_to_freelist(xma, (hcl_xma_fblk_t*)blk); + attach_to_freelist(xma, (hak_xma_fblk_t*)blk); -#if defined(HCL_XMA_ENABLE_STAT) +#if defined(HAK_XMA_ENABLE_STAT) xma->stat.nfree++; xma->stat.avail += org_blk_size; #endif @@ -860,17 +860,17 @@ void hcl_xma_free (hcl_xma_t* xma, void* b) DBG_VERIFY(xma, "free end"); } -void hcl_xma_dump (hcl_xma_t* xma, hcl_xma_dumper_t dumper, void* ctx) +void hak_xma_dump (hak_xma_t* xma, hak_xma_dumper_t dumper, void* ctx) { - hcl_xma_mblk_t* tmp; - hcl_oow_t fsum, asum, xfi; -#if defined(HCL_XMA_ENABLE_STAT) - hcl_oow_t isum; + hak_xma_mblk_t* tmp; + hak_oow_t fsum, asum, xfi; +#if defined(HAK_XMA_ENABLE_STAT) + hak_oow_t isum; #endif dumper(ctx, "[XMA DUMP]\n"); -#if defined(HCL_XMA_ENABLE_STAT) +#if defined(HAK_XMA_ENABLE_STAT) dumper(ctx, "== statistics ==\n"); dumper(ctx, "Total = %zu\n", xma->stat.total); dumper(ctx, "Alloc = %zu\n", xma->stat.alloc); @@ -880,7 +880,7 @@ void hcl_xma_dump (hcl_xma_t* xma, hcl_xma_dumper_t dumper, void* ctx) dumper(ctx, "== blocks ==\n"); dumper(ctx, " size avail address\n"); - for (tmp = (hcl_xma_mblk_t*)xma->start, fsum = 0, asum = 0; (hcl_uint8_t*)tmp < xma->end; tmp = next_mblk(tmp)) + for (tmp = (hak_xma_mblk_t*)xma->start, fsum = 0, asum = 0; (hak_uint8_t*)tmp < xma->end; tmp = next_mblk(tmp)) { dumper(ctx, " %-18zu %-5u %p\n", tmp->size, (unsigned int)tmp->free, tmp); if (tmp->free) fsum += tmp->size; @@ -892,7 +892,7 @@ void hcl_xma_dump (hcl_xma_t* xma, hcl_xma_dumper_t dumper, void* ctx) { if (xma->xfree[xfi]) { - hcl_xma_fblk_t* f; + hak_xma_fblk_t* f; for (f = xma->xfree[xfi]; f; f = f->free_next) { dumper(ctx, " xfi %d fblk %p size %lu\n", xfi, f, (unsigned long)f->size); @@ -900,7 +900,7 @@ void hcl_xma_dump (hcl_xma_t* xma, hcl_xma_dumper_t dumper, void* ctx) } } -#if defined(HCL_XMA_ENABLE_STAT) +#if defined(HAK_XMA_ENABLE_STAT) isum = (xma->stat.nfree + xma->stat.nused) * MBLKHDRSIZE; #endif @@ -909,7 +909,7 @@ void hcl_xma_dump (hcl_xma_t* xma, hcl_xma_dumper_t dumper, void* ctx) dumper(ctx, "Available blocks : %18zu bytes\n", fsum); -#if defined(HCL_XMA_ENABLE_STAT) +#if defined(HAK_XMA_ENABLE_STAT) dumper(ctx, "Internal use : %18zu bytes\n", isum); dumper(ctx, "Total : %18zu bytes\n", (asum + fsum + isum)); dumper(ctx, "Alloc operations : %18zu\n", xma->stat.nallocops); @@ -921,7 +921,7 @@ void hcl_xma_dump (hcl_xma_t* xma, hcl_xma_dumper_t dumper, void* ctx) dumper(ctx, "Free operations : %18zu\n", xma->stat.nfreeops); #endif -#if defined(HCL_XMA_ENABLE_STAT) +#if defined(HAK_XMA_ENABLE_STAT) assert(asum == xma->stat.alloc); assert(fsum == xma->stat.avail); assert(isum == xma->stat.total - (xma->stat.alloc + xma->stat.avail)); diff --git a/main.go b/main.go index b9012af..adf6f8b 100644 --- a/main.go +++ b/main.go @@ -5,7 +5,7 @@ import ( "fmt" "os" //"strings" - "code.miflux.com/hyung-hwan/hcl/go" + "code.miflux.com/hyung-hwan/hak/go" ) /* @@ -13,7 +13,7 @@ import ( `(printf ">>>>>>>>> [%d]\n" (+ 30 455)) (printf ">>>>>>>>> [%d]\n" (+ 11 455)) -#include "a.hcl" +#include "a.hak" (printf ">>>>>>>>> [%d]\n" (+ 20 455)) `)) */ @@ -89,20 +89,20 @@ func handle_arguments(param *Param) error { param.input_file = fs.Arg(0); param.log_file = *log // TODO: parse the option part (e.g. --log /dev/stderr,debug+) - param.heapsize = *heapsize // TODO: set this to hcl - param.modlibdirs = *modlibdirs // TODO: set this to hcl + param.heapsize = *heapsize // TODO: set this to hak + param.modlibdirs = *modlibdirs // TODO: set this to hak return nil; } func main() { - var x *hcl.HCL = nil + var x *hak.HAK = nil var err error = nil var param Param - var rfh hcl.CciFileHandler - var sfh hcl.UdiFileHandler - var pfh hcl.UdoFileHandler + var rfh hak.CciFileHandler + var sfh hak.UdiFileHandler + var pfh hak.UdoFileHandler err = handle_arguments(¶m) if err != nil { @@ -111,18 +111,18 @@ func main() { os.Exit(1) } - x, err = hcl.New() + x, err = hak.New() if err != nil { - fmt.Printf("ERROR: failed to instantiate hcl - %s\n", err.Error()) + fmt.Printf("ERROR: failed to instantiate hak - %s\n", err.Error()) os.Exit(1) } if param.log_file != "" { - x.SetLogMask(^hcl.BitMask(0)) + x.SetLogMask(^hak.BitMask(0)) x.SetLogTarget("/dev/stderr") } - x.SetTrait(x.GetTrait() | hcl.TRAIT_LANG_ENABLE_EOL) + x.SetTrait(x.GetTrait() | hak.TRAIT_LANG_ENABLE_EOL) err = x.Ignite(1000000) if err != nil { @@ -156,7 +156,7 @@ func main() { err = x.FeedFromFile(param.input_file) //err = x.FeedString(`(printf ">>>>>>>>> [%d]\n" (+ 30 455)) // (printf ">>>>>>>>> [%d]\n" (+ 11 455)) - // #include "a.hcl" + // #include "a.hak" // (printf ">>>>>>>>> [%d]\n" (+ 20 455))`) if err != nil { fmt.Printf("ERROR: %s\n", err.Error()) diff --git a/mod/Makefile.am b/mod/Makefile.am index 24d1c39..05c8a3e 100644 --- a/mod/Makefile.am +++ b/mod/Makefile.am @@ -20,9 +20,9 @@ LIBADD_COMMON = noinst_LTLIBRARIES = -noinst_LTLIBRARIES += libhcl-core.la -noinst_LTLIBRARIES += libhcl-dic.la -noinst_LTLIBRARIES += libhcl-sys.la +noinst_LTLIBRARIES += libhak-core.la +noinst_LTLIBRARIES += libhak-dic.la +noinst_LTLIBRARIES += libhak-sys.la else @@ -30,31 +30,31 @@ else # DYNAMIC MODULES ################################################## LDFLAGS_COMMON = -L$(abs_builddir)/../lib -L$(libdir) -version-info 1:0:0 -no-undefined -LIBADD_COMMON = -lhcl +LIBADD_COMMON = -lhak pkgmodexecdir = $(libdir) pkgmodexec_LTLIBRARIES = -pkgmodexec_LTLIBRARIES += libhcl-core.la -pkgmodexec_LTLIBRARIES += libhcl-dic.la -pkgmodexec_LTLIBRARIES += libhcl-sys.la +pkgmodexec_LTLIBRARIES += libhak-core.la +pkgmodexec_LTLIBRARIES += libhak-dic.la +pkgmodexec_LTLIBRARIES += libhak-sys.la endif -libhcl_core_la_SOURCES = core.c _core.h -libhcl_core_la_CPPFLAGS = $(CPPFLAGS_COMMON) -libhcl_core_la_CFLAGS = $(CFLAGS_COMMON) -libhcl_core_la_LDFLAGS = $(LDFLAGS_COMMON) -libhcl_core_la_LIBADD = $(LIBADD_COMMON) +libhak_core_la_SOURCES = core.c _core.h +libhak_core_la_CPPFLAGS = $(CPPFLAGS_COMMON) +libhak_core_la_CFLAGS = $(CFLAGS_COMMON) +libhak_core_la_LDFLAGS = $(LDFLAGS_COMMON) +libhak_core_la_LIBADD = $(LIBADD_COMMON) -libhcl_dic_la_SOURCES = dic.c _dic.h -libhcl_dic_la_CPPFLAGS = $(CPPFLAGS_COMMON) -libhcl_dic_la_CFLAGS = $(CFLAGS_COMMON) -libhcl_dic_la_LDFLAGS = $(LDFLAGS_COMMON) -libhcl_dic_la_LIBADD = $(LIBADD_COMMON) +libhak_dic_la_SOURCES = dic.c _dic.h +libhak_dic_la_CPPFLAGS = $(CPPFLAGS_COMMON) +libhak_dic_la_CFLAGS = $(CFLAGS_COMMON) +libhak_dic_la_LDFLAGS = $(LDFLAGS_COMMON) +libhak_dic_la_LIBADD = $(LIBADD_COMMON) -libhcl_sys_la_SOURCES = sys.c _sys.h -libhcl_sys_la_CPPFLAGS = $(CPPFLAGS_COMMON) -libhcl_sys_la_CFLAGS = $(CFLAGS_COMMON) -libhcl_sys_la_LDFLAGS = $(LDFLAGS_COMMON) -libhcl_sys_la_LIBADD = $(LIBADD_COMMON) +libhak_sys_la_SOURCES = sys.c _sys.h +libhak_sys_la_CPPFLAGS = $(CPPFLAGS_COMMON) +libhak_sys_la_CFLAGS = $(CFLAGS_COMMON) +libhak_sys_la_LDFLAGS = $(LDFLAGS_COMMON) +libhak_sys_la_LIBADD = $(LIBADD_COMMON) diff --git a/mod/Makefile.in b/mod/Makefile.in index d38eb4a..2872ac5 100644 --- a/mod/Makefile.in +++ b/mod/Makefile.in @@ -101,7 +101,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/lib/hcl-cfg.h +CONFIG_HEADER = $(top_builddir)/lib/hak-cfg.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -133,38 +133,38 @@ am__uninstall_files_from_dir = { \ am__installdirs = "$(DESTDIR)$(pkgmodexecdir)" LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkgmodexec_LTLIBRARIES) am__DEPENDENCIES_1 = -libhcl_core_la_DEPENDENCIES = $(am__DEPENDENCIES_1) -am_libhcl_core_la_OBJECTS = libhcl_core_la-core.lo -libhcl_core_la_OBJECTS = $(am_libhcl_core_la_OBJECTS) +libhak_core_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_libhak_core_la_OBJECTS = libhak_core_la-core.lo +libhak_core_la_OBJECTS = $(am_libhak_core_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = -libhcl_core_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ +libhak_core_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(libhcl_core_la_CFLAGS) $(CFLAGS) $(libhcl_core_la_LDFLAGS) \ + $(libhak_core_la_CFLAGS) $(CFLAGS) $(libhak_core_la_LDFLAGS) \ $(LDFLAGS) -o $@ -@ENABLE_STATIC_MODULE_FALSE@am_libhcl_core_la_rpath = -rpath \ +@ENABLE_STATIC_MODULE_FALSE@am_libhak_core_la_rpath = -rpath \ @ENABLE_STATIC_MODULE_FALSE@ $(pkgmodexecdir) -@ENABLE_STATIC_MODULE_TRUE@am_libhcl_core_la_rpath = -libhcl_dic_la_DEPENDENCIES = $(am__DEPENDENCIES_1) -am_libhcl_dic_la_OBJECTS = libhcl_dic_la-dic.lo -libhcl_dic_la_OBJECTS = $(am_libhcl_dic_la_OBJECTS) -libhcl_dic_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libhcl_dic_la_CFLAGS) \ - $(CFLAGS) $(libhcl_dic_la_LDFLAGS) $(LDFLAGS) -o $@ -@ENABLE_STATIC_MODULE_FALSE@am_libhcl_dic_la_rpath = -rpath \ +@ENABLE_STATIC_MODULE_TRUE@am_libhak_core_la_rpath = +libhak_dic_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_libhak_dic_la_OBJECTS = libhak_dic_la-dic.lo +libhak_dic_la_OBJECTS = $(am_libhak_dic_la_OBJECTS) +libhak_dic_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libhak_dic_la_CFLAGS) \ + $(CFLAGS) $(libhak_dic_la_LDFLAGS) $(LDFLAGS) -o $@ +@ENABLE_STATIC_MODULE_FALSE@am_libhak_dic_la_rpath = -rpath \ @ENABLE_STATIC_MODULE_FALSE@ $(pkgmodexecdir) -@ENABLE_STATIC_MODULE_TRUE@am_libhcl_dic_la_rpath = -libhcl_sys_la_DEPENDENCIES = $(am__DEPENDENCIES_1) -am_libhcl_sys_la_OBJECTS = libhcl_sys_la-sys.lo -libhcl_sys_la_OBJECTS = $(am_libhcl_sys_la_OBJECTS) -libhcl_sys_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libhcl_sys_la_CFLAGS) \ - $(CFLAGS) $(libhcl_sys_la_LDFLAGS) $(LDFLAGS) -o $@ -@ENABLE_STATIC_MODULE_FALSE@am_libhcl_sys_la_rpath = -rpath \ +@ENABLE_STATIC_MODULE_TRUE@am_libhak_dic_la_rpath = +libhak_sys_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_libhak_sys_la_OBJECTS = libhak_sys_la-sys.lo +libhak_sys_la_OBJECTS = $(am_libhak_sys_la_OBJECTS) +libhak_sys_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libhak_sys_la_CFLAGS) \ + $(CFLAGS) $(libhak_sys_la_LDFLAGS) $(LDFLAGS) -o $@ +@ENABLE_STATIC_MODULE_FALSE@am_libhak_sys_la_rpath = -rpath \ @ENABLE_STATIC_MODULE_FALSE@ $(pkgmodexecdir) -@ENABLE_STATIC_MODULE_TRUE@am_libhcl_sys_la_rpath = +@ENABLE_STATIC_MODULE_TRUE@am_libhak_sys_la_rpath = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -180,9 +180,9 @@ am__v_at_1 = DEFAULT_INCLUDES = depcomp = $(SHELL) $(top_srcdir)/ac/depcomp am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/libhcl_core_la-core.Plo \ - ./$(DEPDIR)/libhcl_dic_la-dic.Plo \ - ./$(DEPDIR)/libhcl_sys_la-sys.Plo +am__depfiles_remade = ./$(DEPDIR)/libhak_core_la-core.Plo \ + ./$(DEPDIR)/libhak_dic_la-dic.Plo \ + ./$(DEPDIR)/libhak_sys_la-sys.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -202,10 +202,10 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = -SOURCES = $(libhcl_core_la_SOURCES) $(libhcl_dic_la_SOURCES) \ - $(libhcl_sys_la_SOURCES) -DIST_SOURCES = $(libhcl_core_la_SOURCES) $(libhcl_dic_la_SOURCES) \ - $(libhcl_sys_la_SOURCES) +SOURCES = $(libhak_core_la_SOURCES) $(libhak_dic_la_SOURCES) \ + $(libhak_sys_la_SOURCES) +DIST_SOURCES = $(libhak_core_la_SOURCES) $(libhak_dic_la_SOURCES) \ + $(libhak_sys_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -262,9 +262,9 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GREP = @GREP@ -HCL_PROJECT_AUTHOR = @HCL_PROJECT_AUTHOR@ -HCL_PROJECT_URL = @HCL_PROJECT_URL@ -HCL_SYS_LIB_SEARCH_PATH_SPEC = @HCL_SYS_LIB_SEARCH_PATH_SPEC@ +HAK_PROJECT_AUTHOR = @HAK_PROJECT_AUTHOR@ +HAK_PROJECT_URL = @HAK_PROJECT_URL@ +HAK_SYS_LIB_SEARCH_PATH_SPEC = @HAK_SYS_LIB_SEARCH_PATH_SPEC@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -390,28 +390,28 @@ CFLAGS_COMMON = # STATIC MODULES BUILT INTO MAIN LIBRARY ################################################## @ENABLE_STATIC_MODULE_TRUE@LDFLAGS_COMMON = -L$(libdir) -@ENABLE_STATIC_MODULE_FALSE@LIBADD_COMMON = -lhcl +@ENABLE_STATIC_MODULE_FALSE@LIBADD_COMMON = -lhak @ENABLE_STATIC_MODULE_TRUE@LIBADD_COMMON = -@ENABLE_STATIC_MODULE_TRUE@noinst_LTLIBRARIES = libhcl-core.la \ -@ENABLE_STATIC_MODULE_TRUE@ libhcl-dic.la libhcl-sys.la +@ENABLE_STATIC_MODULE_TRUE@noinst_LTLIBRARIES = libhak-core.la \ +@ENABLE_STATIC_MODULE_TRUE@ libhak-dic.la libhak-sys.la @ENABLE_STATIC_MODULE_FALSE@pkgmodexecdir = $(libdir) -@ENABLE_STATIC_MODULE_FALSE@pkgmodexec_LTLIBRARIES = libhcl-core.la \ -@ENABLE_STATIC_MODULE_FALSE@ libhcl-dic.la libhcl-sys.la -libhcl_core_la_SOURCES = core.c _core.h -libhcl_core_la_CPPFLAGS = $(CPPFLAGS_COMMON) -libhcl_core_la_CFLAGS = $(CFLAGS_COMMON) -libhcl_core_la_LDFLAGS = $(LDFLAGS_COMMON) -libhcl_core_la_LIBADD = $(LIBADD_COMMON) -libhcl_dic_la_SOURCES = dic.c _dic.h -libhcl_dic_la_CPPFLAGS = $(CPPFLAGS_COMMON) -libhcl_dic_la_CFLAGS = $(CFLAGS_COMMON) -libhcl_dic_la_LDFLAGS = $(LDFLAGS_COMMON) -libhcl_dic_la_LIBADD = $(LIBADD_COMMON) -libhcl_sys_la_SOURCES = sys.c _sys.h -libhcl_sys_la_CPPFLAGS = $(CPPFLAGS_COMMON) -libhcl_sys_la_CFLAGS = $(CFLAGS_COMMON) -libhcl_sys_la_LDFLAGS = $(LDFLAGS_COMMON) -libhcl_sys_la_LIBADD = $(LIBADD_COMMON) +@ENABLE_STATIC_MODULE_FALSE@pkgmodexec_LTLIBRARIES = libhak-core.la \ +@ENABLE_STATIC_MODULE_FALSE@ libhak-dic.la libhak-sys.la +libhak_core_la_SOURCES = core.c _core.h +libhak_core_la_CPPFLAGS = $(CPPFLAGS_COMMON) +libhak_core_la_CFLAGS = $(CFLAGS_COMMON) +libhak_core_la_LDFLAGS = $(LDFLAGS_COMMON) +libhak_core_la_LIBADD = $(LIBADD_COMMON) +libhak_dic_la_SOURCES = dic.c _dic.h +libhak_dic_la_CPPFLAGS = $(CPPFLAGS_COMMON) +libhak_dic_la_CFLAGS = $(CFLAGS_COMMON) +libhak_dic_la_LDFLAGS = $(LDFLAGS_COMMON) +libhak_dic_la_LIBADD = $(LIBADD_COMMON) +libhak_sys_la_SOURCES = sys.c _sys.h +libhak_sys_la_CPPFLAGS = $(CPPFLAGS_COMMON) +libhak_sys_la_CFLAGS = $(CFLAGS_COMMON) +libhak_sys_la_LDFLAGS = $(LDFLAGS_COMMON) +libhak_sys_la_LIBADD = $(LIBADD_COMMON) all: all-am .SUFFIXES: @@ -488,14 +488,14 @@ clean-pkgmodexecLTLIBRARIES: echo rm -f $${locs}; \ $(am__rm_f) $${locs} -libhcl-core.la: $(libhcl_core_la_OBJECTS) $(libhcl_core_la_DEPENDENCIES) $(EXTRA_libhcl_core_la_DEPENDENCIES) - $(AM_V_CCLD)$(libhcl_core_la_LINK) $(am_libhcl_core_la_rpath) $(libhcl_core_la_OBJECTS) $(libhcl_core_la_LIBADD) $(LIBS) +libhak-core.la: $(libhak_core_la_OBJECTS) $(libhak_core_la_DEPENDENCIES) $(EXTRA_libhak_core_la_DEPENDENCIES) + $(AM_V_CCLD)$(libhak_core_la_LINK) $(am_libhak_core_la_rpath) $(libhak_core_la_OBJECTS) $(libhak_core_la_LIBADD) $(LIBS) -libhcl-dic.la: $(libhcl_dic_la_OBJECTS) $(libhcl_dic_la_DEPENDENCIES) $(EXTRA_libhcl_dic_la_DEPENDENCIES) - $(AM_V_CCLD)$(libhcl_dic_la_LINK) $(am_libhcl_dic_la_rpath) $(libhcl_dic_la_OBJECTS) $(libhcl_dic_la_LIBADD) $(LIBS) +libhak-dic.la: $(libhak_dic_la_OBJECTS) $(libhak_dic_la_DEPENDENCIES) $(EXTRA_libhak_dic_la_DEPENDENCIES) + $(AM_V_CCLD)$(libhak_dic_la_LINK) $(am_libhak_dic_la_rpath) $(libhak_dic_la_OBJECTS) $(libhak_dic_la_LIBADD) $(LIBS) -libhcl-sys.la: $(libhcl_sys_la_OBJECTS) $(libhcl_sys_la_DEPENDENCIES) $(EXTRA_libhcl_sys_la_DEPENDENCIES) - $(AM_V_CCLD)$(libhcl_sys_la_LINK) $(am_libhcl_sys_la_rpath) $(libhcl_sys_la_OBJECTS) $(libhcl_sys_la_LIBADD) $(LIBS) +libhak-sys.la: $(libhak_sys_la_OBJECTS) $(libhak_sys_la_DEPENDENCIES) $(EXTRA_libhak_sys_la_DEPENDENCIES) + $(AM_V_CCLD)$(libhak_sys_la_LINK) $(am_libhak_sys_la_rpath) $(libhak_sys_la_OBJECTS) $(libhak_sys_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -503,9 +503,9 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_core_la-core.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_dic_la-dic.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_sys_la-sys.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_core_la-core.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_dic_la-dic.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhak_sys_la-sys.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @@ -537,26 +537,26 @@ am--depfiles: $(am__depfiles_remade) @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< -libhcl_core_la-core.lo: core.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_core_la_CPPFLAGS) $(CPPFLAGS) $(libhcl_core_la_CFLAGS) $(CFLAGS) -MT libhcl_core_la-core.lo -MD -MP -MF $(DEPDIR)/libhcl_core_la-core.Tpo -c -o libhcl_core_la-core.lo `test -f 'core.c' || echo '$(srcdir)/'`core.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_core_la-core.Tpo $(DEPDIR)/libhcl_core_la-core.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='core.c' object='libhcl_core_la-core.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_core_la-core.lo: core.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_core_la_CPPFLAGS) $(CPPFLAGS) $(libhak_core_la_CFLAGS) $(CFLAGS) -MT libhak_core_la-core.lo -MD -MP -MF $(DEPDIR)/libhak_core_la-core.Tpo -c -o libhak_core_la-core.lo `test -f 'core.c' || echo '$(srcdir)/'`core.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_core_la-core.Tpo $(DEPDIR)/libhak_core_la-core.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='core.c' object='libhak_core_la-core.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_core_la_CPPFLAGS) $(CPPFLAGS) $(libhcl_core_la_CFLAGS) $(CFLAGS) -c -o libhcl_core_la-core.lo `test -f 'core.c' || echo '$(srcdir)/'`core.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_core_la_CPPFLAGS) $(CPPFLAGS) $(libhak_core_la_CFLAGS) $(CFLAGS) -c -o libhak_core_la-core.lo `test -f 'core.c' || echo '$(srcdir)/'`core.c -libhcl_dic_la-dic.lo: dic.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_dic_la_CPPFLAGS) $(CPPFLAGS) $(libhcl_dic_la_CFLAGS) $(CFLAGS) -MT libhcl_dic_la-dic.lo -MD -MP -MF $(DEPDIR)/libhcl_dic_la-dic.Tpo -c -o libhcl_dic_la-dic.lo `test -f 'dic.c' || echo '$(srcdir)/'`dic.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_dic_la-dic.Tpo $(DEPDIR)/libhcl_dic_la-dic.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dic.c' object='libhcl_dic_la-dic.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_dic_la-dic.lo: dic.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_dic_la_CPPFLAGS) $(CPPFLAGS) $(libhak_dic_la_CFLAGS) $(CFLAGS) -MT libhak_dic_la-dic.lo -MD -MP -MF $(DEPDIR)/libhak_dic_la-dic.Tpo -c -o libhak_dic_la-dic.lo `test -f 'dic.c' || echo '$(srcdir)/'`dic.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_dic_la-dic.Tpo $(DEPDIR)/libhak_dic_la-dic.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dic.c' object='libhak_dic_la-dic.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_dic_la_CPPFLAGS) $(CPPFLAGS) $(libhcl_dic_la_CFLAGS) $(CFLAGS) -c -o libhcl_dic_la-dic.lo `test -f 'dic.c' || echo '$(srcdir)/'`dic.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_dic_la_CPPFLAGS) $(CPPFLAGS) $(libhak_dic_la_CFLAGS) $(CFLAGS) -c -o libhak_dic_la-dic.lo `test -f 'dic.c' || echo '$(srcdir)/'`dic.c -libhcl_sys_la-sys.lo: sys.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_sys_la_CPPFLAGS) $(CPPFLAGS) $(libhcl_sys_la_CFLAGS) $(CFLAGS) -MT libhcl_sys_la-sys.lo -MD -MP -MF $(DEPDIR)/libhcl_sys_la-sys.Tpo -c -o libhcl_sys_la-sys.lo `test -f 'sys.c' || echo '$(srcdir)/'`sys.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_sys_la-sys.Tpo $(DEPDIR)/libhcl_sys_la-sys.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sys.c' object='libhcl_sys_la-sys.lo' libtool=yes @AMDEPBACKSLASH@ +libhak_sys_la-sys.lo: sys.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_sys_la_CPPFLAGS) $(CPPFLAGS) $(libhak_sys_la_CFLAGS) $(CFLAGS) -MT libhak_sys_la-sys.lo -MD -MP -MF $(DEPDIR)/libhak_sys_la-sys.Tpo -c -o libhak_sys_la-sys.lo `test -f 'sys.c' || echo '$(srcdir)/'`sys.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhak_sys_la-sys.Tpo $(DEPDIR)/libhak_sys_la-sys.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sys.c' object='libhak_sys_la-sys.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_sys_la_CPPFLAGS) $(CPPFLAGS) $(libhcl_sys_la_CFLAGS) $(CFLAGS) -c -o libhcl_sys_la-sys.lo `test -f 'sys.c' || echo '$(srcdir)/'`sys.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhak_sys_la_CPPFLAGS) $(CPPFLAGS) $(libhak_sys_la_CFLAGS) $(CFLAGS) -c -o libhak_sys_la-sys.lo `test -f 'sys.c' || echo '$(srcdir)/'`sys.c mostlyclean-libtool: -rm -f *.lo @@ -691,9 +691,9 @@ clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ clean-pkgmodexecLTLIBRARIES mostlyclean-am distclean: distclean-am - -rm -f ./$(DEPDIR)/libhcl_core_la-core.Plo - -rm -f ./$(DEPDIR)/libhcl_dic_la-dic.Plo - -rm -f ./$(DEPDIR)/libhcl_sys_la-sys.Plo + -rm -f ./$(DEPDIR)/libhak_core_la-core.Plo + -rm -f ./$(DEPDIR)/libhak_dic_la-dic.Plo + -rm -f ./$(DEPDIR)/libhak_sys_la-sys.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -739,9 +739,9 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/libhcl_core_la-core.Plo - -rm -f ./$(DEPDIR)/libhcl_dic_la-dic.Plo - -rm -f ./$(DEPDIR)/libhcl_sys_la-sys.Plo + -rm -f ./$(DEPDIR)/libhak_core_la-core.Plo + -rm -f ./$(DEPDIR)/libhak_dic_la-dic.Plo + -rm -f ./$(DEPDIR)/libhak_sys_la-sys.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic diff --git a/mod/_core.h b/mod/_core.h index 48ce188..7f36b3b 100644 --- a/mod/_core.h +++ b/mod/_core.h @@ -24,16 +24,16 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef _HCL_MOD_CORE_H_ -#define _HCL_MOD_CORE_H_ +#ifndef _HAK_MOD_CORE_H_ +#define _HAK_MOD_CORE_H_ -#include +#include #if defined(__cplusplus) extern "C" { #endif -HCL_EXPORT int hcl_mod_core (hcl_t* hcl, hcl_mod_t* mod); +HAK_EXPORT int hak_mod_core (hak_t* hak, hak_mod_t* mod); #if defined(__cplusplus) } diff --git a/mod/_dic.h b/mod/_dic.h index dc0ee30..121b63c 100644 --- a/mod/_dic.h +++ b/mod/_dic.h @@ -24,16 +24,16 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef _HCL_MOD_DIC_H_ -#define _HCL_MOD_DIC_H_ +#ifndef _HAK_MOD_DIC_H_ +#define _HAK_MOD_DIC_H_ -#include +#include #if defined(__cplusplus) extern "C" { #endif -HCL_EXPORT int hcl_mod_dic (hcl_t* hcl, hcl_mod_t* mod); +HAK_EXPORT int hak_mod_dic (hak_t* hak, hak_mod_t* mod); #if defined(__cplusplus) } diff --git a/mod/_sys.h b/mod/_sys.h index a1d08cb..8e813f9 100644 --- a/mod/_sys.h +++ b/mod/_sys.h @@ -24,16 +24,16 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef _HCL_MOD_SYS_H_ -#define _HCL_MOD_SYS_H_ +#ifndef _HAK_MOD_SYS_H_ +#define _HAK_MOD_SYS_H_ -#include +#include #if defined(__cplusplus) extern "C" { #endif -HCL_EXPORT int hcl_mod_sys (hcl_t* hcl, hcl_mod_t* mod); +HAK_EXPORT int hak_mod_sys (hak_t* hak, hak_mod_t* mod); #if defined(__cplusplus) } diff --git a/mod/core.c b/mod/core.c index 5966c20..37b587b 100644 --- a/mod/core.c +++ b/mod/core.c @@ -26,122 +26,122 @@ #include "_core.h" -#include "../lib/hcl-prv.h" +#include "../lib/hak-prv.h" -static hcl_pfrc_t pf_core_basic_new (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_core_basic_new (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t obj, size, inst; - hcl_ooi_t nsize; + hak_oop_t obj, size, inst; + hak_ooi_t nsize; - obj = HCL_STACK_GETARG(hcl, nargs, 0); - if (!HCL_IS_CLASS(hcl, obj)) + obj = HAK_STACK_GETARG(hak, nargs, 0); + if (!HAK_IS_CLASS(hak, obj)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "object not class - %O", obj); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "object not class - %O", obj); + return HAK_PF_FAILURE; } - size = HCL_STACK_GETARG(hcl, nargs, 1); - if (!HCL_OOP_IS_SMOOI(size)) + size = HAK_STACK_GETARG(hak, nargs, 1); + if (!HAK_OOP_IS_SMOOI(size)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "size not numeric - %O", size); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "size not numeric - %O", size); + return HAK_PF_FAILURE; } - nsize = HCL_OOP_TO_SMOOI(size); + nsize = HAK_OOP_TO_SMOOI(size); if (nsize < 0) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "size not valid - %zd", nsize); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "size not valid - %zd", nsize); + return HAK_PF_FAILURE; } - inst = hcl_instantiate(hcl, (hcl_oop_class_t)obj, HCL_NULL, nsize); - if (HCL_UNLIKELY(!inst)) return HCL_PF_FAILURE; + inst = hak_instantiate(hak, (hak_oop_class_t)obj, HAK_NULL, nsize); + if (HAK_UNLIKELY(!inst)) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, inst); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, inst); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t __basic_at (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs, int span_fixed) +static hak_pfrc_t __basic_at (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs, int span_fixed) { - hcl_oop_t obj, val; - hcl_oop_t pos; - hcl_oow_t index; - hcl_oop_class_t _class; + hak_oop_t obj, val; + hak_oop_t pos; + hak_oow_t index; + hak_oop_class_t _class; - obj = HCL_STACK_GETARG(hcl, nargs, 0); - pos = HCL_STACK_GETARG(hcl, nargs, 1); + obj = HAK_STACK_GETARG(hak, nargs, 0); + pos = HAK_STACK_GETARG(hak, nargs, 1); - if (!HCL_OOP_IS_POINTER(obj) || !HCL_OBJ_GET_FLAGS_FLEXI(obj)) + if (!HAK_OOP_IS_POINTER(obj) || !HAK_OBJ_GET_FLAGS_FLEXI(obj)) { unindexable: /* the receiver is a special numeric object or a non-indexable object */ - hcl_seterrbfmt (hcl, HCL_EINVAL, "receiver not indexable - %O", obj); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "receiver not indexable - %O", obj); + return HAK_PF_FAILURE; } - if (hcl_inttooow_noseterr(hcl, pos, &index) <= 0) + if (hak_inttooow_noseterr(hak, pos, &index) <= 0) { /* negative integer or not integer */ - hcl_seterrbfmt (hcl, HCL_EINVAL, "position not valid - %O", pos); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "position not valid - %O", pos); + return HAK_PF_FAILURE; } - _class = (hcl_oop_class_t)HCL_CLASSOF(hcl, obj); + _class = (hak_oop_class_t)HAK_CLASSOF(hak, obj); if (span_fixed) { - hcl_oow_t size; - size = HCL_OBJ_GET_SIZE(obj); + hak_oow_t size; + size = HAK_OBJ_GET_SIZE(obj); if (index >= size) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "position(%zd) out of range - negative or greater than or equal to %zu", index, (hcl_ooi_t)size); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "position(%zd) out of range - negative or greater than or equal to %zu", index, (hak_ooi_t)size); + return HAK_PF_FAILURE; } } else { - hcl_oow_t fixed, flexi; + hak_oow_t fixed, flexi; - fixed = HCL_CLASS_SPEC_NAMED_INSTVARS(_class->spec); - flexi = HCL_OBJ_GET_SIZE(obj) - fixed; + fixed = HAK_CLASS_SPEC_NAMED_INSTVARS(_class->spec); + flexi = HAK_OBJ_GET_SIZE(obj) - fixed; if (index >= flexi) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "position(%zd) out of range - negative or greater than or equal to %zu", index, (hcl_ooi_t)flexi); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "position(%zd) out of range - negative or greater than or equal to %zu", index, (hak_ooi_t)flexi); + return HAK_PF_FAILURE; } index += fixed; } - switch (HCL_OBJ_GET_FLAGS_TYPE(obj)) + switch (HAK_OBJ_GET_FLAGS_TYPE(obj)) { - case HCL_OBJ_TYPE_OOP: - val = HCL_OBJ_GET_OOP_VAL(obj, index); + case HAK_OBJ_TYPE_OOP: + val = HAK_OBJ_GET_OOP_VAL(obj, index); break; - case HCL_OBJ_TYPE_CHAR: + case HAK_OBJ_TYPE_CHAR: { - hcl_ooch_t c; - c = HCL_OBJ_GET_CHAR_VAL(obj, index); - val = HCL_CHAR_TO_OOP(c); + hak_ooch_t c; + c = HAK_OBJ_GET_CHAR_VAL(obj, index); + val = HAK_CHAR_TO_OOP(c); break; } - case HCL_OBJ_TYPE_BYTE: + case HAK_OBJ_TYPE_BYTE: { - hcl_ooi_t b; - b = HCL_OBJ_GET_BYTE_VAL(obj, index); - val = HCL_SMOOI_TO_OOP(b); + hak_ooi_t b; + b = HAK_OBJ_GET_BYTE_VAL(obj, index); + val = HAK_SMOOI_TO_OOP(b); break; } - case HCL_OBJ_TYPE_HALFWORD: - val = hcl_oowtoint(hcl, HCL_OBJ_GET_HALFWORD_VAL(obj, index)); - if (HCL_UNLIKELY(!val)) return HCL_PF_FAILURE; + case HAK_OBJ_TYPE_HALFWORD: + val = hak_oowtoint(hak, HAK_OBJ_GET_HALFWORD_VAL(obj, index)); + if (HAK_UNLIKELY(!val)) return HAK_PF_FAILURE; break; - case HCL_OBJ_TYPE_WORD: - val = hcl_oowtoint(hcl, HCL_OBJ_GET_WORD_VAL(obj, index)); - if (HCL_UNLIKELY(!val)) return HCL_PF_FAILURE; + case HAK_OBJ_TYPE_WORD: + val = hak_oowtoint(hak, HAK_OBJ_GET_WORD_VAL(obj, index)); + if (HAK_UNLIKELY(!val)) return HAK_PF_FAILURE; break; default: @@ -149,122 +149,122 @@ static hcl_pfrc_t __basic_at (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs, int s } - HCL_STACK_SETRET (hcl, nargs, val); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, val); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_core_basic_at (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_core_basic_at (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - return __basic_at(hcl, mod, nargs, 0); + return __basic_at(hak, mod, nargs, 0); } -static hcl_pfrc_t pf_core_prim_at (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_core_prim_at (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - return __basic_at(hcl, mod, nargs, 1); + return __basic_at(hak, mod, nargs, 1); } -static hcl_pfrc_t __basic_at_put (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs, int span_fixed) +static hak_pfrc_t __basic_at_put (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs, int span_fixed) { - hcl_oop_t obj, val; - hcl_oop_t pos; - hcl_oow_t index; - hcl_oop_class_t _class; + hak_oop_t obj, val; + hak_oop_t pos; + hak_oow_t index; + hak_oop_class_t _class; - obj = HCL_STACK_GETARG(hcl, nargs, 0); - pos = HCL_STACK_GETARG(hcl, nargs, 1); - val = HCL_STACK_GETARG(hcl, nargs, 2); + obj = HAK_STACK_GETARG(hak, nargs, 0); + pos = HAK_STACK_GETARG(hak, nargs, 1); + val = HAK_STACK_GETARG(hak, nargs, 2); - if (!HCL_OOP_IS_POINTER(obj) || !HCL_OBJ_GET_FLAGS_FLEXI(obj)) + if (!HAK_OOP_IS_POINTER(obj) || !HAK_OBJ_GET_FLAGS_FLEXI(obj)) { unindexable: - hcl_seterrbfmt (hcl, HCL_EINVAL, "receiver not indexable - %O", obj); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "receiver not indexable - %O", obj); + return HAK_PF_FAILURE; } - if (HCL_OBJ_GET_FLAGS_RDONLY(obj)) + if (HAK_OBJ_GET_FLAGS_RDONLY(obj)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "receiver immutable - %O", obj); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "receiver immutable - %O", obj); + return HAK_PF_FAILURE; } - if (hcl_inttooow_noseterr(hcl, pos, &index) <= 0) + if (hak_inttooow_noseterr(hak, pos, &index) <= 0) { /* negative integer or not integer */ - hcl_seterrbfmt (hcl, HCL_EINVAL, "position not valid - %O", pos); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "position not valid - %O", pos); + return HAK_PF_FAILURE; } - _class = (hcl_oop_class_t)HCL_CLASSOF(hcl, obj); + _class = (hak_oop_class_t)HAK_CLASSOF(hak, obj); if (span_fixed) /* include the fixed part in positioning */ { - hcl_oow_t size; + hak_oow_t size; - size = HCL_OBJ_GET_SIZE(obj); + size = HAK_OBJ_GET_SIZE(obj); if (index >= size) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "position(%zd) out of range - negative or greater than or equal to %zu", index, (hcl_ooi_t)size); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "position(%zd) out of range - negative or greater than or equal to %zu", index, (hak_ooi_t)size); + return HAK_PF_FAILURE; } } else { - hcl_oow_t fixed, flexi; + hak_oow_t fixed, flexi; - fixed = HCL_CLASS_SPEC_NAMED_INSTVARS(_class->spec); - flexi = HCL_OBJ_GET_SIZE(obj) - fixed; + fixed = HAK_CLASS_SPEC_NAMED_INSTVARS(_class->spec); + flexi = HAK_OBJ_GET_SIZE(obj) - fixed; if (index >= flexi) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "position(%zd) out of range - negative or greater than or equal to %zu", index, (hcl_ooi_t)HCL_OBJ_GET_SIZE(obj)); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "position(%zd) out of range - negative or greater than or equal to %zu", index, (hak_ooi_t)HAK_OBJ_GET_SIZE(obj)); + return HAK_PF_FAILURE; } index += fixed; } - switch (HCL_OBJ_GET_FLAGS_TYPE(obj)) + switch (HAK_OBJ_GET_FLAGS_TYPE(obj)) { - case HCL_OBJ_TYPE_OOP: - HCL_OBJ_SET_OOP_VAL(obj, index, val); + case HAK_OBJ_TYPE_OOP: + HAK_OBJ_SET_OOP_VAL(obj, index, val); break; - case HCL_OBJ_TYPE_CHAR: + case HAK_OBJ_TYPE_CHAR: { - hcl_ooch_t c; - if (!HCL_OOP_IS_CHAR(val)) + hak_ooch_t c; + if (!HAK_OOP_IS_CHAR(val)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "value not character - %O", val); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "value not character - %O", val); + return HAK_PF_FAILURE; } - c = HCL_OOP_TO_CHAR(val); - HCL_OBJ_SET_CHAR_VAL(obj, index, c); + c = HAK_OOP_TO_CHAR(val); + HAK_OBJ_SET_CHAR_VAL(obj, index, c); break; } - case HCL_OBJ_TYPE_BYTE: + case HAK_OBJ_TYPE_BYTE: { - hcl_ooi_t b; - if (!HCL_OOP_IS_SMOOI(val)) + hak_ooi_t b; + if (!HAK_OOP_IS_SMOOI(val)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "value not byte - %O", val); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "value not byte - %O", val); + return HAK_PF_FAILURE; } - b = HCL_OOP_TO_SMOOI(val); - HCL_OBJ_SET_BYTE_VAL(obj, index, b); + b = HAK_OOP_TO_SMOOI(val); + HAK_OBJ_SET_BYTE_VAL(obj, index, b); break; } - case HCL_OBJ_TYPE_HALFWORD: + case HAK_OBJ_TYPE_HALFWORD: { - hcl_oow_t w; - if (hcl_inttooow(hcl, val, &w) <= -1) return HCL_PF_FAILURE; - HCL_OBJ_SET_HALFWORD_VAL(obj, index, w); + hak_oow_t w; + if (hak_inttooow(hak, val, &w) <= -1) return HAK_PF_FAILURE; + HAK_OBJ_SET_HALFWORD_VAL(obj, index, w); break; } - case HCL_OBJ_TYPE_WORD: + case HAK_OBJ_TYPE_WORD: { - hcl_oow_t w; - if (hcl_inttooow(hcl, val, &w) <= -1) return HCL_PF_FAILURE; - HCL_OBJ_SET_WORD_VAL(obj, index, w); + hak_oow_t w; + if (hak_inttooow(hak, val, &w) <= -1) return HAK_PF_FAILURE; + HAK_OBJ_SET_WORD_VAL(obj, index, w); break; } @@ -273,245 +273,245 @@ static hcl_pfrc_t __basic_at_put (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs, i } - HCL_STACK_SETRET (hcl, nargs, val); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, val); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_core_basic_at_put (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_core_basic_at_put (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - return __basic_at_put(hcl, mod, nargs, 0); + return __basic_at_put(hak, mod, nargs, 0); } -static hcl_pfrc_t pf_core_prim_at_put (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_core_prim_at_put (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - return __basic_at_put(hcl, mod, nargs, 1); + return __basic_at_put(hak, mod, nargs, 1); } -static hcl_pfrc_t pf_core_basic_size (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_core_basic_size (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_oop_t src; - hcl_oop_t size; + hak_oop_oop_t src; + hak_oop_t size; - src = (hcl_oop_oop_t)HCL_STACK_GETARG(hcl, nargs, 0); + src = (hak_oop_oop_t)HAK_STACK_GETARG(hak, nargs, 0); - if (!HCL_OOP_IS_POINTER(src)) + if (!HAK_OOP_IS_POINTER(src)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "source not sizable - %O", src); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "source not sizable - %O", src); + return HAK_PF_FAILURE; } - size = hcl_oowtoint(hcl, HCL_OBJ_GET_SIZE(src)); - if (!size) return HCL_PF_FAILURE; + size = hak_oowtoint(hak, HAK_OBJ_GET_SIZE(src)); + if (!size) return HAK_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, size); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, size); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_core_class_name (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_core_class_name (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t obj; + hak_oop_t obj; - obj = HCL_STACK_GETARG(hcl, nargs, 0); + obj = HAK_STACK_GETARG(hak, nargs, 0); - if (!HCL_IS_CLASS(hcl, obj)) + if (!HAK_IS_CLASS(hak, obj)) { #if 0 - hcl_seterrbfmt (hcl, HCL_EINVAL, "receiver not class - %O", obj); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "receiver not class - %O", obj); + return HAK_PF_FAILURE; #else - obj = (hcl_oop_t)HCL_CLASSOF(hcl, obj); - HCL_ASSERT (hcl, HCL_IS_CLASS(hcl, obj)); + obj = (hak_oop_t)HAK_CLASSOF(hak, obj); + HAK_ASSERT (hak, HAK_IS_CLASS(hak, obj)); #endif } - HCL_STACK_SETRET (hcl, nargs, ((hcl_oop_class_t)obj)->name); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, ((hak_oop_class_t)obj)->name); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_core_class_responds_to (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_core_class_responds_to (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t obj; - hcl_oop_t msg; + hak_oop_t obj; + hak_oop_t msg; int x; - obj = HCL_STACK_GETARG(hcl, nargs, 0); - msg = HCL_STACK_GETARG(hcl, nargs, 1); - if (!HCL_IS_CLASS(hcl, obj)) + obj = HAK_STACK_GETARG(hak, nargs, 0); + msg = HAK_STACK_GETARG(hak, nargs, 1); + if (!HAK_IS_CLASS(hak, obj)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "receiver not class - %O", msg); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "receiver not class - %O", msg); + return HAK_PF_FAILURE; } - if (!HCL_OBJ_IS_CHAR_POINTER(msg)) + if (!HAK_OBJ_IS_CHAR_POINTER(msg)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "invalid message - %O", msg); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "invalid message - %O", msg); + return HAK_PF_FAILURE; } - x = hcl_class_responds_to(hcl, obj, msg); - HCL_STACK_SETRET (hcl, nargs, (x? hcl->_true: hcl->_false)); - return HCL_PF_SUCCESS; + x = hak_class_responds_to(hak, obj, msg); + HAK_STACK_SETRET (hak, nargs, (x? hak->_true: hak->_false)); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_core_inst_responds_to (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_core_inst_responds_to (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t obj; - hcl_oop_t msg; + hak_oop_t obj; + hak_oop_t msg; int x; - obj = HCL_STACK_GETARG(hcl, nargs, 0); - msg = HCL_STACK_GETARG(hcl, nargs, 1); - if (!HCL_OBJ_IS_CHAR_POINTER(msg)) + obj = HAK_STACK_GETARG(hak, nargs, 0); + msg = HAK_STACK_GETARG(hak, nargs, 1); + if (!HAK_OBJ_IS_CHAR_POINTER(msg)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "invalid message - %O", msg); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "invalid message - %O", msg); + return HAK_PF_FAILURE; } - x = hcl_inst_responds_to(hcl, obj, msg); - HCL_STACK_SETRET (hcl, nargs, (x? hcl->_true: hcl->_false)); - return HCL_PF_SUCCESS; + x = hak_inst_responds_to(hak, obj, msg); + HAK_STACK_SETRET (hak, nargs, (x? hak->_true: hak->_false)); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_core_slice (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_core_slice (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t src, slice, a1, a2; - hcl_ooi_t size; - hcl_ooi_t pos; - hcl_ooi_t len; - hcl_ooi_t i; + hak_oop_t src, slice, a1, a2; + hak_ooi_t size; + hak_ooi_t pos; + hak_ooi_t len; + hak_ooi_t i; - src = HCL_STACK_GETARG(hcl, nargs, 0); - a1 = HCL_STACK_GETARG(hcl, nargs, 1); - a2 = HCL_STACK_GETARG(hcl, nargs, 2); + src = HAK_STACK_GETARG(hak, nargs, 0); + a1 = HAK_STACK_GETARG(hak, nargs, 1); + a2 = HAK_STACK_GETARG(hak, nargs, 2); - if (!HCL_OOP_IS_POINTER(src)) + if (!HAK_OOP_IS_POINTER(src)) { unsliceable: - hcl_seterrbfmt (hcl, HCL_EINVAL, "source not sliceable - %O", src); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "source not sliceable - %O", src); + return HAK_PF_FAILURE; } - if (!HCL_OOP_IS_SMOOI(a1)) + if (!HAK_OOP_IS_SMOOI(a1)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "position not numeric - %O", a1); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "position not numeric - %O", a1); + return HAK_PF_FAILURE; } - if (!HCL_OOP_IS_SMOOI(a2)) + if (!HAK_OOP_IS_SMOOI(a2)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "length not numeric - %O", a2); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "length not numeric - %O", a2); + return HAK_PF_FAILURE; } - size = HCL_OBJ_GET_SIZE(src); - pos = HCL_OOP_TO_SMOOI(a1); - len = HCL_OOP_TO_SMOOI(a2); + size = HAK_OBJ_GET_SIZE(src); + pos = HAK_OOP_TO_SMOOI(a1); + len = HAK_OOP_TO_SMOOI(a2); if (pos < 0) pos = 0; else if (pos >= size) pos = size; if (len >= size - pos) len = size - pos; /* TODO: check if the object is an indexable object from the class spec... */ - /* use HCL_OBJ_GET_CLASS() instead of HCL_CLASSOF() as we know it's an object */ - slice = hcl_instantiate(hcl, (hcl_oop_class_t)HCL_OBJ_GET_CLASS(src), HCL_NULL, len); - if (HCL_UNLIKELY(!slice)) return HCL_PF_FAILURE; + /* use HAK_OBJ_GET_CLASS() instead of HAK_CLASSOF() as we know it's an object */ + slice = hak_instantiate(hak, (hak_oop_class_t)HAK_OBJ_GET_CLASS(src), HAK_NULL, len); + if (HAK_UNLIKELY(!slice)) return HAK_PF_FAILURE; /* OR if add by the number of fixed fields??? */ - switch (HCL_OBJ_GET_FLAGS_TYPE(src)) + switch (HAK_OBJ_GET_FLAGS_TYPE(src)) { - case HCL_OBJ_TYPE_OOP: - for (i = 0; i < len; i++) HCL_OBJ_GET_OOP_VAL(slice, i) = HCL_OBJ_GET_OOP_VAL(src, pos + i); + case HAK_OBJ_TYPE_OOP: + for (i = 0; i < len; i++) HAK_OBJ_GET_OOP_VAL(slice, i) = HAK_OBJ_GET_OOP_VAL(src, pos + i); break; - case HCL_OBJ_TYPE_CHAR: - for (i = 0; i < len; i++) HCL_OBJ_GET_CHAR_VAL(slice, i) = HCL_OBJ_GET_CHAR_VAL(src, pos + i); + case HAK_OBJ_TYPE_CHAR: + for (i = 0; i < len; i++) HAK_OBJ_GET_CHAR_VAL(slice, i) = HAK_OBJ_GET_CHAR_VAL(src, pos + i); break; - case HCL_OBJ_TYPE_BYTE: - for (i = 0; i < len; i++) HCL_OBJ_GET_BYTE_VAL(slice, i) = HCL_OBJ_GET_BYTE_VAL(src, pos + i); + case HAK_OBJ_TYPE_BYTE: + for (i = 0; i < len; i++) HAK_OBJ_GET_BYTE_VAL(slice, i) = HAK_OBJ_GET_BYTE_VAL(src, pos + i); break; - case HCL_OBJ_TYPE_HALFWORD: - for (i = 0; i < len; i++) HCL_OBJ_GET_HALFWORD_VAL(slice, i) = HCL_OBJ_GET_HALFWORD_VAL(src, pos + i); + case HAK_OBJ_TYPE_HALFWORD: + for (i = 0; i < len; i++) HAK_OBJ_GET_HALFWORD_VAL(slice, i) = HAK_OBJ_GET_HALFWORD_VAL(src, pos + i); break; - case HCL_OBJ_TYPE_WORD: - for (i = 0; i < len; i++) HCL_OBJ_GET_WORD_VAL(slice, i) = HCL_OBJ_GET_WORD_VAL(src, pos + i); + case HAK_OBJ_TYPE_WORD: + for (i = 0; i < len; i++) HAK_OBJ_GET_WORD_VAL(slice, i) = HAK_OBJ_GET_WORD_VAL(src, pos + i); break; default: goto unsliceable; } - HCL_STACK_SETRET (hcl, nargs, slice); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, slice); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_core_char_to_smooi (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_core_char_to_smooi (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t rcv, out; - hcl_ooi_t code; + hak_oop_t rcv, out; + hak_ooi_t code; - rcv = HCL_STACK_GETARG(hcl, nargs, 0); - if (!HCL_OOP_IS_CHAR(rcv)) + rcv = HAK_STACK_GETARG(hak, nargs, 0); + if (!HAK_OOP_IS_CHAR(rcv)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "receiver not Character - %O", rcv); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "receiver not Character - %O", rcv); + return HAK_PF_FAILURE; } - code = HCL_OOP_TO_CHAR(rcv); - out = HCL_SMOOI_TO_OOP(code); - HCL_STACK_SETRET (hcl, nargs, out); - return HCL_PF_SUCCESS; + code = HAK_OOP_TO_CHAR(rcv); + out = HAK_SMOOI_TO_OOP(code); + HAK_STACK_SETRET (hak, nargs, out); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_core_smooi_to_char (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_core_smooi_to_char (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t rcv, out; - hcl_ooi_t code; + hak_oop_t rcv, out; + hak_ooi_t code; - rcv = HCL_STACK_GETARG(hcl, nargs, 0); - if (!HCL_OOP_IS_SMOOI(rcv)) + rcv = HAK_STACK_GETARG(hak, nargs, 0); + if (!HAK_OOP_IS_SMOOI(rcv)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "receiver not SmallInteger - %O", rcv); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "receiver not SmallInteger - %O", rcv); + return HAK_PF_FAILURE; } - code = HCL_OOP_TO_SMOOI(rcv); - out = HCL_CHAR_TO_OOP(code); - HCL_STACK_SETRET (hcl, nargs, out); - return HCL_PF_SUCCESS; + code = HAK_OOP_TO_SMOOI(rcv); + out = HAK_CHAR_TO_OOP(code); + HAK_STACK_SETRET (hak, nargs, out); + return HAK_PF_SUCCESS; } -static hcl_pfinfo_t pfinfos[] = +static hak_pfinfo_t pfinfos[] = { - { "basicAt", { HCL_PFBASE_FUNC, pf_core_basic_at, 2, 2 } }, - { "basicAtPut", { HCL_PFBASE_FUNC, pf_core_basic_at_put, 3, 3 } }, - { "basicNew", { HCL_PFBASE_FUNC, pf_core_basic_new, 2, 2 } }, - { "basicSize", { HCL_PFBASE_FUNC, pf_core_basic_size, 1, 1 } }, - { "charToSmooi", { HCL_PFBASE_FUNC, pf_core_char_to_smooi, 1, 1 } }, - { "className", { HCL_PFBASE_FUNC, pf_core_class_name, 1, 1 } }, - { "classRespondsTo", { HCL_PFBASE_FUNC, pf_core_class_responds_to, 2, 2 } }, - { "instRespondsTo", { HCL_PFBASE_FUNC, pf_core_inst_responds_to, 2, 2 } }, - { "primAt", { HCL_PFBASE_FUNC, pf_core_prim_at, 2, 2 } }, - { "primAtPut", { HCL_PFBASE_FUNC, pf_core_prim_at_put, 3, 3 } }, - { "slice", { HCL_PFBASE_FUNC, pf_core_slice, 3, 3 } }, - { "smooiToChar", { HCL_PFBASE_FUNC, pf_core_smooi_to_char, 1, 1 } }, + { "basicAt", { HAK_PFBASE_FUNC, pf_core_basic_at, 2, 2 } }, + { "basicAtPut", { HAK_PFBASE_FUNC, pf_core_basic_at_put, 3, 3 } }, + { "basicNew", { HAK_PFBASE_FUNC, pf_core_basic_new, 2, 2 } }, + { "basicSize", { HAK_PFBASE_FUNC, pf_core_basic_size, 1, 1 } }, + { "charToSmooi", { HAK_PFBASE_FUNC, pf_core_char_to_smooi, 1, 1 } }, + { "className", { HAK_PFBASE_FUNC, pf_core_class_name, 1, 1 } }, + { "classRespondsTo", { HAK_PFBASE_FUNC, pf_core_class_responds_to, 2, 2 } }, + { "instRespondsTo", { HAK_PFBASE_FUNC, pf_core_inst_responds_to, 2, 2 } }, + { "primAt", { HAK_PFBASE_FUNC, pf_core_prim_at, 2, 2 } }, + { "primAtPut", { HAK_PFBASE_FUNC, pf_core_prim_at_put, 3, 3 } }, + { "slice", { HAK_PFBASE_FUNC, pf_core_slice, 3, 3 } }, + { "smooiToChar", { HAK_PFBASE_FUNC, pf_core_smooi_to_char, 1, 1 } }, }; /* ------------------------------------------------------------------------ */ -static hcl_pfbase_t* query (hcl_t* hcl, hcl_mod_t* mod, const hcl_ooch_t* name, hcl_oow_t namelen) +static hak_pfbase_t* query (hak_t* hak, hak_mod_t* mod, const hak_ooch_t* name, hak_oow_t namelen) { - return hcl_findpfbase(hcl, pfinfos, HCL_COUNTOF(pfinfos), name, namelen); + return hak_findpfbase(hak, pfinfos, HAK_COUNTOF(pfinfos), name, namelen); } -static void unload (hcl_t* hcl, hcl_mod_t* mod) +static void unload (hak_t* hak, hak_mod_t* mod) { } -int hcl_mod_core (hcl_t* hcl, hcl_mod_t* mod) +int hak_mod_core (hak_t* hak, hak_mod_t* mod) { mod->query = query; mod->unload = unload; - mod->ctx = HCL_NULL; + mod->ctx = HAK_NULL; return 0; } diff --git a/mod/dic.c b/mod/dic.c index e72a97a..97a8d6f 100644 --- a/mod/dic.c +++ b/mod/dic.c @@ -27,111 +27,111 @@ #include "_dic.h" -static hcl_pfrc_t pf_dic_get (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_dic_get (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t dic; - hcl_oop_t key; - hcl_oop_cons_t pair; + hak_oop_t dic; + hak_oop_t key; + hak_oop_cons_t pair; - dic = HCL_STACK_GETARG(hcl, nargs, 0); - key = HCL_STACK_GETARG(hcl, nargs, 1); + dic = HAK_STACK_GETARG(hak, nargs, 0); + key = HAK_STACK_GETARG(hak, nargs, 1); - if (!HCL_IS_DIC(hcl,dic)) + if (!HAK_IS_DIC(hak,dic)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not an dictionary - %O", dic); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not an dictionary - %O", dic); + return HAK_PF_FAILURE; } - pair = hcl_getatdic(hcl, (hcl_oop_dic_t)dic, key); + pair = hak_getatdic(hak, (hak_oop_dic_t)dic, key); if (!pair) { - HCL_STACK_SETRETTOERROR (hcl, nargs, HCL_ENOENT); - return HCL_PF_SUCCESS; + HAK_STACK_SETRETTOERROR (hak, nargs, HAK_ENOENT); + return HAK_PF_SUCCESS; } - HCL_STACK_SETRET (hcl, nargs, HCL_CONS_CDR(pair)); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, HAK_CONS_CDR(pair)); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_dic_put (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_dic_put (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t dic; - hcl_oop_t key, val; - hcl_oop_cons_t pair; + hak_oop_t dic; + hak_oop_t key, val; + hak_oop_cons_t pair; - dic = HCL_STACK_GETARG(hcl, nargs, 0); - key = HCL_STACK_GETARG(hcl, nargs, 1); - val = HCL_STACK_GETARG(hcl, nargs, 2); + dic = HAK_STACK_GETARG(hak, nargs, 0); + key = HAK_STACK_GETARG(hak, nargs, 1); + val = HAK_STACK_GETARG(hak, nargs, 2); - if (!HCL_IS_DIC(hcl,dic)) + if (!HAK_IS_DIC(hak,dic)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not an dictionary - %O", dic); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not an dictionary - %O", dic); + return HAK_PF_FAILURE; } - pair = hcl_putatdic(hcl, (hcl_oop_dic_t)dic, key, val); + pair = hak_putatdic(hak, (hak_oop_dic_t)dic, key, val); if (!pair) { - HCL_STACK_SETRETTOERRNUM (hcl, nargs); - return HCL_PF_SUCCESS; + HAK_STACK_SETRETTOERRNUM (hak, nargs); + return HAK_PF_SUCCESS; } - HCL_STACK_SETRET (hcl, nargs, HCL_CONS_CDR(pair)); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, HAK_CONS_CDR(pair)); + return HAK_PF_SUCCESS; } -static int walker (hcl_t* hcl, hcl_oop_dic_t dic, hcl_oop_cons_t pair, void* ctx) +static int walker (hak_t* hak, hak_oop_dic_t dic, hak_oop_cons_t pair, void* ctx) { - HCL_DEBUG2 (hcl, "walker ===> %O =====> %O\n", HCL_CONS_CAR(pair), HCL_CONS_CDR(pair)); + HAK_DEBUG2 (hak, "walker ===> %O =====> %O\n", HAK_CONS_CAR(pair), HAK_CONS_CDR(pair)); return 0; } -static hcl_pfrc_t pf_dic_walk (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_dic_walk (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { /* TODO: write a proper function * (dic.apply #{ ... } callable-or-lambda) */ - hcl_oop_t arg; + hak_oop_t arg; - arg = HCL_STACK_GETARG(hcl, nargs, 0); - if (!HCL_IS_DIC(hcl,arg)) + arg = HAK_STACK_GETARG(hak, nargs, 0); + if (!HAK_IS_DIC(hak,arg)) { - hcl_seterrbfmt (hcl, HCL_EINVAL, "parameter not a dictionary - %O", arg); - return HCL_PF_FAILURE; + hak_seterrbfmt (hak, HAK_EINVAL, "parameter not a dictionary - %O", arg); + return HAK_PF_FAILURE; } - hcl_walkdic (hcl, (hcl_oop_dic_t)arg, walker, HCL_NULL); - HCL_STACK_SETRET (hcl, nargs, hcl->_true); - return HCL_PF_SUCCESS; + hak_walkdic (hak, (hak_oop_dic_t)arg, walker, HAK_NULL); + HAK_STACK_SETRET (hak, nargs, hak->_true); + return HAK_PF_SUCCESS; } -static hcl_pfinfo_t pfinfos[] = +static hak_pfinfo_t pfinfos[] = { - { "get", { HCL_PFBASE_FUNC, pf_dic_get, 2, 2 } }, -/* { "make", { HCL_PFBASE_FUNC, pf_dic_make, 1, 1 } }, */ - { "put", { HCL_PFBASE_FUNC, pf_dic_put, 3, 3 } }, - { "walk", { HCL_PFBASE_FUNC, pf_dic_walk, 2, 2 } }, + { "get", { HAK_PFBASE_FUNC, pf_dic_get, 2, 2 } }, +/* { "make", { HAK_PFBASE_FUNC, pf_dic_make, 1, 1 } }, */ + { "put", { HAK_PFBASE_FUNC, pf_dic_put, 3, 3 } }, + { "walk", { HAK_PFBASE_FUNC, pf_dic_walk, 2, 2 } }, }; /* ------------------------------------------------------------------------ */ -static hcl_pfbase_t* query (hcl_t* hcl, hcl_mod_t* mod, const hcl_ooch_t* name, hcl_oow_t namelen) +static hak_pfbase_t* query (hak_t* hak, hak_mod_t* mod, const hak_ooch_t* name, hak_oow_t namelen) { - return hcl_findpfbase(hcl, pfinfos, HCL_COUNTOF(pfinfos), name, namelen); + return hak_findpfbase(hak, pfinfos, HAK_COUNTOF(pfinfos), name, namelen); } -static void unload (hcl_t* hcl, hcl_mod_t* mod) +static void unload (hak_t* hak, hak_mod_t* mod) { } -int hcl_mod_dic (hcl_t* hcl, hcl_mod_t* mod) +int hak_mod_dic (hak_t* hak, hak_mod_t* mod) { mod->query = query; mod->unload = unload; - mod->ctx = HCL_NULL; + mod->ctx = HAK_NULL; return 0; } diff --git a/mod/sys.c b/mod/sys.c index 080b957..9865422 100644 --- a/mod/sys.c +++ b/mod/sys.c @@ -40,28 +40,28 @@ # include #endif -static hcl_pfrc_t pf_sys_time (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_sys_time (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_ntime_t now; - hcl_oop_t tv; - hcl->vmprim.vm_gettime(hcl, &now); /* should I use time() instead? */ - tv = hcl_oowtoint(hcl, now.sec); - if (!tv) return HCL_PF_FAILURE; - HCL_STACK_SETRET (hcl, nargs, tv); - return HCL_PF_SUCCESS; + hak_ntime_t now; + hak_oop_t tv; + hak->vmprim.vm_gettime(hak, &now); /* should I use time() instead? */ + tv = hak_oowtoint(hak, now.sec); + if (!tv) return HAK_PF_FAILURE; + HAK_STACK_SETRET (hak, nargs, tv); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_sys_stime (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_sys_stime (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t t; - hcl_ooi_t ti; + hak_oop_t t; + hak_ooi_t ti; - t = HCL_STACK_GETARG(hcl, nargs, 0); - if (hcl_inttoooi(hcl, t, &ti) == 0) + t = HAK_STACK_GETARG(hak, nargs, 0); + if (hak_inttoooi(hak, t, &ti) == 0) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_EINVAL, "unacceptiable time value - %O - %js", t, orgmsg); - return HCL_PF_FAILURE; + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_EINVAL, "unacceptiable time value - %O - %js", t, orgmsg); + return HAK_PF_FAILURE; } /* ---------------------------------------------------------------- */ @@ -70,7 +70,7 @@ static hcl_pfrc_t pf_sys_stime (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) struct timeval tv; tv.tv_sec = ti; tv.tv_usec = 0; - settimeofday (&tv, HCL_NULL); + settimeofday (&tv, HAK_NULL); } #elif defined(__DOS__) { @@ -103,21 +103,21 @@ static hcl_pfrc_t pf_sys_stime (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) #endif /* ---------------------------------------------------------------- */ - HCL_STACK_SETRET (hcl, nargs, hcl->_nil); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, hak->_nil); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_sys_srandom (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_sys_srandom (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { - hcl_oop_t seed; - hcl_oow_t seedw; + hak_oop_t seed; + hak_oow_t seedw; - seed = HCL_STACK_GETARG(hcl, nargs, 0); - if (hcl_inttooow(hcl, seed, &seedw) == 0) + seed = HAK_STACK_GETARG(hak, nargs, 0); + if (hak_inttooow(hak, seed, &seedw) == 0) { - const hcl_ooch_t* orgmsg = hcl_backuperrmsg(hcl); - hcl_seterrbfmt (hcl, HCL_EINVAL, "unacceptiable seed - %O - %js", seed, orgmsg); - return HCL_PF_FAILURE; + const hak_ooch_t* orgmsg = hak_backuperrmsg(hak); + hak_seterrbfmt (hak, HAK_EINVAL, "unacceptiable seed - %O - %js", seed, orgmsg); + return HAK_PF_FAILURE; } #if defined(__DOS__) @@ -126,48 +126,48 @@ static hcl_pfrc_t pf_sys_srandom (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) srandom (seedw); #endif - HCL_STACK_SETRET (hcl, nargs, hcl->_nil); - return HCL_PF_SUCCESS; + HAK_STACK_SETRET (hak, nargs, hak->_nil); + return HAK_PF_SUCCESS; } -static hcl_pfrc_t pf_sys_random (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) +static hak_pfrc_t pf_sys_random (hak_t* hak, hak_mod_t* mod, hak_ooi_t nargs) { long int r; - hcl_ooi_t rv; + hak_ooi_t rv; #if defined(__DOS__) r = rand(); #else r = random(); #endif - rv = (hcl_ooi_t)(r % HCL_SMOOI_MAX); - HCL_STACK_SETRET (hcl, nargs, HCL_SMOOI_TO_OOP(rv)); - return HCL_PF_SUCCESS; + rv = (hak_ooi_t)(r % HAK_SMOOI_MAX); + HAK_STACK_SETRET (hak, nargs, HAK_SMOOI_TO_OOP(rv)); + return HAK_PF_SUCCESS; } -static hcl_pfinfo_t pfinfos[] = +static hak_pfinfo_t pfinfos[] = { - { "random", { HCL_PFBASE_FUNC, pf_sys_random, 0, 0 } }, - { "srandom", { HCL_PFBASE_FUNC, pf_sys_srandom, 1, 1 } }, - { "stime", { HCL_PFBASE_FUNC, pf_sys_stime, 1, 1 } }, - { "time", { HCL_PFBASE_FUNC, pf_sys_time, 0, 0 } } + { "random", { HAK_PFBASE_FUNC, pf_sys_random, 0, 0 } }, + { "srandom", { HAK_PFBASE_FUNC, pf_sys_srandom, 1, 1 } }, + { "stime", { HAK_PFBASE_FUNC, pf_sys_stime, 1, 1 } }, + { "time", { HAK_PFBASE_FUNC, pf_sys_time, 0, 0 } } }; /* ------------------------------------------------------------------------ */ -static hcl_pfbase_t* query (hcl_t* hcl, hcl_mod_t* mod, const hcl_ooch_t* name, hcl_oow_t namelen) +static hak_pfbase_t* query (hak_t* hak, hak_mod_t* mod, const hak_ooch_t* name, hak_oow_t namelen) { - return hcl_findpfbase(hcl, pfinfos, HCL_COUNTOF(pfinfos), name, namelen); + return hak_findpfbase(hak, pfinfos, HAK_COUNTOF(pfinfos), name, namelen); } -static void unload (hcl_t* hcl, hcl_mod_t* mod) +static void unload (hak_t* hak, hak_mod_t* mod) { } -int hcl_mod_sys (hcl_t* hcl, hcl_mod_t* mod) +int hak_mod_sys (hak_t* hak, hak_mod_t* mod) { mod->query = query; mod->unload = unload; - mod->ctx = HCL_NULL; + mod->ctx = HAK_NULL; return 0; } diff --git a/pas/Makefile.am b/pas/Makefile.am index c5b6a21..7e6444f 100644 --- a/pas/Makefile.am +++ b/pas/Makefile.am @@ -1,24 +1,24 @@ AUTOMAKE_OPTIONS = nostdinc -bin_PROGRAMS = hcl -hcl_SOURCES = hcl.pas main.pas -hcl_CPPFLAGS = -hcl_DEPENDENCIES = hcl.bin +bin_PROGRAMS = hakpas +hakpas_SOURCES = hak.pas main.pas +hakpas_CPPFLAGS = +hakpas_DEPENDENCIES = hakpas.bin PASFLAGS = -Mobjfpc -FcUTF8 -Sm -g -if HCL_LIB_QUADMATH_REQUIRED -PASFLAGS += -dHCL_LIB_QUADMATH_REQUIRED +if HAK_LIB_QUADMATH_REQUIRED +PASFLAGS += -dHAK_LIB_QUADMATH_REQUIRED endif -hcl_LINK = cp -pf hcl.bin $(builddir)/hcl$(EXEEXT) || echo +hakpas_LINK = cp -pf hakpas.bin $(builddir)/hakpas$(EXEEXT) || echo -hcl.bin: $(hcl_SOURCES) ../lib/libhcl.la $(hcl_OBJECTS) +hakpas.bin: $(hakpas_SOURCES) ../lib/libhak.la $(hakpas_OBJECTS) FL='-Fl../lib:../lib/.libs'; \ - for i in @HCL_SYS_LIB_SEARCH_PATH_SPEC@; do \ + for i in @HAK_SYS_LIB_SEARCH_PATH_SPEC@; do \ FL="$${FL}:$${i}"; \ done; \ echo fpc -o$(builddir)/$@ $(PASFLAGS) "$${FL}" $(srcdir)/main.pas; \ fpc -o$(builddir)/$@ $(PASFLAGS) $(PASFLAGS) "$${FL}" $(srcdir)/main.pas clean-local: - rm -f *.ppu *.res hcl.bin + rm -f *.ppu *.res hakpas.bin diff --git a/pas/Makefile.in b/pas/Makefile.in index 5d291ee..75652e9 100644 --- a/pas/Makefile.in +++ b/pas/Makefile.in @@ -90,8 +90,8 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -bin_PROGRAMS = hcl$(EXEEXT) -@HCL_LIB_QUADMATH_REQUIRED_TRUE@am__append_1 = -dHCL_LIB_QUADMATH_REQUIRED +bin_PROGRAMS = hakpas$(EXEEXT) +@HAK_LIB_QUADMATH_REQUIRED_TRUE@am__append_1 = -dHAK_LIB_QUADMATH_REQUIRED subdir = pas ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \ @@ -103,14 +103,14 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/lib/hcl-cfg.h +CONFIG_HEADER = $(top_builddir)/lib/hak-cfg.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) -am_hcl_OBJECTS = -hcl_OBJECTS = $(am_hcl_OBJECTS) -hcl_LDADD = $(LDADD) +am_hakpas_OBJECTS = +hakpas_OBJECTS = $(am_hakpas_OBJECTS) +hakpas_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -146,8 +146,8 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = -SOURCES = $(hcl_SOURCES) -DIST_SOURCES = $(hcl_SOURCES) +SOURCES = $(hakpas_SOURCES) +DIST_SOURCES = $(hakpas_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -204,9 +204,9 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GREP = @GREP@ -HCL_PROJECT_AUTHOR = @HCL_PROJECT_AUTHOR@ -HCL_PROJECT_URL = @HCL_PROJECT_URL@ -HCL_SYS_LIB_SEARCH_PATH_SPEC = @HCL_SYS_LIB_SEARCH_PATH_SPEC@ +HAK_PROJECT_AUTHOR = @HAK_PROJECT_AUTHOR@ +HAK_PROJECT_URL = @HAK_PROJECT_URL@ +HAK_SYS_LIB_SEARCH_PATH_SPEC = @HAK_SYS_LIB_SEARCH_PATH_SPEC@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -314,11 +314,11 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = nostdinc -hcl_SOURCES = hcl.pas main.pas -hcl_CPPFLAGS = -hcl_DEPENDENCIES = hcl.bin +hakpas_SOURCES = hak.pas main.pas +hakpas_CPPFLAGS = +hakpas_DEPENDENCIES = hakpas.bin PASFLAGS = -Mobjfpc -FcUTF8 -Sm -g $(am__append_1) -hcl_LINK = cp -pf hcl.bin $(builddir)/hcl$(EXEEXT) || echo +hakpas_LINK = cp -pf hakpas.bin $(builddir)/hakpas$(EXEEXT) || echo all: all-am .SUFFIXES: @@ -396,9 +396,9 @@ clean-binPROGRAMS: $(am__rm_f) $(bin_PROGRAMS) test -z "$(EXEEXT)" || $(am__rm_f) $(bin_PROGRAMS:$(EXEEXT)=) -hcl$(EXEEXT): $(hcl_OBJECTS) $(hcl_DEPENDENCIES) $(EXTRA_hcl_DEPENDENCIES) - @rm -f hcl$(EXEEXT) - $(AM_V_GEN)$(hcl_LINK) $(hcl_OBJECTS) $(hcl_LDADD) $(LIBS) +hakpas$(EXEEXT): $(hakpas_OBJECTS) $(hakpas_DEPENDENCIES) $(EXTRA_hakpas_DEPENDENCIES) + @rm -f hakpas$(EXEEXT) + $(AM_V_GEN)$(hakpas_LINK) $(hakpas_OBJECTS) $(hakpas_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -622,16 +622,16 @@ uninstall-am: uninstall-binPROGRAMS .PRECIOUS: Makefile -hcl.bin: $(hcl_SOURCES) ../lib/libhcl.la $(hcl_OBJECTS) +hakpas.bin: $(hakpas_SOURCES) ../lib/libhak.la $(hakpas_OBJECTS) FL='-Fl../lib:../lib/.libs'; \ - for i in @HCL_SYS_LIB_SEARCH_PATH_SPEC@; do \ + for i in @HAK_SYS_LIB_SEARCH_PATH_SPEC@; do \ FL="$${FL}:$${i}"; \ done; \ echo fpc -o$(builddir)/$@ $(PASFLAGS) "$${FL}" $(srcdir)/main.pas; \ fpc -o$(builddir)/$@ $(PASFLAGS) $(PASFLAGS) "$${FL}" $(srcdir)/main.pas clean-local: - rm -f *.ppu *.res hcl.bin + rm -f *.ppu *.res hakpas.bin # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/pas/hcl.pas b/pas/hak.pas similarity index 65% rename from pas/hcl.pas rename to pas/hak.pas index f1836d7..ae13b1e 100644 --- a/pas/hcl.pas +++ b/pas/hak.pas @@ -1,36 +1,36 @@ -unit HCL; +unit HAK; {$mode objfpc}{$H+} {$macro on} -{$linklib hcl} +{$linklib hak} {$linklib c} {$linklib dl} {$linklib gcc} -{$if defined(HCL_LIB_QUADMATH_REQUIRED)} +{$if defined(HAK_LIB_QUADMATH_REQUIRED)} {$linklib quadmath} {$endif} interface type - BitMask = longword; (* this must match hcl_bitmask_t in hcl.h *) + BitMask = longword; (* this must match hak_bitmask_t in hak.h *) (*const TRAIT_LANG_ENABLE_EOL = (BitMask(1) shl 14); *) type - TraitBit = ( (* this enum must follow hcl_trait_t in hcl.h *) + TraitBit = ( (* this enum must follow hak_trait_t in hak.h *) LANG_ENABLE_EOL = (BitMask(1) shl 14) ); - Option = ( (* this enum must follow hcl_option_t in hcl.h *) + Option = ( (* this enum must follow hak_option_t in hak.h *) TRAIT, LOG_MASK, LOG_MAXCAPA ); - IoCmd = ( (* this enum must follow hcl_io_cmd_t in hcl.h *) + IoCmd = ( (* this enum must follow hak_io_cmd_t in hak.h *) IO_OPEN, IO_CLOSE, IO_READ, @@ -40,17 +40,17 @@ type IO_FLUSH ); -{$ifndef HCL_CCI_BUF_LEN} -{$define HCL_CCI_BUF_LEN := 2048} +{$ifndef HAK_CCI_BUF_LEN} +{$define HAK_CCI_BUF_LEN := 2048} {$endif} //{$packrecords c} CciArgPtr = ^CciArg; - CciArg = record (* this record must follow the public part of hcl_io_cciarg_t in hcl.h *) + CciArg = record (* this record must follow the public part of hak_io_cciarg_t in hak.h *) name: pwidechar; handle: pointer; byte_oriented: integer; - buf: array[0..(HCL_CCI_BUF_LEN - 1)] of widechar; + buf: array[0..(HAK_CCI_BUF_LEN - 1)] of widechar; xlen: System.SizeUint; includer: CciArgPtr; end; @@ -106,43 +106,43 @@ type SynerrPtr = ^Synerr; -(*----- external hcl function -----*) -function hcl_errnum_to_errbcstr(errnum: integer; errbuf: pointer; errbufsz: System.SizeUint): pointer; cdecl; external; -function hcl_errnum_is_synerr(errnum: integer): boolean; cdecl; external; +(*----- external hak function -----*) +function hak_errnum_to_errbcstr(errnum: integer; errbuf: pointer; errbufsz: System.SizeUint): pointer; cdecl; external; +function hak_errnum_is_synerr(errnum: integer): boolean; cdecl; external; -function hcl_openstd(xtnsize: System.SizeUint; errnum: pointer): pointer; cdecl; external; -procedure hcl_close(handle: pointer); cdecl; external; -function hcl_getxtn(handle: pointer): InterpExtPtr; cdecl; external; +function hak_openstd(xtnsize: System.SizeUint; errnum: pointer): pointer; cdecl; external; +procedure hak_close(handle: pointer); cdecl; external; +function hak_getxtn(handle: pointer): InterpExtPtr; cdecl; external; -function hcl_setoption(handle: pointer; option: Option; value: pointer): integer; cdecl; external; -function hcl_getoption(handle: pointer; option: Option; value: pointer): integer; cdecl; external; +function hak_setoption(handle: pointer; option: Option; value: pointer): integer; cdecl; external; +function hak_getoption(handle: pointer; option: Option; value: pointer): integer; cdecl; external; -procedure hcl_seterrnum (handle: pointer; errnum: integer); cdecl; external; -function hcl_geterrnum(handle: pointer): integer; cdecl; external; +procedure hak_seterrnum (handle: pointer; errnum: integer); cdecl; external; +function hak_geterrnum(handle: pointer): integer; cdecl; external; -procedure hcl_seterrbmsg (handle: pointer; errnum: integer; errmsg: pansichar); cdecl; external; -function hcl_geterrbmsg(handle: pointer): pansichar; cdecl; external; +procedure hak_seterrbmsg (handle: pointer; errnum: integer; errmsg: pansichar); cdecl; external; +function hak_geterrbmsg(handle: pointer): pansichar; cdecl; external; -function hcl_ignite(handle: pointer; heapsize: System.SizeUint): integer; cdecl; external; -function hcl_addbuiltinprims(handle: pointer): integer; cdecl; external; -function hcl_beginfeed(handle: pointer; on_cnode: pointer): integer; cdecl; external; -function hcl_feedbchars(handle: pointer; data: pansichar; len: System.SizeUint): integer; cdecl; external; -function hcl_feeduchars(handle: pointer; data: pwidechar; len: System.SizeUint): integer; cdecl; external; (* this is wrong in deed - hcl_uchar_t may not been widechar ..*) -function hcl_endfeed(handle: pointer): integer; cdecl; external; +function hak_ignite(handle: pointer; heapsize: System.SizeUint): integer; cdecl; external; +function hak_addbuiltinprims(handle: pointer): integer; cdecl; external; +function hak_beginfeed(handle: pointer; on_cnode: pointer): integer; cdecl; external; +function hak_feedbchars(handle: pointer; data: pansichar; len: System.SizeUint): integer; cdecl; external; +function hak_feeduchars(handle: pointer; data: pwidechar; len: System.SizeUint): integer; cdecl; external; (* this is wrong in deed - hak_uchar_t may not been widechar ..*) +function hak_endfeed(handle: pointer): integer; cdecl; external; -function hcl_attachccio(handle: pointer; cci: pointer): integer; cdecl; external; -function hcl_attachcciostdwithbcstr(handle: pointer; cci: pansichar): integer; cdecl; external; -procedure hcl_detachccio(handle: pointer); cdecl; external; -function hcl_attachudiostdwithbcstr(handle: pointer; udi: pansichar; udo: pansichar): integer; cdecl; external; -procedure hcl_detachudio(handle: pointer); cdecl; external; -function hcl_compile(handle: pointer; cnode: pointer; flags: integer): integer; cdecl; external; -function hcl_execute(handle: pointer): pointer; cdecl; external; -procedure hcl_abort(handle: pointer) cdecl; external; +function hak_attachccio(handle: pointer; cci: pointer): integer; cdecl; external; +function hak_attachcciostdwithbcstr(handle: pointer; cci: pansichar): integer; cdecl; external; +procedure hak_detachccio(handle: pointer); cdecl; external; +function hak_attachudiostdwithbcstr(handle: pointer; udi: pansichar; udo: pansichar): integer; cdecl; external; +procedure hak_detachudio(handle: pointer); cdecl; external; +function hak_compile(handle: pointer; cnode: pointer; flags: integer): integer; cdecl; external; +function hak_execute(handle: pointer): pointer; cdecl; external; +procedure hak_abort(handle: pointer) cdecl; external; -procedure hcl_getsynerr(handle: pointer; synerr: SynerrPtr) cdecl; external; -function hcl_syserrstrb(handle: pointer; syserr_type: integer; syserr_code: integer; buf: pansichar; len: System.SizeUint): integer; cdecl; external; -function hcl_count_ucstr(ptr: pwidechar): System.SizeUint; cdecl; external; -(*----- end external hcl function -----*) +procedure hak_getsynerr(handle: pointer; synerr: SynerrPtr) cdecl; external; +function hak_syserrstrb(handle: pointer; syserr_type: integer; syserr_code: integer; buf: pansichar; len: System.SizeUint): integer; cdecl; external; +function hak_count_ucstr(ptr: pwidechar): System.SizeUint; cdecl; external; +(*----- end external hak function -----*) implementation @@ -164,24 +164,24 @@ var tb: BitMask; ext: InterpExtPtr; begin - h := hcl_openstd(System.SizeOf(Interp), @errnum); + h := hak_openstd(System.SizeOf(Interp), @errnum); if h = nil then begin - hcl_errnum_to_errbcstr(errnum, @errmsg, length(errmsg)); + hak_errnum_to_errbcstr(errnum, @errmsg, length(errmsg)); raise Exception.Create(errmsg); end; - if hcl_getoption(h, Option.TRAIT, @tb) <= -1 then tb := 0; + if hak_getoption(h, Option.TRAIT, @tb) <= -1 then tb := 0; tb := tb or BitMask(TraitBit.LANG_ENABLE_EOL); - if hcl_setoption(h, Option.TRAIT, @tb) <= -1 then begin - hcl_errnum_to_errbcstr(errnum, @errmsg, length(errmsg)); - hcl_close(h); + if hak_setoption(h, Option.TRAIT, @tb) <= -1 then begin + hak_errnum_to_errbcstr(errnum, @errmsg, length(errmsg)); + hak_close(h); raise Exception.Create(errmsg); end; self.handle := h; - ext := hcl_getxtn(h); + ext := hak_getxtn(h); ext^.self := self; end; @@ -189,7 +189,7 @@ destructor Interp.Destroy; begin if self.handle <> nil then begin - hcl_close(self.handle); + hak_close(self.handle); self.handle := nil; end; inherited; @@ -203,10 +203,10 @@ var filp: pwidechar; tgt: array[0..255] of widechar; begin - num := hcl_geterrnum(self.handle); - if hcl_errnum_is_synerr(num) then begin - hcl_getsynerr(self.handle, @serr); - bmsg := hcl_geterrbmsg(self.handle); + num := hak_geterrnum(self.handle); + if hak_errnum_is_synerr(num) then begin + hak_getsynerr(self.handle, @serr); + bmsg := hak_geterrbmsg(self.handle); filp := pwidechar(widestring('')); if serr.loc.filp <> nil then filp := serr.loc.filp; if serr.tgt.len > 0 then begin @@ -218,14 +218,14 @@ begin end; end else begin - bmsg := hcl_geterrbmsg(self.handle); + bmsg := hak_geterrbmsg(self.handle); exit(string(bmsg)) end; end; procedure Interp.Ignite(heapsize: System.SizeUint); begin - if hcl_ignite(self.handle, heapsize) <= -1 then + if hak_ignite(self.handle, heapsize) <= -1 then begin raise Exception.Create('failed to ignite - ' + self.FetchErrorMsg()) end; @@ -233,7 +233,7 @@ end; procedure Interp.AddBuiltinPrims(); begin - if hcl_addbuiltinprims(self.handle) <= -1 then + if hak_addbuiltinprims(self.handle) <= -1 then begin raise Exception.Create('failed to add builtin primitives - ' + self.FetchErrorMsg()) end; @@ -243,7 +243,7 @@ function handle_to_self(handle: pointer): Interp; var ext: InterpExtPtr; begin - ext := hcl_getxtn(handle); + ext := hak_getxtn(handle); exit(ext^.self); end; @@ -276,7 +276,7 @@ begin System.New(nf); if nf = nil then begin err := SysUtils.GetLastOSError(); - hcl_seterrbmsg(handle, hcl_syserrstrb(handle, 0, err, nil, 0), pansichar(SysUtils.SysErrorMessage(err))); + hak_seterrbmsg(handle, hak_syserrstrb(handle, 0, err, nil, 0), pansichar(SysUtils.SysErrorMessage(err))); exit(-1); end; @@ -285,7 +285,7 @@ begin nf^.handle := SysUtils.FileOpen(name, SysUtils.fmOpenRead); if nf^.handle = System.THandle(-1) then begin err := SysUtils.GetLastOSError(); - hcl_seterrbmsg(handle, hcl_syserrstrb(handle, 0, err, nil, 0), pansichar(SysUtils.SysErrorMessage(err))); + hak_seterrbmsg(handle, hak_syserrstrb(handle, 0, err, nil, 0), pansichar(SysUtils.SysErrorMessage(err))); System.Dispose(nf); exit(-1); end; @@ -309,7 +309,7 @@ begin nf := NamedHandlePtr(arg^.handle); len := SysUtils.FileRead(nf^.handle, arg^.buf, System.SizeOf(arg^.buf)); (* use SizeOf a widechar buffer as it needs to fill it with bytes *) if len <= -1 then begin - hcl_seterrbmsg(handle, hcl_syserrstrb(handle, 0, err, nil, 0), pansichar(SysUtils.SysErrorMessage(err))); + hak_seterrbmsg(handle, hak_syserrstrb(handle, 0, err, nil, 0), pansichar(SysUtils.SysErrorMessage(err))); exit(-1); end; arg^.xlen := len; @@ -325,7 +325,7 @@ begin IO_WRITE_BYTES: *) else begin - hcl_seterrnum(handle, 999); (* TODO: change error code *) + hak_seterrnum(handle, 999); (* TODO: change error code *) exit(-1); end; end; @@ -352,13 +352,13 @@ begin end; self.basefile := filename; - if hcl_attachccio(self.handle, @cci_handler) <= -1 then begin + if hak_attachccio(self.handle, @cci_handler) <= -1 then begin errmsg := 'failed to attach ccio handler - ' + self.FetchErrorMsg(); goto oops; end; attached := true; - if hcl_beginfeed(self.handle, nil) <= -1 then begin + if hak_beginfeed(self.handle, nil) <= -1 then begin errmsg := 'failed to begin feeding - ' + self.FetchErrorMsg(); goto oops; end; @@ -372,28 +372,28 @@ begin end; if len = 0 then break; - if hcl_feedbchars(self.handle, buf, len) <= -1 then begin - errnum := hcl_geterrnum(self.handle); + if hak_feedbchars(self.handle, buf, len) <= -1 then begin + errnum := hak_geterrnum(self.handle); errmsg := self.FetchErrorMsg(); - if not hcl_errnum_is_synerr(errnum) then errmsg := 'failed to feed text - ' + errmsg; + if not hak_errnum_is_synerr(errnum) then errmsg := 'failed to feed text - ' + errmsg; goto oops; end; end; - if hcl_endfeed(self.handle) <= -1 then begin + if hak_endfeed(self.handle) <= -1 then begin errmsg := 'failed to end feeding - ' + self.FetchErrorMsg(); goto oops; end; feed_ongoing := false; - hcl_detachccio(self.handle); + hak_detachccio(self.handle); self.basefile := ''; SysUtils.FileClose(f); exit(); oops: - if feed_ongoing then hcl_endfeed(self.handle); - if attached then hcl_detachccio(self.handle); + if feed_ongoing then hak_endfeed(self.handle); + if attached then hak_detachccio(self.handle); self.basefile := ''; if f <> System.THandle(-1) then SysUtils.FileClose(f); raise Exception.Create(errmsg); @@ -409,33 +409,33 @@ var errnum: integer; errmsg: string; begin - if hcl_attachcciostdwithbcstr(self.handle, nil) <= -1 then + if hak_attachcciostdwithbcstr(self.handle, nil) <= -1 then raise Exception.Create('failed to attach ccio handler - ' + self.FetchErrorMsg()); - if hcl_beginfeed(self.handle, nil) <= -1 then begin + if hak_beginfeed(self.handle, nil) <= -1 then begin errmsg := self.FetchErrorMsg(); - hcl_detachccio(self.handle); + hak_detachccio(self.handle); raise Exception.Create('failed to begin feeding - ' + errmsg); end; - if hcl_feedbchars(self.handle, text, len) <= -1 then begin - errnum := hcl_geterrnum(self.handle); + if hak_feedbchars(self.handle, text, len) <= -1 then begin + errnum := hak_geterrnum(self.handle); errmsg := self.FetchErrorMsg(); - hcl_endfeed(self.handle); - hcl_detachccio(self.handle); - if hcl_errnum_is_synerr(errnum) then + hak_endfeed(self.handle); + hak_detachccio(self.handle); + if hak_errnum_is_synerr(errnum) then raise Exception.Create(errmsg) else raise Exception.Create('failed to feed text - ' + errmsg); end; - if hcl_endfeed(self.handle) <= -1 then begin + if hak_endfeed(self.handle) <= -1 then begin errmsg := self.FetchErrorMsg(); - hcl_detachccio(self.handle); + hak_detachccio(self.handle); raise Exception.Create('failed to end feeding - ' + errmsg) end; - hcl_detachccio(self.handle); + hak_detachccio(self.handle); end; procedure Interp.CompileText(text: pwidechar); @@ -448,33 +448,33 @@ var errnum: integer; errmsg: string; begin - if hcl_attachcciostdwithbcstr(self.handle, nil) <= -1 then + if hak_attachcciostdwithbcstr(self.handle, nil) <= -1 then raise Exception.Create('failed to attach ccio handler - ' + self.FetchErrorMsg()); - if hcl_beginfeed(self.handle, nil) <= -1 then begin + if hak_beginfeed(self.handle, nil) <= -1 then begin errmsg := self.FetchErrorMsg(); - hcl_detachccio(self.handle); + hak_detachccio(self.handle); raise Exception.Create('failed to begin feeding - ' + errmsg); end; - if hcl_feeduchars(self.handle, text, len) <= -1 then begin - errnum := hcl_geterrnum(self.handle); + if hak_feeduchars(self.handle, text, len) <= -1 then begin + errnum := hak_geterrnum(self.handle); errmsg := self.FetchErrorMsg(); - hcl_endfeed(self.handle); - hcl_detachccio(self.handle); - if hcl_errnum_is_synerr(errnum) then + hak_endfeed(self.handle); + hak_detachccio(self.handle); + if hak_errnum_is_synerr(errnum) then raise Exception.Create(errmsg) else raise Exception.Create('failed to feed text - ' + errmsg); end; - if hcl_endfeed(self.handle) <= -1 then begin + if hak_endfeed(self.handle) <= -1 then begin errmsg := self.FetchErrorMsg(); - hcl_detachccio(self.handle); + hak_detachccio(self.handle); raise Exception.Create('failed to end feeding - ' + errmsg) end; - hcl_detachccio(self.handle); + hak_detachccio(self.handle); end; @@ -482,16 +482,16 @@ procedure Interp.Execute(); var errmsg: string; begin - if hcl_attachudiostdwithbcstr(self.handle, nil, nil) <= -1 then begin + if hak_attachudiostdwithbcstr(self.handle, nil, nil) <= -1 then begin raise Exception.Create('failed to attach udio handlers - ' + self.FetchErrorMsg()) end; - if hcl_execute(self.handle) = nil then begin + if hak_execute(self.handle) = nil then begin errmsg := self.FetchErrorMsg(); - hcl_detachudio(self.handle); + hak_detachudio(self.handle); raise Exception.Create('failed to execute - ' + errmsg) end; - hcl_detachudio(self.handle); + hak_detachudio(self.handle); end; end. (* unit *) diff --git a/pas/main.pas b/pas/main.pas index 702525a..74f6372 100644 --- a/pas/main.pas +++ b/pas/main.pas @@ -2,10 +2,10 @@ program main; {$mode objfpc}{$H+} -uses HCL, SysUtils; +uses HAK, SysUtils; var - x: HCL.Interp = nil; + x: HAK.Interp = nil; begin (* System.ParamCount() returns only the number of argumetns except System.ParamStr(0). It is the upper bound to System.ParamStr(). *) if System.ParamCount() <> 1 then begin @@ -14,7 +14,7 @@ begin end; try - x := HCL.Interp.Create(100); + x := HAK.Interp.Create(100); x.Ignite(0); x.AddBuiltinPrims(); diff --git a/src/Collection.hcl b/src/Collection.hak similarity index 100% rename from src/Collection.hcl rename to src/Collection.hak diff --git a/src/Magnitude.hcl b/src/Magnitude.hak similarity index 100% rename from src/Magnitude.hcl rename to src/Magnitude.hak diff --git a/src/System.hcl b/src/System.hak similarity index 100% rename from src/System.hcl rename to src/System.hak diff --git a/src/kernel.hcl b/src/kernel.hak similarity index 97% rename from src/kernel.hcl rename to src/kernel.hak index 625c4ea..6548e63 100644 --- a/src/kernel.hcl +++ b/src/kernel.hak @@ -77,9 +77,9 @@ class Object: Apex { ## --------------------------------------------------------------------------------- -$include "Magnitude.hcl" -$include "Collection.hcl" -##$include "System.hcl" +$include "Magnitude.hak" +$include "Collection.hak" +##$include "System.hak" ## --------------------------------------------------------------------------------- diff --git a/t/Makefile.am b/t/Makefile.am index 808f126..a3fde4f 100644 --- a/t/Makefile.am +++ b/t/Makefile.am @@ -6,20 +6,20 @@ AM_CPPFLAGS = \ -I$(abs_srcdir) \ -I$(abs_srcdir)/../lib \ -I$(includedir) -LDADD = ../lib/libhcl.la +LDADD = ../lib/libhak.la check_SCRIPTS = \ - feed-01.hcl \ - fun-01.hcl \ - insta-01.hcl \ - insta-02.hcl \ - proc-01.hcl \ - ret-01.hcl \ - retvar-01.hcl \ - va-01.hcl \ - var-01.hcl \ - var-02.hcl \ - var-03.hcl + feed-01.hak \ + fun-01.hak \ + insta-01.hak \ + insta-02.hak \ + proc-01.hak \ + ret-01.hak \ + retvar-01.hak \ + va-01.hak \ + var-01.hak \ + var-02.hak \ + var-03.hak check_ERRORS = \ call-5001.err \ @@ -40,12 +40,12 @@ EXTRA_DIST = $(check_SCRIPTS) $(check_ERRORS) TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(check_ERRORS) -TEST_EXTENSIONS = .hcl .err +TEST_EXTENSIONS = .hak .err -HCLBIN = $(top_builddir)/bin/hcl +HAKBIN = $(top_builddir)/bin/hak -HCL_LOG_COMPILER = $(SHELL) $(abs_srcdir)/run.sh $(HCLBIN) --modlibdirs="@abs_top_builddir@/mod:@abs_top_builddir@/mod/.libs" --heapsize=0 -AM_HCL_LOG_FLAGS = +HAK_LOG_COMPILER = $(SHELL) $(abs_srcdir)/run.sh $(HAKBIN) --modlibdirs="@abs_top_builddir@/mod:@abs_top_builddir@/mod/.libs" --heapsize=0 +AM_HAK_LOG_FLAGS = -ERR_LOG_COMPILER = $(SHELL) $(abs_srcdir)/err.sh $(HCLBIN) --modlibdirs="@abs_top_builddir@/mod:@abs_top_builddir@/mod/.libs" --heapsize=0 +ERR_LOG_COMPILER = $(SHELL) $(abs_srcdir)/err.sh $(HAKBIN) --modlibdirs="@abs_top_builddir@/mod:@abs_top_builddir@/mod/.libs" --heapsize=0 AM_ERR_LOG_FLAGS = diff --git a/t/Makefile.in b/t/Makefile.in index 507ed63..5c68b30 100644 --- a/t/Makefile.in +++ b/t/Makefile.in @@ -101,13 +101,13 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/lib/hcl-cfg.h +CONFIG_HEADER = $(top_builddir)/lib/hak-cfg.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am_t_001_OBJECTS = t-001.$(OBJEXT) t_001_OBJECTS = $(am_t_001_OBJECTS) t_001_LDADD = $(LDADD) -t_001_DEPENDENCIES = ../lib/libhcl.la +t_001_DEPENDENCIES = ../lib/libhak.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent @@ -376,10 +376,10 @@ am__set_b = \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) -am__test_logs3 = $(am__test_logs2:.hcl.log=.log) -HCL_LOG_DRIVER = $(SHELL) $(top_srcdir)/ac/test-driver -HCL_LOG_COMPILE = $(HCL_LOG_COMPILER) $(AM_HCL_LOG_FLAGS) \ - $(HCL_LOG_FLAGS) +am__test_logs3 = $(am__test_logs2:.hak.log=.log) +HAK_LOG_DRIVER = $(SHELL) $(top_srcdir)/ac/test-driver +HAK_LOG_COMPILE = $(HAK_LOG_COMPILER) $(AM_HAK_LOG_FLAGS) \ + $(HAK_LOG_FLAGS) TEST_LOGS = $(am__test_logs3:.err.log=.log) ERR_LOG_DRIVER = $(SHELL) $(top_srcdir)/ac/test-driver ERR_LOG_COMPILE = $(ERR_LOG_COMPILER) $(AM_ERR_LOG_FLAGS) \ @@ -419,9 +419,9 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GREP = @GREP@ -HCL_PROJECT_AUTHOR = @HCL_PROJECT_AUTHOR@ -HCL_PROJECT_URL = @HCL_PROJECT_URL@ -HCL_SYS_LIB_SEARCH_PATH_SPEC = @HCL_SYS_LIB_SEARCH_PATH_SPEC@ +HAK_PROJECT_AUTHOR = @HAK_PROJECT_AUTHOR@ +HAK_PROJECT_URL = @HAK_PROJECT_URL@ +HAK_SYS_LIB_SEARCH_PATH_SPEC = @HAK_SYS_LIB_SEARCH_PATH_SPEC@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -536,19 +536,19 @@ AM_CPPFLAGS = \ -I$(abs_srcdir)/../lib \ -I$(includedir) -LDADD = ../lib/libhcl.la +LDADD = ../lib/libhak.la check_SCRIPTS = \ - feed-01.hcl \ - fun-01.hcl \ - insta-01.hcl \ - insta-02.hcl \ - proc-01.hcl \ - ret-01.hcl \ - retvar-01.hcl \ - va-01.hcl \ - var-01.hcl \ - var-02.hcl \ - var-03.hcl + feed-01.hak \ + fun-01.hak \ + insta-01.hak \ + insta-02.hak \ + proc-01.hak \ + ret-01.hak \ + retvar-01.hak \ + va-01.hak \ + var-01.hak \ + var-02.hak \ + var-03.hak check_ERRORS = \ call-5001.err \ @@ -562,16 +562,16 @@ check_ERRORS = \ t_001_SOURCES = t-001.c tap.h EXTRA_DIST = $(check_SCRIPTS) $(check_ERRORS) TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(check_ERRORS) -TEST_EXTENSIONS = .hcl .err -HCLBIN = $(top_builddir)/bin/hcl -HCL_LOG_COMPILER = $(SHELL) $(abs_srcdir)/run.sh $(HCLBIN) --modlibdirs="@abs_top_builddir@/mod:@abs_top_builddir@/mod/.libs" --heapsize=0 -AM_HCL_LOG_FLAGS = -ERR_LOG_COMPILER = $(SHELL) $(abs_srcdir)/err.sh $(HCLBIN) --modlibdirs="@abs_top_builddir@/mod:@abs_top_builddir@/mod/.libs" --heapsize=0 +TEST_EXTENSIONS = .hak .err +HAKBIN = $(top_builddir)/bin/hak +HAK_LOG_COMPILER = $(SHELL) $(abs_srcdir)/run.sh $(HAKBIN) --modlibdirs="@abs_top_builddir@/mod:@abs_top_builddir@/mod/.libs" --heapsize=0 +AM_HAK_LOG_FLAGS = +ERR_LOG_COMPILER = $(SHELL) $(abs_srcdir)/err.sh $(HAKBIN) --modlibdirs="@abs_top_builddir@/mod:@abs_top_builddir@/mod/.libs" --heapsize=0 AM_ERR_LOG_FLAGS = all: all-am .SUFFIXES: -.SUFFIXES: .c .err .err$(EXEEXT) .hcl .hcl$(EXEEXT) .lo .log .o .obj .trs +.SUFFIXES: .c .err .err$(EXEEXT) .hak .hak$(EXEEXT) .lo .log .o .obj .trs $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ @@ -879,19 +879,19 @@ t-001.log: t-001$(EXEEXT) --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) -.hcl.log: +.hak.log: @p='$<'; \ $(am__set_b); \ - $(am__check_pre) $(HCL_LOG_DRIVER) --test-name "$$f" \ + $(am__check_pre) $(HAK_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_HCL_LOG_DRIVER_FLAGS) $(HCL_LOG_DRIVER_FLAGS) -- $(HCL_LOG_COMPILE) \ + $(am__common_driver_flags) $(AM_HAK_LOG_DRIVER_FLAGS) $(HAK_LOG_DRIVER_FLAGS) -- $(HAK_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) -@am__EXEEXT_TRUE@.hcl$(EXEEXT).log: +@am__EXEEXT_TRUE@.hak$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ -@am__EXEEXT_TRUE@ $(am__check_pre) $(HCL_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(HAK_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ -@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_HCL_LOG_DRIVER_FLAGS) $(HCL_LOG_DRIVER_FLAGS) -- $(HCL_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_HAK_LOG_DRIVER_FLAGS) $(HAK_LOG_DRIVER_FLAGS) -- $(HAK_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) .err.log: @p='$<'; \ diff --git a/t/feed-01.hcl b/t/feed-01.hak similarity index 100% rename from t/feed-01.hcl rename to t/feed-01.hak diff --git a/t/fun-01.hcl b/t/fun-01.hak similarity index 100% rename from t/fun-01.hcl rename to t/fun-01.hak diff --git a/t/insta-01.hcl b/t/insta-01.hak similarity index 100% rename from t/insta-01.hcl rename to t/insta-01.hak diff --git a/t/insta-02.hcl b/t/insta-02.hak similarity index 100% rename from t/insta-02.hcl rename to t/insta-02.hak diff --git a/t/proc-01.hcl b/t/proc-01.hak similarity index 100% rename from t/proc-01.hcl rename to t/proc-01.hak diff --git a/t/ret-01.hcl b/t/ret-01.hak similarity index 100% rename from t/ret-01.hcl rename to t/ret-01.hak diff --git a/t/retvar-01.hcl b/t/retvar-01.hak similarity index 100% rename from t/retvar-01.hcl rename to t/retvar-01.hak diff --git a/t/t-001.c b/t/t-001.c index 9850c52..abcfee2 100644 --- a/t/t-001.c +++ b/t/t-001.c @@ -1,35 +1,35 @@ -#include +#include #include "tap.h" int main(int argc, char* argv[]) { - hcl_t* hcl; - hcl_oop_t v; - hcl_liw_t liw; - hcl_ooi_t i, j; + hak_t* hak; + hak_oop_t v; + hak_liw_t liw; + hak_ooi_t i, j; int n; no_plan(); - hcl = hcl_openstd(0, HCL_NULL); - OK (hcl != HCL_NULL, "instantiation failure"); + hak = hak_openstd(0, HAK_NULL); + OK (hak != HAK_NULL, "instantiation failure"); - n = hcl_ignite(hcl, 0); + n = hak_ignite(hak, 0); OK (n == 0, "ignition failure"); - n = hcl_addbuiltinprims(hcl); + n = hak_addbuiltinprims(hak); OK (n == 0, "registration failure of builtin primitives"); - for (j = HCL_TYPE_MIN(hcl_ooi_t); j <= HCL_TYPE_MIN(hcl_ooi_t) + 5 ; j++) + for (j = HAK_TYPE_MIN(hak_ooi_t); j <= HAK_TYPE_MIN(hak_ooi_t) + 5 ; j++) { - v = hcl_ooitoint(hcl, j); - OK (v != HCL_NULL, "bigint instantiation"); - n = hcl_inttoooi(hcl, v, &i); + v = hak_ooitoint(hak, j); + OK (v != HAK_NULL, "bigint instantiation"); + n = hak_inttoooi(hak, v, &i); OK (n < 0, "bigint to ooi conversion not negative"); OK (i == j, "big to ooi conversion result"); } - hcl_close(hcl); + hak_close(hak); return exit_status(); } diff --git a/t/test-bi.hcl b/t/test-bi.hak similarity index 95% rename from t/test-bi.hcl rename to t/test-bi.hak index 795fb21..59f28f0 100644 --- a/t/test-bi.hcl +++ b/t/test-bi.hak @@ -1,5 +1,5 @@ ## test big integer operations -## hcl --log /dev/null,warn+ test-bi.hcl +## hak --log /dev/null,warn+ test-bi.hak (sys.srandom (sys.time)) (set count 0) diff --git a/t/va-01.hcl b/t/va-01.hak similarity index 100% rename from t/va-01.hcl rename to t/va-01.hak diff --git a/t/var-01.hcl b/t/var-01.hak similarity index 100% rename from t/var-01.hcl rename to t/var-01.hak diff --git a/t/var-02.hcl b/t/var-02.hak similarity index 100% rename from t/var-02.hcl rename to t/var-02.hak diff --git a/t/var-03.hcl b/t/var-03.hak similarity index 100% rename from t/var-03.hcl rename to t/var-03.hak