windows-nt/Source/XPSP1/NT/inetsrv/intlwb/thai2/sth/lextable.hpp

562 lines
13 KiB
C++
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
//+---------------------------------------------------------------------------
//
//
// Lextable.hpp
//
// History:
// created 7/99 aarayas
//
// <20>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 (<28>)
0x20, // 81 (<28>)
0x20, // 82 (<28>)
0x20, // 83 (<28>)
0x20, // 84 (<28>)
0x20, // 85 (<28>)
0x20, // 86 (<28>)
0x20, // 87 (<28>)
0x20, // 88 (<28>)
0x20, // 89 (<28>)
0x20, // 8a (<28>)
0x20, // 8b (<28>)
0x20, // 8c (<28>)
0x20, // 8d (<28>)
0x20, // 8e (<28>)
0x20, // 8f (<28>)
0x20, // 90 (<28>)
0x20, // 91 (<28>)
0x20, // 92 (<28>)
0x20, // 93 (<28>)
0x20, // 94 (<28>)
0x20, // 95 (<28>)
0x20, // 96 (<28>)
0x20, // 97 (<28>)
0x20, // 98 (<28>)
0x20, // 99 (<28>)
0x20, // 9a (<28>)
0x20, // 9b (<28>)
0x20, // 9c (<28>)
0x20, // 9d (<28>)
0x20, // 9e (<28>)
0x20, // 9f (<28>)
0x08, // a0 X (<28>)
0x10, // a1 P (<28>)
0x10, // a2 P (<28>)
0x10, // a3 P (<28>)
0x10, // a4 P (<28>)
0x10, // a5 P (<28>)
0x10, // a6 P (<28>)
0x10, // a7 P (<28>)
0x10, // a8 P (<28>)
0x10, // a9 P (<28>)
0x10, // aa P (<28>)
0x10, // ab P (<28>)
0x10, // ac P (<28>)
0x10, // ad P (<28>)
0x10, // ae P (<28>)
0x10, // af P (<28>)
0x10, // b0 P (<28>)
0x10, // b1 P (<28>)
0x54, // b2 D PE (<28>)
0x54, // b3 D PE (<28>)
0x10, // b4 P (<28>)
0x10, // b5 P (<28>)
0x10, // b6 P (<28>)
0x10, // b7 P (<28>)
0x10, // b8 P (<28>)
0x54, // b9 D PE (<28>)
0x10, // ba P (<28>)
0x10, // bb P (<28>)
0x54, // bc D PE (<28>)
0x54, // bd D PE (<28>)
0x54, // be D PE (<28>)
0x10, // bf P (<28>)
0xc1, // c0 U EV (<28>)
0xc1, // c1 U EV (<28>)
0xc1, // c2 U EV (<28>)
0xc1, // c3 U EV (<28>)
0xc1, // c4 U EV (<28>)
0xc1, // c5 U EV (<28>)
0x41, // c6 U E (<28>)
0x41, // c7 U E (<28>)
0xc1, // c8 U EV (<28>)
0xc1, // c9 U EV (<28>)
0xc1, // ca U EV (<28>)
0xc1, // cb U EV (<28>)
0xc1, // cc U EV (<28>)
0xc1, // cd U EV (<28>)
0xc1, // ce U EV (<28>)
0xc1, // cf U EV (<28>)
0x41, // d0 U E (<28>)
0x41, // d1 U E (<28>)
0xc1, // d2 U EV (<28>)
0xc1, // d3 U EV (<28>)
0xc1, // d4 U EV (<28>)
0xc1, // d5 U EV (<28>)
0xc1, // d6 U EV (<28>)
0x10, // d7 P (<28>)
0xc1, // d8 U EV (<28>)
0xc1, // d9 U EV (<28>)
0xc1, // da U EV (<28>)
0xc1, // db U EV (<28>)
0xc1, // dc U EV (<28>)
0x41, // dd U E (<28>)
0x41, // de U E (<28>)
0x42, // df L E (<28>)
0xc2, // e0 L EV (<28>)
0xc2, // e1 L EV (<28>)
0xc2, // e2 L EV (<28>)
0xc2, // e3 L EV (<28>)
0xc2, // e4 L EV (<28>)
0xc2, // e5 L EV (<28>)
0x42, // e6 L E (<28>)
0x42, // e7 L E (<28>)
0xc2, // e8 L EV (<28>)
0xc2, // e9 L EV (<28>)
0xc2, // ea L EV (<28>)
0xc2, // eb L EV (<28>)
0xc2, // ec L EV (<28>)
0xc2, // ed L EV (<28>)
0xc2, // ee L EV (<28>)
0xc2, // ef L EV (<28>)
0x42, // f0 L E (<28>)
0x42, // f1 L E (<28>)
0xc2, // f2 L EV (<28>)
0xc2, // f3 L EV (<28>)
0xc2, // f4 L EV (<28>)
0xc2, // f5 L EV (<28>)
0xc2, // f6 L EV (<28>)
0x10, // f7 P (<28>)
0xc2, // f8 L EV (<28>)
0xc2, // f9 L EV (<28>)
0xc2, // fa L EV (<28>)
0xc2, // fb L EV (<28>)
0xc2, // fc L EV (<28>)
0x42, // fd L E (<28>)
0x42, // fe L E (<28>)
0x42, // ff L E (<28>)
};
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 (<28>)
0x00, // 81 (<28>)
0x00, // 82 (<28>)
0x00, // 83 (<28>)
0x00, // 84 (<28>)
0x00, // 85 (<28>)
0x00, // 86 (<28>)
0x00, // 87 (<28>)
0x00, // 88 (<28>)
0x00, // 89 (<28>)
0x00, // 8a (<28>)
0x00, // 8b (<28>)
0x00, // 8c (<28>)
0x00, // 8d (<28>)
0x00, // 8e (<28>)
0x00, // 8f (<28>)
0x00, // 90 (<28>)
0x00, // 91 (<28>)
0x00, // 92 (<28>)
0x00, // 93 (<28>)
0x00, // 94 (<28>)
0x00, // 95 (<28>)
0x00, // 96 (<28>)
0x00, // 97 (<28>)
0x00, // 98 (<28>)
0x00, // 99 (<28>)
0x00, // 9a (<28>)
0x00, // 9b (<28>)
0x00, // 9c (<28>)
0x00, // 9d (<28>)
0x00, // 9e (<28>)
0x00, // 9f (<28>)
0x08, // a0 W (<28>)
0x00, // a1 (<28>)
0x00, // a2 (<28>)
0x00, // a3 (<28>)
0x00, // a4 (<28>)
0x00, // a5 (<28>)
0x00, // a6 (<28>)
0x00, // a7 (<28>)
0x00, // a8 (<28>)
0x00, // a9 (<28>)
0x00, // aa (<28>)
0x00, // ab (<28>)
0x00, // ac (<28>)
0x00, // ad (<28>)
0x00, // ae (<28>)
0x00, // af (<28>)
0x00, // b0 (<28>)
0x00, // b1 (<28>)
0x00, // b2 (<28>)
0x00, // b3 (<28>)
0x00, // b4 (<28>)
0x00, // b5 (<28>)
0x00, // b6 (<28>)
0x00, // b7 (<28>)
0x00, // b8 (<28>)
0x00, // b9 (<28>)
0x00, // ba (<28>)
0x00, // bb (<28>)
0x00, // bc (<28>)
0x00, // bd (<28>)
0x00, // be (<28>)
0x00, // bf (<28>)
0x00, // c0 (<28>)
0x00, // c1 (<28>)
0x00, // c2 (<28>)
0x00, // c3 (<28>)
0x00, // c4 (<28>)
0x00, // c5 (<28>)
0x00, // c6 (<28>)
0x00, // c7 (<28>)
0x00, // c8 (<28>)
0x00, // c9 (<28>)
0x00, // ca (<28>)
0x00, // cb (<28>)
0x00, // cc (<28>)
0x00, // cd (<28>)
0x00, // ce (<28>)
0x00, // cf (<28>)
0x00, // d0 (<28>)
0x00, // d1 (<28>)
0x00, // d2 (<28>)
0x00, // d3 (<28>)
0x00, // d4 (<28>)
0x00, // d5 (<28>)
0x00, // d6 (<28>)
0x00, // d7 (<28>)
0x00, // d8 (<28>)
0x00, // d9 (<28>)
0x00, // da (<28>)
0x00, // db (<28>)
0x00, // dc (<28>)
0x00, // dd (<28>)
0x00, // de (<28>)
0x00, // df (<28>)
0x00, // e0 (<28>)
0x00, // e1 (<28>)
0x00, // e2 (<28>)
0x00, // e3 (<28>)
0x00, // e4 (<28>)
0x00, // e5 (<28>)
0x00, // e6 (<28>)
0x00, // e7 (<28>)
0x00, // e8 (<28>)
0x00, // e9 (<28>)
0x00, // ea (<28>)
0x00, // eb (<28>)
0x00, // ec (<28>)
0x00, // ed (<28>)
0x00, // ee (<28>)
0x00, // ef (<28>)
0x00, // f0 (<28>)
0x00, // f1 (<28>)
0x00, // f2 (<28>)
0x00, // f3 (<28>)
0x00, // f4 (<28>)
0x00, // f5 (<28>)
0x00, // f6 (<28>)
0x00, // f7 (<28>)
0x00, // f8 (<28>)
0x00, // f9 (<28>)
0x00, // fa (<28>)
0x00, // fb (<28>)
0x00, // fc (<28>)
0x00, // fd (<28>)
0x00, // fe (<28>)
0x00, // ff (<28>)
};
/*************************************************
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