added qse_isuniblank() and changed qse_isblank() to use it.

regenerated various build files
This commit is contained in:
2015-06-12 03:54:04 +00:00
parent 40c6e5f5fe
commit 763efada8f
70 changed files with 42515 additions and 31187 deletions

View File

@ -1,5 +1,5 @@
AUTOMAKE_OPTIONS = no-dependencies
EXTRA_DIST = gencp.sh gencp0.awk gencp1.awk testcp.c
EXTRA_DIST = gencp.sh gencp0.awk gencp1.awk testcp.c uni-case.c uni-trait.c

View File

@ -1,9 +1,8 @@
# Makefile.in generated by automake 1.11.6 from Makefile.am.
# Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
# Foundation, Inc.
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@ -15,23 +14,51 @@
@SET_MAKE@
VPATH = @srcdir@
am__make_dryrun = \
{ \
am__dry=no; \
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
*) \
for am__flg in $$MAKEFLAGS; do \
case $$am__flg in \
*=*|--*) ;; \
*n*) am__dry=yes; break;; \
esac; \
done;; \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
test $$am__dry = yes; \
}
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@ -51,7 +78,7 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = tools
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \
$(top_srcdir)/m4/ax_check_sign.m4 \
@ -67,14 +94,20 @@ mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/include/qse/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
depcomp =
am__depfiles_maybe =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
depcomp =
am__depfiles_maybe =
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
@ -82,6 +115,7 @@ am__can_run_installinfo = \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@ -259,7 +293,7 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = no-dependencies
EXTRA_DIST = gencp.sh gencp0.awk gencp1.awk testcp.c
EXTRA_DIST = gencp.sh gencp0.awk gencp1.awk testcp.c uni-case.c uni-trait.c
all: all-am
.SUFFIXES:
@ -299,11 +333,11 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
tags: TAGS
TAGS:
tags TAGS:
ctags: CTAGS
CTAGS:
ctags CTAGS:
cscope cscopelist:
distdir: $(DISTFILES)
@ -439,15 +473,16 @@ uninstall-am:
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
distclean distclean-generic distclean-libtool distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic \
mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
cscopelist-am ctags-am distclean distclean-generic \
distclean-libtool distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags-am uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.

177
qse/tools/uni-case.c Normal file
View File

