private int GetTargetLabel(Node target) { int labelId = target.LabelId(); if (labelId == -1) { labelId = cfw.AcquireLabel(); target.LabelId(labelId); } return labelId; }
private int GetTargetLabel(Node target) { int label = target.LabelId(); if (label != -1) { return label; } label = labelTableTop; if (labelTable == null || label == labelTable.Length) { if (labelTable == null) { labelTable = new int[MIN_LABEL_TABLE_SIZE]; } else { int[] tmp = new int[labelTable.Length * 2]; System.Array.Copy(labelTable, 0, tmp, 0, label); labelTable = tmp; } } labelTableTop = label + 1; labelTable[label] = -1; target.LabelId(label); return label; }