public static TableAdjacency <CausalAttribute> traceAll(TableAdjacency <CausalAttribute> inputTable, List <uint> entrySourceIndices) { TableAdjacency <CausalAttribute> resultTable; // TODO = inputTable.clone(); // TODO /* * foreach( uint entrySourceIndex in entrySourceIndices) { * List<Tuple<uint, CausalAttribute>> sourcePath = new List<Tuple<uint, CausalAttribute>> {new Tuple<uint, CausalAttribute>(0, entrySourceIndex) }; * * traceRecursive(sourcePath, resultTable, inputTable); * } */ return(null);//resultTable; }
private static void traceRecursive(List <Tuple <uint, CausalAttribute> > sourcePath, TableAdjacency <CausalAttribute> resultTable, TableAdjacency <CausalAttribute> inputTable) { uint currentSourceIndex = sourcePath[sourcePath.Count - 1].Item1; resultTable.addDestinationSourceUnion(currentSourceIndex, sourcePath); foreach (Tuple <uint, CausalAttribute> iterationDestination in inputTable.getDestinationsBySource(currentSourceIndex)) { List <Tuple <uint, CausalAttribute> > sourcePathForCallee = copyTupleList(sourcePath); // ASK< is adding the sourcedepth here correct? > sourcePathForCallee.Add(new Tuple <uint, CausalAttribute>(iterationDestination.Item1 + 1, iterationDestination.Item2)); traceRecursive(sourcePathForCallee, resultTable, inputTable); } }