public override void Build(XElement parentNode) { BuildTable(parentNode); foreach (XElement node in parentNode.Elements()) { if (node.Name == "type") { var name = node.GetAttribute("name"); Console.WriteLine("Type " + name); if (!TypeTable.TypeExists(name)) { throw new Exception("Missing Type " + name); } var newType = TypeTable.GetType(name); if (newType.IsPrimitive || newType.NoTemplate) { continue; } TypeInstance ti = new TypeInstance(outputPath, templateContent, node); ti.WriteContent(); } } }
private void BuildTable(XElement parentNode) { foreach (XElement node in parentNode.Elements()) { if (node.Name == "type") { var name = node.GetAttribute("name"); if (TypeTable.TypeExists(name)) { throw new Exception("Duplicated Type " + name); } TypeInfo newType = new TypeInfo(name); if (node.HasAttribute("parent")) { newType.Parent = node.GetAttribute("parent"); } if (node.HasAttribute("primitive")) { newType.IsPrimitive = node.GetAttribute("primitive") == "true"; } if (node.HasAttribute("reader")) { newType.Reader = node.GetAttribute("reader"); } if (node.HasAttribute("writer")) { newType.Writer = node.GetAttribute("writer"); } if (node.HasAttribute("noTemplate")) { newType.NoTemplate = node.GetAttribute("noTemplate") == "true"; } if (node.HasAttribute("integer")) { newType.IsIntegerType = node.GetAttribute("integer") == "true"; } if (node.HasAttribute("signed")) { newType.IsSignedType = node.GetAttribute("signed") == "true"; } if (node.HasAttribute("baseType")) { newType.BaseType = node.GetAttribute("baseType"); } TypeTable.AddType(newType); } } }