@ -0,0 +1,177 @@
#include <qse/types.h>
#include <locale.h>
#include <wchar.h>
#include <wctype.h>
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#if QSE_SIZEOF_WCHAR_T == QSE_SIZEOF_SHORT
#define MAX_CHAR 0xFFFF
#else
/*#define MAX_CHAR 0xE01EF*/
#define MAX_CHAR 0x10FFFF
#endif
#define CASE_PAGE_SIZE 512
#define MAX_CASE_PAGE_COUNT ((MAX_CHAR + CASE_PAGE_SIZE) / CASE_PAGE_SIZE)
/*
* short is enough as the diff does not exceed
* the maixmum value of the short type.
*/
typedef long int wcdiff_t;
typedef struct case_page_t case_page_t;
struct case_page_t
{
size_t no;
wcdiff_t upper[CASE_PAGE_SIZE];
wcdiff_t lower[CASE_PAGE_SIZE];
case_page_t* next;
};
size_t case_page_count = 0;
case_page_t* case_pages = NULL;
size_t case_map_count = 0;
case_page_t* case_maps[MAX_CASE_PAGE_COUNT];
void make_case_page (qse_wcint_t start, qse_wcint_t end)
{
qse_wcint_t code, c;
size_t i;
wcdiff_t upper[CASE_PAGE_SIZE];
wcdiff_t lower[CASE_PAGE_SIZE];
case_page_t* page;
memset (upper, 0, sizeof(upper));
memset (lower, 0, sizeof(lower));
for (code = start; code <= end; code++)
{
c = code - start;
upper[c] = (wcdiff_t)code - (wcdiff_t)towupper(code);
lower[c] = (wcdiff_t)towlower(code) - (wcdiff_t)code;
}
for (page = case_pages; page != NULL; page = page->next)
{
if (memcmp (upper, page->upper, sizeof(upper)) == 0 &&
memcmp (lower, page->lower, sizeof(lower)) == 0)
{
case_maps[case_map_count++] = page;
return;
}
}
page = (case_page_t*)malloc (sizeof(case_page_t));
page->no = case_page_count++;
memcpy (page->upper, upper, sizeof(upper));
memcpy (page->lower, lower, sizeof(lower));
page->next = case_pages;
case_pages = page;
case_maps[case_map_count++] = page;
}
void emit_case_page (case_page_t* page, int page_seq)
{
size_t i;
wcdiff_t upper, lower;
int need_or;
qse_wcint_t c;
printf ("static case_page_t case_page_%04X[%u] =\n{\n",
(unsigned int)page->no, (unsigned int)CASE_PAGE_SIZE);
for (i = 0; i < CASE_PAGE_SIZE; i++)
{
need_or = 0;
upper = page->upper[i];
lower = page->lower[i];
if (i != 0) printf (",\n");
printf ("\t");
if (upper > SHRT_MAX || upper < SHRT_MIN ||
lower > SHRT_MAX || lower < SHRT_MIN)
{
fprintf (stderr, "WARNING: page %u, index %u: value out of range - upper %ld lower %ld\n",
(unsigned int)page->no, (unsigned int)i, (long int)upper, (long int)lower);
}
printf ("{%ld, %ld}", (long int)upper, (long int)lower);
}
printf ("\n};\n");
}
void emit_case_map ()
{
size_t i;
printf ("static case_page_t* case_map[%u] =\n{\n", (unsigned int)case_map_count);
for (i = 0; i < case_map_count; i++) {
if (i != 0) printf (",\n");
printf ("\t /* 0x%X-0x%X */ ",
i * CASE_PAGE_SIZE, (i + 1) * CASE_PAGE_SIZE - 1);
printf ("case_page_%04X", case_maps[i]->no);
}
printf ("\n};\n");
}
static void emit_case_macros (void)
{
printf ("/* generated by tools/uni-case.c */\n\n");
printf ("#define CASE_MAX 0x%lX\n\n", (unsigned long)MAX_CHAR);
printf ("typedef struct case_page_t case_page_t;\n\n");
printf ("struct case_page_t {\n");
/* use a 16-bit integer to use less memory. */
printf (" qse_int16_t upper;\n");
printf (" qse_int16_t lower;\n");
printf ("};\n\n");
printf ("\n");
}
int main ()
{
qse_wcint_t code;
case_page_t* page;
char* locale;
int page_seq = 0;
locale = setlocale (LC_ALL, "");
if (locale == NULL ||
(strstr(locale, ".utf8") == NULL && strstr(locale, ".UTF8") == NULL &&
strstr(locale, ".utf-8") == NULL && strstr(locale, ".UTF-8") == NULL))
{
fprintf (stderr, "error: the locale should be utf-8 compatible\n");
return -1;
}
for (code = 0; code < MAX_CHAR; code += CASE_PAGE_SIZE)
{
make_case_page (code, code + CASE_PAGE_SIZE - 1);
}
emit_case_macros ();
for (page = case_pages; page != NULL; page = page->next)
{
emit_case_page (page, page_seq);
printf ("\n");
page_seq++;
}
emit_case_map ();
return 0;
}

282
qse/tools/uni-trait.c Normal file
View File

