@eagleoutice/flowr
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
31 lines (30 loc) • 1.53 kB
TypeScript
import type { Fingerprint } from './fingerprint';
import type { NodeToSlice, SliceResult } from './slicer-types';
import type { REnvironmentInformation } from '../../dataflow/environments/environment';
import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
import type { DataflowGraphVertexInfo } from '../../dataflow/graph/vertex';
export declare class VisitingQueue {
private readonly threshold;
private timesHitThreshold;
private readonly seen;
private readonly seenByCache;
private readonly idThreshold;
private readonly queue;
private readonly cache?;
potentialAdditions: Map<NodeId, [NodeId, NodeToSlice]>;
private cachedCallTargets;
constructor(threshold: number, cache?: Map<Fingerprint, Set<NodeId>>);
/**
* Adds a node to the queue if it has not been seen before.
* @param target - the node to add
* @param env - the environment the node is traversed in
* @param envFingerprint - the fingerprint of the environment
* @param onlyForSideEffects - whether the node is only used for its side effects
*/
add(target: NodeId, env: REnvironmentInformation, envFingerprint: string, onlyForSideEffects: boolean): void;
next(): NodeToSlice;
nonEmpty(): boolean;
hasId(id: NodeId): boolean;
memoizeCallTargets(id: NodeId, targets: () => Set<DataflowGraphVertexInfo>): Set<DataflowGraphVertexInfo>;
status(): Readonly<Pick<SliceResult, 'timesHitThreshold' | 'result'>>;
}