ATML1671Translator.translator.TranslationLibrary.GetLocalSignals C# (CSharp) Method

GetLocalSignals() public method

public GetLocalSignals ( XPathNodeIterator rootNode, int testNo ) : XPathNodeIterator
rootNode XPathNodeIterator
testNo int
return XPathNodeIterator
        public XPathNodeIterator GetLocalSignals(XPathNodeIterator rootNode, int testNo)
        {
            int counter = 1;
            XPathNodeIterator navigator = null;
            XmlDocument xPathDocument = new XmlDocument();
            XmlElement xmlElement = xPathDocument.CreateElement("signals");
            xPathDocument.AppendChild(xmlElement);
            XmlNamespaceManager mngr = new XmlNamespaceManager(new NameTable());
            List<string> varList = new List<string>();
            foreach (XPathNavigator root in rootNode)
            {
                XPathNodeIterator statements = root.Select( string.Format("//*/statement[@test_number={0}]", testNo) );
                foreach (XPathNavigator statement in statements)
                {
                    string refId = statement.GetAttribute( "refid", "" );
                    if (!String.IsNullOrWhiteSpace( refId ))
                    {
                        XPathNodeIterator signals =
                            root.Select( string.Format( "//*[@id={0}]/signal_component/atlas/noun", int.Parse(refId) ) );
                        foreach (XPathNavigator signal in signals)
                        {
                            string type = signal.GetAttribute( "type", "" );
                            string resource = signal.GetAttribute( "resource", "" );
                            if (!varList.Contains( type ))
                            {
                                varList.Add( type );
                                XmlElement el = xPathDocument.CreateElement( "signal" );
                                el.SetAttribute( "type", type );
                                el.SetAttribute( "resource", resource );
                                el.SetAttribute( "id", string.Format( "ls{0}-{1}", testNo, counter++ ) );
                                xmlElement.AppendChild( el );
                            }
                        }
                    }
                }
            }
            XPathNavigator nav = xPathDocument.CreateNavigator();
            navigator = nav.Select("/", mngr);
            return navigator;
        }