Exteor/include/xtr/core/Encoder.h

86 lines
3.4 KiB
C
Raw Normal View History

2024-06-07 20:30:06 +03:00
#pragma once
namespace xtr::encode {
//! Unicode math symbols enumerations
enum UTF8Codes : wchar_t {
US_LOGIC_NOT = 0xAC, //отрицание
US_CARTH = 0xD7, //декартово произведение
US_BOOL = 0x212C, //булеан
US_A = 0x03B1, //альфа
US_B = 0x03B2, //бэта
US_G = 0x03B3, //гамма
US_D = 0x03B4, //дельта
US_E = 0x03B5, //экпсилон
US_Z = 0x03B6, //зетта
US_H = 0x03B7, //эта
US_V = 0x03B8, //тэта
US_L = 0x03BB, //лямбда
US_M = 0x03BC, //мю
US_N = 0x03BD, //ню
US_X = 0x03BE, //кси
US_O = 0x03BF, //о
US_P = 0x03C0, //пи
US_R = 0x03C1, //ро
US_S = 0x03C3, //сигма
US_T = 0x03C4, //тау
US_Q = 0x03C5, //ипсилон
US_F = 0x03C6, //фи
US_C = 0x03C7, //хи
US_J = 0x03C8, //пси
US_W = 0x03C9, //омега
US_DIGIT_SUB0 = 0x2080, // 0
US_DIGIT_SUB1 = 0x2081, // 1
US_DIGIT_SUB2 = 0x2082, // 2
US_DIGIT_SUB3 = 0x2083, // 3
US_DIGIT_SUB4 = 0x2084, // 4
US_DIGIT_SUB5 = 0x2085, // 5
US_DIGIT_SUB6 = 0x2086, // 6
US_DIGIT_SUB7 = 0x2087, // 7
US_DIGIT_SUB8 = 0x2088, // 8
US_DIGIT_SUB9 = 0x2089, // 9
US_INTEGERS = 0x2102, //множество целых чисел
US_NATURALS = 0x2115, //множество натуральных чисел
US_REALS = 0x211D, //множество действительных чисел
US_IMPLICATION = 0x21D2, //импликация
US_LOGIC_EQUAL = 0x21D4, //тогда и только тогда
US_LOGIC_FORALL = 0x2200, //для любого
US_LOGIC_EXISTS = 0x2203, //существует
US_EMPTYSET = 0x2205, //пустое множество
US_ELEMENT = 0x2208, //принадлежность
US_NOTELEMENT = 0x2209, //не принадлежность
US_MINUS = 0x2212, //минус
US_INFINITY = 0x221E, //бесконечность
US_SET_UNION = 0x222A, //объединение
US_SET_SYMMINUS = 0x2206, //симметрическая разность
US_LOGIC_OR = 0x2228, //или
US_SET_INTERSECTION = 0x2229, //пересечение
US_NOTEQUAL = 0x2260, //не равно
US_GREATER_OR_EQ = 0x2265, //больше или равно
US_LESSER_OR_EQ = 0x2264, //меньше или равно
US_IDENTITY = 0x2261, //тождественно равно
US_SUBSET = 0x2282, //включение
US_NOTSUBSET = 0x2284, //не включение
US_SUBSET_OR_EQ = 0x2286 //нестрогое включение
};
constexpr bool IsGreek(const wchar_t uc) noexcept {
return uc >= US_A && uc <= US_W;
}
constexpr bool IsIndex(const wchar_t uc) noexcept {
return
(uc >= US_DIGIT_SUB0 && uc <= US_DIGIT_SUB9) ||
(uc >= '0' && uc <= '9');
}
bool IsCstName(wchar_t uc) noexcept;
bool IsAlphaNumber(wchar_t uc) noexcept;
wchar_t Bulean2ToUnicodeChar(wchar_t ac);
void EncodeToUnicode(CString& str);
uint8_t Encode1251To866(uint8_t c) noexcept;
} // namespace xtr::encode