@ -0,0 +1,282 @@
#include <qse/types.h>
#include <locale.h>
#include <wchar.h>
#include <wctype.h>
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#if QSE_SIZEOF_WCHAR_T == QSE_SIZEOF_SHORT
#define MAX_CHAR 0xFFFF
#else
/*#define MAX_CHAR 0xE01EF*/
#define MAX_CHAR 0x10FFFF
#endif
#define TRAIT_PAGE_SIZE 256
#define MAX_TRAIT_PAGE_COUNT ((MAX_CHAR + TRAIT_PAGE_SIZE) / TRAIT_PAGE_SIZE)
typedef struct trait_page_t trait_page_t;
struct trait_page_t
{
size_t no;
short traits[TRAIT_PAGE_SIZE];
trait_page_t* next;
};
size_t trait_page_count = 0;
trait_page_t* trait_pages = NULL;
size_t trait_map_count = 0;
trait_page_t* trait_maps[MAX_TRAIT_PAGE_COUNT];
enum
{
TRAIT_UPPER = (1 << 0),
TRAIT_LOWER = (1 << 1),
TRAIT_ALPHA = (1 << 2),
TRAIT_DIGIT = (1 << 3),
TRAIT_XDIGIT = (1 << 4),
TRAIT_ALNUM = (1 << 5),
TRAIT_SPACE = (1 << 6),
TRAIT_PRINT = (1 << 8),
TRAIT_GRAPH = (1 << 9),
TRAIT_CNTRL = (1 << 10),
TRAIT_PUNCT = (1 << 11),
TRAIT_BLANK = (1 << 12)
};
int get_trait (qse_wcint_t code)
{
int trait = 0;
if (iswupper(code)) trait |= TRAIT_UPPER;
if (iswlower(code)) trait |= TRAIT_LOWER;
if (iswalpha(code)) trait |= TRAIT_ALPHA;
if (iswdigit(code)) trait |= TRAIT_DIGIT;
if (iswxdigit(code)) trait |= TRAIT_XDIGIT;
if (iswalnum(code)) trait |= TRAIT_ALNUM;
if (iswspace(code)) trait |= TRAIT_SPACE;
if (iswprint(code)) trait |= TRAIT_PRINT;
if (iswgraph(code)) trait |= TRAIT_GRAPH;
if (iswcntrl(code)) trait |= TRAIT_CNTRL;
if (iswpunct(code)) trait |= TRAIT_PUNCT;
if (iswblank(code)) trait |= TRAIT_BLANK;
/*
if (iswascii(code)) trait |= TRAIT_ASCII;
if (isphonogram(code)) trait |= TRAIT_PHONO;
if (isideogram(code)) trait |= TRAIT_IDEOG;
if (isenglish(code)) trait |= TRAIT_ENGLI;
*/
return trait;
}
void make_trait_page (qse_wcint_t start, qse_wcint_t end)
{
qse_wcint_t code;
size_t i;
short traits[TRAIT_PAGE_SIZE];
trait_page_t* page;
memset (traits, 0, sizeof(traits));
for (code = start; code <= end; code++) {
traits[code - start] = get_trait(code);
}
for (page = trait_pages; page != NULL; page = page->next) {
if (memcmp (traits, page->traits, sizeof(traits)) == 0) {
trait_maps[trait_map_count++] = page;
return;
}
}
page = (trait_page_t*)malloc (sizeof(trait_page_t));
page->no = trait_page_count++;
memcpy (page->traits, traits, sizeof(traits));
page->next = trait_pages;
trait_pages = page;
trait_maps[trait_map_count++] = page;
}
void emit_trait_page (trait_page_t* page)
{
size_t i;
int trait, need_or;
printf ("static qse_uint16_t trait_page_%04X[%u] =\n{\n",
(unsigned int)page->no, (unsigned int)TRAIT_PAGE_SIZE);
for (i = 0; i < TRAIT_PAGE_SIZE; i++) {
need_or = 0;
trait = page->traits[i];
if (i != 0) printf (",\n");
printf ("\t");
if (trait == 0) {
printf ("0");
continue;
}
if (trait & TRAIT_UPPER) {
if (need_or) printf (" | ");
printf ("TRAIT_UPPER");
need_or = 1;
}
if (trait & TRAIT_LOWER) {
if (need_or) printf (" | ");
printf ("TRAIT_LOWER");
need_or = 1;
}
if (trait & TRAIT_ALPHA) {
if (need_or) printf (" | ");
printf ("TRAIT_ALPHA");
need_or = 1;
}
if (trait & TRAIT_DIGIT) {
if (need_or) printf (" | ");
printf ("TRAIT_DIGIT");
need_or = 1;
}
if (trait & TRAIT_XDIGIT) {
if (need_or) printf (" | ");
printf ("TRAIT_XDIGIT");
need_or = 1;
}
if (trait & TRAIT_ALNUM) {
if (need_or) printf (" | ");
printf ("TRAIT_ALNUM");
need_or = 1;
}
if (trait & TRAIT_SPACE) {
if (need_or) printf (" | ");
printf ("TRAIT_SPACE");
need_or = 1;
}
if (trait & TRAIT_PRINT) {
if (need_or) printf (" | ");
printf ("TRAIT_PRINT");
need_or = 1;
}
if (trait & TRAIT_GRAPH) {
if (need_or) printf (" | ");
printf ("TRAIT_GRAPH");
need_or = 1;
}
if (trait & TRAIT_CNTRL) {
if (need_or) printf (" | ");
printf ("TRAIT_CNTRL");
need_or = 1;
}
if (trait & TRAIT_PUNCT) {
if (need_or) printf (" | ");
printf ("TRAIT_PUNCT");
need_or = 1;
}
if (trait & TRAIT_BLANK) {
if (need_or) printf (" | ");
printf ("TRAIT_BLANK");
need_or = 1;
}
/*
if (trait & TRAIT_ASCII) {
if (need_or) printf (" | ");
printf ("TRAIT_ASCII");
need_or = 1;
}
if (trait & TRAIT_IDEOG) {
if (need_or) printf (" | ");
printf ("TRAIT_IDEOG");
need_or = 1;
}
if (trait & TRAIT_PHONO) {
if (need_or) printf (" | ");
printf ("TRAIT_PHONO");
need_or = 1;
}
if (trait & TRAIT_ENGLI) {
if (need_or) printf (" | ");
printf ("TRAIT_ENGLI");
need_or = 1;
}
*/
}
printf ("\n};\n");
}
void emit_trait_map ()
{
size_t i;
printf ("static qse_uint16_t* trait_map[%u] =\n{\n", (unsigned int)trait_map_count);
for (i = 0; i < trait_map_count; i++) {
if (i != 0) printf (",\n");
printf ("\t /* 0x%X-0x%X */ ",
i * TRAIT_PAGE_SIZE, (i + 1) * TRAIT_PAGE_SIZE - 1);
printf ("trait_page_%04X", trait_maps[i]->no);
}
printf ("\n};\n");
}
static void emit_trait_macros (void)
{
printf ("/* generated by tools/uni-trait.c */\n\n");
printf ("#define TRAIT_MAX 0x%lX\n", (unsigned long)MAX_CHAR);
printf ("\n");
}
int main ()
{
qse_wcint_t code;
trait_page_t* page;
char* locale;
locale = setlocale (LC_ALL, "");
if (locale == NULL ||
(strstr(locale, ".utf8") == NULL && strstr(locale, ".UTF8") == NULL &&
strstr(locale, ".utf-8") == NULL && strstr(locale, ".UTF-8") == NULL)) {
fprintf (stderr, "error: the locale should be utf-8 compatible\n");
return -1;
}
for (code = 0; code < MAX_CHAR; code += TRAIT_PAGE_SIZE) {
make_trait_page (code, code + TRAIT_PAGE_SIZE - 1);
}
emit_trait_macros ();
for (page = trait_pages; page != NULL; page = page->next) {
emit_trait_page (page);
printf ("\n");
}
emit_trait_map ();
return 0;
}