Committing changes to date, which includes a number of fixes,

especially around the extraction code.  Extraction is now
more or less working, although the original known issues
around areas where split tiles contain two regions has not
yet been addressed.
This commit is contained in:
R. Timothy Edwards
2026-01-09 12:05:03 -05:00
parent 516c9d7635
commit 1cb58e973a
17 changed files with 557 additions and 169 deletions
+16 -8
View File
@@ -713,14 +713,15 @@ extArrayNodeName(np, ha, et1, et2)
ExtTree *et1, *et2;
{
Tile *tp;
TileType dinfo;
tp = extNodeToTile(np, et1, NULL);
tp = extNodeToTile(np, et1, &dinfo);
if (tp && TiGetType(tp) != TT_SPACE && extHasRegion(tp, extUnInit))
return (extArrayTileToNode(tp, np->nreg_pnum, et1, ha, TRUE));
return (extArrayTileToNode(tp, dinfo, np->nreg_pnum, et1, ha, TRUE));
tp = extNodeToTile(np, et2, NULL);
tp = extNodeToTile(np, et2, &dinfo);
if (tp && TiGetType(tp) != TT_SPACE && extHasRegion(tp, extUnInit))
return (extArrayTileToNode(tp, np->nreg_pnum, et2, ha, TRUE));
return (extArrayTileToNode(tp, dinfo, np->nreg_pnum, et2, ha, TRUE));
return ("(none)");
}
@@ -768,8 +769,9 @@ extArrayNodeName(np, ha, et1, et2)
*/
char *
extArrayTileToNode(tp, pNum, et, ha, doHard)
extArrayTileToNode(tp, dinfo, pNum, et, ha, doHard)
Tile *tp;
TileType dinfo;
int pNum;
ExtTree *et;
HierExtractArg *ha;
@@ -799,7 +801,7 @@ extArrayTileToNode(tp, pNum, et, ha, doHard)
}
if (!DebugIsSet(extDebugID, extDebNoHard))
if ((reg = (LabRegion *) extArrayHardNode(tp, pNum, def, ha)))
if ((reg = (LabRegion *) extArrayHardNode(tp, dinfo, pNum, def, ha)))
goto found;
/* Blew it */
@@ -934,17 +936,23 @@ extArrayRange(dstp, lo, hi, prevRange, followRange)
*/
LabRegion *
extArrayHardNode(tp, pNum, def, ha)
extArrayHardNode(tp, dinfo, pNum, def, ha)
Tile *tp;
TileType dinfo;
int pNum;
CellDef *def;
HierExtractArg *ha;
{
TileType type = TiGetType(tp);
TileType type;
char labelBuf[4096];
SearchContext scx;
HardWay arg;
if (IsSplit(tp))
type = (dinfo & TT_SIDE) ? TiGetRightType(tp) : TiGetLeftType(tp);
else
type = TiGetType(tp);
arg.hw_ha = ha;
arg.hw_label = (Label *) NULL;
arg.hw_mask = DBPlaneTypes[pNum];