UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

31 lines (30 loc) 1.53 kB
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'>>; }