5#include "unicode/uchar.h"
6#include "unicode/uscript.h"
14 const unsigned num_codes =
codes_.size();
46 if (ConsumeSubscriptIfPresent()) {
49 ConsumeOptionalSignsIfPresent();
63 if (IsMyanmarLetter(ch)) {
71bool ValidateMyanmar::ConsumeSubscriptIfPresent() {
73 const unsigned num_codes =
codes_.size();
87bool ValidateMyanmar::ConsumeOptionalSignsIfPresent() {
90 const std::vector<char32> kMedials({kMyanmarAsat, kMyanmarMedialYa, 0x103c, 0x103d, 0x103e,
91 0x105e, 0x105f, 0x1060, 0x1081, 0x1031});
92 for (
char32 ch : kMedials) {
106 if (ch == 0x102d || ch == 0x102e || ch == 0x1032) {
113 if (ch == 0x102f || ch == 0x1030 || (0x1056 <= ch && ch <= 0x1059) || ch == 0x1062 ||
114 ch == 0x1067 || ch == 0x1068 || (0x1071 <= ch && ch <= 0x1074) ||
115 (0x1083 <= ch && ch <= 0x1086) || ch == 0x109c || ch == 0x109d) {
133 const std::vector<char32> kSigns({0x1036, 0x1037, 0x1038});
134 for (
char32 ch : kSigns) {
143 if (ch == 0x1038 || ch == kMyanmarAsat || ch == 0x1063 || ch == 0x1064 ||
144 (0x1069 <= ch && ch <= 0x106d) || (0x1087 <= ch && ch <= 0x108d) || ch == 0x108f ||
145 ch == 0x109a || ch == 0x109b || (0xaa7b <= ch && ch <= 0xaa7d)) {
162bool ValidateMyanmar::IsMyanmarLetter(
char32 ch) {
163 return (0x1000 <= ch && ch <= 0x102a) || ch == 0x103f || (0x104c <= ch && ch <= 0x1055) ||
164 (0x105a <= ch && ch <= 0x105d) || ch == 0x1061 || ch == 0x1065 || ch == 0x1066 ||
165 (0x106e <= ch && ch <= 0x1070) || (0x1075 <= ch && ch <= 0x1081) || ch == 0x108e ||
166 (0xa9e0 <= ch && ch <= 0xa9e4) || (0xa9e7 <= ch && ch <= 0xa9ef) ||
167 (0xa9fa <= ch && ch <= 0xa9fe) || (0xaa60 <= ch && ch <= 0xaa6f) ||
168 (0xaa71 <= ch && ch <= 0xaa73) || ch == 0xaa7a || ch == 0xaa7e || ch == 0xaa7f;
176bool ValidateMyanmar::IsMyanmarOther(
char32 ch) {
178 UScriptCode script_code = uscript_getScript(ch, err);
183 return (0x1040 <= ch && ch <= 0x104f) || (0x1090 <= ch && ch <= 0x1099) ||
184 (0x109e <= ch && ch <= 0x109f) || (0xa9f0 <= ch && ch <= 0xa9f9) ||
185 (ch == 0xa9e6 || ch == 0xaa70) || (0xaa74 <= ch && ch <= 0xaa79);
void tprintf(const char *format,...)
bool ConsumeGraphemeIfValid() override
Validator::CharClass UnicodeToCharClass(char32 ch) const override
static const char32 kZeroWidthNonJoiner
bool UseMultiCode(unsigned length)
std::vector< IndicPair > codes_
static const char32 kZeroWidthJoiner
static const char32 kMyanmarVirama