Ejemplo n.º 1
0
        public static void Main(string[] args)
        {
            var spec = new Specification.Specification();

            {
                var specParserXml = new SpecificationReaderXml(spec);
                foreach (var xml in Directory.GetFiles(InputDirectoryXml))
                {
                    if (xml.EndsWith(".xml", StringComparison.OrdinalIgnoreCase))
                    {
                        specParserXml.Read(XDocument.Load(xml));
                    }
                }
            }
            SpecificationOverrides.OverrideSpecification(spec);
            {
                var specParserTxt = new SpecificationReaderTxt(spec);
                foreach (var txt in Directory.EnumerateFiles(InputDirectoryText, "*.txt", SearchOption.AllDirectories))
                {
                    using (var stream = File.OpenText(txt))
                        specParserTxt.Read(stream);
                }
            }
            using (var gen = new OutputGenerator(spec, OutputDirectory, "VulkanLibrary"))
                gen.Write();
        }
        public static void OverrideSpecification(Specification.Specification spec)
        {
            for (var i = 0; i < ExtraParents.GetLength(0); i++)
            {
                if (spec.TypeDefs.TryGetValue(ExtraParents[i, 0], out var type) && type is VkHandle h &&
                    !h.ParentHandles.Contains(ExtraParents[i, 1]))
                {
                    ((IList <string>)h.ParentHandles).Add(ExtraParents[i, 1]);
                }
            }

            foreach (var alias in spec.TypeDefs.Values.OfType <VkTypeAlias>())
            {
                if (alias.TypeName.Contains("Flag") &&
                    (spec.TypeDefs.TryGetValue(alias.TypeName.Replace("Flags", "Bits"), out VkType mapped) ||
                     spec.TypeDefs.TryGetValue(alias.TypeName.Replace("Flags", "FlagBits"), out mapped) ||
                     spec.TypeDefs.TryGetValue(alias.TypeName.Replace("Flag", "Bits"), out mapped) ||
                     spec.TypeDefs.TryGetValue(alias.TypeName.Replace("Flag", "FlagBits"), out mapped)) &&
                    mapped is VkEnum @enum)
                {
                    @enum.BackingType = alias.ActualType;
                    alias.ActualType  = @enum.TypeName;
                }
            }
        }
Ejemplo n.º 3
0
 public SpecificationReaderTxt(Specification.Specification spec)
 {
     _spec = spec;
 }
Ejemplo n.º 4
0
 public SpecificationReaderXml(Specification.Specification dest)
 {
     _spec = dest;
 }