Esempio n. 1
0
        void ResolveFeatures(XmlNode root)
        {
            string number = root.Attributes["number"].Value;

            string[] tokens = number.Split('.');
            int      fMajor = int.Parse(tokens[0]);
            int      fMinor = int.Parse(tokens[1]);

            if ((fMajor < major) || (fMajor == major && fMinor < minor))
            {
                return;
            }
            foreach (XmlNode node in root.ChildNodes)
            {
                if (node.Name == "require")
                {
                    foreach (XmlNode f in node.ChildNodes)
                    {
                        if (f.Name == "command")
                        {
                            IncludedCommands.Add(f.Attributes["name"].Value);
                        }
                    }
                }
            }
        }
Esempio n. 2
0
        void ResolveExtensions(XmlNode root)
        {
            foreach (XmlNode extension in root.ChildNodes)
            {
                if (extension is XmlComment)
                {
                    continue;
                }
                string eName = extension.Attributes["name"].Value;

                foreach (XmlNode r in extension.ChildNodes)
                {
                    foreach (XmlNode node in r.ChildNodes)
                    {
                        if (r.Name == "require")
                        {
                            if (node.Name == "command")
                            {
                                if (ExtensionRequested(eName))
                                {
                                    IncludedCommands.Add(node.Attributes["name"].Value);
                                    ExtensionCommands.Add(node.Attributes["name"].Value);
                                }
                            }
                            else if (node.Name == "type")
                            {
                                string tName = node.Attributes["name"].Value;
                                if (ExtensionRequested(eName))
                                {
                                    IncludedTypes.Add(tName);
                                }
                                ExtensionTypes.Add(tName);
                            }
                            else if (node.Name == "enum")
                            {
                                if (ExtensionRequested(eName))
                                {
                                    var extends         = node.Attributes["extends"];
                                    var offsetNode      = node.Attributes["offset"];
                                    var extensionNumber = node.Attributes["extnumber"];

                                    if (node.Attributes["alias"] != null)
                                    {
                                        continue;
                                    }

                                    if (extends != null && offsetNode != null)
                                    {
                                        var name = extends.Value;
                                        int exNumber;
                                        if (extensionNumber != null)
                                        {
                                            exNumber = int.Parse(extensionNumber.Value);
                                        }
                                        else
                                        {
                                            exNumber = 2;
                                        }
                                        var offset = int.Parse(offsetNode.Value);
                                        var sign   = 1;

                                        if (node.Attributes["dir"] != null)
                                        {
                                            sign = -1;
                                        }

                                        EnumMap[name].Extend(node.Attributes["name"].Value, exNumber, offset, sign);
                                    }

                                    IncludedTypes.Add(node.Attributes["name"].Value);
                                }
                            }
                        }
                    }
                }
            }
        }