Changeset: af97418781ad for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/af97418781ad Modified Files: clients/Tests/exports.stable.out gdk/gdk.h gdk/gdk_string.c monetdb5/modules/atoms/Tests/asciify.test monetdb5/modules/atoms/str.c monetdb5/modules/kernel/Tests/batstr_asciify.test monetdb5/modules/kernel/batstr.c Branch: ascii-flag Log Message:
Move asciify into GDK layer. diffs (truncated from 953 to 300 lines): diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out --- a/clients/Tests/exports.stable.out +++ b/clients/Tests/exports.stable.out @@ -16,6 +16,7 @@ BAT *BATallnotequal_grp2(BAT *l, BAT *r, BAT *BATanyequal_grp(BAT *l, BAT *r, BAT *g, BAT *e, BAT *s); BAT *BATanyequal_grp2(BAT *l, BAT *r, BAT *rid, BAT *g, BAT *e, BAT *s); gdk_return BATappend(BAT *b, BAT *n, BAT *s, bool force) __attribute__((__warn_unused_result__)); +BAT *BATasciify(BAT *b, BAT *s); void BATassertProps(BAT *b); atomDesc BATatoms[MAXATOMS]; BAT *BATattach(int tt, const char *heapfile, role_t role); @@ -268,6 +269,7 @@ gdk_return GDKanalyticalntile(BAT *r, BA gdk_return GDKanalyticalprod(BAT *r, BAT *p, BAT *o, BAT *b, BAT *s, BAT *e, int tp1, int tp2, int frame_type); gdk_return GDKanalyticalsum(BAT *r, BAT *p, BAT *o, BAT *b, BAT *s, BAT *e, int tp1, int tp2, int frame_type); gdk_return GDKanalyticalwindowbounds(BAT *r, BAT *b, BAT *p, BAT *l, const void *restrict bound, int tp1, int tp2, int unit, bool preceding, oid first_half); +gdk_return GDKasciify(char **restrict buf, size_t *restrict buflen, const char *restrict s); int GDKatomcnt; void GDKclrerr(void); gdk_return GDKcopyenv(BAT **key, BAT **val, bool writable); diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -2348,6 +2348,8 @@ gdk_export int GDKstrcasecmp(const char gdk_export char *GDKstrcasestr(const char *haystack, const char *needle); gdk_export BAT *BATtolower(BAT *b, BAT *s); gdk_export BAT *BATtoupper(BAT *b, BAT *s); +gdk_export gdk_return GDKasciify(char **restrict buf, size_t *restrict buflen, const char *restrict s); +gdk_export BAT *BATasciify(BAT *b, BAT *s); /* * @- BAT sample operators diff --git a/gdk/gdk_string.c b/gdk/gdk_string.c --- a/gdk/gdk_string.c +++ b/gdk/gdk_string.c @@ -5062,3 +5062,657 @@ GDKstrcasestr(const char *haystack, cons } return NULL; } + +static const int asciify[1280] = { + [0xC3] = 256 - 0x80, /* 303 ... */ + [256+0x0] = 'A', /* U+00C0: LATIN CAPITAL LETTER A WITH GRAVE */ + [256+0x1] = 'A', /* U+00C1: LATIN CAPITAL LETTER A WITH ACUTE */ + [256+0x2] = 'A', /* U+00C2: LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ + [256+0x3] = 'A', /* U+00C3: LATIN CAPITAL LETTER A WITH TILDE */ + [256+0x4] = 'A', /* U+00C4: LATIN CAPITAL LETTER A WITH DIAERESIS */ + [256+0x5] = 'A', /* U+00C5: LATIN CAPITAL LETTER A WITH RING ABOVE */ + [256+0x7] = 'C', /* U+00C7: LATIN CAPITAL LETTER C WITH CEDILLA */ + [256+0x8] = 'E', /* U+00C8: LATIN CAPITAL LETTER E WITH GRAVE */ + [256+0x9] = 'E', /* U+00C9: LATIN CAPITAL LETTER E WITH ACUTE */ + [256+0xA] = 'E', /* U+00CA: LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ + [256+0xB] = 'E', /* U+00CB: LATIN CAPITAL LETTER E WITH DIAERESIS */ + [256+0xC] = 'I', /* U+00CC: LATIN CAPITAL LETTER I WITH GRAVE */ + [256+0xD] = 'I', /* U+00CD: LATIN CAPITAL LETTER I WITH ACUTE */ + [256+0xE] = 'I', /* U+00CE: LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ + [256+0xF] = 'I', /* U+00CF: LATIN CAPITAL LETTER I WITH DIAERESIS */ + [256+0x11] = 'N', /* U+00D1: LATIN CAPITAL LETTER N WITH TILDE */ + [256+0x12] = 'O', /* U+00D2: LATIN CAPITAL LETTER O WITH GRAVE */ + [256+0x13] = 'O', /* U+00D3: LATIN CAPITAL LETTER O WITH ACUTE */ + [256+0x14] = 'O', /* U+00D4: LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ + [256+0x15] = 'O', /* U+00D5: LATIN CAPITAL LETTER O WITH TILDE */ + [256+0x16] = 'O', /* U+00D6: LATIN CAPITAL LETTER O WITH DIAERESIS */ + [256+0x19] = 'U', /* U+00D9: LATIN CAPITAL LETTER U WITH GRAVE */ + [256+0x1A] = 'U', /* U+00DA: LATIN CAPITAL LETTER U WITH ACUTE */ + [256+0x1B] = 'U', /* U+00DB: LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ + [256+0x1C] = 'U', /* U+00DC: LATIN CAPITAL LETTER U WITH DIAERESIS */ + [256+0x1D] = 'Y', /* U+00DD: LATIN CAPITAL LETTER Y WITH ACUTE */ + [256+0x20] = 'a', /* U+00E0: LATIN SMALL LETTER A WITH GRAVE */ + [256+0x21] = 'a', /* U+00E1: LATIN SMALL LETTER A WITH ACUTE */ + [256+0x22] = 'a', /* U+00E2: LATIN SMALL LETTER A WITH CIRCUMFLEX */ + [256+0x23] = 'a', /* U+00E3: LATIN SMALL LETTER A WITH TILDE */ + [256+0x24] = 'a', /* U+00E4: LATIN SMALL LETTER A WITH DIAERESIS */ + [256+0x25] = 'a', /* U+00E5: LATIN SMALL LETTER A WITH RING ABOVE */ + [256+0x27] = 'c', /* U+00E7: LATIN SMALL LETTER C WITH CEDILLA */ + [256+0x28] = 'e', /* U+00E8: LATIN SMALL LETTER E WITH GRAVE */ + [256+0x29] = 'e', /* U+00E9: LATIN SMALL LETTER E WITH ACUTE */ + [256+0x2A] = 'e', /* U+00EA: LATIN SMALL LETTER E WITH CIRCUMFLEX */ + [256+0x2B] = 'e', /* U+00EB: LATIN SMALL LETTER E WITH DIAERESIS */ + [256+0x2C] = 'i', /* U+00EC: LATIN SMALL LETTER I WITH GRAVE */ + [256+0x2D] = 'i', /* U+00ED: LATIN SMALL LETTER I WITH ACUTE */ + [256+0x2E] = 'i', /* U+00EE: LATIN SMALL LETTER I WITH CIRCUMFLEX */ + [256+0x2F] = 'i', /* U+00EF: LATIN SMALL LETTER I WITH DIAERESIS */ + [256+0x31] = 'n', /* U+00F1: LATIN SMALL LETTER N WITH TILDE */ + [256+0x32] = 'o', /* U+00F2: LATIN SMALL LETTER O WITH GRAVE */ + [256+0x33] = 'o', /* U+00F3: LATIN SMALL LETTER O WITH ACUTE */ + [256+0x34] = 'o', /* U+00F4: LATIN SMALL LETTER O WITH CIRCUMFLEX */ + [256+0x35] = 'o', /* U+00F5: LATIN SMALL LETTER O WITH TILDE */ + [256+0x36] = 'o', /* U+00F6: LATIN SMALL LETTER O WITH DIAERESIS */ + [256+0x39] = 'u', /* U+00F9: LATIN SMALL LETTER U WITH GRAVE */ + [256+0x3A] = 'u', /* U+00FA: LATIN SMALL LETTER U WITH ACUTE */ + [256+0x3B] = 'u', /* U+00FB: LATIN SMALL LETTER U WITH CIRCUMFLEX */ + [256+0x3C] = 'u', /* U+00FC: LATIN SMALL LETTER U WITH DIAERESIS */ + [256+0x3D] = 'y', /* U+00FD: LATIN SMALL LETTER Y WITH ACUTE */ + [256+0x3F] = 'y', /* U+00FF: LATIN SMALL LETTER Y WITH DIAERESIS */ + [0xC4] = 320 - 0x80, /* 304 ... */ + [320+0x0] = 'A', /* U+0100: LATIN CAPITAL LETTER A WITH MACRON */ + [320+0x1] = 'a', /* U+0101: LATIN SMALL LETTER A WITH MACRON */ + [320+0x2] = 'A', /* U+0102: LATIN CAPITAL LETTER A WITH BREVE */ + [320+0x3] = 'a', /* U+0103: LATIN SMALL LETTER A WITH BREVE */ + [320+0x4] = 'A', /* U+0104: LATIN CAPITAL LETTER A WITH OGONEK */ + [320+0x5] = 'a', /* U+0105: LATIN SMALL LETTER A WITH OGONEK */ + [320+0x6] = 'C', /* U+0106: LATIN CAPITAL LETTER C WITH ACUTE */ + [320+0x7] = 'c', /* U+0107: LATIN SMALL LETTER C WITH ACUTE */ + [320+0x8] = 'C', /* U+0108: LATIN CAPITAL LETTER C WITH CIRCUMFLEX */ + [320+0x9] = 'c', /* U+0109: LATIN SMALL LETTER C WITH CIRCUMFLEX */ + [320+0xA] = 'C', /* U+010A: LATIN CAPITAL LETTER C WITH DOT ABOVE */ + [320+0xB] = 'c', /* U+010B: LATIN SMALL LETTER C WITH DOT ABOVE */ + [320+0xC] = 'C', /* U+010C: LATIN CAPITAL LETTER C WITH CARON */ + [320+0xD] = 'c', /* U+010D: LATIN SMALL LETTER C WITH CARON */ + [320+0xE] = 'D', /* U+010E: LATIN CAPITAL LETTER D WITH CARON */ + [320+0xF] = 'd', /* U+010F: LATIN SMALL LETTER D WITH CARON */ + [320+0x12] = 'E', /* U+0112: LATIN CAPITAL LETTER E WITH MACRON */ + [320+0x13] = 'e', /* U+0113: LATIN SMALL LETTER E WITH MACRON */ + [320+0x14] = 'E', /* U+0114: LATIN CAPITAL LETTER E WITH BREVE */ + [320+0x15] = 'e', /* U+0115: LATIN SMALL LETTER E WITH BREVE */ + [320+0x16] = 'E', /* U+0116: LATIN CAPITAL LETTER E WITH DOT ABOVE */ + [320+0x17] = 'e', /* U+0117: LATIN SMALL LETTER E WITH DOT ABOVE */ + [320+0x18] = 'E', /* U+0118: LATIN CAPITAL LETTER E WITH OGONEK */ + [320+0x19] = 'e', /* U+0119: LATIN SMALL LETTER E WITH OGONEK */ + [320+0x1A] = 'E', /* U+011A: LATIN CAPITAL LETTER E WITH CARON */ + [320+0x1B] = 'e', /* U+011B: LATIN SMALL LETTER E WITH CARON */ + [320+0x1C] = 'G', /* U+011C: LATIN CAPITAL LETTER G WITH CIRCUMFLEX */ + [320+0x1D] = 'g', /* U+011D: LATIN SMALL LETTER G WITH CIRCUMFLEX */ + [320+0x1E] = 'G', /* U+011E: LATIN CAPITAL LETTER G WITH BREVE */ + [320+0x1F] = 'g', /* U+011F: LATIN SMALL LETTER G WITH BREVE */ + [320+0x20] = 'G', /* U+0120: LATIN CAPITAL LETTER G WITH DOT ABOVE */ + [320+0x21] = 'g', /* U+0121: LATIN SMALL LETTER G WITH DOT ABOVE */ + [320+0x22] = 'G', /* U+0122: LATIN CAPITAL LETTER G WITH CEDILLA */ + [320+0x23] = 'g', /* U+0123: LATIN SMALL LETTER G WITH CEDILLA */ + [320+0x24] = 'H', /* U+0124: LATIN CAPITAL LETTER H WITH CIRCUMFLEX */ + [320+0x25] = 'h', /* U+0125: LATIN SMALL LETTER H WITH CIRCUMFLEX */ + [320+0x28] = 'I', /* U+0128: LATIN CAPITAL LETTER I WITH TILDE */ + [320+0x29] = 'i', /* U+0129: LATIN SMALL LETTER I WITH TILDE */ + [320+0x2A] = 'I', /* U+012A: LATIN CAPITAL LETTER I WITH MACRON */ + [320+0x2B] = 'i', /* U+012B: LATIN SMALL LETTER I WITH MACRON */ + [320+0x2C] = 'I', /* U+012C: LATIN CAPITAL LETTER I WITH BREVE */ + [320+0x2D] = 'i', /* U+012D: LATIN SMALL LETTER I WITH BREVE */ + [320+0x2E] = 'I', /* U+012E: LATIN CAPITAL LETTER I WITH OGONEK */ + [320+0x2F] = 'i', /* U+012F: LATIN SMALL LETTER I WITH OGONEK */ + [320+0x30] = 'I', /* U+0130: LATIN CAPITAL LETTER I WITH DOT ABOVE */ + [320+0x34] = 'J', /* U+0134: LATIN CAPITAL LETTER J WITH CIRCUMFLEX */ + [320+0x35] = 'j', /* U+0135: LATIN SMALL LETTER J WITH CIRCUMFLEX */ + [320+0x36] = 'K', /* U+0136: LATIN CAPITAL LETTER K WITH CEDILLA */ + [320+0x37] = 'k', /* U+0137: LATIN SMALL LETTER K WITH CEDILLA */ + [320+0x39] = 'L', /* U+0139: LATIN CAPITAL LETTER L WITH ACUTE */ + [320+0x3A] = 'l', /* U+013A: LATIN SMALL LETTER L WITH ACUTE */ + [320+0x3B] = 'L', /* U+013B: LATIN CAPITAL LETTER L WITH CEDILLA */ + [320+0x3C] = 'l', /* U+013C: LATIN SMALL LETTER L WITH CEDILLA */ + [320+0x3D] = 'L', /* U+013D: LATIN CAPITAL LETTER L WITH CARON */ + [320+0x3E] = 'l', /* U+013E: LATIN SMALL LETTER L WITH CARON */ + [0xC5] = 384 - 0x80, /* 305 ... */ + [384+0x3] = 'N', /* U+0143: LATIN CAPITAL LETTER N WITH ACUTE */ + [384+0x4] = 'n', /* U+0144: LATIN SMALL LETTER N WITH ACUTE */ + [384+0x5] = 'N', /* U+0145: LATIN CAPITAL LETTER N WITH CEDILLA */ + [384+0x6] = 'n', /* U+0146: LATIN SMALL LETTER N WITH CEDILLA */ + [384+0x7] = 'N', /* U+0147: LATIN CAPITAL LETTER N WITH CARON */ + [384+0x8] = 'n', /* U+0148: LATIN SMALL LETTER N WITH CARON */ + [384+0xC] = 'O', /* U+014C: LATIN CAPITAL LETTER O WITH MACRON */ + [384+0xD] = 'o', /* U+014D: LATIN SMALL LETTER O WITH MACRON */ + [384+0xE] = 'O', /* U+014E: LATIN CAPITAL LETTER O WITH BREVE */ + [384+0xF] = 'o', /* U+014F: LATIN SMALL LETTER O WITH BREVE */ + [384+0x10] = 'O', /* U+0150: LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ + [384+0x11] = 'o', /* U+0151: LATIN SMALL LETTER O WITH DOUBLE ACUTE */ + [384+0x14] = 'R', /* U+0154: LATIN CAPITAL LETTER R WITH ACUTE */ + [384+0x15] = 'r', /* U+0155: LATIN SMALL LETTER R WITH ACUTE */ + [384+0x16] = 'R', /* U+0156: LATIN CAPITAL LETTER R WITH CEDILLA */ + [384+0x17] = 'r', /* U+0157: LATIN SMALL LETTER R WITH CEDILLA */ + [384+0x18] = 'R', /* U+0158: LATIN CAPITAL LETTER R WITH CARON */ + [384+0x19] = 'r', /* U+0159: LATIN SMALL LETTER R WITH CARON */ + [384+0x1A] = 'S', /* U+015A: LATIN CAPITAL LETTER S WITH ACUTE */ + [384+0x1B] = 's', /* U+015B: LATIN SMALL LETTER S WITH ACUTE */ + [384+0x1C] = 'S', /* U+015C: LATIN CAPITAL LETTER S WITH CIRCUMFLEX */ + [384+0x1D] = 's', /* U+015D: LATIN SMALL LETTER S WITH CIRCUMFLEX */ + [384+0x1E] = 'S', /* U+015E: LATIN CAPITAL LETTER S WITH CEDILLA */ + [384+0x1F] = 's', /* U+015F: LATIN SMALL LETTER S WITH CEDILLA */ + [384+0x20] = 'S', /* U+0160: LATIN CAPITAL LETTER S WITH CARON */ + [384+0x21] = 's', /* U+0161: LATIN SMALL LETTER S WITH CARON */ + [384+0x22] = 'T', /* U+0162: LATIN CAPITAL LETTER T WITH CEDILLA */ + [384+0x23] = 't', /* U+0163: LATIN SMALL LETTER T WITH CEDILLA */ + [384+0x24] = 'T', /* U+0164: LATIN CAPITAL LETTER T WITH CARON */ + [384+0x25] = 't', /* U+0165: LATIN SMALL LETTER T WITH CARON */ + [384+0x28] = 'U', /* U+0168: LATIN CAPITAL LETTER U WITH TILDE */ + [384+0x29] = 'u', /* U+0169: LATIN SMALL LETTER U WITH TILDE */ + [384+0x2A] = 'U', /* U+016A: LATIN CAPITAL LETTER U WITH MACRON */ + [384+0x2B] = 'u', /* U+016B: LATIN SMALL LETTER U WITH MACRON */ + [384+0x2C] = 'U', /* U+016C: LATIN CAPITAL LETTER U WITH BREVE */ + [384+0x2D] = 'u', /* U+016D: LATIN SMALL LETTER U WITH BREVE */ + [384+0x2E] = 'U', /* U+016E: LATIN CAPITAL LETTER U WITH RING ABOVE */ + [384+0x2F] = 'u', /* U+016F: LATIN SMALL LETTER U WITH RING ABOVE */ + [384+0x30] = 'U', /* U+0170: LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ + [384+0x31] = 'u', /* U+0171: LATIN SMALL LETTER U WITH DOUBLE ACUTE */ + [384+0x32] = 'U', /* U+0172: LATIN CAPITAL LETTER U WITH OGONEK */ + [384+0x33] = 'u', /* U+0173: LATIN SMALL LETTER U WITH OGONEK */ + [384+0x34] = 'W', /* U+0174: LATIN CAPITAL LETTER W WITH CIRCUMFLEX */ + [384+0x35] = 'w', /* U+0175: LATIN SMALL LETTER W WITH CIRCUMFLEX */ + [384+0x36] = 'Y', /* U+0176: LATIN CAPITAL LETTER Y WITH CIRCUMFLEX */ + [384+0x37] = 'y', /* U+0177: LATIN SMALL LETTER Y WITH CIRCUMFLEX */ + [384+0x38] = 'Y', /* U+0178: LATIN CAPITAL LETTER Y WITH DIAERESIS */ + [384+0x39] = 'Z', /* U+0179: LATIN CAPITAL LETTER Z WITH ACUTE */ + [384+0x3A] = 'z', /* U+017A: LATIN SMALL LETTER Z WITH ACUTE */ + [384+0x3B] = 'Z', /* U+017B: LATIN CAPITAL LETTER Z WITH DOT ABOVE */ + [384+0x3C] = 'z', /* U+017C: LATIN SMALL LETTER Z WITH DOT ABOVE */ + [384+0x3D] = 'Z', /* U+017D: LATIN CAPITAL LETTER Z WITH CARON */ + [384+0x3E] = 'z', /* U+017E: LATIN SMALL LETTER Z WITH CARON */ + [0xC6] = 448 - 0x80, /* 306 ... */ + [448+0x20] = 'O', /* U+01A0: LATIN CAPITAL LETTER O WITH HORN */ + [448+0x21] = 'o', /* U+01A1: LATIN SMALL LETTER O WITH HORN */ + [448+0x2F] = 'U', /* U+01AF: LATIN CAPITAL LETTER U WITH HORN */ + [448+0x30] = 'u', /* U+01B0: LATIN SMALL LETTER U WITH HORN */ + [0xC7] = 512 - 0x80, /* 307 ... */ + [512+0xD] = 'A', /* U+01CD: LATIN CAPITAL LETTER A WITH CARON */ + [512+0xE] = 'a', /* U+01CE: LATIN SMALL LETTER A WITH CARON */ + [512+0xF] = 'I', /* U+01CF: LATIN CAPITAL LETTER I WITH CARON */ + [512+0x10] = 'i', /* U+01D0: LATIN SMALL LETTER I WITH CARON */ + [512+0x11] = 'O', /* U+01D1: LATIN CAPITAL LETTER O WITH CARON */ + [512+0x12] = 'o', /* U+01D2: LATIN SMALL LETTER O WITH CARON */ + [512+0x13] = 'U', /* U+01D3: LATIN CAPITAL LETTER U WITH CARON */ + [512+0x14] = 'u', /* U+01D4: LATIN SMALL LETTER U WITH CARON */ + [512+0x15] = 'U', /* U+01D5: LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON */ + [512+0x16] = 'u', /* U+01D6: LATIN SMALL LETTER U WITH DIAERESIS AND MACRON */ + [512+0x17] = 'U', /* U+01D7: LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE */ + [512+0x18] = 'u', /* U+01D8: LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE */ + [512+0x19] = 'U', /* U+01D9: LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON */ + [512+0x1A] = 'u', /* U+01DA: LATIN SMALL LETTER U WITH DIAERESIS AND CARON */ + [512+0x1B] = 'U', /* U+01DB: LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE */ + [512+0x1C] = 'u', /* U+01DC: LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE */ + [512+0x1E] = 'A', /* U+01DE: LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */ + [512+0x1F] = 'a', /* U+01DF: LATIN SMALL LETTER A WITH DIAERESIS AND MACRON */ + [512+0x20] = 'A', /* U+01E0: LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON */ + [512+0x21] = 'a', /* U+01E1: LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON */ + [512+0x26] = 'G', /* U+01E6: LATIN CAPITAL LETTER G WITH CARON */ + [512+0x27] = 'g', /* U+01E7: LATIN SMALL LETTER G WITH CARON */ + [512+0x28] = 'K', /* U+01E8: LATIN CAPITAL LETTER K WITH CARON */ + [512+0x29] = 'k', /* U+01E9: LATIN SMALL LETTER K WITH CARON */ + [512+0x2A] = 'O', /* U+01EA: LATIN CAPITAL LETTER O WITH OGONEK */ + [512+0x2B] = 'o', /* U+01EB: LATIN SMALL LETTER O WITH OGONEK */ + [512+0x2C] = 'O', /* U+01EC: LATIN CAPITAL LETTER O WITH OGONEK AND MACRON */ + [512+0x2D] = 'o', /* U+01ED: LATIN SMALL LETTER O WITH OGONEK AND MACRON */ + [512+0x30] = 'j', /* U+01F0: LATIN SMALL LETTER J WITH CARON */ + [512+0x34] = 'G', /* U+01F4: LATIN CAPITAL LETTER G WITH ACUTE */ + [512+0x35] = 'g', /* U+01F5: LATIN SMALL LETTER G WITH ACUTE */ + [512+0x38] = 'N', /* U+01F8: LATIN CAPITAL LETTER N WITH GRAVE */ + [512+0x39] = 'n', /* U+01F9: LATIN SMALL LETTER N WITH GRAVE */ + [512+0x3A] = 'A', /* U+01FA: LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE */ + [512+0x3B] = 'a', /* U+01FB: LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE */ + [0xC8] = 576 - 0x80, /* 310 ... */ + [576+0x0] = 'A', /* U+0200: LATIN CAPITAL LETTER A WITH DOUBLE GRAVE */ + [576+0x1] = 'a', /* U+0201: LATIN SMALL LETTER A WITH DOUBLE GRAVE */ + [576+0x2] = 'A', /* U+0202: LATIN CAPITAL LETTER A WITH INVERTED BREVE */ + [576+0x3] = 'a', /* U+0203: LATIN SMALL LETTER A WITH INVERTED BREVE */ + [576+0x4] = 'E', /* U+0204: LATIN CAPITAL LETTER E WITH DOUBLE GRAVE */ + [576+0x5] = 'e', /* U+0205: LATIN SMALL LETTER E WITH DOUBLE GRAVE */ + [576+0x6] = 'E', /* U+0206: LATIN CAPITAL LETTER E WITH INVERTED BREVE */ + [576+0x7] = 'e', /* U+0207: LATIN SMALL LETTER E WITH INVERTED BREVE */ + [576+0x8] = 'I', /* U+0208: LATIN CAPITAL LETTER I WITH DOUBLE GRAVE */ + [576+0x9] = 'i', /* U+0209: LATIN SMALL LETTER I WITH DOUBLE GRAVE */ + [576+0xA] = 'I', /* U+020A: LATIN CAPITAL LETTER I WITH INVERTED BREVE */ + [576+0xB] = 'i', /* U+020B: LATIN SMALL LETTER I WITH INVERTED BREVE */ + [576+0xC] = 'O', /* U+020C: LATIN CAPITAL LETTER O WITH DOUBLE GRAVE */ + [576+0xD] = 'o', /* U+020D: LATIN SMALL LETTER O WITH DOUBLE GRAVE */ + [576+0xE] = 'O', /* U+020E: LATIN CAPITAL LETTER O WITH INVERTED BREVE */ + [576+0xF] = 'o', /* U+020F: LATIN SMALL LETTER O WITH INVERTED BREVE */ + [576+0x10] = 'R', /* U+0210: LATIN CAPITAL LETTER R WITH DOUBLE GRAVE */ + [576+0x11] = 'r', /* U+0211: LATIN SMALL LETTER R WITH DOUBLE GRAVE */ + [576+0x12] = 'R', /* U+0212: LATIN CAPITAL LETTER R WITH INVERTED BREVE */ + [576+0x13] = 'r', /* U+0213: LATIN SMALL LETTER R WITH INVERTED BREVE */ + [576+0x14] = 'U', /* U+0214: LATIN CAPITAL LETTER U WITH DOUBLE GRAVE */ + [576+0x15] = 'u', /* U+0215: LATIN SMALL LETTER U WITH DOUBLE GRAVE */ + [576+0x16] = 'U', /* U+0216: LATIN CAPITAL LETTER U WITH INVERTED BREVE */ + [576+0x17] = 'u', /* U+0217: LATIN SMALL LETTER U WITH INVERTED BREVE */ + [576+0x18] = 'S', /* U+0218: LATIN CAPITAL LETTER S WITH COMMA BELOW */ + [576+0x19] = 's', /* U+0219: LATIN SMALL LETTER S WITH COMMA BELOW */ + [576+0x1A] = 'T', /* U+021A: LATIN CAPITAL LETTER T WITH COMMA BELOW */ + [576+0x1B] = 't', /* U+021B: LATIN SMALL LETTER T WITH COMMA BELOW */ + [576+0x1E] = 'H', /* U+021E: LATIN CAPITAL LETTER H WITH CARON */ + [576+0x1F] = 'h', /* U+021F: LATIN SMALL LETTER H WITH CARON */ + [576+0x26] = 'A', /* U+0226: LATIN CAPITAL LETTER A WITH DOT ABOVE */ + [576+0x27] = 'a', /* U+0227: LATIN SMALL LETTER A WITH DOT ABOVE */ + [576+0x28] = 'E', /* U+0228: LATIN CAPITAL LETTER E WITH CEDILLA */ + [576+0x29] = 'e', /* U+0229: LATIN SMALL LETTER E WITH CEDILLA */ + [576+0x2A] = 'O', /* U+022A: LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON */ + [576+0x2B] = 'o', /* U+022B: LATIN SMALL LETTER O WITH DIAERESIS AND MACRON */ + [576+0x2C] = 'O', /* U+022C: LATIN CAPITAL LETTER O WITH TILDE AND MACRON */ + [576+0x2D] = 'o', /* U+022D: LATIN SMALL LETTER O WITH TILDE AND MACRON */ + [576+0x2E] = 'O', /* U+022E: LATIN CAPITAL LETTER O WITH DOT ABOVE */ + [576+0x2F] = 'o', /* U+022F: LATIN SMALL LETTER O WITH DOT ABOVE */ + [576+0x30] = 'O', /* U+0230: LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON */ + [576+0x31] = 'o', /* U+0231: LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON */ + [576+0x32] = 'Y', /* U+0232: LATIN CAPITAL LETTER Y WITH MACRON */ + [576+0x33] = 'y', /* U+0233: LATIN SMALL LETTER Y WITH MACRON */ + [0xCD] = 640 - 0x80, /* 315 ... */ + [640+0x3E] = ';', /* U+037E: GREEK QUESTION MARK */ + [0xE1] = 704 - 0x80, /* 341 ... */ + [704+0x38] = 768 - 0x80, /* 341 270 ... */ + [768+0x0] = 'A', /* U+1E00: LATIN CAPITAL LETTER A WITH RING BELOW */ + [768+0x1] = 'a', /* U+1E01: LATIN SMALL LETTER A WITH RING BELOW */ + [768+0x2] = 'B', /* U+1E02: LATIN CAPITAL LETTER B WITH DOT ABOVE */ + [768+0x3] = 'b', /* U+1E03: LATIN SMALL LETTER B WITH DOT ABOVE */ + [768+0x4] = 'B', /* U+1E04: LATIN CAPITAL LETTER B WITH DOT BELOW */ + [768+0x5] = 'b', /* U+1E05: LATIN SMALL LETTER B WITH DOT BELOW */ _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org