8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-22 19:23:02 +01:00

WCHAR --> UCS2_CHAR and some cleanup around it

This commit is contained in:
aafemt 2003-02-18 05:24:35 +00:00
parent db6ecc1034
commit 2dadf55537
20 changed files with 280 additions and 296 deletions

View File

@ -1,4 +1,4 @@
dnl $Id: configure.in,v 1.117 2003-02-13 22:49:17 bellardo Exp $
dnl $Id: configure.in,v 1.118 2003-02-18 05:24:31 aafemt Exp $
dnl ############################# INITIALISATION ###############################
@ -345,6 +345,7 @@ AC_SEARCH_LIBS(dirname,gen)
AC_CHECK_FUNCS(dirname)
AC_CHECK_FUNCS(sigaction setitimer)
AC_CHECK_FUNCS(snprintf)
AC_CHECK_FUNCS(swab _swab)
AC_FUNC_MMAP
AC_CHECK_FUNCS(atexit on_exit)
AC_FUNC_FORK

View File

@ -126,6 +126,8 @@
#undef HAVE_SIGACTION
#undef HAVE_SETITIMER
#define HAVE_SNPRINTF
#define HAVE_SWAB
#define HAVE__SWAB
#undef HAVE_MMAP
#undef HAVE_ATEXIT
#undef HAVE_ON_EXIT

View File

