Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 1x 2x 2x 4x 4x 4x 4x 4x 4x 7x | type DebuggerVariable = {
name?: string;
symbol: string;
length?: number;
offset?: number;
};
export type DebuggerVariableRow<T extends DebuggerVariable> = T & {
arrayIndex: number;
displayName: string;
displaySymbol: string;
value: number | undefined;
};
export const expandDebuggerVariables = <T extends DebuggerVariable>(
variableSymbols: string[],
variableDataBySymbol: Record<string, T>,
variablesData: number[],
): DebuggerVariableRow<T>[] => {
let fallbackOffset = 0;
return variableSymbols.flatMap((symbol) => {
const variable = variableDataBySymbol[symbol];
Iif (!variable) {
return [];
}
const length = Math.max(1, Math.floor(variable.length ?? 1));
const offset = variable.offset ?? fallbackOffset;
fallbackOffset = Math.max(fallbackOffset, offset + length);
const name = variable.name ?? variable.symbol;
return Array.from({ length }, (_, arrayIndex) => ({
...variable,
arrayIndex,
displayName: length > 1 ? `${name}[${arrayIndex}]` : name,
displaySymbol:
length > 1 ? `${variable.symbol}[${arrayIndex}]` : variable.symbol,
value: variablesData[offset + arrayIndex],
}));
});
};
|