예제 #1
0
    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();
    }
예제 #2
0
    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);
            }
        }
    }