61 std::vector<ROBoard> locBoards;
63 for (
auto& item : cfgMap) {
64 locBoards.push_back({raw::sSTARTBIT | raw::sCARDTYPE, triggerWord, item.first, 0});
65 if (triggerWord & (raw::sSOX | raw::sEOX)) {
67 if (item.second.configWord & crateconfig::sMonmoff) {
68 locBoards.back().statusWord |= raw::sMASKED;
69 for (
int ich = 0; ich < 4; ++ich) {
70 locBoards.back().patternsBP[ich] = item.second.masksBP[ich];
71 locBoards.back().patternsNBP[ich] = item.second.masksNBP[ich];
83 std::vector<ROBoard> completeRegs;
84 completeRegs.reserve(regBoards.size());
85 for (
auto regIt1 = regBoards.begin(),
end = regBoards.end(); regIt1 !=
end; ++regIt1) {
86 completeRegs.emplace_back(*regIt1);
89 auto locId2 = locId1 % 8 == 0 ? locId1 + 1 : locId1 - 1;
91 bool hasOther =
false;
92 for (
auto regIt2 = regBoards.begin(); regIt2 !=
end; ++regIt2) {
94 if (regIt2->boardId == boardId2) {
100 completeRegs.emplace_back(*regIt1);
101 completeRegs.back().boardId = boardId2;
102 completeRegs.back().firedChambers = 0;
106 locBoards.insert(locBoards.begin(), completeRegs.begin(), completeRegs.end());
112 std::unordered_map<uint8_t, uint8_t> firedLocs;
114 uint8_t triggerWord = 0;
115 for (
auto& loc : locs) {
119 int locPos = locId % 4;
120 firedLocs[uniqueRegId] |= (1 << locPos);
121 triggerWord = loc.triggerWord;
124 std::vector<ROBoard> regBoards;
125 for (
auto& item : firedLocs) {
126 regBoards.push_back({raw::sSTARTBIT, triggerWord, item.first, item.second});