migrated cmgr functions from utl-str.c to utl-cmgr.c
This commit is contained in:
		| @ -124,6 +124,7 @@ libhawk_la_SOURCES = \ | ||||
| 	utf16.c \ | ||||
| 	utf8.c \ | ||||
| 	utl-ass.c \ | ||||
| 	utl-cmgr.c \ | ||||
| 	utl-rnd.c\ | ||||
| 	utl-sort.c \ | ||||
| 	utl-str.c \ | ||||
|  | ||||
| @ -241,13 +241,13 @@ am__libhawk_la_SOURCES_DIST = hawk.h hawk-arr.h hawk-chr.h hawk-cmn.h \ | ||||
| 	tre-compile.c tre-compile.h tre-match-bt.c tre-match-pa.c \ | ||||
| 	tre-match-ut.h tre-mem.c tre-mem.h tre-parse.c tre-parse.h \ | ||||
| 	tre-stack.h tre-stack.c tre.c tree-prv.h tree.c uch-prop.h \ | ||||
| 	uch-case.h utf16.c utf8.c utl-ass.c utl-rnd.c utl-sort.c \ | ||||
| 	utl-str.c utl-sys.c utl.c val-prv.h val.c xma.c hawk-cli.h \ | ||||
| 	hawk-fio.h hawk-mtx.h hawk-pio.h hawk-sio.h hawk-tio.h \ | ||||
| 	cli-imp.h cli.c fio.c mtx.c pio.c sio.c syscall.h tio.c std.c \ | ||||
| 	std-sed.c Hawk.cpp Std.cpp Sed.cpp Std-Sed.cpp mod-hawk.c \ | ||||
| 	mod-hawk.h mod-math.c mod-math.h mod-str.c mod-str.h mod-sys.c \ | ||||
| 	mod-sys.h | ||||
| 	uch-case.h utf16.c utf8.c utl-ass.c utl-cmgr.c utl-rnd.c \ | ||||
| 	utl-sort.c utl-str.c utl-sys.c utl.c val-prv.h val.c xma.c \ | ||||
| 	hawk-cli.h hawk-fio.h hawk-mtx.h hawk-pio.h hawk-sio.h \ | ||||
| 	hawk-tio.h cli-imp.h cli.c fio.c mtx.c pio.c sio.c syscall.h \ | ||||
| 	tio.c std.c std-sed.c Hawk.cpp Std.cpp Sed.cpp Std-Sed.cpp \ | ||||
| 	mod-hawk.c mod-hawk.h mod-math.c mod-math.h mod-str.c \ | ||||
| 	mod-str.h mod-sys.c mod-sys.h | ||||
| am__objects_1 = | ||||
| am__objects_2 = $(am__objects_1) | ||||
| @ENABLE_CXX_TRUE@am__objects_3 = libhawk_la-Hawk.lo libhawk_la-Std.lo \ | ||||
| @ -269,7 +269,8 @@ am_libhawk_la_OBJECTS = $(am__objects_2) libhawk_la-arr.lo \ | ||||
| 	libhawk_la-tre-match-pa.lo libhawk_la-tre-mem.lo \ | ||||
| 	libhawk_la-tre-parse.lo libhawk_la-tre-stack.lo \ | ||||
| 	libhawk_la-tre.lo libhawk_la-tree.lo libhawk_la-utf16.lo \ | ||||
| 	libhawk_la-utf8.lo libhawk_la-utl-ass.lo libhawk_la-utl-rnd.lo \ | ||||
| 	libhawk_la-utf8.lo libhawk_la-utl-ass.lo \ | ||||
| 	libhawk_la-utl-cmgr.lo libhawk_la-utl-rnd.lo \ | ||||
| 	libhawk_la-utl-sort.lo libhawk_la-utl-str.lo \ | ||||
| 	libhawk_la-utl-sys.lo libhawk_la-utl.lo libhawk_la-val.lo \ | ||||
| 	libhawk_la-xma.lo libhawk_la-cli.lo libhawk_la-fio.lo \ | ||||
| @ -329,6 +330,7 @@ am__depfiles_remade = ./$(DEPDIR)/libhawk_hawk_la-mod-hawk.Plo \ | ||||
| 	./$(DEPDIR)/libhawk_la-utf16.Plo \ | ||||
| 	./$(DEPDIR)/libhawk_la-utf8.Plo \ | ||||
| 	./$(DEPDIR)/libhawk_la-utl-ass.Plo \ | ||||
| 	./$(DEPDIR)/libhawk_la-utl-cmgr.Plo \ | ||||
| 	./$(DEPDIR)/libhawk_la-utl-rnd.Plo \ | ||||
| 	./$(DEPDIR)/libhawk_la-utl-sort.Plo \ | ||||
| 	./$(DEPDIR)/libhawk_la-utl-str.Plo \ | ||||
| @ -614,11 +616,11 @@ libhawk_la_SOURCES = $(pkginclude_HEADERS) arr.c chr.c dir.c ecs-imp.h \ | ||||
| 	tre-compile.c tre-compile.h tre-match-bt.c tre-match-pa.c \ | ||||
| 	tre-match-ut.h tre-mem.c tre-mem.h tre-parse.c tre-parse.h \ | ||||
| 	tre-stack.h tre-stack.c tre.c tree-prv.h tree.c uch-prop.h \ | ||||
| 	uch-case.h utf16.c utf8.c utl-ass.c utl-rnd.c utl-sort.c \ | ||||
| 	utl-str.c utl-sys.c utl.c val-prv.h val.c xma.c hawk-cli.h \ | ||||
| 	hawk-fio.h hawk-mtx.h hawk-pio.h hawk-sio.h hawk-tio.h \ | ||||
| 	cli-imp.h cli.c fio.c mtx.c pio.c sio.c syscall.h tio.c std.c \ | ||||
| 	std-sed.c $(am__append_8) $(am__append_9) | ||||
| 	uch-case.h utf16.c utf8.c utl-ass.c utl-cmgr.c utl-rnd.c \ | ||||
| 	utl-sort.c utl-str.c utl-sys.c utl.c val-prv.h val.c xma.c \ | ||||
| 	hawk-cli.h hawk-fio.h hawk-mtx.h hawk-pio.h hawk-sio.h \ | ||||
| 	hawk-tio.h cli-imp.h cli.c fio.c mtx.c pio.c sio.c syscall.h \ | ||||
| 	tio.c std.c std-sed.c $(am__append_8) $(am__append_9) | ||||
| libhawk_la_CPPFLAGS = $(CPPFLAGS_ALL_COMMON) $(CPPFLAGS_PFMOD) \ | ||||
| 	$(am__append_3) | ||||
| libhawk_la_CFLAGS = $(CFLAGS_ALL_COMMON) | ||||
| @ -828,6 +830,7 @@ distclean-compile: | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-utf16.Plo@am__quote@ # am--include-marker | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-utf8.Plo@am__quote@ # am--include-marker | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-utl-ass.Plo@am__quote@ # am--include-marker | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-utl-cmgr.Plo@am__quote@ # am--include-marker | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-utl-rnd.Plo@am__quote@ # am--include-marker | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-utl-sort.Plo@am__quote@ # am--include-marker | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-utl-str.Plo@am__quote@ # am--include-marker | ||||
| @ -1135,6 +1138,13 @@ libhawk_la-utl-ass.lo: utl-ass.c | ||||
| @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) $(libhawk_la_CPPFLAGS) $(CPPFLAGS) $(libhawk_la_CFLAGS) $(CFLAGS) -c -o libhawk_la-utl-ass.lo `test -f 'utl-ass.c' || echo '$(srcdir)/'`utl-ass.c | ||||
|  | ||||
| libhawk_la-utl-cmgr.lo: utl-cmgr.c | ||||
| @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhawk_la_CPPFLAGS) $(CPPFLAGS) $(libhawk_la_CFLAGS) $(CFLAGS) -MT libhawk_la-utl-cmgr.lo -MD -MP -MF $(DEPDIR)/libhawk_la-utl-cmgr.Tpo -c -o libhawk_la-utl-cmgr.lo `test -f 'utl-cmgr.c' || echo '$(srcdir)/'`utl-cmgr.c | ||||
| @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libhawk_la-utl-cmgr.Tpo $(DEPDIR)/libhawk_la-utl-cmgr.Plo | ||||
| @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='utl-cmgr.c' object='libhawk_la-utl-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) $(libhawk_la_CPPFLAGS) $(CPPFLAGS) $(libhawk_la_CFLAGS) $(CFLAGS) -c -o libhawk_la-utl-cmgr.lo `test -f 'utl-cmgr.c' || echo '$(srcdir)/'`utl-cmgr.c | ||||
|  | ||||
| libhawk_la-utl-rnd.lo: utl-rnd.c | ||||
| @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhawk_la_CPPFLAGS) $(CPPFLAGS) $(libhawk_la_CFLAGS) $(CFLAGS) -MT libhawk_la-utl-rnd.lo -MD -MP -MF $(DEPDIR)/libhawk_la-utl-rnd.Tpo -c -o libhawk_la-utl-rnd.lo `test -f 'utl-rnd.c' || echo '$(srcdir)/'`utl-rnd.c | ||||
| @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libhawk_la-utl-rnd.Tpo $(DEPDIR)/libhawk_la-utl-rnd.Plo | ||||
| @ -1526,6 +1536,7 @@ distclean: distclean-am | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-utf16.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-utf8.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-utl-ass.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-utl-cmgr.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-utl-rnd.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-utl-sort.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-utl-str.Plo | ||||
| @ -1633,6 +1644,7 @@ maintainer-clean: maintainer-clean-am | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-utf16.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-utf8.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-utl-ass.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-utl-cmgr.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-utl-rnd.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-utl-sort.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-utl-str.Plo | ||||
|  | ||||
							
								
								
									
										168
									
								
								hawk/lib/utl-cmgr.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										168
									
								
								hawk/lib/utl-cmgr.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,168 @@ | ||||
