assert(id < build.literal_info.size());
const rose_literal_info &info = build.literal_info[id];
- u32 final_id = info.final_id;
- rose_group groups = info.group_mask;
/* Note: requires_benefits are handled in the literal entries */
const ue2_literal &lit = e.second.s;
DEBUG_PRINTF("id=%u, s='%s', nocase=%d, noruns=%d, msk=%s, "
"cmp=%s\n",
- final_id, escapeString(s).c_str(), (int)nocase, noruns,
- dumpMask(msk).c_str(), dumpMask(cmp).c_str());
+ info.fragment_id, escapeString(s).c_str(), (int)nocase,
+ noruns, dumpMask(msk).c_str(), dumpMask(cmp).c_str());
if (!maskIsConsistent(s, nocase, msk, cmp)) {
DEBUG_PRINTF("msk/cmp for literal can't match, skipping\n");
}
mp.accel_lits.emplace_back(lit.get_string(), lit.any_nocase(), msk, cmp,
- groups);
+ info.group_mask);
mp.history_required = max(mp.history_required, lit_hist_len);
- mp.lits.emplace_back(move(s), nocase, noruns, final_id, groups, msk,
- cmp);
- }
- for (auto &lit : mp.lits) {
- u32 final_id = lit.id;
- assert(contains(build.final_to_frag_map, final_id));
- const auto &frag =
- build.fragments.at(build.final_to_frag_map.at(final_id));
- lit.id = delay_rebuild ? frag.delay_program_offset
- : frag.lit_program_offset;
- lit.groups = frag.groups;
+ assert(info.fragment_id < build.fragments.size());
+ const auto &frag = build.fragments.at(info.fragment_id);
+ u32 prog_offset =
+ delay_rebuild ? frag.delay_program_offset : frag.lit_program_offset;
+ const auto &groups = frag.groups;
+
+ mp.lits.emplace_back(move(s), nocase, noruns, prog_offset, groups, msk,
+ cmp);
}
sort_and_unique(mp.lits);