Example #1
0
        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);
            }
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
 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;
         }
     }
 }
Example #6
0
 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;
         }
     }
 }