private void VisitVariantMatchStructure(SourceModel.VariantMatchStructure variantMatchStructure) { var variantMatchStructureDfir = new Nodes.VariantMatchStructure(_currentDiagram); _map.AddMapping(variantMatchStructure, variantMatchStructureDfir); int diagramIndex = 0; foreach (NestedDiagram nestedDiagram in variantMatchStructure.NestedDiagrams) { NationalInstruments.Dfir.Diagram dfirDiagram; if (diagramIndex == 0) { dfirDiagram = variantMatchStructureDfir.Diagrams[0]; } else { dfirDiagram = variantMatchStructureDfir.CreateDiagram(); } _map.AddMapping(nestedDiagram, dfirDiagram); ++diagramIndex; } foreach (BorderNode borderNode in variantMatchStructure.BorderNodes) { NationalInstruments.Dfir.BorderNode dfirBorderNode = TranslateBorderNode(borderNode, variantMatchStructureDfir); MapBorderNode(borderNode, dfirBorderNode); } foreach (NestedDiagram nestedDiagram in variantMatchStructure.NestedDiagrams) { nestedDiagram.AcceptVisitor(this); } }
private void VisitOptionPatternStructure(SourceModel.OptionPatternStructure pattern) { var patternDfir = new Nodes.OptionPatternStructure(_currentDiagram); _map.AddMapping(pattern, patternDfir); int diagramIndex = 0; foreach (NestedDiagram nestedDiagram in pattern.NestedDiagrams) { NationalInstruments.Dfir.Diagram dfirDiagram; if (diagramIndex == 0) { dfirDiagram = patternDfir.Diagrams[0]; } else { dfirDiagram = patternDfir.CreateDiagram(); } _map.AddMapping(nestedDiagram, dfirDiagram); ++diagramIndex; } foreach (BorderNode borderNode in pattern.BorderNodes) { NationalInstruments.Dfir.BorderNode dfirBorderNode = TranslateBorderNode(borderNode, patternDfir); MapBorderNode(borderNode, dfirBorderNode); } foreach (NestedDiagram nestedDiagram in pattern.NestedDiagrams) { nestedDiagram.AcceptVisitor(this); } }
private void VisitRebarFlatSequence(FlatSequence flatSequence) { var firstDiagram = flatSequence.NestedDiagrams.First(); var flatSequenceDfir = Frame.Create(_currentDiagram); _map.AddMapping(flatSequence, flatSequenceDfir); _map.AddMapping(firstDiagram, flatSequenceDfir.Diagram); foreach (BorderNode borderNode in flatSequence.BorderNodes) { NationalInstruments.Dfir.BorderNode dfirBorderNode = TranslateBorderNode(borderNode, flatSequenceDfir); MapBorderNode(borderNode, dfirBorderNode); } firstDiagram.AcceptVisitor(this); }
private void VisitLoop(SourceModel.Loop loop) { var firstDiagram = loop.NestedDiagrams.First(); var loopDfir = new Nodes.Loop(_currentDiagram); _map.AddMapping(loop, loopDfir); _map.AddMapping(firstDiagram, loopDfir.Diagrams[0]); foreach (BorderNode borderNode in loop.BorderNodes) { NationalInstruments.Dfir.BorderNode dfirBorderNode = TranslateBorderNode(borderNode, loopDfir); MapBorderNode(borderNode, dfirBorderNode); } firstDiagram.AcceptVisitor(this); }
private void MapBorderNode(BorderNode sourceModelBorderNode, NationalInstruments.Dfir.BorderNode dfirBorderNode) { if (dfirBorderNode != null) { _map.AddMapping(sourceModelBorderNode, dfirBorderNode); int i = 0; foreach (var terminal in sourceModelBorderNode.OuterTerminals) { MapTerminalAndType(terminal, dfirBorderNode.GetOuterTerminal(i)); ++i; } i = 0; foreach (var terminal in sourceModelBorderNode.InnerTerminals) { MapTerminalAndType(terminal, dfirBorderNode.GetInnerTerminal(0, i)); ++i; } } }
private void MapBorderNode(BorderNode sourceModelBorderNode, NationalInstruments.Dfir.BorderNode dfirBorderNode) { if (dfirBorderNode != null) { _map.AddMapping(sourceModelBorderNode, dfirBorderNode); int i = 0; foreach (var terminal in sourceModelBorderNode.OuterTerminals) { _map.MapTerminalAndType(terminal, dfirBorderNode.GetOuterTerminal(i)); ++i; } i = 0; foreach (var terminal in sourceModelBorderNode.InnerTerminals) { // TODO: won't work for border nodes with multiple inner terminals per diagram // also assumes that the border node has the same terminals on each diagram, which // won't be true for the pattern selector // Fortunately, for now, the only inner terminal on OptionPatternStructureSelector is on the first diagram _map.MapTerminalAndType(terminal, dfirBorderNode.GetInnerTerminal(i, 0)); ++i; } } }