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});
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});
143 if (
ch == 0x102c ||
ch == 0x1038 ||
ch == kMyanmarAsat || (0x1062 <=
ch &&
ch <= 0x1064) ||
144 (0x1069 <=
ch &&
ch <= 0x106d) || (0x1087 <=
ch &&
ch <= 0x108d) ||
ch == 0x108f ||
145 ch == 0x109a ||
ch == 0x109b || (0xaa7b <=
ch &&
ch <= 0xaa7d)) {
153 if (
ch == 0x103a ||
ch == 0x1037 ||
ch == 0x1038) {
170bool ValidateMyanmar::IsMyanmarLetter(
char32 ch) {
171 return (0x1000 <=
ch &&
ch <= 0x102a) ||
ch == 0x103f || (0x104c <=
ch &&
ch <= 0x1055) ||
172 (0x105a <=
ch &&
ch <= 0x105d) ||
ch == 0x1061 ||
ch == 0x1065 ||
ch == 0x1066 ||
173 (0x106e <=
ch &&
ch <= 0x1070) || (0x1075 <=
ch &&
ch <= 0x1081) ||
ch == 0x108e ||
174 (0xa9e0 <=
ch &&
ch <= 0xa9e4) || (0xa9e7 <=
ch &&
ch <= 0xa9ef) ||
175 (0xa9fa <=
ch &&
ch <= 0xa9fe) || (0xaa60 <=
ch &&
ch <= 0xaa6f) ||
176 (0xaa71 <=
ch &&
ch <= 0xaa73) ||
ch == 0xaa7a ||
ch == 0xaa7e ||
ch == 0xaa7f;
184bool ValidateMyanmar::IsMyanmarOther(
char32 ch) {
186 UScriptCode script_code = uscript_getScript(
ch, err);
191 return (0x1040 <=
ch &&
ch <= 0x104f) || (0x1090 <=
ch &&
ch <= 0x1099) ||
192 (0x109e <=
ch &&
ch <= 0x109f) || (0xa9f0 <=
ch &&
ch <= 0xa9f9) ||
193 (
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