windows-nt/Source/XPSP1/NT/inetsrv/intlwb/thai2/sth/lextable.hpp
2020-09-26 16:20:57 +08:00

562 lines
13 KiB
C++
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//+---------------------------------------------------------------------------
//
//
// Lextable.hpp
//
// History:
// created 7/99 aarayas
//
// ©1999 Microsoft Corporation
//----------------------------------------------------------------------------
#ifndef _LEXTABLE_HPP_
#define _LEXTABLE_HPP_
#include <windows.h>
/*************************************************
Lexical Table definition
*************************************************/
#define Lex_UpperFlag 0x01 /* upper case */
#define Lex_LowerFlag 0x02 /* lower case */
#define Lex_DigitFlag 0x04 /* decimal digits */
#define Lex_SpaceFlag 0x08 /* spacing characters */
#define Lex_PunctFlag 0x10 /* punctuation characters */
#define Lex_ControlFlag 0x20 /* control characters */
#define Lex_LexiconFlag 0x40
#define Lex_VowelFlag 0x80
#define NTRANSTAB 256
#define INUPPERPAGES(ch) (ch & 0xff00) // this is the same as ch > 0x00ff
/*************************************************
Lexical Table
*************************************************/
const BYTE rgFlags[NTRANSTAB] =
{
0x00, // 00
0x20, // 01
0x20, // 02
0x20, // 03
0x20, // 04
0x20, // 05
0x20, // 06
0x20, // 07
0x20, // 08
0x28, // 09 X
0x28, // 0a X
0x28, // 0b X
0x28, // 0c X
0x28, // 0d X
0x20, // 0e
0x20, // 0f
0x20, // 10
0x20, // 11
0x20, // 12
0x20, // 13
0x20, // 14
0x20, // 15
0x20, // 16
0x20, // 17
0x20, // 18
0x20, // 19
0x20, // 1a
0x20, // 1b
0x20, // 1c
0x20, // 1d
0x20, // 1e
0x20, // 1f
0x08, // 20 X
0x10, // 21 P (!)
0x10, // 22 P (")
0x10, // 23 P (#)
0x10, // 24 P ($)
0x10, // 25 P (%)
0x10, // 26 P (&)
0x50, // 27 PE (')
0x10, // 28 P (()
0x10, // 29 P ())
0x10, // 2a P (*)
0x10, // 2b P (+)
0x10, // 2c P (,)
0x50, // 2d PE (-)
0x50, // 2e PE (.)
0x50, // 2f PE (/)
0x44, // 30 D E (0)
0x44, // 31 D E (1)
0x44, // 32 D E (2)
0x44, // 33 D E (3)
0x44, // 34 D E (4)
0x44, // 35 D E (5)
0x44, // 36 D E (6)
0x44, // 37 D E (7)
0x44, // 38 D E (8)
0x44, // 39 D E (9)
0x10, // 3a P (:)
0x10, // 3b P (;)
0x10, // 3c P (<)
0x10, // 3d P (=)
0x10, // 3e P (>)
0x10, // 3f P (?)
0x10, // 40 P (@)
0xc1, // 41 U EV (A)
0x41, // 42 U E (B)
0x41, // 43 U E (C)
0x41, // 44 U E (D)
0xc1, // 45 U EV (E)
0x41, // 46 U E (F)
0x41, // 47 U E (G)
0x41, // 48 U E (H)
0xc1, // 49 U EV (I)
0x41, // 4a U E (J)
0x41, // 4b U E (K)
0x41, // 4c U E (L)
0x41, // 4d U E (M)
0x41, // 4e U E (N)
0xc1, // 4f U EV (O)
0x41, // 50 U E (P)
0x41, // 51 U E (Q)
0x41, // 52 U E (R)
0x41, // 53 U E (S)
0x41, // 54 U E (T)
0xc1, // 55 U EV (U)
0x41, // 56 U E (V)
0x41, // 57 U E (W)
0x41, // 58 U E (X)
0x41, // 59 U E (Y)
0x41, // 5a U E (Z)
0x10, // 5b P ([)
0x10, // 5c P (\)
0x10, // 5d P (])
0x10, // 5e P (^)
0x10, // 5f P (_)
0x10, // 60 P (`)
0xc2, // 61 L EV (a)
0x42, // 62 L E (b)
0x42, // 63 L E (c)
0x42, // 64 L E (d)
0xc2, // 65 L EV (e)
0x42, // 66 L E (f)
0x42, // 67 L E (g)
0x42, // 68 L E (h)
0xc2, // 69 L EV (i)
0x42, // 6a L E (j)
0x42, // 6b L E (k)
0x42, // 6c L E (l)
0x42, // 6d L E (m)
0x42, // 6e L E (n)
0xc2, // 6f L EV (o)
0x42, // 70 L E (p)
0x42, // 71 L E (q)
0x42, // 72 L E (r)
0x42, // 73 L E (s)
0x42, // 74 L E (t)
0xc2, // 75 L EV (u)
0x42, // 76 L E (v)
0x42, // 77 L E (w)
0x42, // 78 L E (x)
0x42, // 79 L E (y)
0x42, // 7a L E (z)
0x10, // 7b P ({)
0x10, // 7c P (|)
0x10, // 7d P (})
0x10, // 7e P (~)
0x20, // 7f ()
0x10, // 80 P (€)
0x20, // 81 (<28>)
0x20, // 82 ()
0x20, // 83 (ƒ)
0x20, // 84 („)
0x20, // 85 (…)
0x20, // 86 (†)
0x20, // 87 (‡)
0x20, // 88 (ˆ)
0x20, // 89 (‰)
0x20, // 8a (Š)
0x20, // 8b ()
0x20, // 8c (Œ)
0x20, // 8d (<28>)
0x20, // 8e (Ž)
0x20, // 8f (<28>)
0x20, // 90 (<28>)
0x20, // 91 ()
0x20, // 92 ()
0x20, // 93 (“)
0x20, // 94 (”)
0x20, // 95 (•)
0x20, // 96 ()
0x20, // 97 (—)
0x20, // 98 (˜)
0x20, // 99 (™)
0x20, // 9a (š)
0x20, // 9b ()
0x20, // 9c (œ)
0x20, // 9d (<28>)
0x20, // 9e (ž)
0x20, // 9f (Ÿ)
0x08, // a0 X ( )
0x10, // a1 P (¡)
0x10, // a2 P (¢)
0x10, // a3 P (£)
0x10, // a4 P (¤)
0x10, // a5 P (¥)
0x10, // a6 P (¦)
0x10, // a7 P (§)
0x10, // a8 P (¨)
0x10, // a9 P (©)
0x10, // aa P (ª)
0x10, // ab P («)
0x10, // ac P (¬)
0x10, // ad P (­)
0x10, // ae P (®)
0x10, // af P (¯)
0x10, // b0 P (°)
0x10, // b1 P (±)
0x54, // b2 D PE (²)
0x54, // b3 D PE (³)
0x10, // b4 P (´)
0x10, // b5 P (µ)
0x10, // b6 P (¶)
0x10, // b7 P (·)
0x10, // b8 P (¸)
0x54, // b9 D PE (¹)
0x10, // ba P (º)
0x10, // bb P (»)
0x54, // bc D PE (¼)
0x54, // bd D PE (½)
0x54, // be D PE (¾)
0x10, // bf P (¿)
0xc1, // c0 U EV (À)
0xc1, // c1 U EV (Á)
0xc1, // c2 U EV (Â)
0xc1, // c3 U EV (Ã)
0xc1, // c4 U EV (Ä)
0xc1, // c5 U EV (Å)
0x41, // c6 U E (Æ)
0x41, // c7 U E (Ç)
0xc1, // c8 U EV (È)
0xc1, // c9 U EV (É)
0xc1, // ca U EV (Ê)
0xc1, // cb U EV (Ë)
0xc1, // cc U EV (Ì)
0xc1, // cd U EV (Í)
0xc1, // ce U EV (Î)
0xc1, // cf U EV (Ï)
0x41, // d0 U E (Ð)
0x41, // d1 U E (Ñ)
0xc1, // d2 U EV (Ò)
0xc1, // d3 U EV (Ó)
0xc1, // d4 U EV (Ô)
0xc1, // d5 U EV (Õ)
0xc1, // d6 U EV (Ö)
0x10, // d7 P (×)
0xc1, // d8 U EV (Ø)
0xc1, // d9 U EV (Ù)
0xc1, // da U EV (Ú)
0xc1, // db U EV (Û)
0xc1, // dc U EV (Ü)
0x41, // dd U E (Ý)
0x41, // de U E (Þ)
0x42, // df L E (ß)
0xc2, // e0 L EV (à)
0xc2, // e1 L EV (á)
0xc2, // e2 L EV (â)
0xc2, // e3 L EV (ã)
0xc2, // e4 L EV (ä)
0xc2, // e5 L EV (å)
0x42, // e6 L E (æ)
0x42, // e7 L E (ç)
0xc2, // e8 L EV (è)
0xc2, // e9 L EV (é)
0xc2, // ea L EV (ê)
0xc2, // eb L EV (ë)
0xc2, // ec L EV (ì)
0xc2, // ed L EV (í)
0xc2, // ee L EV (î)
0xc2, // ef L EV (ï)
0x42, // f0 L E (ð)
0x42, // f1 L E (ñ)
0xc2, // f2 L EV (ò)
0xc2, // f3 L EV (ó)
0xc2, // f4 L EV (ô)
0xc2, // f5 L EV (õ)
0xc2, // f6 L EV (ö)
0x10, // f7 P (÷)
0xc2, // f8 L EV (ø)
0xc2, // f9 L EV (ù)
0xc2, // fa L EV (ú)
0xc2, // fb L EV (û)
0xc2, // fc L EV (ü)
0x42, // fd L E (ý)
0x42, // fe L E (þ)
0x42, // ff L E (ÿ)
};
const BYTE rgPunctFlags[NTRANSTAB] =
{
0x00, // 00
0x00, // 01
0x00, // 02
0x00, // 03
0x00, // 04
0x00, // 05
0x00, // 06
0x00, // 07
0x00, // 08
0x08, // 09 W
0x08, // 0a W
0x08, // 0b W
0x08, // 0c W
0x08, // 0d W
0x00, // 0e
0x00, // 0f
0x00, // 10
0x00, // 11
0x00, // 12
0x00, // 13
0x00, // 14
0x00, // 15
0x00, // 16
0x00, // 17
0x00, // 18
0x00, // 19
0x00, // 1a
0x00, // 1b
0x00, // 1c
0x00, // 1d
0x00, // 1e
0x00, // 1f
0x08, // 20 W
0x04, // 21 T (!)
0x05, // 22 L T (")
0x01, // 23 L (#)
0x01, // 24 L ($)
0x04, // 25 T (%)
0x00, // 26 (&)
0x05, // 27 L T (')
0x01, // 28 L (()
0x04, // 29 T ())
0x08, // 2a W (*)
0x00, // 2b (+)
0x04, // 2c T (,)
0x02, // 2d J (-)
0x04, // 2e T (.)
0x02, // 2f J (/)
0x00, // 30 (0)
0x00, // 31 (1)
0x00, // 32 (2)
0x00, // 33 (3)
0x00, // 34 (4)
0x00, // 35 (5)
0x00, // 36 (6)
0x00, // 37 (7)
0x00, // 38 (8)
0x00, // 39 (9)
0x04, // 3a T (:)
0x04, // 3b T (;)
0x09, // 3c L W (<)
0x08, // 3d W (=)
0x0c, // 3e TW (>)
0x04, // 3f T (?)
0x02, // 40 J (@)
0x00, // 41 (A)
0x00, // 42 (B)
0x00, // 43 (C)
0x00, // 44 (D)
0x00, // 45 (E)
0x00, // 46 (F)
0x00, // 47 (G)
0x00, // 48 (H)
0x00, // 49 (I)
0x00, // 4a (J)
0x00, // 4b (K)
0x00, // 4c (L)
0x00, // 4d (M)
0x00, // 4e (N)
0x00, // 4f (O)
0x00, // 50 (P)
0x00, // 51 (Q)
0x00, // 52 (R)
0x00, // 53 (S)
0x00, // 54 (T)
0x00, // 55 (U)
0x00, // 56 (V)
0x00, // 57 (W)
0x00, // 58 (X)
0x00, // 59 (Y)
0x00, // 5a (Z)
0x01, // 5b L ([)
0x02, // 5c J (\)
0x04, // 5d T (])
0x00, // 5e (^)
0x00, // 5f (_)
0x00, // 60 (`)
0x00, // 61 (a)
0x00, // 62 (b)
0x00, // 63 (c)
0x00, // 64 (d)
0x00, // 65 (e)
0x00, // 66 (f)
0x00, // 67 (g)
0x00, // 68 (h)
0x00, // 69 (i)
0x00, // 6a (j)
0x00, // 6b (k)
0x00, // 6c (l)
0x00, // 6d (m)
0x00, // 6e (n)
0x00, // 6f (o)
0x00, // 70 (p)
0x00, // 71 (q)
0x00, // 72 (r)
0x00, // 73 (s)
0x00, // 74 (t)
0x00, // 75 (u)
0x00, // 76 (v)
0x00, // 77 (w)
0x00, // 78 (x)
0x00, // 79 (y)
0x00, // 7a (z)
0x01, // 7b L ({)
0x00, // 7c (|)
0x04, // 7d T (})
0x00, // 7e (~)
0x00, // 7f ()
0x01, // 80 L (€)
0x00, // 81 (<28>)
0x00, // 82 ()
0x00, // 83 (ƒ)
0x00, // 84 („)
0x00, // 85 (…)
0x00, // 86 (†)
0x00, // 87 (‡)
0x00, // 88 (ˆ)
0x00, // 89 (‰)
0x00, // 8a (Š)
0x00, // 8b ()
0x00, // 8c (Œ)
0x00, // 8d (<28>)
0x00, // 8e (Ž)
0x00, // 8f (<28>)
0x00, // 90 (<28>)
0x00, // 91 ()
0x00, // 92 ()
0x00, // 93 (“)
0x00, // 94 (”)
0x00, // 95 (•)
0x00, // 96 ()
0x00, // 97 (—)
0x00, // 98 (˜)
0x00, // 99 (™)
0x00, // 9a (š)
0x00, // 9b ()
0x00, // 9c (œ)
0x00, // 9d (<28>)
0x00, // 9e (ž)
0x00, // 9f (Ÿ)
0x08, // a0 W ( )
0x00, // a1 (¡)
0x00, // a2 (¢)
0x00, // a3 (£)
0x00, // a4 (¤)
0x00, // a5 (¥)
0x00, // a6 (¦)
0x00, // a7 (§)
0x00, // a8 (¨)
0x00, // a9 (©)
0x00, // aa (ª)
0x00, // ab («)
0x00, // ac (¬)
0x00, // ad (­)
0x00, // ae (®)
0x00, // af (¯)
0x00, // b0 (°)
0x00, // b1 (±)
0x00, // b2 (²)
0x00, // b3 (³)
0x00, // b4 (´)
0x00, // b5 (µ)
0x00, // b6 (¶)
0x00, // b7 (·)
0x00, // b8 (¸)
0x00, // b9 (¹)
0x00, // ba (º)
0x00, // bb (»)
0x00, // bc (¼)
0x00, // bd (½)
0x00, // be (¾)
0x00, // bf (¿)
0x00, // c0 (À)
0x00, // c1 (Á)
0x00, // c2 (Â)
0x00, // c3 (Ã)
0x00, // c4 (Ä)
0x00, // c5 (Å)
0x00, // c6 (Æ)
0x00, // c7 (Ç)
0x00, // c8 (È)
0x00, // c9 (É)
0x00, // ca (Ê)
0x00, // cb (Ë)
0x00, // cc (Ì)
0x00, // cd (Í)
0x00, // ce (Î)
0x00, // cf (Ï)
0x00, // d0 (Ð)
0x00, // d1 (Ñ)
0x00, // d2 (Ò)
0x00, // d3 (Ó)
0x00, // d4 (Ô)
0x00, // d5 (Õ)
0x00, // d6 (Ö)
0x00, // d7 (×)
0x00, // d8 (Ø)
0x00, // d9 (Ù)
0x00, // da (Ú)
0x00, // db (Û)
0x00, // dc (Ü)
0x00, // dd (Ý)
0x00, // de (Þ)
0x00, // df (ß)
0x00, // e0 (à)
0x00, // e1 (á)
0x00, // e2 (â)
0x00, // e3 (ã)
0x00, // e4 (ä)
0x00, // e5 (å)
0x00, // e6 (æ)
0x00, // e7 (ç)
0x00, // e8 (è)
0x00, // e9 (é)
0x00, // ea (ê)
0x00, // eb (ë)
0x00, // ec (ì)
0x00, // ed (í)
0x00, // ee (î)
0x00, // ef (ï)
0x00, // f0 (ð)
0x00, // f1 (ñ)
0x00, // f2 (ò)
0x00, // f3 (ó)
0x00, // f4 (ô)
0x00, // f5 (õ)
0x00, // f6 (ö)
0x00, // f7 (÷)
0x00, // f8 (ø)
0x00, // f9 (ù)
0x00, // fa (ú)
0x00, // fb (û)
0x00, // fc (ü)
0x00, // fd (ý)
0x00, // fe (þ)
0x00, // ff (ÿ)
};
/*************************************************
Functions definition - define lextable.cpp
*************************************************/
BOOL IsUpperPunctW(const WCHAR ch);
BOOL IsUpperWordDelimW(WCHAR wc);
BOOL TWB_IsCharPunctW(WCHAR ch);
BOOL TWB_IsCharWordDelimW(WCHAR ch);
bool IsThaiChar(const WCHAR ch);
bool IsThaiNumeric(const WCHAR ch);
#endif