static ucs4_t const *pick(char const *, wchar_t const *cstr) { inter_str.clear(); while(*cstr != 0) { inter_str.push_back(ucs4_t(*cstr)); ++cstr; } return inter_str.c_str(); }
void Build(const ucs4_t* pat, size_t len) { if(m_Pattern.length()==len && IsTheSame(m_Pattern.c_str(), pat, (int)len)) return; m_Pattern.assign(pat, len); const int len1 = m_Len_1 = (int)len+1; int *ptab = m_UCS2_Table; for(size_t i=0;i<65536; ++i, ++ptab) *ptab = len1; m_Table.clear(); const ucs4_t* p = pat; for(size_t i=0; i<len; ++i, ++p) { const unsigned int idx = (unsigned int)(*p); if(idx <= 0xFFFF) { m_UCS2_Table[idx] = (int)(len-i); } else { m_Table[idx] = (int)(len-i); } } }