@ -34,7 +34,7 @@ extern USHORT CVJIS_unicode_to_eucj();
CHARSET_ENTRY(CS_jis_0208_1990)
{
static const WCHAR space = 0x0020;
static const UCS2_CHAR space = 0x0020;
#include "../intl/charsets/cs_jis_0208_1990.h"

View File

@ -58,7 +58,7 @@ CHARSET_ENTRY(CS_unicode_fss)
SSHORT CS_UTFFSS_fss_mbtowc(obj, wc, p, n)
TEXTTYPE *obj;
WCHAR *wc;
UCS2_CHAR *wc;
NCHAR *p;
USHORT n;
{

View File

@ -31,7 +31,7 @@ extern USHORT CV_wc_copy();
CHARSET_ENTRY(CS_unicode_ucs2)
{
static const WCHAR space = 0x0020;
static const UCS2_CHAR space = 0x0020;
csptr->charset_version = 40;
csptr->charset_id = CS_UNICODE_UCS2;

View File

@ -35,16 +35,16 @@
USHORT CVBIG5_big5_to_unicode(obj, dest_ptr, dest_len, src_ptr, src_len,
err_code, err_position)
CSCONVERT obj;
USHORT *dest_ptr;
UCS2_CHAR *dest_ptr;
USHORT dest_len;
UCHAR *src_ptr;
USHORT src_len;
SSHORT *err_code;
USHORT *err_position;
{
USHORT *start;
WCHAR ch;
WCHAR wide;
UCS2_CHAR *start;
UCS2_CHAR ch;
UCS2_CHAR wide;
USHORT src_start = src_len;
USHORT this_len;
UCHAR c1, c2;
@ -61,10 +61,9 @@ USHORT CVBIG5_big5_to_unicode(obj, dest_ptr, dest_len, src_ptr, src_len,
/* See if we're only after a length estimate */
if (dest_ptr == NULL)
return (src_len * 2);
return (src_len * sizeof(UCS2_CHAR));
start = dest_ptr;
src_start = src_len;
while ((src_len) && (dest_len > 1)) {
if (*src_ptr & 0x80) {
c1 = *src_ptr++;
@ -104,7 +103,7 @@ USHORT CVBIG5_big5_to_unicode(obj, dest_ptr, dest_len, src_ptr, src_len,
}
*dest_ptr++ = ch;
dest_len -= 2;
dest_len -= sizeof(UCS2_CHAR);
src_len -= this_len;
};
if (src_len && !*err_code) {
@ -120,14 +119,14 @@ USHORT CVBIG5_unicode_to_big5(obj, big5_str, big5_len, unicode_str,
CSCONVERT obj;
UCHAR *big5_str;
USHORT big5_len;
USHORT *unicode_str;
UCS2_CHAR *unicode_str;
USHORT unicode_len;
SSHORT *err_code;
USHORT *err_position;
{
UCHAR *start;
WCHAR big5_ch;
WCHAR wide;
UCS2_CHAR big5_ch;
UCS2_CHAR wide;
int tmp1, tmp2;
USHORT src_start = unicode_len;
@ -150,14 +149,10 @@ USHORT CVBIG5_unicode_to_big5(obj, big5_str, big5_len, unicode_str,
/* Convert from UNICODE to BIG5 code */
wide = *unicode_str++;
big5_ch = ((USHORT *) obj->csconvert_datatable)[
((USHORT *) obj->
csconvert_misc)[
(USHORT)
wide
/
256]
+ (wide % 256)];
big5_ch = ((USHORT *) obj->csconvert_datatable)
[((USHORT *) obj->csconvert_misc)
[(USHORT)wide/256]
+(wide % 256)];
if ((big5_ch == CS_CANT_MAP) && !(wide == CS_CANT_MAP)) {
*err_code = CS_CONVERT_ERROR;
break;
@ -286,7 +281,7 @@ USHORT CVBIG5_big5_byte2short(obj, dst, dst_len, src, src_len, err_code,
SSHORT CVBIG5_big5_mbtowc(obj, wc, src, src_len)
CSCONVERT obj;
WCHAR *wc;
UCS2_CHAR *wc;
UCHAR *src;
USHORT src_len;
{

View File

@ -35,16 +35,16 @@
USHORT CVGB_gb2312_to_unicode(obj, dest_ptr, dest_len, src_ptr, src_len,
err_code, err_position)
CSCONVERT obj;
USHORT *dest_ptr;
UCS2_CHAR *dest_ptr;
USHORT dest_len;
UCHAR *src_ptr;
USHORT src_len;
SSHORT *err_code;
USHORT *err_position;
{
USHORT *start;
WCHAR ch;
WCHAR wide;
UCS2_CHAR *start;
UCS2_CHAR ch;
UCS2_CHAR wide;
USHORT src_start = src_len;
USHORT this_len;
UCHAR c1, c2;
@ -61,10 +61,9 @@ USHORT CVGB_gb2312_to_unicode(obj, dest_ptr, dest_len, src_ptr, src_len,
/* See if we're only after a length estimate */
if (dest_ptr == NULL)
return (src_len * 2);
return (src_len * sizeof(UCS2_CHAR));
start = dest_ptr;
src_start = src_len;
while ((src_len) && (dest_len > 1)) {
if (*src_ptr & 0x80) {
c1 = *src_ptr++;
@ -104,7 +103,7 @@ USHORT CVGB_gb2312_to_unicode(obj, dest_ptr, dest_len, src_ptr, src_len,
}
*dest_ptr++ = ch;
dest_len -= 2;
dest_len -= sizeof(*dest_ptr);
src_len -= this_len;
};
if (src_len && !*err_code) {
@ -120,14 +119,14 @@ USHORT CVGB_unicode_to_gb2312(obj, gb_str, gb_len, unicode_str, unicode_len,
CSCONVERT obj;
UCHAR *gb_str;
USHORT gb_len;
USHORT *unicode_str;
UCS2_CHAR *unicode_str;
USHORT unicode_len;
SSHORT *err_code;
USHORT *err_position;
{
UCHAR *start;
WCHAR gb_ch;
WCHAR wide;
UCS2_CHAR gb_ch;
UCS2_CHAR wide;
int tmp1, tmp2;
USHORT src_start = unicode_len;
@ -150,13 +149,10 @@ USHORT CVGB_unicode_to_gb2312(obj, gb_str, gb_len, unicode_str, unicode_len,
/* Convert from UNICODE to GB2312 code */
wide = *unicode_str++;
gb_ch = ((USHORT *) obj->csconvert_datatable)[
((USHORT *) obj->
csconvert_misc)[
(USHORT)
wide /
256] +
(wide % 256)];
gb_ch = ((USHORT *) obj->csconvert_datatable)
[((USHORT *) obj->csconvert_misc)
[(USHORT)wide / 256]
+ (wide % 256)];
if ((gb_ch == CS_CANT_MAP) && !(wide == CS_CANT_MAP)) {
*err_code = CS_CONVERT_ERROR;
break;
@ -285,7 +281,7 @@ USHORT CVGB_gb2312_byte2short(obj, dst, dst_len, src, src_len, err_code,
SSHORT CVGB_gb2312_mbtowc(obj, wc, src, src_len)
CSCONVERT obj;
WCHAR *wc;
UCS2_CHAR *wc;
UCHAR *src;
USHORT src_len;
{

View File

@ -30,16 +30,16 @@
USHORT CVJIS_eucj_to_unicode(obj, dest_ptr, dest_len, src_ptr, src_len,
err_code, err_position)
CSCONVERT obj;
USHORT *dest_ptr;
UCS2_CHAR *dest_ptr;
USHORT dest_len;
UCHAR *src_ptr;
USHORT src_len;
SSHORT *err_code;
USHORT *err_position;
{
USHORT *start;
WCHAR ch;
WCHAR wide;
UCS2_CHAR *start;
UCS2_CHAR ch;
UCS2_CHAR wide;
UCHAR ch1;
USHORT src_start = src_len;
USHORT this_len;
@ -59,7 +59,6 @@ USHORT CVJIS_eucj_to_unicode(obj, dest_ptr, dest_len, src_ptr, src_len,
return (src_len);
start = dest_ptr;
src_start = src_len;
while ((src_len) && (dest_len > 1)) {
ch1 = *src_ptr++;
@ -83,13 +82,10 @@ USHORT CVJIS_eucj_to_unicode(obj, dest_ptr, dest_len, src_ptr, src_len,
this_len = 2;
/* Step 2: Convert from JIS to UNICODE */
ch = ((USHORT *) obj->csconvert_datatable)[
((USHORT *) obj->
csconvert_misc)[
(USHORT)
wide /
256] +
(wide % 256)];
ch = ((USHORT *) obj->csconvert_datatable)
[((USHORT *) obj->csconvert_misc)
[(USHORT)wide / 256]
+ (wide % 256)];
};
@ -98,7 +94,7 @@ USHORT CVJIS_eucj_to_unicode(obj, dest_ptr, dest_len, src_ptr, src_len,
*/
*dest_ptr++ = ch;
dest_len -= 2;
dest_len -= sizeof(*dest_ptr);
src_len -= this_len;
};
if (src_len && !*err_code) {
@ -127,16 +123,16 @@ USHORT CVJIS_eucj_to_unicode(obj, dest_ptr, dest_len, src_ptr, src_len,
USHORT CVJIS_sjis_to_unicode(obj, dest_ptr, dest_len, sjis_str, sjis_len,
err_code, err_position)
CSCONVERT obj;
USHORT *dest_ptr;
UCS2_CHAR *dest_ptr;
USHORT dest_len;
UCHAR *sjis_str;
USHORT sjis_len;
SSHORT *err_code;
USHORT *err_position;
{
USHORT *start;
WCHAR ch;
WCHAR wide;
UCS2_CHAR *start;
UCS2_CHAR ch;
UCS2_CHAR wide;
UCHAR c1, c2;
UCHAR tmp1, tmp2;
USHORT src_start = sjis_len;
@ -201,20 +197,15 @@ USHORT CVJIS_sjis_to_unicode(obj, dest_ptr, dest_len, sjis_str, sjis_len,
/* Step 2: Convert from JIS code (in wide) to UNICODE */
if (table == 1)
ch = ((USHORT *) obj->csconvert_datatable)[
((USHORT *) obj->
csconvert_misc)[
(USHORT)
wide /
256] +
(wide % 256)];
ch = ((USHORT *) obj->csconvert_datatable)
[((USHORT *) obj->csconvert_misc)
[(USHORT)wide / 256]
+ (wide % 256)];
else {
assert(table == 2);
assert(wide <= 255);
ch =
sjis_to_unicode_mapping_array[sjis_to_unicode_map
[(USHORT) wide / 256]
+ (wide % 256)];
ch = sjis_to_unicode_mapping_array
[sjis_to_unicode_map[(USHORT) wide / 256] + (wide % 256)];
};
/* This is only important for bad-SJIS in input stream */
@ -223,7 +214,7 @@ USHORT CVJIS_sjis_to_unicode(obj, dest_ptr, dest_len, sjis_str, sjis_len,
break;
};
*dest_ptr++ = ch;
dest_len -= 2;
dest_len -= sizeof(*dest_ptr);
sjis_len -= this_len;
}
if (sjis_len && !*err_code) {
@ -396,14 +387,14 @@ USHORT CVJIS_unicode_to_sjis(obj, sjis_str, sjis_len, unicode_str,
CSCONVERT obj;
UCHAR *sjis_str;
USHORT sjis_len;
USHORT *unicode_str;
UCS2_CHAR *unicode_str;
USHORT unicode_len;
SSHORT *err_code;
USHORT *err_position;
{
UCHAR *start;
WCHAR jis_ch;
WCHAR wide;
UCS2_CHAR jis_ch;
UCS2_CHAR wide;
USHORT tmp1, tmp2;
USHORT src_start = unicode_len;
@ -426,21 +417,16 @@ USHORT CVJIS_unicode_to_sjis(obj, sjis_str, sjis_len, unicode_str,
/* Step 1: Convert from UNICODE to JIS code */
wide = *unicode_str++;
jis_ch = ((USHORT *) obj->csconvert_datatable)[
((USHORT *) obj->
csconvert_misc)[
(USHORT)
wide /
256] +
(wide % 256)];
jis_ch = ((USHORT *) obj->csconvert_datatable)
[((USHORT *) obj->csconvert_misc)
[(USHORT)wide / 256]
+ (wide % 256)];
if ((jis_ch == CS_CANT_MAP) && !(wide == CS_CANT_MAP)) {
/* Handle the non-JIS codes in SJIS (ASCII & half-width Kana) */
jis_ch =
sjis_from_unicode_mapping_array[sjis_from_unicode_map
[(USHORT) wide / 256]
+ (wide % 256)];
jis_ch = sjis_from_unicode_mapping_array
[sjis_from_unicode_map[(USHORT) wide / 256] + (wide % 256)];
if ((jis_ch == CS_CANT_MAP) && !(wide == CS_CANT_MAP)) {
*err_code = CS_CONVERT_ERROR;
break;
@ -489,14 +475,14 @@ USHORT CVJIS_unicode_to_eucj(obj, eucj_str, eucj_len, unicode_str,
CSCONVERT obj;
UCHAR *eucj_str;
USHORT eucj_len;
USHORT *unicode_str;
UCS2_CHAR *unicode_str;
USHORT unicode_len;
SSHORT *err_code;
USHORT *err_position;
{
UCHAR *start;
WCHAR jis_ch;
WCHAR wide;
UCS2_CHAR jis_ch;
UCS2_CHAR wide;
USHORT tmp1, tmp2;
USHORT src_start = unicode_len;
@ -523,14 +509,10 @@ USHORT CVJIS_unicode_to_eucj(obj, eucj_str, eucj_len, unicode_str,
if (wide <= 0x007F)
jis_ch = wide;
else
jis_ch = ((USHORT *) obj->csconvert_datatable)[
((USHORT *) obj->
csconvert_misc)[
(USHORT)
wide
/
256]
+ (wide % 256)];
jis_ch = ((USHORT *) obj->csconvert_datatable)
[((USHORT *) obj->csconvert_misc)
[(USHORT)wide / 256]
+ (wide % 256)];
if ((jis_ch == CS_CANT_MAP) && !(wide == CS_CANT_MAP)) {
*err_code = CS_CONVERT_ERROR;
break;
@ -812,7 +794,7 @@ USHORT CVJIS_euc_byte2short(obj, dst, dst_len, src, src_len, err_code,
SSHORT CVJIS_euc_mbtowc(obj, wc, src, src_len)
CSCONVERT obj;
WCHAR *wc;
UCS2_CHAR *wc;
UCHAR *src;
USHORT src_len;
{
@ -1002,7 +984,7 @@ USHORT CVJIS_sjis_byte2short(obj, dst, dst_len, src, src_len, err_code,
SSHORT CVJIS_sjis_mbtowc(obj, wc, src, src_len)
CSCONVERT obj;
WCHAR *wc;
UCS2_CHAR *wc;
UCHAR *src;
USHORT src_len;
{

View File

@ -41,16 +41,16 @@
USHORT CVKSC_ksc_to_unicode(obj, dest_ptr, dest_len, ksc_str, ksc_len,
err_code, err_position)
CSCONVERT obj;
USHORT *dest_ptr;
UCS2_CHAR *dest_ptr;
USHORT dest_len;
UCHAR *ksc_str;
USHORT ksc_len;
short *err_code;
USHORT *err_position;
{
USHORT *start;
WCHAR ch;
WCHAR wide;
UCS2_CHAR *start;
UCS2_CHAR ch;
UCS2_CHAR wide;
UCHAR c1, c2;
USHORT src_start = ksc_len;
USHORT this_len;
@ -66,7 +66,7 @@ USHORT CVKSC_ksc_to_unicode(obj, dest_ptr, dest_len, ksc_str, ksc_len,
*err_code = 0;
if (dest_ptr == NULL)
return (ksc_len * 2);
return (ksc_len * sizeof(UCS2_CHAR));
start = dest_ptr;
while (ksc_len && dest_len > 1) {
@ -106,7 +106,7 @@ USHORT CVKSC_ksc_to_unicode(obj, dest_ptr, dest_len, ksc_str, ksc_len,
break;
}
*dest_ptr++ = ch;
dest_len -= 2;
dest_len -= sizeof(*dest_ptr);
ksc_len -= this_len;
}
@ -122,14 +122,14 @@ USHORT CVKSC_unicode_to_ksc(obj, ksc_str, ksc_len, unicode_str, unicode_len,
CSCONVERT obj;
UCHAR *ksc_str;
USHORT ksc_len;
USHORT *unicode_str;
UCS2_CHAR *unicode_str;
USHORT unicode_len;
short *err_code;
USHORT *err_position;
{
UCHAR *start;
WCHAR ksc_ch;
WCHAR wide;
UCS2_CHAR ksc_ch;
UCS2_CHAR wide;
int tmp1, tmp2;
USHORT src_start = unicode_len;
@ -150,13 +150,9 @@ USHORT CVKSC_unicode_to_ksc(obj, ksc_str, ksc_len, unicode_str, unicode_len,
while (ksc_len && unicode_len > 1) {
wide = *unicode_str++;
ksc_ch = ((USHORT *) obj->csconvert_datatable)[
((USHORT *) obj->
csconvert_misc)[
(USHORT)
wide /
256] +
(wide % 256)];
ksc_ch = ((USHORT *) obj->csconvert_datatable)
[((USHORT *) obj->csconvert_misc)
[wide / 256] + (wide % 256)];
if ((ksc_ch == CS_CANT_MAP) && !(wide == CS_CANT_MAP)) {
*err_code = CS_CONVERT_ERROR;
break;
@ -283,7 +279,7 @@ USHORT CVKSC_ksc_byte2short(obj, dst, dst_len, src, src_len, err_code,
short CVKSC_ksc_mbtowc(obj, wc, src, src_len)
CSCONVERT obj;
WCHAR *wc;
UCS2_CHAR *wc;
UCHAR *src;
USHORT src_len;
{

View File

@ -93,10 +93,10 @@ TEXTTYPE_ENTRY(BIG5_init)
*/
STATIC USHORT big5_to_upper(obj, ch)
TEXTTYPE obj;
WCHAR ch;
UCS2_CHAR ch;
{
if (ch >= (WCHAR) ASCII_LOWER_A && ch <= (WCHAR) ASCII_LOWER_Z)
return (ch - (WCHAR) ASCII_LOWER_A + (WCHAR) ASCII_UPPER_A);
if (ch >= (UCS2_CHAR) ASCII_LOWER_A && ch <= (UCS2_CHAR) ASCII_LOWER_Z)
return (ch - (UCS2_CHAR) ASCII_LOWER_A + (UCS2_CHAR) ASCII_UPPER_A);
return ch;
}
@ -151,9 +151,9 @@ STATIC SSHORT big5_str_to_upper(obj, iLen, pStr, iOutLen, pOutStr)
*/
STATIC USHORT big5_to_lower(obj, ch)
TEXTTYPE obj;
WCHAR ch;
UCS2_CHAR ch;
{
if (ch >= (WCHAR) ASCII_UPPER_A && ch <= (WCHAR) ASCII_UPPER_Z)
return (ch - (WCHAR) ASCII_UPPER_A + (WCHAR) ASCII_LOWER_A);
if (ch >= (UCS2_CHAR) ASCII_UPPER_A && ch <= (UCS2_CHAR) ASCII_UPPER_Z)
return (ch - (UCS2_CHAR) ASCII_UPPER_A + (UCS2_CHAR) ASCII_LOWER_A);
return ch;
}

View File

@ -657,7 +657,7 @@ STATIC USHORT fam1_to_lower(obj, ch)
SSHORT LC_DOS_nc_mbtowc(obj, wc, ptr, count)
TEXTTYPE obj;
WCHAR *wc;
UCS2_CHAR *wc;
UCHAR *ptr;
USHORT count;
{

View File

@ -112,10 +112,10 @@ TEXTTYPE_ENTRY(JIS230_init)
*/
STATIC USHORT sjis_to_upper(obj, ch)
TEXTTYPE obj;
WCHAR ch;
UCS2_CHAR ch;
{
if (ch >= (WCHAR) ASCII_LOWER_A && ch <= (WCHAR) ASCII_LOWER_Z)
return (ch - (WCHAR) ASCII_LOWER_A + (WCHAR) ASCII_UPPER_A);
if (ch >= (UCS2_CHAR) ASCII_LOWER_A && ch <= (UCS2_CHAR) ASCII_LOWER_Z)
return (ch - (UCS2_CHAR) ASCII_LOWER_A + (UCS2_CHAR) ASCII_UPPER_A);
return ch;
}
@ -170,9 +170,9 @@ STATIC SSHORT sjis_str_to_upper(obj, iLen, pStr, iOutLen, pOutStr)
*/
STATIC USHORT sjis_to_lower(obj, ch)
TEXTTYPE obj;
WCHAR ch;
UCS2_CHAR ch;
{
if (ch >= (WCHAR) ASCII_UPPER_A && ch <= (WCHAR) ASCII_UPPER_Z)
return (ch - (WCHAR) ASCII_UPPER_A + (WCHAR) ASCII_LOWER_A);
if (ch >= (UCS2_CHAR) ASCII_UPPER_A && ch <= (UCS2_CHAR) ASCII_UPPER_Z)
return (ch - (UCS2_CHAR) ASCII_UPPER_A + (UCS2_CHAR) ASCII_LOWER_A);
return ch;
}

View File

@ -105,7 +105,7 @@ TEXTTYPE_ENTRY(UNI201_init)
static SSHORT wc_mbtowc(obj, wc, p, n)
TEXTTYPE *obj;
WCHAR *wc;
UCS2_CHAR *wc;
NCHAR *p;
USHORT n;
{
@ -113,10 +113,10 @@ static SSHORT wc_mbtowc(obj, wc, p, n)
assert(wc);
assert(p);
if (n < sizeof(WCHAR))
if (n < sizeof(UCS2_CHAR))
return -1;
*wc = *(WCHAR *) p;
return sizeof(WCHAR);
*wc = *(UCS2_CHAR *) p;
return sizeof(UCS2_CHAR);
}

View File

@ -19,7 +19,7 @@
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
* $Id: evl.cpp,v 1.31 2003-02-16 16:55:57 alexpeshkoff Exp $
* $Id: evl.cpp,v 1.32 2003-02-18 05:24:34 aafemt Exp $
*/
/*
@ -160,12 +160,12 @@ static SSHORT sleuth(TDBB, JRD_NOD, DSC *, DSC *);
static BOOLEAN nc_sleuth_check(class TextType*, USHORT, UCHAR *, UCHAR *, UCHAR *,
UCHAR *);
static BOOLEAN nc_sleuth_class(class TextType*, USHORT, UCHAR *, UCHAR *, UCHAR);
static BOOLEAN wc_sleuth_check(class TextType*, USHORT, WCHAR *, WCHAR *, WCHAR *,
WCHAR *);
static BOOLEAN wc_sleuth_class(class TextType*, USHORT, WCHAR *, WCHAR *, WCHAR);
static BOOLEAN wc_sleuth_check(class TextType*, USHORT, UCS2_CHAR *, UCS2_CHAR *,
UCS2_CHAR *, UCS2_CHAR *);
static BOOLEAN wc_sleuth_class(class TextType*, USHORT, UCS2_CHAR *, UCS2_CHAR *,
UCS2_CHAR);
static SSHORT string_boolean(TDBB, JRD_NOD, DSC *, DSC *);
static SSHORT string_function(TDBB, JRD_NOD, SSHORT, UCHAR *,
SSHORT, UCHAR *, USHORT);
static SSHORT string_function(TDBB, JRD_NOD, SSHORT, UCHAR *, SSHORT, UCHAR *, USHORT);
static DSC *substring(TDBB, VLU, DSC *, USHORT, USHORT);
static DSC *upcase(TDBB, DSC *, VLU);
static DSC *internal_info(TDBB, DSC *, VLU);
@ -1869,9 +1869,9 @@ USHORT DLL_EXPORT EVL_mb_contains(TDBB tdbb,
* Functional description
*
**************************************/
USHORT buffer1[100], buffer2[100]; /* arbitrary size for optimization */
USHORT *pp1 = buffer1;
USHORT *pp2 = buffer2;
UCS2_CHAR buffer1[100], buffer2[100]; /* arbitrary size for optimization */
UCS2_CHAR *pp1 = buffer1;
UCS2_CHAR *pp2 = buffer2;
USHORT len1, len2; /* byte counts */
STR buf1, buf2;
USHORT ret_val;
@ -1885,15 +1885,15 @@ USHORT DLL_EXPORT EVL_mb_contains(TDBB tdbb,
if (len1 > sizeof(buffer1)) {
buf1 = FB_NEW_RPT(*tdbb->tdbb_default, len1) str();
pp1 = (USHORT *) buf1->str_data;
pp1 = (UCS2_CHAR *) buf1->str_data;
}
if (len2 > sizeof(buffer2)) {
buf2 = FB_NEW_RPT(*tdbb->tdbb_default, len2) str();
pp2 = (USHORT *) buf2->str_data;
pp2 = (UCS2_CHAR *) buf2->str_data;
}
len1 = obj->to_wc((unsigned char*)pp1, len1, p1, l1, &err_code, &err_pos);
len2 = obj->to_wc((unsigned char*)pp2, len2, p2, l2, &err_code, &err_pos);
len1 = obj->to_wc(pp1, len1, p1, l1, &err_code, &err_pos);
len2 = obj->to_wc(pp2, len2, p2, l2, &err_code, &err_pos);
ret_val = EVL_wc_contains(tdbb, obj, pp1, len1, pp2, len2);
@ -1910,7 +1910,7 @@ USHORT DLL_EXPORT EVL_mb_like(TDBB tdbb,
class TextType* obj,
UCHAR * p1,
SSHORT l1,
UCHAR * p2, SSHORT l2, WCHAR escape_char)
UCHAR * p2, SSHORT l2, UCS2_CHAR escape_char)
{
/**************************************
*
@ -1923,13 +1923,13 @@ USHORT DLL_EXPORT EVL_mb_like(TDBB tdbb,
* Front-end of like() in Japanese version.
*
* Prepare buffer of short, then "copy" char-based data
* into the new short-based buffer. Use the new buffer for
* into the new ucs2-based buffer. Use the new buffer for
* later processing with wc_like().
*
**************************************/
USHORT buffer1[100], buffer2[100]; /* arbitrary size for optimization */
USHORT *pp1 = buffer1;
USHORT *pp2 = buffer2;
UCS2_CHAR buffer1[100], buffer2[100]; /* arbitrary size for optimization */
UCS2_CHAR *pp1 = buffer1;
UCS2_CHAR *pp2 = buffer2;
USHORT len1, len2;
STR buf1, buf2;
USHORT ret_val;
@ -1942,15 +1942,16 @@ USHORT DLL_EXPORT EVL_mb_like(TDBB tdbb,
len2 = obj->to_wc(NULL, 0, p2, l2, &err_code, &err_pos);
if (len1 > sizeof(buffer1)) {
buf1 = FB_NEW_RPT(*tdbb->tdbb_default, len1) str();
pp1 = (USHORT *) buf1->str_data;
pp1 = (UCS2_CHAR *) buf1->str_data;
}
if (len2 > sizeof(buffer2)) {
buf2 = FB_NEW_RPT(*tdbb->tdbb_default, len2) str();
pp2 = (USHORT *) buf2->str_data;
pp2 = (UCS2_CHAR *) buf2->str_data;
}
len1 = obj->to_wc((unsigned char*)pp1, len1, p1, l1, &err_code, &err_pos);
len2 = obj->to_wc((unsigned char*)pp2, len2, p2, l2, &err_code, &err_pos);
len1 = obj->to_wc(pp1, len1, p1, l1, &err_code, &err_pos);
len2 = obj->to_wc(pp2, len2, p2, l2, &err_code, &err_pos);
// CHECK ME: Shouldn't errors to be handled?
ret_val = EVL_wc_like(tdbb, obj, pp1, len1, pp2, len2, escape_char);
@ -1980,9 +1981,9 @@ USHORT DLL_EXPORT EVL_mb_matches(TDBB tdbb,
* later processing with EVL_wc_matches().
*
**************************************/
USHORT buffer1[100], buffer2[100]; /* arbitrary size for optimization */
USHORT *pp1 = buffer1;
USHORT *pp2 = buffer2;
UCS2_CHAR buffer1[100], buffer2[100]; /* arbitrary size for optimization */
UCS2_CHAR *pp1 = buffer1;
UCS2_CHAR *pp2 = buffer2;
USHORT len1, len2;
STR buf1, buf2;
USHORT ret_val;
@ -1995,15 +1996,15 @@ USHORT DLL_EXPORT EVL_mb_matches(TDBB tdbb,
len2 = obj->to_wc(NULL, 0, p2, l2, &err_code, &err_pos);
if (len1 > sizeof(buffer1)) {
buf1 = FB_NEW_RPT(*tdbb->tdbb_default, len1) str();
pp1 = (USHORT *) buf1->str_data;
pp1 = (UCS2_CHAR *) buf1->str_data;
}
if (len2 > sizeof(buffer2)) {
buf2 = FB_NEW_RPT(*tdbb->tdbb_default, len2) str();
pp2 = (USHORT *) buf2->str_data;
pp2 = (UCS2_CHAR *) buf2->str_data;
}
len1 = obj->to_wc((unsigned char*)pp1, len1, p1, l1, &err_code, &err_pos);
len2 = obj->to_wc((unsigned char*)pp2, len2, p2, l2, &err_code, &err_pos);
len1 = obj->to_wc(pp1, len1, p1, l1, &err_code, &err_pos);
len2 = obj->to_wc(pp2, len2, p2, l2, &err_code, &err_pos);
ret_val = EVL_wc_matches(tdbb, obj, pp1, len1, pp2, len2);
@ -2036,8 +2037,8 @@ USHORT DLL_EXPORT EVL_mb_sleuth_check(TDBB tdbb,
* later processing with sleuth_check().
*
**************************************/
USHORT buffer1[100]; /* arbitrary size for optimization */
USHORT *pp1 = buffer1;
UCS2_CHAR buffer1[100]; /* arbitrary size for optimization */
UCS2_CHAR *pp1 = buffer1;
USHORT len1;
STR buf1;
USHORT ret_val;
@ -2055,14 +2056,14 @@ USHORT DLL_EXPORT EVL_mb_sleuth_check(TDBB tdbb,
len1 = obj->to_wc(NULL, 0, search, search_bytes, &err_code, &err_pos);
if (len1 > sizeof(buffer1)) {
buf1 = FB_NEW_RPT(*tdbb->tdbb_default, len1) str();
pp1 = (USHORT *) buf1->str_data;
pp1 = (UCS2_CHAR *) buf1->str_data;
}
len1 = obj->to_wc((unsigned char*)pp1, len1, search, search_bytes, &err_code, &err_pos);
len1 = obj->to_wc(pp1, len1, search, search_bytes, &err_code, &err_pos);
ret_val =
EVL_wc_sleuth_check(tdbb, obj, 0, pp1, len1,
reinterpret_cast < USHORT * >(match),
reinterpret_cast < UCS2_CHAR * >(match),
match_bytes);
if (pp1 != buffer1)
@ -2090,9 +2091,9 @@ USHORT DLL_EXPORT EVL_mb_sleuth_merge(TDBB tdbb,
* Front-end of sleuth_merge() in Japanese version.
*
**************************************/
USHORT buffer1[100], buffer2[100]; /* arbitrary size for optimization */
USHORT *pp1 = buffer1;
USHORT *pp2 = buffer2;
UCS2_CHAR buffer1[100], buffer2[100]; /* arbitrary size for optimization */
UCS2_CHAR *pp1 = buffer1;
UCS2_CHAR *pp2 = buffer2;
USHORT len1, len2;
STR buf1, buf2;
USHORT ret_val;
@ -2109,22 +2110,19 @@ USHORT DLL_EXPORT EVL_mb_sleuth_merge(TDBB tdbb,
len2 = obj->to_wc(NULL, 0, control, control_bytes, &err_code, &err_pos);
if (len1 > sizeof(buffer1)) {
buf1 = FB_NEW_RPT(*tdbb->tdbb_default, len1) str();
pp1 = (USHORT *) buf1->str_data;
pp1 = (UCS2_CHAR *) buf1->str_data;
}
if (len2 > sizeof(buffer2)) {
buf2 = FB_NEW_RPT(*tdbb->tdbb_default, len2) str();
pp2 = (USHORT *) buf2->str_data;
pp2 = (UCS2_CHAR *) buf2->str_data;
}
len1 = obj->to_wc((unsigned char*)pp1, len1, match, match_bytes,
&err_code, &err_pos);
len2 = obj->to_wc((unsigned char*)pp2, len2, control, control_bytes,
&err_code, &err_pos);
len1 = obj->to_wc(pp1, len1, match, match_bytes, &err_code, &err_pos);
len2 = obj->to_wc(pp2, len2, control, control_bytes, &err_code, &err_pos);
ret_val = EVL_wc_sleuth_merge(tdbb, obj, pp1, len1, pp2,
len2,
reinterpret_cast < USHORT * >(combined),
combined_bytes);
ret_val = EVL_wc_sleuth_merge(tdbb, obj, pp1, len1, pp2, len2,
reinterpret_cast < UCS2_CHAR * >(combined),
combined_bytes);
if (pp1 != buffer1)
delete buf1;
@ -2214,8 +2212,8 @@ USHORT DLL_EXPORT EVL_nc_contains(TDBB tdbb_dummy,
USHORT DLL_EXPORT EVL_wc_contains(TDBB tdbb_dumm,
class TextType* obj, WCHAR * p1, USHORT l1, /* byte count */
WCHAR * p2, USHORT l2)
class TextType* obj, UCS2_CHAR * p1, USHORT l1, /* byte count */
UCS2_CHAR * p2, USHORT l2)
{
/**************************************
*
@ -2226,7 +2224,7 @@ USHORT DLL_EXPORT EVL_wc_contains(TDBB tdbb_dumm,
* Functional description
*
**************************************/
WCHAR *q1, *q2, c1, c2;
UCS2_CHAR *q1, *q2, c1, c2;
SSHORT l;
while (l1 >= l2) {
@ -2265,14 +2263,14 @@ USHORT DLL_EXPORT EVL_wc_contains(TDBB tdbb_dumm,
**************************************
*/
#define LIKENAME EVL_wc_like
#define LIKETYPE WCHAR
#define LIKETYPE UCS2_CHAR
#define MATCHESNAME EVL_wc_matches
#define MATCHESTYPE WCHAR
#define MATCHESTYPE UCS2_CHAR
#define SLEUTHNAME EVL_wc_sleuth_check
#define SLEUTH_MERGE_NAME EVL_wc_sleuth_merge
#define SLEUTH_AUX wc_sleuth_check
#define SLEUTH_CLASS_NAME wc_sleuth_class
#define SLEUTHTYPE WCHAR
#define SLEUTHTYPE UCS2_CHAR
#define EVL_LIKE_INCLUDED_BY_EVL_CPP
#include "../jrd/evl_like.cpp"
@ -4557,7 +4555,7 @@ static SSHORT sleuth(TDBB tdbb, JRD_NOD node, DSC * desc1, DSC * desc2)
/* l2 is result's byte-count */
/* Note: resulting string from sleuth_merge is either WCHAR or NCHAR
/* Note: resulting string from sleuth_merge is either UCS2_CHAR or NCHAR
and never Multibyte (see note in EVL_mb_sleuth_check) */
if (desc1->dsc_dtype != dtype_blob) {
@ -4741,7 +4739,7 @@ static SSHORT string_function(
/* Handle LIKE and MATCHES*/
if (node->nod_type == nod_like) {
WCHAR escape;
UCS2_CHAR escape;
escape = 0;
/* ensure 3rd argument (escape char) is in operation text type */

View File

@ -52,7 +52,7 @@
USHORT LIKENAME(TDBB tdbb, class TextType* obj, LIKETYPE * p1, SSHORT l1_bytes, /* byte count */
LIKETYPE * p2, SSHORT l2_bytes, /* byte count */
WCHAR escape_char)
UCS2_CHAR escape_char)
{
/**************************************
*
@ -72,7 +72,7 @@ USHORT LIKENAME(TDBB tdbb, class TextType* obj, LIKETYPE * p1, SSHORT l1_bytes,
* instead of UCHAR-based.
*
* Note Bene: LIKETYPE is defined by including file (evl.c) to either
* WCHAR or NCHAR, depending on the varient being compiled here.
* UCS2_CHAR or NCHAR, depending on the varient being compiled here.
*
* (escape_char == 0) means no escape character is specified.
*
@ -93,13 +93,13 @@ USHORT LIKENAME(TDBB tdbb, class TextType* obj, LIKETYPE * p1, SSHORT l1_bytes,
while (l2-- > 0) {
c = *p2++;
if (escape_char && ((WCHAR) c == escape_char)) {
if (escape_char && ((UCS2_CHAR) c == escape_char)) {
if (l2-- > 0) {
c = *p2++;
/* Note: SQL II says <escape_char><escape_char> is error condition */
if (((WCHAR) c == escape_char) ||
((WCHAR) c == (WCHAR) SQL_MATCH_ANY) ||
((WCHAR) c == (WCHAR) SQL_MATCH_ONE))
if (((UCS2_CHAR) c == escape_char) ||
((UCS2_CHAR) c == (UCS2_CHAR) SQL_MATCH_ANY) ||
((UCS2_CHAR) c == (UCS2_CHAR) SQL_MATCH_ONE))
escape = TRUE;
}
if (!escape)

View File

@ -143,7 +143,6 @@
typedef unsigned char FILECHAR;
typedef USHORT UNICODE;
typedef USHORT fss_wchar_t;
typedef int fss_size_t;
@ -161,16 +160,16 @@ static SSHORT internal_str_to_upper(TextType*, USHORT, UCHAR *, USHORT,
UCHAR *);
static USHORT internal_string_to_key(TextType*, USHORT, UCHAR *, USHORT,
UCHAR *, USHORT);
static USHORT mb_to_wc(CsConvert*, WCHAR *, USHORT, MBCHAR *, USHORT, SSHORT *,
static USHORT mb_to_wc(CsConvert*, UCS2_CHAR *, USHORT, MBCHAR *, USHORT, SSHORT *,
USHORT *);
static USHORT nc_to_wc(CsConvert*, WCHAR *, USHORT, UCHAR *, USHORT, SSHORT *,
static USHORT nc_to_wc(CsConvert*, UCS2_CHAR *, USHORT, UCHAR *, USHORT, SSHORT *,
USHORT *);
static void pad_spaces(TDBB, CHARSET_ID, BYTE *, USHORT);
static USHORT wc_to_mb(CsConvert*, MBCHAR *, USHORT, WCHAR *, USHORT, SSHORT *,
static USHORT wc_to_mb(CsConvert*, MBCHAR *, USHORT, UCS2_CHAR *, USHORT, SSHORT *,
USHORT *);
static USHORT wc_to_nc(CsConvert*, NCHAR *, USHORT, WCHAR *, USHORT, SSHORT *,
static USHORT wc_to_nc(CsConvert*, NCHAR *, USHORT, UCS2_CHAR *, USHORT, SSHORT *,
USHORT *);
static USHORT wc_to_wc(CsConvert*, WCHAR *, USHORT, WCHAR *, USHORT, SSHORT *,
static USHORT wc_to_wc(CsConvert*, UCS2_CHAR *, USHORT, UCS2_CHAR *, USHORT, SSHORT *,
USHORT *);
static CharSetContainer *internal_charset_container_lookup(TDBB, SSHORT, STATUS *);
@ -482,9 +481,9 @@ CHARSET_ID src_type, BYTE * src_ptr, USHORT src_len, FPTR_VOID err)
(SLONG) src_type, 0);
/*
** allocate a temporary buffer that is large enough. 2 = sizeof WCHAR
** allocate a temporary buffer that is large enough.
*/
tmp_buffer = (BYTE *) FB_NEW(*getDefaultMemoryPool()) char[(SLONG) src_len * 2];
tmp_buffer = (BYTE *) FB_NEW(*getDefaultMemoryPool()) char[(SLONG) src_len * sizeof(UCS2_CHAR)];
cs_obj = from_cs->getConvToUnicode();
assert(cs_obj != NULL);
@ -836,7 +835,7 @@ int DLL_EXPORT INTL_defined_type(TDBB tdbb, STATUS * status, SSHORT t_type)
}
WCHAR DLL_EXPORT INTL_getch(TDBB tdbb,
UCS2_CHAR DLL_EXPORT INTL_getch(TDBB tdbb,
TextType* * obj,
SSHORT t_type, UCHAR ** ptr, USHORT * count)
{
@ -851,7 +850,7 @@ WCHAR DLL_EXPORT INTL_getch(TDBB tdbb,
*
**************************************/
SSHORT used;
USHORT wc;
UCS2_CHAR wc;
SET_TDBB(tdbb);
@ -1401,7 +1400,7 @@ static USHORT internal_keylength(TextType* obj, USHORT iLength)
return (iLength);
}
static USHORT nc_to_wc(CsConvert* obj, WCHAR * pWide, USHORT nWide, /* byte count */
static USHORT nc_to_wc(CsConvert* obj, UCS2_CHAR * pWide, USHORT nWide, /* byte count */
UCHAR * pNarrow, USHORT nNarrow, /* byte count */
SSHORT * err_code, USHORT * err_position)
{
@ -1412,9 +1411,10 @@ static USHORT nc_to_wc(CsConvert* obj, WCHAR * pWide, USHORT nWide, /* byte coun
**************************************
*
* Functional description
* Copies narrow chars buffer into wide chars buffer for charset NONE
*
**************************************/
WCHAR *pStart;
UCS2_CHAR *pStart;
UCHAR *pNarrowStart;
assert(obj != NULL);
@ -1424,12 +1424,12 @@ static USHORT nc_to_wc(CsConvert* obj, WCHAR * pWide, USHORT nWide, /* byte coun
*err_code = 0;
if (pWide == NULL)
return (2 * nNarrow); /* all cases */
return (sizeof(UCS2_CHAR) * nNarrow); /* all cases */
pStart = pWide;
pNarrowStart = pNarrow;
while (nWide-- > 1 && nNarrow) {
/* YYY - Byte order issues here */
*pWide++ = (WCHAR) * pNarrow++;
*pWide++ = (UCS2_CHAR) * pNarrow++;
nWide--;
nNarrow--;
}
@ -1535,7 +1535,7 @@ static void dump_latin(UCHAR * p, USHORT len)
}
#endif
unsigned short TextTypeNC::to_wc(unsigned char *pWideUC,
unsigned short TextTypeNC::to_wc(UCS2_CHAR *pWideUC,
unsigned short nWide,
unsigned char *pNarrow,
unsigned short nNarrow,
@ -1551,7 +1551,7 @@ unsigned short TextTypeNC::to_wc(unsigned char *pWideUC,
*
**************************************/
{
WCHAR *pStart, *pWide = (WCHAR*)pWideUC;
UCS2_CHAR *pStart, *pWide = pWideUC;
UCHAR *pNarrowStart;
assert((pNarrow != NULL) || (pWide == NULL));
@ -1560,12 +1560,12 @@ unsigned short TextTypeNC::to_wc(unsigned char *pWideUC,
*err_code = 0;
if (pWide == NULL)
return (2 * nNarrow); /* all cases */
return (sizeof(UCS2_CHAR) * nNarrow); /* all cases */
pStart = pWide;
pNarrowStart = pNarrow;
while (nWide-- > 1 && nNarrow) {
/* YYY - Byte order issues here */
*pWide++ = (WCHAR) * pNarrow++;
*pWide++ = (UCS2_CHAR) * pNarrow++;
nWide--;
nNarrow--;
}
@ -1619,7 +1619,7 @@ unsigned short TextTypeNC::sleuth_merge(TDBB a, unsigned char *b,
return EVL_nc_sleuth_merge(a,this,b,c,d,e,f,g);
}
unsigned short TextTypeNC::mbtowc(WCHAR *wc, unsigned char *ptr, unsigned short count)
unsigned short TextTypeNC::mbtowc(UCS2_CHAR *wc, unsigned char *ptr, unsigned short count)
/**************************************
*
* i n t e r n a l _ n c _ m b t o w c
@ -1689,7 +1689,7 @@ unsigned short TextTypeMB::sleuth_merge(TDBB a, unsigned char *b,
return EVL_mb_sleuth_merge(a,this,b,c,d,e,f,g);
}
unsigned short TextTypeMB::mbtowc(WCHAR *wc, unsigned char *ptr, unsigned short count)
unsigned short TextTypeMB::mbtowc(UCS2_CHAR *wc, unsigned char *ptr, unsigned short count)
{
/**************************************
*
@ -1710,7 +1710,7 @@ unsigned short TextTypeMB::mbtowc(WCHAR *wc, unsigned char *ptr, unsigned short
if (count >= 2) {
if (wc)
*wc = *(WCHAR *) ptr;
*wc = *(UCS2_CHAR *) ptr;
return 2;
}
if (wc)
@ -1718,7 +1718,7 @@ unsigned short TextTypeMB::mbtowc(WCHAR *wc, unsigned char *ptr, unsigned short
return (unsigned short)-1; /* No more characters */
}
unsigned short TextTypeWC::to_wc(unsigned char *pDestUC,
unsigned short TextTypeWC::to_wc(UCS2_CHAR *pDestUC,
unsigned short nDest,
unsigned char *pSrcUC,
unsigned short nSrc,
@ -1734,8 +1734,8 @@ unsigned short TextTypeWC::to_wc(unsigned char *pDestUC,
* Functional description
*
*************************************/
WCHAR *pStart, *pDest = (WCHAR*)pDestUC;
WCHAR *pStart_src, *pSrc = (WCHAR*)pSrcUC;
UCS2_CHAR *pStart, *pDest = pDestUC;
UCS2_CHAR *pStart_src, *pSrc = (UCS2_CHAR*)pSrcUC;
assert((pSrc != NULL) || (pDest == NULL));
assert(err_code != NULL);
@ -1765,7 +1765,7 @@ unsigned short TextTypeWC::contains(TDBB a, unsigned char *b,
unsigned char *d,
unsigned short e)
{
return EVL_wc_contains(a,this,(WCHAR*)b,c,(WCHAR*)d,e);
return EVL_wc_contains(a,this,(UCS2_CHAR*)b,c,(UCS2_CHAR*)d,e);
}
unsigned short TextTypeWC::like(TDBB a, unsigned char *b,
@ -1774,13 +1774,13 @@ unsigned short TextTypeWC::like(TDBB a, unsigned char *b,
short e,
short f)
{
return EVL_wc_like(a,this,(WCHAR*)b,c,(WCHAR*)d,e,f);
return EVL_wc_like(a,this,(UCS2_CHAR*)b,c,(UCS2_CHAR*)d,e,f);
}
unsigned short TextTypeWC::matches(TDBB a, unsigned char *b, short c,
unsigned char *d, short e)
{
return EVL_wc_matches(a,this,(WCHAR*)b,c,(WCHAR*)d,e);
return EVL_wc_matches(a,this,(UCS2_CHAR*)b,c,(UCS2_CHAR*)d,e);
}
unsigned short TextTypeWC::sleuth_check(TDBB a, unsigned short b,
@ -1789,7 +1789,7 @@ unsigned short TextTypeWC::sleuth_check(TDBB a, unsigned short b,
unsigned char *e,
unsigned short f)
{
return EVL_wc_sleuth_check(a,this,b,(WCHAR*)c,d,(WCHAR*)e,f);
return EVL_wc_sleuth_check(a,this,b,(UCS2_CHAR*)c,d,(UCS2_CHAR*)e,f);
}
unsigned short TextTypeWC::sleuth_merge(TDBB a, unsigned char *b,
@ -1799,10 +1799,10 @@ unsigned short TextTypeWC::sleuth_merge(TDBB a, unsigned char *b,
unsigned char *f,
unsigned short g)
{
return EVL_wc_sleuth_merge(a,this,(WCHAR*)b,c,(WCHAR*)d,e,(WCHAR*)f,g);
return EVL_wc_sleuth_merge(a,this,(UCS2_CHAR*)b,c,(UCS2_CHAR*)d,e,(UCS2_CHAR*)f,g);
}
unsigned short TextTypeWC::mbtowc(WCHAR *wc, unsigned char *ptr, unsigned short count)
unsigned short TextTypeWC::mbtowc(UCS2_CHAR *wc, unsigned char *ptr, unsigned short count)
{
/**************************************
*
@ -1823,7 +1823,7 @@ unsigned short TextTypeWC::mbtowc(WCHAR *wc, unsigned char *ptr, unsigned short
if (count >= 2) {
if (wc)
*wc = *(WCHAR *) ptr;
*wc = *(UCS2_CHAR *) ptr;
return 2;
}
if (wc)
@ -2017,7 +2017,7 @@ public:
(tt,a,b,c,d);
}
unsigned short to_wc(unsigned char *a,
unsigned short to_wc(UCS2_CHAR *a,
unsigned short b,
unsigned char *c,
unsigned short d,
@ -2027,18 +2027,18 @@ public:
assert(tt);
assert(tt->texttype_fn_to_wc);
return (*(reinterpret_cast
<USHORT (*)(TEXTTYPE,UCHAR*,USHORT,UCHAR*,USHORT,short*,USHORT*)>
<USHORT (*)(TEXTTYPE,UCS2_CHAR*,USHORT,UCHAR*,USHORT,short*,USHORT*)>
(tt->texttype_fn_to_wc)))
(tt,a,b,c,d,e,f);
}
unsigned short mbtowc(WCHAR *a, unsigned char *b, unsigned short c)
unsigned short mbtowc(UCS2_CHAR *a, unsigned char *b, unsigned short c)
{
assert(tt);
if (!tt->texttype_fn_mbtowc)
return T::mbtowc(a,b,c);
return (*(reinterpret_cast<
USHORT (*)(TEXTTYPE, WCHAR*, UCHAR*, USHORT)>
USHORT (*)(TEXTTYPE, UCS2_CHAR*, UCHAR*, USHORT)>
(tt->texttype_fn_mbtowc)))(tt,a,b,c);
}

View File

@ -9,7 +9,6 @@
typedef USHORT fss_wchar_t;
typedef int fss_size_t;
typedef unsigned char FILECHAR;
typedef USHORT UNICODE;
// internal functions
static fss_size_t fss_wctomb(UCHAR *, fss_wchar_t);
@ -29,7 +28,7 @@ static unsigned short internal_unicode_to_fss(
short *,
unsigned short *);
static USHORT internal_fss_to_unicode (
UNICODE*,
UCS2_CHAR*,
USHORT,
NCHAR*,
USHORT,
@ -112,15 +111,15 @@ public:
unsigned char *d)
{ return internal_str_to_upper(a,b,c,d); }
unsigned short to_wc(unsigned char *a,
unsigned short to_wc(UCS2_CHAR *a,
unsigned short b,
unsigned char *c,
unsigned short d,
short *e,
unsigned short *f)
{ return internal_fss_to_unicode((UNICODE*)a,b,c,d,e,f); }
{ return internal_fss_to_unicode(a,b,c,d,e,f); }
unsigned short mbtowc(WCHAR *wc, unsigned char *p, unsigned short n)
unsigned short mbtowc(UCS2_CHAR *wc, unsigned char *p, unsigned short n)
{ return fss_mbtowc(wc, p, n); }
};
@ -409,7 +408,7 @@ public:
{ return FB_NEW(p) CharSet_Unicode(p); }
CharSet_Unicode(MemoryPool &p) : CharSet(CS_UNICODE_UCS2, "UNICODE_UCS2", 2, 2, 2, 0)
{
static const WCHAR space = 0x0020;
static const UCS2_CHAR space = 0x0020;
charset_space_character = (const char *) & space; /* 0x0020 */
}
};
@ -428,6 +427,21 @@ public:
/********************************************************************************/
#ifndef HAVE_SWAB
#ifdef HAVE__SWAB
#define swab _swab
#else // use generic swab(). Slow (but faster than previous implementation) and buggy
void swab(char * a, char * b, int n)
{
while(--n>0)
{
*b++ = a[1];
*b++ = *a++;
a++; n--;
}
}
#endif
#endif
unsigned short CsConvert_Unicode_Binary::convert(
unsigned char *pDest,
@ -448,30 +462,26 @@ unsigned short CsConvert_Unicode_Binary::convert(
* byte stream.
*
*************************************/
MBCHAR *pStart;
WCHAR *pStart_src, *pSrc = (WCHAR*)pSrcUC;
unsigned short res;
assert((pSrc != NULL) || (pDest == NULL));
assert((pSrcUC != NULL) || (pDest == NULL));
assert(err_code != NULL);
assert(err_position != NULL);
*err_code = 0;
if (pDest == NULL) /* length estimate needed? */
return (nSrc);
pStart = pDest;
pStart_src = pSrc;
while (nDest > 1 && nSrc > 1) {
*pDest++ = *pSrc / 256;
*pDest++ = *pSrc++ % 256;
nDest -= 2;
nSrc -= 2;
}
if (!*err_code && nSrc) {
assert(nSrc&1 == 0); // check for even length
if (nSrc>nDest) {
*err_code = CS_TRUNCATION_ERROR;
}
*err_position = (pSrc - pStart_src) * sizeof(*pSrc);
res = nSrc>nDest?nDest:nSrc;
swab((char *)pSrcUC,(char *)pDest,res);
*err_position = res;
return ((pDest - pStart) * sizeof(*pDest));
return res;
}
@ -492,32 +502,30 @@ unsigned short CsConvert_Binary_Unicode::convert(
* Functional description
* Convert a wc string from network form - high-endian
* byte stream.
* Symmetrical with CsConvert_Unicode_Binary::convert
* but really the same
*
*************************************/
WCHAR *pStart, *pDest = (WCHAR*)pDestUC;
MBCHAR *pStart_src;
unsigned short res;
assert((pSrc != NULL) || (pDest == NULL));
assert((pSrc != NULL) || (pDestUC == NULL));
assert(err_code != NULL);
assert(err_position != NULL);
*err_code = 0;
if (pDest == NULL) /* length estimate needed? */
if (pDestUC == NULL) /* length estimate needed? */
return (nSrc);
pStart = pDest;
pStart_src = pSrc;
while (nDest > 1 && nSrc > 1) {
*pDest++ = *pSrc * 256 + *(pSrc + 1);
pSrc += 2;
nDest -= 2;
nSrc -= 2;
}
if (!*err_code && nSrc) {
assert(nSrc&1 == 0);
if (nSrc>nDest) {
*err_code = CS_TRUNCATION_ERROR;
}
*err_position = (pSrc - pStart_src) * sizeof(*pSrc);
res = nSrc>nDest?nDest:nSrc;
swab((char *)pSrc,(char *)pDestUC,res);
*err_position = res;
return ((pDest - pStart) * sizeof(*pDest));
return res;
}
unsigned short CsConvert_UFSS_Unicode::convert(
@ -528,7 +536,7 @@ unsigned short CsConvert_UFSS_Unicode::convert(
short *err_code,
unsigned short *err_position)
{
UNICODE *start, *dest_ptr = (UNICODE*)dest_ptrUC;
UCS2_CHAR *start, *dest_ptr = (UCS2_CHAR*)dest_ptrUC;
USHORT src_start = src_len;
fss_size_t res;
@ -584,7 +592,7 @@ unsigned short CsConvert_Unicode_ASCII::convert(
*
*************************************/
NCHAR *pStart;
WCHAR *pStart_src, *pSrc = (WCHAR*)pSrcUC;
UCS2_CHAR *pStart_src, *pSrc = (UCS2_CHAR*)pSrcUC;
assert((pSrc != NULL) || (pDest == NULL));
assert(err_code != NULL);
@ -631,7 +639,7 @@ unsigned short CsConvert_ASCII_Unicode::convert(
* Byte values >= 128 create BAD_INPUT
*
*************************************/
WCHAR *pStart, *pDest = (WCHAR*)pDestUC;
UCS2_CHAR *pStart, *pDest = (UCS2_CHAR*)pDestUC;
UCHAR *pStart_src;
assert((pSrc != NULL) || (pDest == NULL));
@ -677,7 +685,7 @@ unsigned short CsConvert_Unicode_None::convert(
*
**************************************/
NCHAR *pStart;
WCHAR *pStart_src, *pSrc = (WCHAR*)pSrcUC;
UCS2_CHAR *pStart_src, *pSrc = (UCS2_CHAR*)pSrcUC;
assert((pSrc != NULL) || (pDest == NULL));
assert(err_code != NULL);
@ -725,7 +733,7 @@ unsigned short CsConvert_None_Unicode::convert(
* Byte values >= 128 create CONVERT ERROR
*
*************************************/
WCHAR *pStart, *pDest = (WCHAR*)pDestUC;
UCS2_CHAR *pStart, *pDest = (UCS2_CHAR*)pDestUC;
UCHAR *pStart_src;
assert((pSrc != NULL) || (pDest == NULL));
@ -1148,7 +1156,7 @@ unsigned short internal_unicode_to_fss(
unsigned short *err_position)
{
MBCHAR *fss_str = (MBCHAR*)fss_strUC;
UNICODE *unicode_str = (UNICODE*)unicode_strUC;
UCS2_CHAR *unicode_str = (UCS2_CHAR*)unicode_strUC;
UCHAR *start;
USHORT src_start = unicode_len;
UCHAR tmp_buffer[6];
@ -1193,14 +1201,14 @@ unsigned short internal_unicode_to_fss(
}
static USHORT internal_fss_to_unicode (
UNICODE *dest_ptr,
UCS2_CHAR *dest_ptr,
USHORT dest_len, /* BYTE count */
NCHAR *src_ptr,
USHORT src_len,
SSHORT *err_code,
USHORT *err_position)
{
UNICODE *start;
UCS2_CHAR *start;
USHORT src_start = src_len;
fss_size_t res;
@ -1522,7 +1530,7 @@ static USHORT cs_unicode_ucs2_init(CHARSET csptr, USHORT cs_id, USHORT dummy)
* Functional description
*
*************************************/
static const WCHAR space = 0x0020;
static const UCS2_CHAR space = 0x0020;
csptr->charset_version = 40;
csptr->charset_id = CS_UNICODE;

View File

@ -29,7 +29,7 @@
typedef unsigned short CHARSET_ID;
typedef unsigned short COLLATE_ID;
typedef unsigned short TTYPE_ID;
typedef unsigned short WCHAR;
typedef unsigned short UCS2_CHAR;
typedef unsigned char NCHAR;
typedef unsigned char MBCHAR;
typedef class tdbb *TDBB;
@ -74,12 +74,14 @@ public:
unsigned char*,
unsigned short,
unsigned char*) = 0;
virtual unsigned short to_wc(unsigned char*,
unsigned short,
unsigned char*,
unsigned short,
short*,
unsigned short*) = 0;
/* SD: to_wc returns estimated or real length of the result string in bytes that is rather strange */
virtual unsigned short to_wc(UCS2_CHAR*, // destination buffer
unsigned short, // length of the destination buffer in bytes
unsigned char*, // source buffer
unsigned short, // length of source buffer in bytes
short*, // variable to return error code
unsigned short*) = 0; // variable to return offset of the first
// unprocessed char
virtual unsigned short contains(TDBB, unsigned char*,
unsigned short,
unsigned char*,
@ -102,7 +104,7 @@ public:
unsigned short,
unsigned char*,
unsigned short) = 0;
virtual unsigned short mbtowc(WCHAR*, unsigned char*, unsigned short) = 0;
virtual unsigned short mbtowc(UCS2_CHAR*, unsigned char*, unsigned short) = 0;
//virtual short get_wchar(unsigned short*, unsigned char*, unsigned short) = 0;
//unsigned short getVersion() { return texttype_version; }
@ -129,12 +131,13 @@ public:
TextType(type, name, cs_id, country, bpc)
{}
unsigned short to_wc(unsigned char*,
unsigned short,
unsigned char*,
unsigned short,
short*,
unsigned short*);
unsigned short to_wc(UCS2_CHAR*, // destination buffer
unsigned short, // length of the destination buffer in bytes
unsigned char*, // source buffer
unsigned short, // length of source buffer in bytes
short*, // variable to return error code
unsigned short*); // variable to return offset of the first
// unprocessed char
unsigned short contains(TDBB, unsigned char*,
unsigned short,
unsigned char*,
@ -157,7 +160,7 @@ public:
unsigned short,
unsigned char*,
unsigned short);
unsigned short mbtowc(WCHAR*, unsigned char*, unsigned short);
unsigned short mbtowc(UCS2_CHAR*, unsigned char*, unsigned short);
};
class TextTypeWC : public TextType
@ -168,12 +171,13 @@ public:
TextType(type, name, cs_id, country, bpc)
{}
unsigned short to_wc(unsigned char*,
unsigned short,
unsigned char*,
unsigned short,
short*,
unsigned short*);
unsigned short to_wc(UCS2_CHAR*, // destination buffer
unsigned short, // length of the destination buffer in bytes
unsigned char*, // source buffer
unsigned short, // length of source buffer in bytes
short*, // variable to return error code
unsigned short*); // variable to return offset of the first
// unprocessed char
unsigned short contains(TDBB, unsigned char*,
unsigned short,
unsigned char*,
@ -196,7 +200,7 @@ public:
unsigned short,
unsigned char*,
unsigned short);
unsigned short mbtowc(WCHAR*, unsigned char*, unsigned short);
unsigned short mbtowc(UCS2_CHAR*, unsigned char*, unsigned short);
};
class TextTypeMB : public TextType
@ -229,7 +233,7 @@ public:
unsigned short,
unsigned char*,
unsigned short);
unsigned short mbtowc(WCHAR*, unsigned char*, unsigned short);
unsigned short mbtowc(UCS2_CHAR*, unsigned char*, unsigned short);
};
#define TEXTTYPE_init 1 /* object has been init'ed */

View File

@ -53,7 +53,7 @@ typedef SSHORT COLLATE_ID;
typedef USHORT TTYPE_ID;
typedef SCHAR ASCII;
typedef unsigned char NCHAR; /* Narrow Char */
typedef unsigned short WCHAR; /* Wide Char */
typedef unsigned short UCS2_CHAR; /* Not very Wide Char */
typedef unsigned char MBCHAR; /* Multibyte Char */
#define type_texttype 54

View File

@ -1,4 +1,4 @@
#ident "$Id: config.h.in,v 1.69 2003-02-13 22:49:16 bellardo Exp $"
#ident "$Id: config.h.in,v 1.70 2003-02-18 05:24:35 aafemt Exp $"
/*
* 2002.02.15 Sean Leyne - Code Cleanup, removed obsolete ports:
@ -77,6 +77,8 @@
#undef HAVE_SIGACTION
#undef HAVE_SETITIMER
#undef HAVE_SNPRINTF
#undef HAVE_SWAB
#undef HAVE__SWAB
#undef HAVE_MMAP
#undef HAVE_ATEXIT
#undef HAVE_ON_EXIT