| /* | ||||
|     Copyright (c) 2006-2020 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 <hawk-utl.h> | ||||
| #include <hawk-chr.h> | ||||
|  | ||||
| /* ------------------------------------------------------------------------ */ | ||||
|  | ||||
| static hawk_cmgr_t builtin_cmgr[] = | ||||
| { | ||||
| 	/* keep the order aligned with hawk_cmgr_id_t values in <hawk-utl.h> */ | ||||
| 	{ hawk_utf8_to_uc,  hawk_uc_to_utf8 }, | ||||
| 	{ hawk_utf16_to_uc, hawk_uc_to_utf16 }, | ||||
| 	{ hawk_mb8_to_uc,   hawk_uc_to_mb8 } | ||||
| }; | ||||
|  | ||||
| hawk_cmgr_t* hawk_get_cmgr_by_id (hawk_cmgr_id_t id) | ||||
| { | ||||
| 	return &builtin_cmgr[id]; | ||||
| } | ||||
|  | ||||
| static struct | ||||
| { | ||||
| 	const hawk_bch_t* name; | ||||
| 	hawk_cmgr_id_t     id; | ||||
| } builtin_cmgr_tab[] = | ||||
| { | ||||
| 	{ "utf8",    HAWK_CMGR_UTF8 }, | ||||
| 	{ "utf16",   HAWK_CMGR_UTF16 }, | ||||
| 	{ "mb8",     HAWK_CMGR_MB8 } | ||||
| }; | ||||
|  | ||||
| hawk_cmgr_t* hawk_get_cmgr_by_bcstr (const hawk_bch_t* name) | ||||
| { | ||||
| 	if (name) | ||||
| 	{ | ||||
| 		hawk_oow_t i; | ||||
|  | ||||
| 		for (i = 0; i < HAWK_COUNTOF(builtin_cmgr_tab); i++) | ||||
| 		{ | ||||
| 			if (hawk_comp_bcstr(name, builtin_cmgr_tab[i].name, 0) == 0) | ||||
| 			{ | ||||
| 				return &builtin_cmgr[builtin_cmgr_tab[i].id]; | ||||
| 			} | ||||
| 		 } | ||||
| 	} | ||||
|  | ||||
| 	return HAWK_NULL; | ||||
| } | ||||
|  | ||||
| hawk_cmgr_t* hawk_get_cmgr_by_ucstr (const hawk_uch_t* name) | ||||
| { | ||||
| 	if (name) | ||||
| 	{ | ||||
| 		hawk_oow_t i; | ||||
|  | ||||
| 		for (i = 0; i < HAWK_COUNTOF(builtin_cmgr_tab); i++) | ||||
| 		{ | ||||
| 			if (hawk_comp_ucstr_bcstr(name, builtin_cmgr_tab[i].name, 0) == 0) | ||||
| 			{ | ||||
| 				return &builtin_cmgr[builtin_cmgr_tab[i].id]; | ||||
| 			} | ||||
| 		 } | ||||
| 	} | ||||
|  | ||||
| 	return HAWK_NULL; | ||||
| } | ||||
|  | ||||
| /* ------------------------------------------------------------------------ */ | ||||
|  | ||||
| int hawk_conv_utf8_to_uchars (const hawk_bch_t* bcs, hawk_oow_t* bcslen, hawk_uch_t* ucs, hawk_oow_t* ucslen) | ||||
| { | ||||
| 	/* the source is length bound */ | ||||
| 	return hawk_conv_bchars_to_uchars_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HAWK_CMGR_UTF8], 0); | ||||
| } | ||||
|  | ||||
| int hawk_conv_uchars_to_utf8 (const hawk_uch_t* ucs, hawk_oow_t* ucslen, hawk_bch_t* bcs, hawk_oow_t* bcslen) | ||||
| { | ||||
| 	/* length bound */ | ||||
| 	return hawk_conv_uchars_to_bchars_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HAWK_CMGR_UTF8]); | ||||
| } | ||||
|  | ||||
| int hawk_conv_utf8_to_ucstr (const hawk_bch_t* bcs, hawk_oow_t* bcslen, hawk_uch_t* ucs, hawk_oow_t* ucslen) | ||||
| { | ||||
| 	/* null-terminated. */ | ||||
| 	return hawk_conv_bcstr_to_ucstr_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HAWK_CMGR_UTF8], 0); | ||||
| } | ||||
|  | ||||
| int hawk_conv_ucstr_to_utf8 (const hawk_uch_t* ucs, hawk_oow_t* ucslen, hawk_bch_t* bcs, hawk_oow_t* bcslen) | ||||
| { | ||||
| 	/* null-terminated */ | ||||
| 	return hawk_conv_ucstr_to_bcstr_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HAWK_CMGR_UTF8]); | ||||
| } | ||||
|  | ||||
| /* ------------------------------------------------------------------------ */ | ||||
|  | ||||
| int hawk_conv_utf16_to_uchars (const hawk_bch_t* bcs, hawk_oow_t* bcslen, hawk_uch_t* ucs, hawk_oow_t* ucslen) | ||||
| { | ||||
| 	/* the source is length bound */ | ||||
| 	return hawk_conv_bchars_to_uchars_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HAWK_CMGR_UTF16], 0); | ||||
| } | ||||
|  | ||||
| int hawk_conv_uchars_to_utf16 (const hawk_uch_t* ucs, hawk_oow_t* ucslen, hawk_bch_t* bcs, hawk_oow_t* bcslen) | ||||
| { | ||||
| 	/* length bound */ | ||||
| 	return hawk_conv_uchars_to_bchars_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HAWK_CMGR_UTF16]); | ||||
| } | ||||
|  | ||||
| int hawk_conv_utf16_to_ucstr (const hawk_bch_t* bcs, hawk_oow_t* bcslen, hawk_uch_t* ucs, hawk_oow_t* ucslen) | ||||
| { | ||||
| 	/* null-terminated. */ | ||||
| 	return hawk_conv_bcstr_to_ucstr_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HAWK_CMGR_UTF16], 0); | ||||
| } | ||||
|  | ||||
| int hawk_conv_ucstr_to_utf16 (const hawk_uch_t* ucs, hawk_oow_t* ucslen, hawk_bch_t* bcs, hawk_oow_t* bcslen) | ||||
| { | ||||
| 	/* null-terminated */ | ||||
| 	return hawk_conv_ucstr_to_bcstr_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HAWK_CMGR_UTF16]); | ||||
| } | ||||
|  | ||||
| /* ------------------------------------------------------------------------ */ | ||||
|  | ||||
| int hawk_conv_mb8_to_uchars (const hawk_bch_t* bcs, hawk_oow_t* bcslen, hawk_uch_t* ucs, hawk_oow_t* ucslen) | ||||
| { | ||||
| 	/* the source is length bound */ | ||||
| 	return hawk_conv_bchars_to_uchars_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HAWK_CMGR_MB8], 0); | ||||
| } | ||||
|  | ||||
| int hawk_conv_uchars_to_mb8 (const hawk_uch_t* ucs, hawk_oow_t* ucslen, hawk_bch_t* bcs, hawk_oow_t* bcslen) | ||||
| { | ||||
| 	/* length bound */ | ||||
| 	return hawk_conv_uchars_to_bchars_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HAWK_CMGR_MB8]); | ||||
| } | ||||
|  | ||||
| int hawk_conv_mb8_to_ucstr (const hawk_bch_t* bcs, hawk_oow_t* bcslen, hawk_uch_t* ucs, hawk_oow_t* ucslen) | ||||
| { | ||||
| 	/* null-terminated. */ | ||||
| 	return hawk_conv_bcstr_to_ucstr_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HAWK_CMGR_MB8], 0); | ||||
| } | ||||
|  | ||||
| int hawk_conv_ucstr_to_mb8 (const hawk_uch_t* ucs, hawk_oow_t* ucslen, hawk_bch_t* bcs, hawk_oow_t* bcslen) | ||||
| { | ||||
| 	/* null-terminated */ | ||||
| 	return hawk_conv_ucstr_to_bcstr_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HAWK_CMGR_MB8]); | ||||
| } | ||||
|  | ||||
| /* ------------------------------------------------------------------------ */ | ||||
| @ -3676,144 +3676,3 @@ int hawk_bchars_to_bin (const hawk_bch_t* hex, hawk_oow_t hexlen, hawk_uint8_t* | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| /* ------------------------------------------------------------------------ */ | ||||
|  | ||||
| static hawk_cmgr_t builtin_cmgr[] = | ||||
| { | ||||
| 	/* keep the order aligned with hawk_cmgr_id_t values in <hawk-utl.h> */ | ||||
| 	{ hawk_utf8_to_uc,  hawk_uc_to_utf8 }, | ||||
| 	{ hawk_utf16_to_uc, hawk_uc_to_utf16 }, | ||||
| 	{ hawk_mb8_to_uc,   hawk_uc_to_mb8 } | ||||
| }; | ||||
|  | ||||
| hawk_cmgr_t* hawk_get_cmgr_by_id (hawk_cmgr_id_t id) | ||||
| { | ||||
| 	return &builtin_cmgr[id]; | ||||
| } | ||||
|  | ||||
| static struct | ||||
| { | ||||
| 	const hawk_bch_t* name; | ||||
| 	hawk_cmgr_id_t     id; | ||||
| } builtin_cmgr_tab[] = | ||||
| { | ||||
| 	{ "utf8",    HAWK_CMGR_UTF8 }, | ||||
| 	{ "utf16",   HAWK_CMGR_UTF16 }, | ||||
| 	{ "mb8",     HAWK_CMGR_MB8 } | ||||
| }; | ||||
|  | ||||
| hawk_cmgr_t* hawk_get_cmgr_by_bcstr (const hawk_bch_t* name) | ||||
| { | ||||
| 	if (name) | ||||
| 	{ | ||||
| 		hawk_oow_t i; | ||||
|  | ||||
| 		for (i = 0; i < HAWK_COUNTOF(builtin_cmgr_tab); i++) | ||||
| 		{ | ||||
| 			if (hawk_comp_bcstr(name, builtin_cmgr_tab[i].name, 0) == 0) | ||||
| 			{ | ||||
| 				return &builtin_cmgr[builtin_cmgr_tab[i].id]; | ||||
| 			} | ||||
| 		 } | ||||
| 	} | ||||
|  | ||||
| 	return HAWK_NULL; | ||||
| } | ||||
|  | ||||
| hawk_cmgr_t* hawk_get_cmgr_by_ucstr (const hawk_uch_t* name) | ||||
| { | ||||
| 	if (name) | ||||
| 	{ | ||||
| 		hawk_oow_t i; | ||||
|  | ||||
| 		for (i = 0; i < HAWK_COUNTOF(builtin_cmgr_tab); i++) | ||||
| 		{ | ||||
| 			if (hawk_comp_ucstr_bcstr(name, builtin_cmgr_tab[i].name, 0) == 0) | ||||
| 			{ | ||||
| 				return &builtin_cmgr[builtin_cmgr_tab[i].id]; | ||||
| 			} | ||||
| 		 } | ||||
| 	} | ||||
|  | ||||
| 	return HAWK_NULL; | ||||
| } | ||||
|  | ||||
| /* ------------------------------------------------------------------------ */ | ||||
|  | ||||
| int hawk_conv_utf8_to_uchars (const hawk_bch_t* bcs, hawk_oow_t* bcslen, hawk_uch_t* ucs, hawk_oow_t* ucslen) | ||||
| { | ||||
| 	/* the source is length bound */ | ||||
| 	return hawk_conv_bchars_to_uchars_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HAWK_CMGR_UTF8], 0); | ||||
| } | ||||
|  | ||||
| int hawk_conv_uchars_to_utf8 (const hawk_uch_t* ucs, hawk_oow_t* ucslen, hawk_bch_t* bcs, hawk_oow_t* bcslen) | ||||
| { | ||||
| 	/* length bound */ | ||||
| 	return hawk_conv_uchars_to_bchars_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HAWK_CMGR_UTF8]); | ||||
| } | ||||
|  | ||||
| int hawk_conv_utf8_to_ucstr (const hawk_bch_t* bcs, hawk_oow_t* bcslen, hawk_uch_t* ucs, hawk_oow_t* ucslen) | ||||
| { | ||||
| 	/* null-terminated. */ | ||||
| 	return hawk_conv_bcstr_to_ucstr_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HAWK_CMGR_UTF8], 0); | ||||
| } | ||||
|  | ||||
| int hawk_conv_ucstr_to_utf8 (const hawk_uch_t* ucs, hawk_oow_t* ucslen, hawk_bch_t* bcs, hawk_oow_t* bcslen) | ||||
| { | ||||
| 	/* null-terminated */ | ||||
| 	return hawk_conv_ucstr_to_bcstr_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HAWK_CMGR_UTF8]); | ||||
| } | ||||
|  | ||||
| /* ------------------------------------------------------------------------ */ | ||||
|  | ||||
| int hawk_conv_utf16_to_uchars (const hawk_bch_t* bcs, hawk_oow_t* bcslen, hawk_uch_t* ucs, hawk_oow_t* ucslen) | ||||
| { | ||||
| 	/* the source is length bound */ | ||||
| 	return hawk_conv_bchars_to_uchars_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HAWK_CMGR_UTF16], 0); | ||||
| } | ||||
|  | ||||
| int hawk_conv_uchars_to_utf16 (const hawk_uch_t* ucs, hawk_oow_t* ucslen, hawk_bch_t* bcs, hawk_oow_t* bcslen) | ||||
| { | ||||
| 	/* length bound */ | ||||
| 	return hawk_conv_uchars_to_bchars_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HAWK_CMGR_UTF16]); | ||||
| } | ||||
|  | ||||
| int hawk_conv_utf16_to_ucstr (const hawk_bch_t* bcs, hawk_oow_t* bcslen, hawk_uch_t* ucs, hawk_oow_t* ucslen) | ||||
| { | ||||
| 	/* null-terminated. */ | ||||
| 	return hawk_conv_bcstr_to_ucstr_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HAWK_CMGR_UTF16], 0); | ||||
| } | ||||
|  | ||||
| int hawk_conv_ucstr_to_utf16 (const hawk_uch_t* ucs, hawk_oow_t* ucslen, hawk_bch_t* bcs, hawk_oow_t* bcslen) | ||||
| { | ||||
| 	/* null-terminated */ | ||||
| 	return hawk_conv_ucstr_to_bcstr_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HAWK_CMGR_UTF16]); | ||||
| } | ||||
|  | ||||
| /* ------------------------------------------------------------------------ */ | ||||
|  | ||||
| int hawk_conv_mb8_to_uchars (const hawk_bch_t* bcs, hawk_oow_t* bcslen, hawk_uch_t* ucs, hawk_oow_t* ucslen) | ||||
| { | ||||
| 	/* the source is length bound */ | ||||
| 	return hawk_conv_bchars_to_uchars_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HAWK_CMGR_MB8], 0); | ||||
| } | ||||
|  | ||||
| int hawk_conv_uchars_to_mb8 (const hawk_uch_t* ucs, hawk_oow_t* ucslen, hawk_bch_t* bcs, hawk_oow_t* bcslen) | ||||
| { | ||||
| 	/* length bound */ | ||||
| 	return hawk_conv_uchars_to_bchars_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HAWK_CMGR_MB8]); | ||||
| } | ||||
|  | ||||
| int hawk_conv_mb8_to_ucstr (const hawk_bch_t* bcs, hawk_oow_t* bcslen, hawk_uch_t* ucs, hawk_oow_t* ucslen) | ||||
| { | ||||
| 	/* null-terminated. */ | ||||
| 	return hawk_conv_bcstr_to_ucstr_with_cmgr(bcs, bcslen, ucs, ucslen, &builtin_cmgr[HAWK_CMGR_MB8], 0); | ||||
| } | ||||
|  | ||||
| int hawk_conv_ucstr_to_mb8 (const hawk_uch_t* ucs, hawk_oow_t* ucslen, hawk_bch_t* bcs, hawk_oow_t* bcslen) | ||||
| { | ||||
| 	/* null-terminated */ | ||||
| 	return hawk_conv_ucstr_to_bcstr_with_cmgr(ucs, ucslen, bcs, bcslen, &builtin_cmgr[HAWK_CMGR_MB8]); | ||||
| } | ||||
|  | ||||
| /* ------------------------------------------------------------------------ */ | ||||
|  | ||||
		Reference in New Issue
	
	Block a user