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; } } }
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); } } }