public void ReadXML(XmlTextReader reader) { reader.MoveToNextElement(); if (reader.Name != "BuildSystem") { throw new ArgumentException("Invalid XML Format"); } string[] includeDirs = reader.GetAttribute("IncludeDirs").Split(';'); foreach (string include in includeDirs) { if (!string.IsNullOrEmpty(include)) { this.Project.IncludeDirs.Add(include); } } while (reader.MoveToNextElement()) { string configName = reader.Name; BuildConfig configToAdd = new BuildConfig(Project, configName); buildConfigs.Add(configToAdd); if (reader.IsEmptyElement) { continue; } reader.MoveToNextElement(); int count = Convert.ToInt32(reader.GetAttribute("Count")); string inputFile = reader.GetAttribute("InputFile"); switch (reader.Name) { case "ExternalBuildStep": string arguments = reader.GetAttribute("Arguments"); ExternalBuildStep exstep = new ExternalBuildStep(Project, count, inputFile, arguments); configToAdd.Steps.Add(exstep); break; case "InternalBuildStep": string outputFile = reader.GetAttribute("OutputFile"); StepType type = (StepType)Convert.ToInt16(reader.GetAttribute("StepType")); InternalBuildStep instep = new InternalBuildStep(Project, count, type, inputFile, outputFile); configToAdd.Steps.Add(instep); break; default: throw new ArgumentException("Invalid XML Format"); } } }
public Project(Stream stream, string projectFile) { using (var reader = new XmlTextReader(stream)) { stream = null; reader.WhitespaceHandling = WhitespaceHandling.None; reader.MoveToContent(); while (!reader.Name.Equals("WabbitcodeProject")) { if (!reader.MoveToNextElement()) { throw new InvalidDataException("Invalid XML Format"); } } string formatVersion = reader.GetAttribute("Version"); if (formatVersion != ProjectFileVersion) { throw new Exception("Invalid Version"); } ProjectFile = projectFile; ProjectDirectory = reader.GetAttribute("Directory"); if (ProjectDirectory == null) { ProjectDirectory = Path.GetDirectoryName(projectFile); } ProjectName = reader.GetAttribute("Name"); reader.MoveToNextElement(); if (reader.Name != "Folder") { throw new ArgumentException("Invalid XML Format"); } IProjectFolder mainFolder = new ProjectFolder(this, reader.GetAttribute("Name")); RecurseReadFolders(reader, ref mainFolder); MainFolder = mainFolder; BuildSystem = new BuildSystem(this, false); IncludeDirs = new List <string>(); BuildSystem.ReadXML(reader); } ParserService = new ParserService(); }
void ParseTemplatesFile() { var reader = new XmlTextReader(pathsService.TemplatesConfig); reader.WhitespaceHandling = WhitespaceHandling.None; reader.MoveToContent(); if (reader.Name != "templates") { throw new InvalidDataException("Invalid XML Format: unable to find head node"); } reader.MoveToNextElement(); while (reader.MoveToNextElement()) { switch (reader.Name) { case "model": HandleModelNode(ref reader); break; } } }
private void ParseTemplatesFile() { var reader = new XmlTextReader(Path.Combine(FileLocations.TemplatesDir, "Templates.xml")) { WhitespaceHandling = WhitespaceHandling.None }; reader.MoveToContent(); if (reader.Name != "templates") { throw new InvalidDataException("Invalid XML Format: unable to find head node"); } reader.MoveToNextElement(); while (reader.MoveToNextElement()) { switch (reader.Name) { case "model": HandleModelNode(ref reader); break; } } }
public static DebuggingStructureList FromXml(XmlTextReader reader) { DebuggingStructureList list = new DebuggingStructureList(); if (reader.Name != "DebugStructs") { return(list); } if (reader.IsEmptyElement) { reader.MoveToNextElement(); return(list); } reader.MoveToNextElement(); while (reader.Name == "Enum") { var name = reader.GetAttribute("Name"); var enumValues = new Dictionary <byte, List <string> >(); if (!reader.MoveToNextElement()) { break; } while (reader.Name == "EnumMask") { var maskList = new List <string>(); byte maskValue; if (!byte.TryParse(reader.GetAttribute("Mask"), out maskValue)) { continue; } while (reader.MoveToNextElement()) { if (reader.Name != "EnumValue") { break; } maskList.Add(reader.ReadString()); } enumValues.Add(maskValue, maskList); } var debugEnum = new DebuggingEnum(name, enumValues); list.DebugEnums.Add(debugEnum); } while (reader.Name == "Struct") { var name = reader.GetAttribute("Name"); var structure = new DebuggingStructure { Name = name }; while (reader.MoveToNextElement()) { if (reader.Name != "Prop") { break; } var model = new TreeStructureModel { Name = reader.GetAttribute("Name"), Size = Convert.ToInt32(reader.GetAttribute("Size")), Type = reader.GetAttribute("Type") }; structure.Properties.Add(model); } list.DebugStructs.Add(structure); } return(list); }
public void OpenProject(FilePath projectFile) { FileStream stream = null; try { stream = new FileStream(projectFile, FileMode.Open); using (XmlTextReader reader = new XmlTextReader(stream) { WhitespaceHandling = WhitespaceHandling.None }) { stream = null; reader.MoveToContent(); while (!reader.Name.Equals("WabbitcodeProject")) { if (!reader.MoveToNextElement()) { throw new ArgumentException("Invalid XML Format"); } } string formatVersion = reader.GetAttribute("Version"); if (formatVersion != ProjectFileVersion) { throw new InvalidProjectVersionException(); } ProjectName = reader.GetAttribute("Name"); reader.MoveToNextElement(); if (reader.Name != "Folder") { throw new ArgumentException("Invalid XML Format"); } _mainFolder = new ProjectFolder(null, reader.GetAttribute("Name")); RecurseReadFolders(reader, ref _mainFolder); reader.MoveToNextElement(); _debuggingStructure = DebuggingStructureList.FromXml(reader); var displayManager = VariableDisplayManager.Instance; foreach (var debugEnum in _debuggingStructure.DebugEnums) { var enumController = new EnumVariableDisplayController(new ExpressionEvaluator(), debugEnum); displayManager.RegisterVariableDisplayController(enumController); } foreach (var structure in _debuggingStructure.DebugStructs) { displayManager.RegisterVariableDisplayController(new CompositeVariableDisplayController(structure)); } BuildSystem.ReadXML(reader); } } finally { if (stream != null) { stream.Dispose(); } } SetupWatcher(); }
public void ReadXML(XmlTextReader reader) { FilePath root = _project.ProjectDirectory; if (reader.Name != "BuildSystem") { throw new ArgumentException("Invalid XML Format"); } var attribute = reader.GetAttribute("IncludeDirs"); if (attribute != null) { string[] includeDirs = attribute.Split(';'); foreach (string include in includeDirs.Where(include => !string.IsNullOrEmpty(include))) { string path = Uri.UnescapeDataString(new Uri(Path.Combine(root, include)).AbsolutePath); _project.IncludeDirs.Add(new FilePath(path)); } } BuildConfig configToAdd = null; while (reader.MoveToNextElement()) { if (reader.Name.Contains("Step")) { if (configToAdd == null) { throw new ArgumentException("Invalid XML Format"); } int count = Convert.ToInt32(reader.GetAttribute("StepNum")); string inputFile = reader.GetAttribute("InputFile"); switch (reader.Name) { case "ExternalBuildStep": string arguments = reader.GetAttribute("Arguments"); if (inputFile != null) { ExternalBuildStep exstep = new ExternalBuildStep( count, root.Combine(inputFile), arguments); configToAdd.AddStep(exstep); } break; case "InternalBuildStep": string outputFile = reader.GetAttribute("OutputFile"); BuildStepType type = (BuildStepType)Convert.ToInt16(reader.GetAttribute("StepType")); if (inputFile != null && outputFile != null) { InternalBuildStep instep = new InternalBuildStep( count, type, root.Combine(inputFile), root.Combine(outputFile)); configToAdd.AddStep(instep); } break; default: throw new ArgumentException("Invalid XML Format"); } } else { string configName = reader.Name; configToAdd = new BuildConfig(configName); _buildConfigs.Add(configToAdd); } } }