28 #ifndef INC_CHRLib_MapEx_h_
29 #define INC_CHRLib_MapEx_h_ 1
32 #include YFM_CHRLib_StaticMapping
42 #define CHRLIB_NODYNAMIC_MAPPING 0
44 #if CHRLIB_NODYNAMIC_MAPPING
84 template<
typename _tObj,
typename _tIn,
typename _tState>
86 Map(_tObj& uc, _tIn&& i, _tState&& st)
88 uint_least16_t row(0), col(0), ln(188);
91 if((
c >= 0xA1) && (
c <= 0xC6))
96 if(d >= 0x40 && d <= 0x7E)
98 else if(d >= 0xA1 && d <= 0xFE)
100 uc =
cp17[row * ln + col];
102 else if(
c >= 0xC9 &&
c <= 0xF9)
107 if(d >= 0x40 && d <= 0x7E)
109 else if(d >= 0xA1 && d <= 0xFE)
111 uc =
cp17[row * ln + col];
129 template<
typename _tObj,
typename _tIn,
typename _tState>
131 Map(_tObj& uc, _tIn&& i, _tState&& st)
135 const auto seq(GetSequenceOf(st));
137 switch(GetCountOf(st))
142 if(
cp113[seq[0]] != 0)
150 if(
YB_LIKELY((seq[0] << 8 | seq[1]) < 0xFF7E))
152 uc =
reinterpret_cast<const ucs2_t*
>(
cp113 + 0x0100)[
153 seq[0] << 8 | seq[1]];
215 template<
typename _fCodemapTransform>
219 using namespace CharSet;
221 #define CHR_MapItem(enc) \
223 return UCS2Mapper<enc>;
yconstexpr Encoding UTF_16LE(csUTF16LE)
bool FillByte(_tIn &i, _tState &st)
以输入迭代器指向内容填充有效输入迭代器指定的字节。
yconstexpr Encoding UTF_16BE(csUTF16BE)
#define YB_UNLIKELY(expr)
分支预测提示。
yconstexpr Encoding GBK(csGBK)
yconstexpr Encoding Big5(csBig5)
< 仅 EUC-CN ,GB2312 最常用实现。
char16_t ucs2_t
UCS-2 字符类型。
#define yconstexpr
指定编译时常量表达式。
static ConversionResult Map(_tObj &uc, _tIn &&i, _tState &&st)
yconstexpr Encoding SHIFT_JIS(csShiftJIS)
yconstexpr Encoding UTF_8(csUTF8)
_fCodemapTransform * FetchMapperPtr(Encoding enc)
取指定编码映射的转换函数指针。