Exemplo n.º 1
0
        static private void readStaticSection(XmlReader r, AlarmDefinitionList alarms)
        {
            if (!r.ReadToDescendant("Member"))
            {
                return;
            }

            string name = r.GetAttribute("Name");

            if (name != "Props")
            {
                throw new XmlException("No Props member found");
            }
            string type  = r.GetAttribute("Datatype");
            Match  match = Regex.Match(type, "^Array\\[\\d+..(\\d+)\\] of");

            if (match.Success)
            {
                int last = int.Parse(match.Groups[1].Value);
                Console.WriteLine("Last index {0}", last);
                AlarmDefinition[] array = new AlarmDefinition[last];
                for (int i = 0; i < last; i++)
                {
                    array[i]    = new AlarmDefinition(null, null);
                    array[i].ID = i + 1;
                }
                if (!r.ReadToDescendant("Member"))
                {
                    throw new XmlException("Member not found");
                }
                do
                {
                    string member_name = r.GetAttribute("Name");
                    string member_type = r.GetAttribute("Datatype");
                    if (member_name == "Silent" && member_type == "Bool")
                    {
                        readSilentMember(r.ReadSubtree(), array);
                    }
                    else if (member_name == "AutoAck" && member_type == "Bool")
                    {
                        readAutoAckMember(r.ReadSubtree(), array);
                    }
                    else if (member_name == "Text" && member_type.StartsWith("String["))
                    {
                        readTextMember(r.ReadSubtree(), array);
                    }
                } while (r.ReadToNextSibling("Member"));
                alarms.Clear();
                alarms.AddRange(array);
            }
        }