Skip to content

Commit 51a24dc

Browse files
committed
Rename variables for clarity
Better distinguish parsedLine idx from visual idx. The visual index the line number of the actually rendered line (e.g. if we're not showing c source lines in the main log view, then parsed line idx and visual idx are not equivalent).
1 parent 9201842 commit 51a24dc

File tree

3 files changed

+100
-82
lines changed

3 files changed

+100
-82
lines changed

src/App.tsx

Lines changed: 51 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -33,27 +33,27 @@ function getEmptyVisualLogState(): VisualLogState {
3333
return {
3434
verifierLogState: getEmptyVerifierState(),
3535
logLines: [],
36-
logLineIdToIdx: new Map(),
36+
logLineIdxToVisualIdx: new Map(),
3737
cLines: [],
38-
cLineIdtoIdx: new Map(),
38+
cLineIdToVisualIdx: new Map(),
3939
};
4040
}
4141

4242
function getVisualLogState(
4343
verifierLogState: VerifierLogState,
4444
fullLogView: boolean,
4545
): VisualLogState {
46-
const [logLines, logLineIdToIdx] = getVisibleLogLines(
46+
const [logLines, logLineIdxToVisualIdx] = getVisibleLogLines(
4747
verifierLogState,
4848
fullLogView,
4949
);
50-
const [cLines, cLineIdtoIdx] = getVisibleCLines(verifierLogState);
50+
const [cLines, cLineIdToVisualIdx] = getVisibleCLines(verifierLogState);
5151
return {
5252
verifierLogState: verifierLogState,
5353
logLines,
54-
logLineIdToIdx,
54+
logLineIdxToVisualIdx,
5555
cLines,
56-
cLineIdtoIdx,
56+
cLineIdToVisualIdx,
5757
};
5858
}
5959

@@ -133,12 +133,18 @@ function App() {
133133

134134
const fileInputRef = useRef<HTMLInputElement>(null);
135135

136-
const { verifierLogState, cLines, cLineIdtoIdx, logLines, logLineIdToIdx } =
137-
visualLogState;
136+
const {
137+
verifierLogState,
138+
cLines,
139+
cLineIdToVisualIdx,
140+
logLines,
141+
logLineIdxToVisualIdx,
142+
} = visualLogState;
138143

139144
const { line: selectedLine, memSlotId: selectedMemSlotId } = selectedState;
140-
const selectedLineIdx = logLineIdToIdx.get(selectedLine) || 0;
141-
const hoveredLineIdx = logLineIdToIdx.get(hoveredState.line) || 0;
145+
const selectedLineVisualIdx = logLineIdxToVisualIdx.get(selectedLine) || 0;
146+
const hoveredLineVisualIdx =
147+
logLineIdxToVisualIdx.get(hoveredState.line) || 0;
142148
const selectedCLine = useMemo(() => {
143149
let clineId = "";
144150
if (selectedState.cLine) {
@@ -163,15 +169,15 @@ function App() {
163169
(
164170
nextInsLineId: number,
165171
nextCLineId: string,
166-
nextInsLineIdx: number,
167-
nextCLineIdx: number,
172+
nextInsLineVisualIdx: number,
173+
nextCLineVisualIdx: number,
168174
memSlotId: string = "",
169175
) => {
170-
scrollToLogLine(nextInsLineIdx, logLines.length);
171-
scrollToCLine(nextCLineIdx, cLines.length);
176+
scrollToLogLine(nextInsLineVisualIdx, logLines.length);
177+
scrollToCLine(nextCLineVisualIdx, cLines.length);
172178
setSelectedState({ line: nextInsLineId, memSlotId, cLine: nextCLineId });
173179
},
174-
[logLines, cLineIdtoIdx],
180+
[logLines, cLineIdToVisualIdx],
175181
);
176182

177183
const onGotoStart = useCallback(() => {
@@ -181,7 +187,7 @@ function App() {
181187
const lineId = logLines[0].idx;
182188
const clineId =
183189
verifierLogState.cSourceMap.logLineToCLine.get(lineId) || "";
184-
setSelectedAndScroll(lineId, "", 0, cLineIdtoIdx.get(clineId) || 0);
190+
setSelectedAndScroll(lineId, "", 0, cLineIdToVisualIdx.get(clineId) || 0);
185191
}, [logLines, verifierLogState]);
186192

187193
function onGotoEnd() {
@@ -195,7 +201,7 @@ function App() {
195201
lineId,
196202
"",
197203
logLines.length - 1,
198-
cLineIdtoIdx.get(clineId) || 0,
204+
cLineIdToVisualIdx.get(clineId) || 0,
199205
);
200206
}
201207

@@ -210,15 +216,15 @@ function App() {
210216

211217
const onLogToggle = useCallback(() => {
212218
setfullLogView((prev) => !prev);
213-
const [newLogLines, newLogLineIdToIdx] = getVisibleLogLines(
219+
const [newLogLines, newLogLineIdToVisualIdx] = getVisibleLogLines(
214220
verifierLogState,
215221
!fullLogView,
216222
);
217223
setVisualLogState((prev) => {
218224
return {
219225
...prev,
220226
logLines: newLogLines,
221-
logLineIdToIdx: newLogLineIdToIdx,
227+
logLineIdxToVisualIdx: newLogLineIdToVisualIdx,
222228
};
223229
});
224230
}, [fullLogView, verifierLogState]);
@@ -260,10 +266,11 @@ function App() {
260266
}
261267
e.preventDefault();
262268
if (areCLinesInFocus) {
263-
const currentIdx = cLineIdtoIdx.get(selectedState.cLine) || 0;
264-
let nextIdx = currentIdx + delta;
265-
if (cLines[nextIdx] === "") {
266-
nextIdx += delta;
269+
const currentVisibleIdx =
270+
cLineIdToVisualIdx.get(selectedState.cLine) || 0;
271+
let nextVisibleIdx = currentVisibleIdx + delta;
272+
if (cLines[nextVisibleIdx] === "") {
273+
nextVisibleIdx += delta;
267274
}
268275
const logLines = verifierLogState.cSourceMap.cLineToLogLines.get(
269276
selectedState.cLine,
@@ -274,21 +281,26 @@ function App() {
274281
}
275282
setSelectedAndScroll(
276283
logLineId,
277-
cLines[nextIdx],
278-
logLineIdToIdx.get(logLineId) || -1,
279-
nextIdx,
284+
cLines[nextVisibleIdx],
285+
logLineIdxToVisualIdx.get(logLineId) || -1,
286+
nextVisibleIdx,
280287
);
281288
} else {
282-
const currInsIdx = logLineIdToIdx.get(selectedState.line) || 0;
283-
let nextInsIdx = siblingInsLine(logLines, currInsIdx, delta);
284-
const logLineId = logLines[nextInsIdx].idx;
289+
const currInsVisualIdx =
290+
logLineIdxToVisualIdx.get(selectedState.line) || 0;
291+
let nextInsVisualIdx = siblingInsLine(
292+
logLines,
293+
currInsVisualIdx,
294+
delta,
295+
);
296+
const logLineId = logLines[nextInsVisualIdx].idx;
285297
const cLineId =
286298
verifierLogState.cSourceMap.logLineToCLine.get(logLineId) || "";
287299
setSelectedAndScroll(
288300
logLineId,
289301
"",
290-
nextInsIdx,
291-
cLineIdtoIdx.get(cLineId) || -1,
302+
nextInsVisualIdx,
303+
cLineIdToVisualIdx.get(cLineId) || -1,
292304
);
293305
}
294306
};
@@ -301,10 +313,10 @@ function App() {
301313
}, [
302314
logLines,
303315
cLines,
304-
cLineIdtoIdx,
316+
cLineIdToVisualIdx,
305317
selectedState,
306318
verifierLogState,
307-
logLineIdToIdx,
319+
logLineIdxToVisualIdx,
308320
onGotoStart,
309321
onGotoEnd,
310322
]);
@@ -417,14 +429,14 @@ function App() {
417429
setSelectedAndScroll(
418430
firstItem,
419431
clineId,
420-
logLineIdToIdx.get(firstItem) || 0,
432+
logLineIdxToVisualIdx.get(firstItem) || 0,
421433
-1,
422434
);
423435
} else {
424436
setSelectedState({ line: 0, memSlotId: "", cLine: clineId });
425437
}
426438
},
427-
[verifierLogState, logLineIdToIdx, cLineIdtoIdx],
439+
[verifierLogState, logLineIdxToVisualIdx, cLineIdToVisualIdx],
428440
);
429441

430442
const handleStateRowClick = useCallback(
@@ -473,12 +485,12 @@ function App() {
473485
lineId,
474486
"",
475487
-1,
476-
cLineIdtoIdx.get(clineId) || -1,
488+
cLineIdToVisualIdx.get(clineId) || -1,
477489
memSlotId,
478490
);
479491
}
480492
},
481-
[logLines, verifierLogState, cLineIdtoIdx],
493+
[logLines, verifierLogState, cLineIdToVisualIdx],
482494
);
483495

484496
const handleLogLinesOver = useCallback(
@@ -604,12 +616,12 @@ function App() {
604616
<div id="hint">
605617
<SelectedLineHint
606618
selectedLine={selectedLine}
607-
selectedLineIdx={selectedLineIdx}
619+
visualIdx={selectedLineVisualIdx}
608620
lines={verifierLogState.lines}
609621
/>
610622
<HoveredLineHint
611623
hoveredLine={hoveredState.line}
612-
hoveredLineIdx={hoveredLineIdx}
624+
visibleIdx={hoveredLineVisualIdx}
613625
lines={verifierLogState.lines}
614626
/>
615627
</div>

src/components.tsx

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ import BPF_HELPERS_JSON from "./bpf-helpers.json";
2828
export type VisualLogState = {
2929
verifierLogState: VerifierLogState;
3030
cLines: string[];
31-
cLineIdtoIdx: Map<string, number>;
31+
cLineIdToVisualIdx: Map<string, number>;
3232
logLines: ParsedLine[];
33-
logLineIdToIdx: Map<number, number>;
33+
logLineIdxToVisualIdx: Map<number, number>;
3434
};
3535

3636
export type LogLineState = {
@@ -181,11 +181,11 @@ function ExitInstruction({ frame }: { frame: number }) {
181181

182182
export function HoveredLineHint({
183183
hoveredLine,
184-
hoveredLineIdx,
184+
visibleIdx,
185185
lines,
186186
}: {
187187
hoveredLine: number;
188-
hoveredLineIdx: number;
188+
visibleIdx: number;
189189
lines: ParsedLine[];
190190
}) {
191191
if (lines.length === 0 || hoveredLine < 0) {
@@ -197,7 +197,7 @@ export function HoveredLineHint({
197197
}
198198
return (
199199
<div id="hint-hovered-line" className="hint-line">
200-
<span>[hovered raw line] {hoveredLineIdx + 1}:</span>&nbsp;
200+
<span>[hovered raw line] {visibleIdx + 1}:</span>&nbsp;
201201
{lines[hoveredLine].raw}
202202
</div>
203203
);
@@ -459,19 +459,19 @@ const RegSpan = ({
459459

460460
export function SelectedLineHint({
461461
selectedLine,
462-
selectedLineIdx,
462+
visualIdx,
463463
lines,
464464
}: {
465465
selectedLine: number;
466-
selectedLineIdx: number;
466+
visualIdx: number;
467467
lines: ParsedLine[];
468468
}) {
469469
if (lines.length === 0) {
470470
return <></>;
471471
}
472472
return (
473473
<div id="hint-selected-line" className="hint-line">
474-
<span>[selected raw line] {selectedLineIdx + 1}:</span>&nbsp;
474+
<span>[selected raw line] {visualIdx + 1}:</span>&nbsp;
475475
{lines[selectedLine].raw}
476476
</div>
477477
);
@@ -976,8 +976,13 @@ export function MainContent({
976976
handleLogLinesOut: (event: React.MouseEvent<HTMLDivElement>) => void;
977977
handleStateRowClick: (event: React.MouseEvent<HTMLDivElement>) => void;
978978
}) {
979-
const { verifierLogState, logLines, logLineIdToIdx, cLines, cLineIdtoIdx } =
980-
visualLogState;
979+
const {
980+
verifierLogState,
981+
logLines,
982+
logLineIdxToVisualIdx,
983+
cLines,
984+
cLineIdToVisualIdx,
985+
} = visualLogState;
981986
const memSlotDependencies: number[] = useMemo(() => {
982987
const lines = verifierLogState.lines;
983988
if (lines.length === 0) {
@@ -1131,9 +1136,9 @@ export function MainContent({
11311136
}
11321137

11331138
if (shouldScrollLogLines) {
1134-
const logLineIdx = logLineIdToIdx.get(maxIdx);
1135-
if (logLineIdx) {
1136-
scrollToLogLine(logLineIdx, logLines.length);
1139+
const visualIdx = logLineIdxToVisualIdx.get(maxIdx);
1140+
if (visualIdx) {
1141+
scrollToLogLine(visualIdx, logLines.length);
11371142
}
11381143
}
11391144

@@ -1198,9 +1203,9 @@ export function MainContent({
11981203

11991204
const handleStateLogLineClick = useCallback(
12001205
(e: React.MouseEvent<HTMLDivElement>) => {
1201-
const logLineIdx = logLineIdToIdx.get(selectedLine);
1202-
if (logLineIdx) {
1203-
scrollToLogLine(logLineIdx, logLines.length);
1206+
const visualIdx = logLineIdxToVisualIdx.get(selectedLine);
1207+
if (visualIdx) {
1208+
scrollToLogLine(visualIdx, logLines.length);
12041209
}
12051210
e.stopPropagation();
12061211
},
@@ -1212,14 +1217,14 @@ export function MainContent({
12121217
const cLineId =
12131218
verifierLogState.cSourceMap.logLineToCLine.get(selectedLine);
12141219
if (cLineId) {
1215-
const cLineIdx = cLineIdtoIdx.get(cLineId);
1220+
const cLineIdx = cLineIdToVisualIdx.get(cLineId);
12161221
if (cLineIdx) {
12171222
scrollToCLine(cLineIdx, cLines.length);
12181223
}
12191224
}
12201225
e.stopPropagation();
12211226
},
1222-
[verifierLogState, cLines, cLineIdtoIdx, selectedCLine],
1227+
[verifierLogState, cLines, cLineIdToVisualIdx, selectedCLine],
12231228
);
12241229

12251230
const handleArrowsClick = useCallback(
@@ -1245,12 +1250,12 @@ export function MainContent({
12451250
}
12461251

12471252
if (depArrow.classList.contains("active-down")) {
1248-
scrollToLogLine(logLineIdToIdx.get(next) || 0, logLines.length);
1253+
scrollToLogLine(logLineIdxToVisualIdx.get(next) || 0, logLines.length);
12491254
} else if (depArrow.classList.contains("active-up")) {
1250-
scrollToLogLine(logLineIdToIdx.get(prev) || 0, logLines.length);
1255+
scrollToLogLine(logLineIdxToVisualIdx.get(prev) || 0, logLines.length);
12511256
}
12521257
},
1253-
[logLines, logLineIdToIdx, memSlotDependencies, selectedLine],
1258+
[logLines, logLineIdxToVisualIdx, memSlotDependencies, selectedLine],
12541259
);
12551260

12561261
const handleArrowsOver = useCallback(
@@ -1276,8 +1281,8 @@ export function MainContent({
12761281

12771282
let { min, max } = getVisibleLogLineRange(logLines.length);
12781283
const isVisible = (id: number) => {
1279-
const idx = logLineIdToIdx.get(id) || 0;
1280-
return min < idx && idx < max;
1284+
const visualIdx = logLineIdxToVisualIdx.get(id) || 0;
1285+
return min < visualIdx && visualIdx < max;
12811286
};
12821287
const setTargetToPrev = () => {
12831288
depArrow.classList.add("active-up");
@@ -1296,14 +1301,14 @@ export function MainContent({
12961301
setTargetToPrev();
12971302
} else {
12981303
const mid = (min + max) / 2;
1299-
if ((logLineIdToIdx.get(id) || 0) < mid) {
1304+
if ((logLineIdxToVisualIdx.get(id) || 0) < mid) {
13001305
setTargetToPrev();
13011306
} else {
13021307
setTargetToNext();
13031308
}
13041309
}
13051310
},
1306-
[logLines, logLineIdToIdx, memSlotDependencies, selectedLine],
1311+
[logLines, logLineIdxToVisualIdx, memSlotDependencies, selectedLine],
13071312
);
13081313

13091314
return (

0 commit comments

Comments
 (0)