Esempio n. 1
0
inline static int cache_data_fill_text(BYTE *dest,
                                       const BYTE *src,
                                       const BYTE *src2,
                                       BYTE *char_mem,
                                       int bytes_per_char,
                                       unsigned int length,
                                       int l,
                                       unsigned int *xs,
                                       unsigned int *xe,
                                       int no_check,
                                       int curpos)
{
    unsigned int i;

    if (no_check) {
        *xs = 0;
        *xe = length - 1;
        for (i = 0; i < length; i++, src++, src2++)
            dest[i] = get_char_data(src[0], src2[0], l, char_mem,
                                    bytes_per_char, curpos, i);
        return 1;
    } else {
        BYTE b;

        for (i = 0;
            i < length && dest[i] == get_char_data(src[0], src2[0], l, char_mem,
            bytes_per_char, curpos, i);
            i++, src++, src2++)
            /* do nothing */ ;

        if (i < length) {
            *xs = *xe = i;

            for (; i < length; i++, src++, src2++)
                if (dest[i] != (b = get_char_data(src[0], src2[0], l, char_mem,
                    bytes_per_char, curpos, i))) {
                    dest[i] = b;
                    *xe = i;
            }

            return 1;
        } else {
            return 0;
        }
    }
}
Esempio n. 2
0
std::vector<char> get_write_data(size_t length)
{
    if(!header_end)
    {
        header_end=true;
		if(data.empty())
            this->is_end=true;

        return std::vector<char>(header.begin(),header.end());
    }else
    {
        if(is_file)
        {
            return get_file_data(length);
        }
        else
        {
            return get_char_data(length);
        }
    }
}