MCPcopy Create free account
hub / github.com/chrxh/alien / scanAndCreateClusterDescription

Method scanAndCreateClusterDescription

source/EngineImpl/DescriptionConverter.cpp:321–361  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

319}
320
321auto DescriptionConverter::scanAndCreateClusterDescription(
322 DataTO const& dataTO,
323 int startCellIndex,
324 std::unordered_set<int>& freeCellIndices) const
325 -> CreateClusterReturnData
326{
327 CreateClusterReturnData result;
328
329 std::unordered_set<int> currentCellIndices;
330 currentCellIndices.insert(startCellIndex);
331 std::unordered_set<int> scannedCellIndices = currentCellIndices;
332
333 std::vector<CellDescription> cells;
334 std::unordered_set<int> nextCellIndices;
335 int cellDescIndex = 0;
336 do {
337 for (auto const& currentCellIndex : currentCellIndices) {
338 cells.emplace_back(createCellDescription(dataTO, currentCellIndex));
339 result.cellTOIndexToCellDescIndex.emplace(currentCellIndex, cellDescIndex);
340 auto const& cellTO = dataTO.cells[currentCellIndex];
341 for (int i = 0; i < cellTO.numConnections; ++i) {
342 auto connectionTO = cellTO.connections[i];
343 if (connectionTO.cellIndex != -1) {
344 if (scannedCellIndices.find(connectionTO.cellIndex) == scannedCellIndices.end()) {
345 nextCellIndices.insert(connectionTO.cellIndex);
346 scannedCellIndices.insert(connectionTO.cellIndex);
347 }
348 }
349 }
350 ++cellDescIndex;
351 }
352 currentCellIndices = nextCellIndices;
353 nextCellIndices.clear();
354 } while (!currentCellIndices.empty());
355
356 setInplaceDifference(freeCellIndices, scannedCellIndices);
357
358 result.cluster.addCells(cells);
359
360 return result;
361}
362
363CellDescription DescriptionConverter::createCellDescription(DataTO const& dataTO, int cellIndex) const
364{

Callers

nothing calls this directly

Calls 4

setInplaceDifferenceFunction · 0.85
findMethod · 0.80
endMethod · 0.80
clearMethod · 0.45

Tested by

no test coverage detected