* added QSE_MBLEN_MAX
* added qse_getcclsid() and related functions * added qse_isblank() and realted code
This commit is contained in:
		| @ -36,10 +36,11 @@ host_triplet = @host@ | ||||
| subdir = include | ||||
| DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in | ||||
| ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 | ||||
| am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \ | ||||
| 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ | ||||
| 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ | ||||
| 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac | ||||
| am__aclocal_m4_deps = $(top_srcdir)/m4/ax_numval.m4 \ | ||||
| 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ | ||||
| 	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ | ||||
| 	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ | ||||
| 	$(top_srcdir)/configure.ac | ||||
| am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ | ||||
| 	$(ACLOCAL_M4) | ||||
| mkinstalldirs = $(install_sh) -d | ||||
|  | ||||
| @ -38,10 +38,11 @@ subdir = include/qse | ||||
| DIST_COMMON = $(am__pkginclude_HEADERS_DIST) $(srcdir)/Makefile.am \ | ||||
| 	$(srcdir)/Makefile.in $(srcdir)/config.h.in | ||||
| ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 | ||||
| am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \ | ||||
| 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ | ||||
| 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ | ||||
| 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac | ||||
| am__aclocal_m4_deps = $(top_srcdir)/m4/ax_numval.m4 \ | ||||
| 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ | ||||
| 	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ | ||||
| 	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ | ||||
| 	$(top_srcdir)/configure.ac | ||||
| am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ | ||||
| 	$(ACLOCAL_M4) | ||||
| mkinstalldirs = $(install_sh) -d | ||||
|  | ||||
| @ -38,10 +38,11 @@ subdir = include/qse/awk | ||||
| DIST_COMMON = $(am__pkginclude_HEADERS_DIST) $(srcdir)/Makefile.am \ | ||||
| 	$(srcdir)/Makefile.in | ||||
| ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 | ||||
| am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \ | ||||
| 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ | ||||
| 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ | ||||
| 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac | ||||
| am__aclocal_m4_deps = $(top_srcdir)/m4/ax_numval.m4 \ | ||||
| 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ | ||||
| 	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ | ||||
| 	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ | ||||
| 	$(top_srcdir)/configure.ac | ||||
| am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ | ||||
| 	$(ACLOCAL_M4) | ||||
| mkinstalldirs = $(install_sh) -d | ||||
|  | ||||
| @ -38,10 +38,11 @@ subdir = include/qse/cmn | ||||
| DIST_COMMON = $(am__pkginclude_HEADERS_DIST) $(srcdir)/Makefile.am \ | ||||
| 	$(srcdir)/Makefile.in | ||||
| ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 | ||||
| am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \ | ||||
| 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ | ||||
| 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ | ||||
| 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac | ||||
| am__aclocal_m4_deps = $(top_srcdir)/m4/ax_numval.m4 \ | ||||
| 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ | ||||
| 	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ | ||||
| 	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ | ||||
| 	$(top_srcdir)/configure.ac | ||||
| am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ | ||||
| 	$(ACLOCAL_M4) | ||||
| mkinstalldirs = $(install_sh) -d | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * $Id: chr.h 441 2011-04-22 14:28:43Z hyunghwan.chung $ | ||||
|  * $Id: chr.h 554 2011-08-22 05:26:26Z hyunghwan.chung $ | ||||
|  * | ||||
|     Copyright 2006-2011 Chung, Hyung-Hwan. | ||||
|     This file is part of QSE. | ||||
| @ -21,6 +21,11 @@ | ||||
| #ifndef _QSE_CMN_CHR_H_ | ||||
| #define _QSE_CMN_CHR_H_ | ||||
|  | ||||
|  | ||||
| /** @file | ||||
|  * This file provides functions, types, macros for character handling. | ||||
|  */ | ||||
|  | ||||
| #include <qse/types.h> | ||||
| #include <qse/macros.h> | ||||
|  | ||||
| @ -29,17 +34,18 @@ | ||||
|  */ | ||||
| enum qse_ccls_id_t | ||||
| { | ||||
|         QSE_CCLS_UPPER, | ||||
|         QSE_CCLS_LOWER, | ||||
|         QSE_CCLS_ALNUM = 1, | ||||
|         QSE_CCLS_ALPHA, | ||||
|         QSE_CCLS_DIGIT, | ||||
|         QSE_CCLS_XDIGIT, | ||||
|         QSE_CCLS_ALNUM, | ||||
|         QSE_CCLS_SPACE, | ||||
|         QSE_CCLS_PRINT, | ||||
|         QSE_CCLS_GRAPH, | ||||
|         QSE_CCLS_BLANK, | ||||
|         QSE_CCLS_CNTRL, | ||||
|         QSE_CCLS_PUNCT | ||||
|         QSE_CCLS_DIGIT, | ||||
|         QSE_CCLS_GRAPH, | ||||
|         QSE_CCLS_LOWER, | ||||
|         QSE_CCLS_PRINT, | ||||
|         QSE_CCLS_PUNCT, | ||||
|         QSE_CCLS_SPACE, | ||||
|         QSE_CCLS_UPPER, | ||||
|         QSE_CCLS_XDIGIT | ||||
| }; | ||||
| typedef enum qse_ccls_id_t qse_ccls_id_t; | ||||
| typedef qse_ccls_id_t qse_mccls_id_t; | ||||
| @ -56,6 +62,7 @@ typedef qse_ccls_id_t qse_wccls_id_t; | ||||
| #define QSE_MCCLS_GRAPH  QSE_CCLS_GRAPH | ||||
| #define QSE_MCCLS_CNTRL  QSE_CCLS_CNTRL | ||||
| #define QSE_MCCLS_PUNCT  QSE_CCLS_PUNCT | ||||
| #define QSE_MCCLS_BLANK  QSE_CCLS_BLANK | ||||
|  | ||||
| #define QSE_WCCLS_UPPER  QSE_CCLS_UPPER | ||||
| #define QSE_WCCLS_LOWER  QSE_CCLS_LOWER | ||||
| @ -68,69 +75,46 @@ typedef qse_ccls_id_t qse_wccls_id_t; | ||||
| #define QSE_WCCLS_GRAPH  QSE_CCLS_GRAPH | ||||
| #define QSE_WCCLS_CNTRL  QSE_CCLS_CNTRL | ||||
| #define QSE_WCCLS_PUNCT  QSE_CCLS_PUNCT | ||||
| #define QSE_WCCLS_BLANK  QSE_CCLS_BLANK | ||||
|  | ||||
| #ifdef USE_STDC | ||||
| #	include <ctype.h> | ||||
| #	include <wctype.h> | ||||
| # | ||||
| #	define QSE_ISMUPPER(c) isupper(c) | ||||
| #	define QSE_ISMLOWER(c) islower(c) | ||||
| #	define QSE_ISMALPHA(c) isalpha(c) | ||||
| #	define QSE_ISMDIGIT(c) isdigit(c) | ||||
| #	define QSE_ISMXDIGIT(c) isxdigit(c) | ||||
| #	define QSE_ISMALNUM(c) isalnum(c) | ||||
| #	define QSE_ISMSPACE(c) isspace(c) | ||||
| #	define QSE_ISMPRINT(c) isprint(c) | ||||
| #	define QSE_ISMGRAPH(c) isgraph(c) | ||||
| #	define QSE_ISMCNTRL(c) iscntrl(c) | ||||
| #	define QSE_ISMPUNCT(c) ispunct(c) | ||||
| #	define QSE_TOMUPPER(c) toupper(c) | ||||
| #	define QSE_TOMLOWER(c) tolower(c) | ||||
| # | ||||
| #	define QSE_ISWUPPER(c) iswupper(c) | ||||
| #	define QSE_ISWLOWER(c) iswlower(c) | ||||
| #	define QSE_ISWALPHA(c) iswalpha(c) | ||||
| #	define QSE_ISWDIGIT(c) iswdigit(c) | ||||
| #	define QSE_ISWXDIGIT(c) iswxdigit(c) | ||||
| #	define QSE_ISWALNUM(c) iswalnum(c) | ||||
| #	define QSE_ISWSPACE(c) iswspace(c) | ||||
| #	define QSE_ISWPRINT(c) iswprint(c) | ||||
| #	define QSE_ISWGRAPH(c) iswgraph(c) | ||||
| #	define QSE_ISWCNTRL(c) iswcntrl(c) | ||||
| #	define QSE_ISWPUNCT(c) iswpunct(c) | ||||
| #	define QSE_TOWUPPER(c) towupper(c) | ||||
| #	define QSE_TOWLOWER(c) towlower(c) | ||||
| #else | ||||
| #	define QSE_ISMUPPER(c) (qse_mccls_is(c,QSE_CCLS_UPPER)) | ||||
| #	define QSE_ISMLOWER(c) (qse_mccls_is(c,QSE_CCLS_LOWER)) | ||||
| #	define QSE_ISMALPHA(c) (qse_mccls_is(c,QSE_CCLS_ALPHA)) | ||||
| #	define QSE_ISMDIGIT(c) (qse_mccls_is(c,QSE_CCLS_DIGIT)) | ||||
| #	define QSE_ISMXDIGIT(c) (qse_mccls_is(c,QSE_CCLS_XDIGIT)) | ||||
| #	define QSE_ISMALNUM(c) (qse_mccls_is(c,QSE_CCLS_ALNUM)) | ||||
| #	define QSE_ISMSPACE(c) (qse_mccls_is(c,QSE_CCLS_SPACE)) | ||||
| #	define QSE_ISMPRINT(c) (qse_mccls_is(c,QSE_CCLS_PRINT)) | ||||
| #	define QSE_ISMGRAPH(c) (qse_mccls_is(c,QSE_CCLS_GRAPH)) | ||||
| #	define QSE_ISMCNTRL(c) (qse_mccls_is(c,QSE_CCLS_CNTRL)) | ||||
| #	define QSE_ISMPUNCT(c) (qse_mccls_is(c,QSE_CCLS_PUNCT)) | ||||
| #	define QSE_TOMUPPER(c) (qse_mccls_to(c,QSE_CCLS_UPPER)) | ||||
| #	define QSE_TOMLOWER(c) (qse_mccls_to(c,QSE_CCLS_LOWER)) | ||||
| # | ||||
| #	define QSE_ISWUPPER(c) (qse_wccls_is(c,QSE_CCLS_UPPER)) | ||||
| #	define QSE_ISWLOWER(c) (qse_wccls_is(c,QSE_CCLS_LOWER)) | ||||
| #	define QSE_ISWALPHA(c) (qse_wccls_is(c,QSE_CCLS_ALPHA)) | ||||
| #	define QSE_ISWDIGIT(c) (qse_wccls_is(c,QSE_CCLS_DIGIT)) | ||||
| #	define QSE_ISWXDIGIT(c) (qse_wccls_is(c,QSE_CCLS_XDIGIT)) | ||||
| #	define QSE_ISWALNUM(c) (qse_wccls_is(c,QSE_CCLS_ALNUM)) | ||||
| #	define QSE_ISWSPACE(c) (qse_wccls_is(c,QSE_CCLS_SPACE)) | ||||
| #	define QSE_ISWPRINT(c) (qse_wccls_is(c,QSE_CCLS_PRINT)) | ||||
| #	define QSE_ISWGRAPH(c) (qse_wccls_is(c,QSE_CCLS_GRAPH)) | ||||
| #	define QSE_ISWCNTRL(c) (qse_wccls_is(c,QSE_CCLS_CNTRL)) | ||||
| #	define QSE_ISWPUNCT(c) (qse_wccls_is(c,QSE_CCLS_PUNCT)) | ||||
| #	define QSE_TOWUPPER(c) (qse_wccls_to(c,QSE_CCLS_UPPER)) | ||||
| #	define QSE_TOWLOWER(c) (qse_wccls_to(c,QSE_CCLS_LOWER)) | ||||
| #endif | ||||
| #define QSE_MCTYPE(name) (qse_getmcclsid(name)) | ||||
| #define QSE_ISMCTYPE(c,t) (qse_ismccls(c,t)) | ||||
| #define QSE_ISMALNUM(c) (qse_ismccls(c,QSE_CCLS_ALNUM)) | ||||
| #define QSE_ISMALPHA(c) (qse_ismccls(c,QSE_CCLS_ALPHA)) | ||||
| #define QSE_ISMBLANK(c) (qse_ismccls(c,QSE_CCLS_BLANK)) | ||||
| #define QSE_ISMCNTRL(c) (qse_ismccls(c,QSE_CCLS_CNTRL)) | ||||
| #define QSE_ISMDIGIT(c) (qse_ismccls(c,QSE_CCLS_DIGIT)) | ||||
| #define QSE_ISMGRAPH(c) (qse_ismccls(c,QSE_CCLS_GRAPH)) | ||||
| #define QSE_ISMLOWER(c) (qse_ismccls(c,QSE_CCLS_LOWER)) | ||||
| #define QSE_ISMPRINT(c) (qse_ismccls(c,QSE_CCLS_PRINT)) | ||||
| #define QSE_ISMPUNCT(c) (qse_ismccls(c,QSE_CCLS_PUNCT)) | ||||
| #define QSE_ISMSPACE(c) (qse_ismccls(c,QSE_CCLS_SPACE)) | ||||
| #define QSE_ISMUPPER(c) (qse_ismccls(c,QSE_CCLS_UPPER)) | ||||
| #define QSE_ISMXDIGIT(c) (qse_ismccls(c,QSE_CCLS_XDIGIT)) | ||||
| #define QSE_TOMUPPER(c) (qse_tomccls(c,QSE_CCLS_UPPER)) | ||||
| #define QSE_TOMLOWER(c) (qse_tomccls(c,QSE_CCLS_LOWER)) | ||||
|  | ||||
| #define QSE_WCTYPE(name) (qse_getwcclsid(name)) | ||||
| #define QSE_ISWCTYPE(c,t) (qse_iswccls(c,t)) | ||||
| #define QSE_ISWALNUM(c) (qse_iswccls(c,QSE_CCLS_ALNUM)) | ||||
| #define QSE_ISWALPHA(c) (qse_iswccls(c,QSE_CCLS_ALPHA)) | ||||
| #define QSE_ISWBLANK(c) (qse_iswccls(c,QSE_CCLS_BLANK)) | ||||
| #define QSE_ISWCNTRL(c) (qse_iswccls(c,QSE_CCLS_CNTRL)) | ||||
| #define QSE_ISWDIGIT(c) (qse_iswccls(c,QSE_CCLS_DIGIT)) | ||||
| #define QSE_ISWGRAPH(c) (qse_iswccls(c,QSE_CCLS_GRAPH)) | ||||
| #define QSE_ISWLOWER(c) (qse_iswccls(c,QSE_CCLS_LOWER)) | ||||
| #define QSE_ISWPRINT(c) (qse_iswccls(c,QSE_CCLS_PRINT)) | ||||
| #define QSE_ISWPUNCT(c) (qse_iswccls(c,QSE_CCLS_PUNCT)) | ||||
| #define QSE_ISWSPACE(c) (qse_iswccls(c,QSE_CCLS_SPACE)) | ||||
| #define QSE_ISWUPPER(c) (qse_iswccls(c,QSE_CCLS_UPPER)) | ||||
| #define QSE_ISWXDIGIT(c) (qse_iswccls(c,QSE_CCLS_XDIGIT)) | ||||
| #define QSE_TOWUPPER(c) (qse_towccls(c,QSE_CCLS_UPPER)) | ||||
| #define QSE_TOWLOWER(c) (qse_towccls(c,QSE_CCLS_LOWER)) | ||||
|  | ||||
| #ifdef QSE_CHAR_IS_MCHAR | ||||
| #	define QSE_CTYPE(name) QSE_MCTYPE(name) | ||||
| #	define QSE_ISCTYPE(c,t) QSE_ISMCTYPE(c,t) | ||||
| # | ||||
| #	define QSE_ISUPPER(c)  QSE_ISMUPPER(c) | ||||
| #	define QSE_ISLOWER(c)  QSE_ISMLOWER(c)  | ||||
| #	define QSE_ISALPHA(c)  QSE_ISMALPHA(c)  | ||||
| @ -142,9 +126,14 @@ typedef qse_ccls_id_t qse_wccls_id_t; | ||||
| #	define QSE_ISGRAPH(c)  QSE_ISMGRAPH(c) | ||||
| #	define QSE_ISCNTRL(c)  QSE_ISMCNTRL(c) | ||||
| #	define QSE_ISPUNCT(c)  QSE_ISMPUNCT(c) | ||||
| #	define QSE_ISBLANK(c)  QSE_ISMBLANK(c) | ||||
| # | ||||
| #	define QSE_TOUPPER(c)  QSE_TOMUPPER(c) | ||||
| #	define QSE_TOLOWER(c)  QSE_TOMLOWER(c) | ||||
| #else | ||||
| #	define QSE_CTYPE(name) QSE_WCTYPE(name) | ||||
| #	define QSE_ISCTYPE(c,t) QSE_ISWCTYPE(c,t) | ||||
| # | ||||
| #	define QSE_ISUPPER(c)  QSE_ISWUPPER(c) | ||||
| #	define QSE_ISLOWER(c)  QSE_ISWLOWER(c)  | ||||
| #	define QSE_ISALPHA(c)  QSE_ISWALPHA(c)  | ||||
| @ -156,42 +145,115 @@ typedef qse_ccls_id_t qse_wccls_id_t; | ||||
| #	define QSE_ISGRAPH(c)  QSE_ISWGRAPH(c) | ||||
| #	define QSE_ISCNTRL(c)  QSE_ISWCNTRL(c) | ||||
| #	define QSE_ISPUNCT(c)  QSE_ISWPUNCT(c) | ||||
| #	define QSE_ISBLANK(c)  QSE_ISWBLANK(c) | ||||
| # | ||||
| #	define QSE_TOUPPER(c)  QSE_TOWUPPER(c) | ||||
| #	define QSE_TOLOWER(c)  QSE_TOWLOWER(c) | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|  * The qse_mbstate_t type defines a structure large enough to hold | ||||
|  * the standard mbstate_t. | ||||
|  */ | ||||
| typedef struct qse_mbstate_t qse_mbstate_t; | ||||
| struct qse_mbstate_t | ||||
| { | ||||
| #if defined(QSE_SIZEOF_MBSTATE_T) && (QSE_SIZEOF_MBSTATE_T > 0) | ||||
| 	char dummy[QSE_SIZEOF_MBSTATE_T]; | ||||
| #else | ||||
| 	char dummy[1]; | ||||
| #endif | ||||
| }; | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| qse_bool_t qse_mccls_is ( | ||||
| qse_bool_t qse_ismccls ( | ||||
| 	qse_mcint_t      c, | ||||
| 	qse_mccls_id_t   type | ||||
| ); | ||||
|  | ||||
| qse_bool_t qse_wccls_is ( | ||||
| qse_bool_t qse_iswccls ( | ||||
| 	qse_wcint_t      c, | ||||
| 	qse_wccls_id_t   type | ||||
| ); | ||||
|  | ||||
| qse_mcint_t qse_mccls_to ( | ||||
| qse_mcint_t qse_tomccls ( | ||||
| 	qse_mcint_t      c, | ||||
| 	qse_mccls_id_t    type | ||||
| 	qse_mccls_id_t   type | ||||
| ); | ||||
|  | ||||
| qse_wcint_t qse_wccls_to ( | ||||
| qse_wcint_t qse_towccls ( | ||||
| 	qse_wcint_t      c, | ||||
| 	qse_wccls_id_t    type | ||||
| 	qse_wccls_id_t   type | ||||
| ); | ||||
|  | ||||
| int qse_getwcclsidbyname ( | ||||
| 	const qse_wchar_t* name, | ||||
| 	qse_wccls_id_t*    id | ||||
| ); | ||||
|  | ||||
| int qse_getwcclsidbyxname ( | ||||
| 	const qse_wchar_t* name, | ||||
| 	qse_size_t         len, | ||||
| 	qse_wccls_id_t*    id | ||||
| ); | ||||
|  | ||||
| qse_wccls_id_t qse_getwcclsid ( | ||||
| 	const qse_wchar_t* name | ||||
| ); | ||||
|  | ||||
| int qse_getmcclsidbyname ( | ||||
| 	const qse_mchar_t* name, | ||||
| 	qse_mccls_id_t*    id | ||||
| ); | ||||
|  | ||||
| int qse_getmcclsidbyxname ( | ||||
| 	const qse_mchar_t* name, | ||||
| 	qse_size_t         len, | ||||
| 	qse_mccls_id_t*    id | ||||
| ); | ||||
|  | ||||
| qse_mccls_id_t qse_getmcclsid ( | ||||
| 	const qse_mchar_t* name | ||||
| ); | ||||
|  | ||||
| #ifdef QSE_CHAR_IS_MCHAR | ||||
| #	define qse_ccls_is(c,type) qse_mccls_is(c,type); | ||||
| #	define qse_ccls_to(c,type) qse_mccls_to(c,type); | ||||
| #	define qse_isccls(c,type) qse_ismccls(c,type) | ||||
| #	define qse_toccls(c,type) qse_tomccls(c,type) | ||||
| #	define qse_getcclsidbyname(name,id) qse_getmcclsidbyname(name,id) | ||||
| #	define qse_getcclsidbyxname(name,len,id) qse_getmcclsidbyxname(name,len,id) | ||||
| #	define qse_getcclsid(name) qse_getmcclsid(name) | ||||
| #else | ||||
| #	define qse_ccls_is(c,type) qse_wccls_is(c,type); | ||||
| #	define qse_ccls_to(c,type) qse_wccls_to(c,type); | ||||
| #	define qse_isccls(c,type) qse_iswccls(c,type) | ||||
| #	define qse_toccls(c,type) qse_towccls(c,type) | ||||
| #	define qse_getcclsidbyname(name,id) qse_getwcclsidbyname(name,id) | ||||
| #	define qse_getcclsidbyxname(name,len,id) qse_getwcclsidbyxname(name,len,id) | ||||
| #	define qse_getcclsid(name) qse_getwcclsid(name) | ||||
| #endif | ||||
|  | ||||
|  | ||||
| qse_size_t qse_mbrlen ( | ||||
| 	const qse_mchar_t* mb, | ||||
| 	qse_size_t         mblen, | ||||
| 	qse_mbstate_t*     state | ||||
| ); | ||||
|  | ||||
| qse_size_t qse_mbrtowc ( | ||||
| 	const qse_mchar_t* mb, | ||||
| 	qse_size_t         mblen, | ||||
| 	qse_wchar_t*       wc, | ||||
| 	qse_mbstate_t*     state | ||||
| ); | ||||
|  | ||||
| qse_size_t qse_wcrtomb ( | ||||
| 	qse_wchar_t        wc, | ||||
| 	qse_mchar_t*       mb, | ||||
| 	qse_size_t         mblen, | ||||
| 	qse_mbstate_t*     state | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The qse_mblen() function scans a multibyte sequence to get the number of  | ||||
|  * bytes needed to form a wide character. It does not scan more than @a mblen | ||||
| @ -199,6 +261,8 @@ qse_wcint_t qse_wccls_to ( | ||||
|  * @return number of bytes processed on success,  | ||||
|  *         0 for invalid sequences,  | ||||
|  *         mblen + 1 for incomplete sequences | ||||
|  * @note This function can not handle conversion producing non-initial | ||||
|  *       states. For each call, it assumes initial state. | ||||
|  */ | ||||
| qse_size_t qse_mblen ( | ||||
| 	const qse_mchar_t* mb, | ||||
| @ -210,6 +274,8 @@ qse_size_t qse_mblen ( | ||||
|  * It returns 0 if an invalid multibyte sequence is detected, mblen + 1 if the  | ||||
|  * sequence is incomplete. It returns the number of bytes processed to form a  | ||||
|  * wide character. | ||||
|  * @note This function can not handle conversion producing non-initial | ||||
|  *       states. For each call, it assumes initial state. | ||||
|  */ | ||||
| qse_size_t qse_mbtowc ( | ||||
| 	const qse_mchar_t* mb, | ||||
| @ -222,6 +288,8 @@ qse_size_t qse_mbtowc ( | ||||
|  * It returns 0 if the wide character is illegal, mblen + 1 if mblen is not  | ||||
|  * large enough to hold the multibyte sequence. On successful conversion, it  | ||||
|  * returns the number of bytes in the sequence. | ||||
|  * @note This function can not handle conversion producing non-initial | ||||
|  *       states. For each call, it assumes initial state. | ||||
|  */ | ||||
| qse_size_t qse_wctomb ( | ||||
| 	qse_wchar_t        wc, | ||||
| @ -229,6 +297,14 @@ qse_size_t qse_wctomb ( | ||||
| 	qse_size_t         mblen | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The qse_getmbcurmax() function returns the value of MB_CUR_MAX. | ||||
|  * Note that QSE_MBLEN_MAX defines MB_LEN_MAX. | ||||
|  */ | ||||
| int qse_getmbcurmax ( | ||||
| 	void | ||||
| ); | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| @ -260,6 +260,11 @@ void* qse_fma_alloc ( | ||||
| 	qse_size_t size     /**< block size in bytes*/ | ||||
| ); | ||||
|  | ||||
| void* qse_fma_calloc ( | ||||
| 	qse_fma_t* fma, | ||||
| 	qse_size_t size | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The qse_fma_realloc() function is provided for consistency with other  | ||||
|  * generic memory allocator which provides a reallocation function. | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * $Id: tio.h 547 2011-08-13 16:04:14Z hyunghwan.chung $ | ||||
|  * $Id: tio.h 554 2011-08-22 05:26:26Z hyunghwan.chung $ | ||||
|  * | ||||
|     Copyright 2006-2011 Chung, Hyung-Hwan. | ||||
|     This file is part of QSE. | ||||
| @ -27,6 +27,7 @@ | ||||
|  | ||||
| #include <qse/types.h> | ||||
| #include <qse/macros.h> | ||||
| #include <qse/cmn/chr.h> | ||||
| #include <qse/cmn/str.h> | ||||
|  | ||||
| enum qse_tio_errnum_t | ||||
| @ -97,13 +98,21 @@ struct qse_tio_t | ||||
| 	void* output_arg; | ||||
|  | ||||
| 	/* for housekeeping */ | ||||
| 	int         input_status; | ||||
| 	qse_size_t  inbuf_curp; | ||||
| 	qse_size_t  inbuf_len; | ||||
| 	qse_size_t  outbuf_len; | ||||
| 	int           input_status; | ||||
| 	qse_size_t    inbuf_curp; | ||||
| 	qse_size_t    inbuf_len; | ||||
| 	qse_size_t    outbuf_len; | ||||
|  | ||||
| 	qse_mchar_t inbuf[QSE_TIO_MAX_INBUF_LEN]; | ||||
| 	qse_mchar_t outbuf[QSE_TIO_MAX_OUTBUF_LEN]; | ||||
|  | ||||
| #ifdef QSE_CHAR_IS_WCHAR | ||||
| 	struct | ||||
| 	{ | ||||
| 		qse_mbstate_t in; | ||||
| 		qse_mbstate_t out; | ||||
| 	} mbstate; | ||||
| #endif | ||||
| }; | ||||
|  | ||||
| #ifdef __cplusplus | ||||
|  | ||||
| @ -175,6 +175,11 @@ void* qse_xma_alloc ( | ||||
| 	qse_size_t size /**< size in bytes */ | ||||
| ); | ||||
|  | ||||
| void* qse_xma_calloc ( | ||||
| 	qse_xma_t* xma, | ||||
| 	qse_size_t size | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The qse_xma_alloc() function resizes the memory block @a b to @a size bytes. | ||||
|  * @return pointer to a resized memory block on success, #QSE_NULL on failure | ||||
|  | ||||
| @ -75,6 +75,9 @@ | ||||
| #	define QSE_SIZEOF_OFF64_T     0 | ||||
| #	define QSE_SIZEOF_OFF_T       4 | ||||
| # | ||||
| #	define QSE_SIZEOF_MBSTATE_T   QSE_SIZEOF_LONG | ||||
| #	define QSE_MBLEN_MAX          16 | ||||
| # | ||||
| #	define QSE_CHAR_IS_WCHAR | ||||
| #else | ||||
| #	error Define the size of various data types. | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * $Id: conf_msw.h 441 2011-04-22 14:28:43Z hyunghwan.chung $ | ||||
|  * $Id: conf_msw.h 554 2011-08-22 05:26:26Z hyunghwan.chung $ | ||||
|  * | ||||
|     Copyright 2006-2011 Chung, Hyung-Hwan. | ||||
|     This file is part of QSE. | ||||
| @ -70,6 +70,9 @@ _M_X64 x64 platform | ||||
| #	define QSE_SIZEOF_OFF64_T     0 | ||||
| #	define QSE_SIZEOF_OFF_T       8 | ||||
| # | ||||
| #	define QSE_SIZEOF_MBSTATE_T   QSE_SIZEOF_LONG | ||||
| #	define QSE_MBLEN_MAX          16 | ||||
| # | ||||
| #	define QSE_CHAR_IS_WCHAR | ||||
| #elif defined(__GNUC__) || defined(__DMC__) || defined(__POCC__) | ||||
| #	define QSE_SIZEOF_CHAR        1 | ||||
| @ -97,6 +100,9 @@ _M_X64 x64 platform | ||||
| #	define QSE_SIZEOF_OFF64_T     0 | ||||
| #	define QSE_SIZEOF_OFF_T       8 | ||||
| # | ||||
| #	define QSE_SIZEOF_MBSTATE_T   QSE_SIZEOF_LONG | ||||
| #	define QSE_MBLEN_MAX          16 | ||||
| # | ||||
| #	define QSE_CHAR_IS_WCHAR | ||||
| #elif defined(_MSC_VER) | ||||
| #	define QSE_SIZEOF_CHAR        1 | ||||
| @ -128,6 +134,9 @@ _M_X64 x64 platform | ||||
| #	define QSE_SIZEOF_OFF64_T     0 | ||||
| #	define QSE_SIZEOF_OFF_T       8 | ||||
| # | ||||
| #	define QSE_SIZEOF_MBSTATE_T   QSE_SIZEOF_LONG | ||||
| #	define QSE_MBLEN_MAX          16 | ||||
| # | ||||
| #	define QSE_CHAR_IS_WCHAR | ||||
| #else | ||||
| #	error Define the size of various data types. | ||||
|  | ||||
| @ -52,6 +52,12 @@ | ||||
| #	define QSE_SIZEOF_OFF64_T     0 | ||||
| #	define QSE_SIZEOF_OFF_T       8 | ||||
| # | ||||
| /* I don't know the exact mbstate size.  | ||||
|  * but this should be large enough */ | ||||
| #	define QSE_SIZEOF_MBSTATE_T   QSE_SIZEOF_LONG | ||||
| /* TODO: check the exact value */ | ||||
| #	define QSE_MBLEN_MAX          16 | ||||
| # | ||||
| #	define QSE_CHAR_IS_WCHAR | ||||
| #else | ||||
| #	error Define the size of various data types. | ||||
|  | ||||
| @ -72,6 +72,15 @@ | ||||
| /* Define to 1 if you have the <inttypes.h> header file. */ | ||||
| #undef HAVE_INTTYPES_H | ||||
|  | ||||
| /* Define to 1 if you have the `isblank' function. */ | ||||
| #undef HAVE_ISBLANK | ||||
|  | ||||
| /* Define to 1 if you have the `iswblank' function. */ | ||||
| #undef HAVE_ISWBLANK | ||||
|  | ||||
| /* Define to 1 if you have the `iswctype' function. */ | ||||
| #undef HAVE_ISWCTYPE | ||||
|  | ||||
| /* Define to 1 if you have the `log' function. */ | ||||
| #undef HAVE_LOG | ||||
|  | ||||
| @ -241,6 +250,9 @@ | ||||
|    */ | ||||
| #undef LT_OBJDIR | ||||
|  | ||||
| /* The size of `MB_LEN_MAX', as computed by valueof. */ | ||||
| #undef NUMVALOF_MB_LEN_MAX | ||||
|  | ||||
| /* Name of package */ | ||||
| #undef PACKAGE | ||||
|  | ||||
| @ -281,7 +293,10 @@ | ||||
| /* Unknown Endian */ | ||||
| #undef QSE_ENDIAN_UNKNOWN | ||||
|  | ||||
| /* Author's contact */ | ||||
| /* MB_LEN_MAX */ | ||||
| #undef QSE_MBLEN_MAX | ||||
|  | ||||
| /* Author */ | ||||
| #undef QSE_PACKAGE_AUTHOR | ||||
|  | ||||
| /* package name */ | ||||
| @ -323,6 +338,9 @@ | ||||
| /* sizeof(long long) */ | ||||
| #undef QSE_SIZEOF_LONG_LONG | ||||
|  | ||||
| /* sizeof(mbstate_t) */ | ||||
| #undef QSE_SIZEOF_MBSTATE_T | ||||
|  | ||||
| /* sizeof(off64_t) */ | ||||
| #undef QSE_SIZEOF_OFF64_T | ||||
|  | ||||
| @ -380,6 +398,9 @@ | ||||
| /* The size of `long long', as computed by sizeof. */ | ||||
| #undef SIZEOF_LONG_LONG | ||||
|  | ||||
| /* The size of `mbstate_t', as computed by sizeof. */ | ||||
| #undef SIZEOF_MBSTATE_T | ||||
|  | ||||
| /* The size of `off64_t', as computed by sizeof. */ | ||||
| #undef SIZEOF_OFF64_T | ||||
|  | ||||
|  | ||||
| @ -38,10 +38,11 @@ subdir = include/qse/cut | ||||
| DIST_COMMON = $(am__pkginclude_HEADERS_DIST) $(srcdir)/Makefile.am \ | ||||
| 	$(srcdir)/Makefile.in | ||||
| ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 | ||||
| am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \ | ||||
| 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ | ||||
| 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ | ||||
| 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac | ||||
| am__aclocal_m4_deps = $(top_srcdir)/m4/ax_numval.m4 \ | ||||
| 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ | ||||
| 	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ | ||||
| 	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ | ||||
| 	$(top_srcdir)/configure.ac | ||||
| am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ | ||||
| 	$(ACLOCAL_M4) | ||||
| mkinstalldirs = $(install_sh) -d | ||||
|  | ||||
| @ -37,10 +37,11 @@ subdir = include/qse/net | ||||
| DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/Makefile.am \ | ||||
| 	$(srcdir)/Makefile.in | ||||
| ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 | ||||
| am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \ | ||||
| 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ | ||||
| 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ | ||||
| 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac | ||||
| am__aclocal_m4_deps = $(top_srcdir)/m4/ax_numval.m4 \ | ||||
| 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ | ||||
| 	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ | ||||
| 	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ | ||||
| 	$(top_srcdir)/configure.ac | ||||
| am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ | ||||
| 	$(ACLOCAL_M4) | ||||
| mkinstalldirs = $(install_sh) -d | ||||
|  | ||||
| @ -38,10 +38,11 @@ subdir = include/qse/sed | ||||
| DIST_COMMON = $(am__pkginclude_HEADERS_DIST) $(srcdir)/Makefile.am \ | ||||
| 	$(srcdir)/Makefile.in | ||||
| ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 | ||||
| am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \ | ||||
| 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ | ||||
| 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ | ||||
| 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac | ||||
| am__aclocal_m4_deps = $(top_srcdir)/m4/ax_numval.m4 \ | ||||
| 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ | ||||
| 	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ | ||||
| 	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ | ||||
| 	$(top_srcdir)/configure.ac | ||||
| am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ | ||||
| 	$(ACLOCAL_M4) | ||||
| mkinstalldirs = $(install_sh) -d | ||||
|  | ||||
| @ -37,10 +37,11 @@ subdir = include/qse/stx | ||||
| DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/Makefile.am \ | ||||
| 	$(srcdir)/Makefile.in | ||||
| ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 | ||||
| am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \ | ||||
| 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ | ||||
| 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ | ||||
| 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac | ||||
| am__aclocal_m4_deps = $(top_srcdir)/m4/ax_numval.m4 \ | ||||
| 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ | ||||
| 	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ | ||||
| 	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ | ||||
| 	$(top_srcdir)/configure.ac | ||||
| am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ | ||||
| 	$(ACLOCAL_M4) | ||||
| mkinstalldirs = $(install_sh) -d | ||||
|  | ||||
		Reference in New Issue
	
	Block a user