1/* -*- C++ -*-
2 SPDX-FileCopyrightText: 1998 Netscape Communications Corporation <developer@mozilla.org>
3
4 SPDX-License-Identifier: MIT
5*/
6
7#include "nsCodingStateMachine.h"
8
9namespace kencodingprober
10{
11constexpr std::array<unsigned int, 256 / 8> HZ_cls = PCKXBITS(
12 // clang-format off
13 il: 1, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 00 - 07
14 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 08 - 0f
15 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 10 - 17
16 il: 0, il: 0, il: 0, il: 1, il: 0, il: 0, il: 0, il: 0, // 18 - 1f
17 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 20 - 27
18 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 28 - 2f
19 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 30 - 37
20 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 38 - 3f
21 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 40 - 47
22 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 48 - 4f
23 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 50 - 57
24 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 58 - 5f
25 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 60 - 67
26 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 68 - 6f
27 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 70 - 77
28 il: 0, il: 0, il: 0, il: 4, il: 0, il: 5, il: 2, il: 0, // 78 - 7f
29 il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, // 80 - 87
30 il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, // 88 - 8f
31 il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, // 90 - 97
32 il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, // 98 - 9f
33 il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, // a0 - a7
34 il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, // a8 - af
35 il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, // b0 - b7
36 il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, // b8 - bf
37 il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, // c0 - c7
38 il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, // c8 - cf
39 il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, // d0 - d7
40 il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, // d8 - df
41 il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, // e0 - e7
42 il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, // e8 - ef
43 il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, // f0 - f7
44 il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1, il: 1 // f8 - ff
45 // clang-format on
46);
47
48constexpr std::array<unsigned int, 6> HZ_st = PCKXBITS(
49 // clang-format off
50 // <INV> ~ <?> { }
51 il: eStart, il: eError, il: 3, il: eStart, il: eStart, il: eStart, // eStart
52 il: eError, il: eError, il: eError, il: eError, il: eError, il: eError, // eError
53 il: eItsMe, il: eItsMe, il: eItsMe, il: eItsMe, il: eItsMe, il: eItsMe, // eItsMe
54 il: eError, il: eError, il: eStart, il: eStart, il: 4, il: eError, // 3 '~'
55 il: 5, il: eError, il: 6, il: eError, il: 5, il: 5, // 4 '~ { [ <Z> <R> ]*'
56 il: 4, il: eError, il: 4, il: eError, il: 4, il: 4, // 5 '~ { <Z> [ <R> <Z> ]*'
57 il: 4, il: eError, il: 4, il: eError, il: 4, il: eItsMe, // 6
58 il: eStart, il: eStart, il: eStart, il: eStart, il: eStart, il: eStart // Padding
59 // clang-format on
60);
61
62static const unsigned int HZCharLenTable[] = {0, 0, 0, 0, 0, 0};
63
64const SMModel HZSMModel = {
65 .classTable: {.idxsft: eIdxSft4bits, .sftmsk: eSftMsk4bits, .bitsft: eBitSft4bits, .unitmsk: eUnitMsk4bits, .data: HZ_cls.data()},
66 .classFactor: 6,
67 .stateTable: {.idxsft: eIdxSft4bits, .sftmsk: eSftMsk4bits, .bitsft: eBitSft4bits, .unitmsk: eUnitMsk4bits, .data: HZ_st.data()},
68 .charLenTable: HZCharLenTable,
69 .name: "HZ-GB-2312",
70};
71
72constexpr std::array<unsigned int, 256 / 8> ISO2022JP_cls = PCKXBITS(
73 // clang-format off
74 il: 2, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 00 - 07
75 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 2, il: 2, // 08 - 0f
76 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 10 - 17
77 il: 0, il: 0, il: 0, il: 1, il: 0, il: 0, il: 0, il: 0, // 18 - 1f
78 il: 0, il: 0, il: 0, il: 0, il: 7, il: 0, il: 0, il: 0, // 20 - 27
79 il: 3, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 28 - 2f
80 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 30 - 37
81 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 38 - 3f
82 il: 6, il: 0, il: 4, il: 0, il: 8, il: 0, il: 0, il: 0, // 40 - 47
83 il: 0, il: 9, il: 5, il: 0, il: 0, il: 0, il: 0, il: 0, // 48 - 4f
84 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 50 - 57
85 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 58 - 5f
86 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 60 - 67
87 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 68 - 6f
88 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 70 - 77
89 il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, il: 0, // 78 - 7f
90 il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, // 80 - 87
91 il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, // 88 - 8f
92 il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, // 90 - 97
93 il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, // 98 - 9f
94 il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, // a0 - a7
95 il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, // a8 - af
96 il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, // b0 - b7
97 il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, // b8 - bf
98 il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, // c0 - c7
99 il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, // c8 - cf
100 il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, // d0 - d7
101 il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, // d8 - df
102 il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, // e0 - e7
103 il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, // e8 - ef
104 il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, // f0 - f7
105 il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2, il: 2 // f8 - ff
106 // clang-format on
107);
108
109// ISO-2022-JP-1 / RFC 2237
110constexpr std::array<unsigned int, 9> ISO2022JP_st = PCKXBITS(
111 // clang-format off
112 // <ESC> <INV> ( B J @ $ D I
113 il: eStart, il: 3, il: eError, il: eStart, il: eStart, il: eStart, il: eStart, il: eStart, il: eStart, il: eStart, // eStart
114 il: eError, il: eError, il: eError, il: eError, il: eError, il: eError, il: eError, il: eError, il: eError, il: eError, // eError
115 il: eItsMe, il: eItsMe, il: eItsMe, il: eItsMe, il: eItsMe, il: eItsMe, il: eItsMe, il: eItsMe, il: eItsMe, il: eItsMe, // eItsMe
116 il: eError, il: eError, il: eError, il: 5, il: eError, il: eError, il: eError, il: 4, il: eError, il: eError, // 3 'ESC'
117 il: eError, il: eError, il: eError, il: 6, il: eItsMe, il: eError, il: eItsMe, il: eError, il: eError, il: eError, // 4 'ESC $'
118 il: eError, il: eError, il: eError, il: eError, il: eItsMe, il: eItsMe, il: eError, il: eError, il: eError, il: eItsMe, // 5 'ESC ('
119 il: eError, il: eError, il: eError, il: eError, il: eError, il: eError, il: eError, il: eError, il: eItsMe, il: eError, // 6 'ESC $ ('
120 il: eStart, il: eStart // Padding
121 // clang-format on
122);
123
124static const unsigned int ISO2022JPCharLenTable[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
125
126const SMModel ISO2022JPSMModel = {
127 .classTable: {.idxsft: eIdxSft4bits, .sftmsk: eSftMsk4bits, .bitsft: eBitSft4bits, .unitmsk: eUnitMsk4bits, .data: ISO2022JP_cls.data()},
128 .classFactor: 10,
129 .stateTable: {.idxsft: eIdxSft4bits, .sftmsk: eSftMsk4bits, .bitsft: eBitSft4bits, .unitmsk: eUnitMsk4bits, .data: ISO2022JP_st.data()},
130 .charLenTable: ISO2022JPCharLenTable,
131 .name: "ISO-2022-JP",
132};
133}
134

source code of kcodecs/src/probers/nsEscSM.cpp