public void SetData(WrapperProject project) { _project = project; if (project?.GlobalNamespaceCSharp != null) { //parseFilesButton.Enabled = true; AddModelNode(project.GlobalNamespaceCSharp, null); } else { //parseFilesButton.Enabled = false; } }
public IActionResult CreatProject([FromBody] WrapperProject Param) { #region Validate Token RequestResponse isAuthorized = new Authorize().RequestTokenAuth(Request); if (isAuthorized.Success == false) { return(BadRequest(isAuthorized)); } #endregion WrapperProject data = new Services.ProjectUDService().CreateSingleProject(Param.Project); return(Ok(data)); }
static void ReadHeaderDefinition(WrapperProject project, XmlReader reader) { string sourceRootFolder = project.SourceRootFoldersFull.Last(); string headerPath = Path.Combine(sourceRootFolder, reader.GetAttribute("Path")); headerPath = headerPath.Replace('\\', '/'); var header = new HeaderDefinition(headerPath); string isExcluded = reader.GetAttribute("IsExcluded"); if ("true".Equals(isExcluded)) { header.IsExcluded = true; } project.HeaderDefinitions.Add(headerPath, header); if (reader.IsEmptyElement) { return; } while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "Class": case "ClassTemplate": case "Enum": { var classes = ReadClassDefinition(project, reader, header).ToList(); foreach (var @class in classes) { project.ClassDefinitions.Add(@class.FullyQualifiedName, @class); } } break; } } else if (reader.NodeType == XmlNodeType.EndElement) { break; } } }
static void ReadProject(WrapperProject project, XmlReader reader) { string sourceRootFolder = null; while (reader.Read()) { if (reader.NodeType != XmlNodeType.Element) { continue; } switch (reader.Name) { case "HeaderDefinition": { ReadHeaderDefinition(project, reader, sourceRootFolder); } break; case "NamespaceName": { reader.Read(); project.NamespaceName = reader.Value; } break; case "SourceRootFolder": { sourceRootFolder = reader.GetAttribute("Path"); sourceRootFolder = Path.Combine(Path.GetDirectoryName(project.ProjectPath), sourceRootFolder); sourceRootFolder = Path.GetFullPath(sourceRootFolder); project.SourceRootFolders.Add(sourceRootFolder); } break; case "ReplaceMapping": case "ScriptedMapping": { ReadSymbolMapping(project, reader); } break; } } }
static void ReadHeaderDefinition(WrapperProject project, XmlReader reader, string sourceRootFolder) { string headerPath = Path.Combine(sourceRootFolder, reader.GetAttribute("Path")); headerPath = headerPath.Replace('\\', '/'); HeaderDefinition header = new HeaderDefinition(headerPath); string isExcluded = reader.GetAttribute("IsExcluded"); if ("true".Equals(isExcluded)) { header.IsExcluded = true; } project.HeaderDefinitions.Add(headerPath, header); if (reader.IsEmptyElement) { return; } while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "ClassDefinition": case "ClassTemplateDefinition": case "EnumDefinition": { ReadClassDefinition(project, reader, header); } break; } } else if (reader.NodeType == XmlNodeType.EndElement) { break; } } }
public static void Read(WrapperProject project) { var xmlSettings = new XmlReaderSettings(); xmlSettings.Schemas.Add("urn:dotnetwrappergen", "dotnetwrappergen.xsd"); xmlSettings.ValidationType = ValidationType.Schema; xmlSettings.ValidationEventHandler += (sender, args) => { Console.WriteLine(args.Message); }; using (var reader = XmlReader.Create(project.ProjectFilePath, xmlSettings)) { while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.Name.Equals("Project")) { ReadProject(project, reader); } } } }
public static void Read(WrapperProject project) { var xmlSettings = new XmlReaderSettings(); xmlSettings.Schemas.Add("urn:dotnetwrappergen", "dotnetwrappergen.xsd"); xmlSettings.ValidationType = ValidationType.Schema; xmlSettings.ValidationEventHandler += (sender, args) => { Console.WriteLine(args.Message); }; using (var reader = XmlReader.Create(project.ProjectPath, xmlSettings)) { while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.Name.Equals("Project")) { ReadProject(project, reader); } } } }
static void ReadHeaderDefinition(WrapperProject project, XmlReader reader) { string sourceRootFolder = project.SourceRootFoldersFull.Last(); string headerPath = Path.Combine(sourceRootFolder, reader.GetAttribute("Path")); headerPath = headerPath.Replace('\\', '/'); var header = new HeaderDefinition(headerPath); string isExcluded = reader.GetAttribute("IsExcluded"); if ("true".Equals(isExcluded)) { header.IsExcluded = true; } project.HeaderDefinitions.Add(headerPath, header); if (reader.IsEmptyElement) { return; } while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "Class": case "ClassTemplate": case "Enum": { ReadClassDefinition(project, reader, header); } break; } } else if (reader.NodeType == XmlNodeType.EndElement) { break; } } }
public static void Write(WrapperProject project) { using (var writer = XmlWriter.Create(project.ProjectFilePath, new XmlWriterSettings() { Indent = true })) { writer.WriteStartElement("Project", "urn:dotnetwrappergen"); WriteStringElementIfNotNull(writer, "CppProjectPath", project.CppProjectPath); WriteStringElementIfNotNull(writer, "CProjectPath", project.CProjectPath); WriteStringElementIfNotNull(writer, "CsProjectPath", project.CsProjectPath); WriteStringElementIfNotNull(writer, "CppCliProjectPath", project.CppCliProjectPath); if (project.ClassNameMapping != null) { WriteMapping(writer, project.ClassNameMapping); } if (project.MethodNameMapping != null) { WriteMapping(writer, project.MethodNameMapping); } if (project.ParameterNameMapping != null) { WriteMapping(writer, project.ParameterNameMapping); } writer.WriteStartElement("NamespaceName"); writer.WriteString(project.NamespaceName); writer.WriteEndElement(); for (int i = 0; i < project.SourceRootFolders.Count; i++) { string sourceRootFolder = project.SourceRootFolders[i]; string sourceRootFolderFull = project.SourceRootFoldersFull.ElementAt(i); string sourceRootFolderCanonical = sourceRootFolderFull.Replace('\\', '/'); writer.WriteStartElement("SourceRootFolder"); writer.WriteAttributeString("Path", sourceRootFolder); foreach (var header in project.HeaderDefinitions) { if (!header.Key.StartsWith(sourceRootFolderCanonical)) { continue; } writer.WriteStartElement("Header"); string headerRelativePath = WrapperProject.MakeRelativePath(sourceRootFolderFull, header.Key); headerRelativePath = headerRelativePath.Replace('\\', '/'); writer.WriteAttributeString("Path", headerRelativePath); if (header.Value.IsExcluded) { writer.WriteAttributeString("IsExcluded", "true"); } else { foreach (var @class in header.Value.Classes) { WriteClassDefinition(writer, @class); } } writer.WriteEndElement(); } writer.WriteEndElement(); } } }
public static void Write(WrapperProject project) { using (var writer = XmlWriter.Create(project.ProjectFilePath, new XmlWriterSettings() { Indent = true })) { writer.WriteStartElement("Project", "urn:dotnetwrappergen"); WriteStringElementIfNotNull(writer, "CppProjectPath", project.CppProjectPath); WriteStringElementIfNotNull(writer, "CProjectPath", project.CProjectPath); WriteStringElementIfNotNull(writer, "CsProjectPath", project.CsProjectPath); WriteStringElementIfNotNull(writer, "CppCliProjectPath", project.CppCliProjectPath); if (project.ClassNameMapping != null) WriteMapping(writer, project.ClassNameMapping); if (project.MethodNameMapping != null) WriteMapping(writer, project.MethodNameMapping); if (project.ParameterNameMapping != null) WriteMapping(writer, project.ParameterNameMapping); writer.WriteStartElement("NamespaceName"); writer.WriteString(project.NamespaceName); writer.WriteEndElement(); for (int i = 0; i < project.SourceRootFolders.Count; i++) { string sourceRootFolder = project.SourceRootFolders[i]; string sourceRootFolderFull = project.SourceRootFoldersFull.ElementAt(i); string sourceRootFolderCanonical = sourceRootFolderFull.Replace('\\', '/'); writer.WriteStartElement("SourceRootFolder"); writer.WriteAttributeString("Path", sourceRootFolder); foreach (var header in project.HeaderDefinitions) { if (!header.Key.StartsWith(sourceRootFolderCanonical)) continue; writer.WriteStartElement("Header"); string headerRelativePath = WrapperProject.MakeRelativePath(sourceRootFolderFull, header.Key); headerRelativePath = headerRelativePath.Replace('\\', '/'); writer.WriteAttributeString("Path", headerRelativePath); if (header.Value.IsExcluded) { writer.WriteAttributeString("IsExcluded", "true"); } else { foreach (var @class in header.Value.Classes) { WriteClassDefinition(writer, @class); } } writer.WriteEndElement(); } writer.WriteEndElement(); } } }
static void ReadSymbolMapping(WrapperProject project, XmlReader reader) { string mappingType = reader.Name; string mappingName = reader.GetAttribute("Name"); var replacements = new Dictionary<string, string>(); string scriptBody = null; if (reader.IsEmptyElement) { return; } while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "Replacement": { string replace = reader.GetAttribute("Replace"); string with = reader.GetAttribute("With"); replacements.Add(replace, with); } break; case "ScriptBody": { scriptBody = reader.ReadElementContentAsString(); } break; } } else if (reader.NodeType == XmlNodeType.EndElement) { break; } } ISymbolMapping mapping; switch (mappingType) { case "ScriptedMapping": { mapping = new ScriptedMapping(mappingName, scriptBody); } break; case "ReplaceMapping": { mapping = new ReplaceMapping(mappingName); } break; default: Console.WriteLine("Unknown mapping!"); return; } var replaceMapping = mapping as ReplaceMapping; if (replaceMapping != null) { foreach (var replacement in replacements) { replaceMapping.Replacements.Add(replacement.Key, replacement.Value); } } switch (mapping.Name) { case "NameMapping": project.ClassNameMapping = mapping; project.HeaderNameMapping = mapping; break; case "MethodNameMapping": project.MethodNameMapping = mapping; break; case "ParameterNameMapping": project.ParameterNameMapping = mapping; break; } }
static void ReadClassDefinition(WrapperProject project, XmlReader reader, HeaderDefinition header, ClassDefinition parent = null) { string className = reader.GetAttribute("Name"); ClassDefinition @class; string classType = reader.Name; switch (classType) { case "ClassDefinition": @class = new ClassDefinition(className, header, parent); break; case "ClassTemplateDefinition": @class = new ClassTemplateDefinition(className, header, parent); break; case "EnumDefinition": @class = new EnumDefinition(className, header, parent); break; default: throw new NotImplementedException(); } string namespaceName = reader.GetAttribute("Namespace"); if (namespaceName != null) { @class.NamespaceName = namespaceName; } string isExcluded = reader.GetAttribute("IsExcluded"); if ("true".Equals(isExcluded)) { @class.IsExcluded = true; } project.ClassDefinitions.Add(@class.FullyQualifiedName, @class); if (reader.IsEmptyElement) { return; } while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "ClassDefinition": case "ClassTemplateDefinition": case "EnumDefinition": { ReadClassDefinition(project, reader, header, @class); } break; } } else if (reader.NodeType == XmlNodeType.EndElement) { break; } } }
public CSharpProjectWriter(WrapperProject project) { _project = project; }
static void ReadProject(WrapperProject project, XmlReader reader) { while (reader.Read()) { if (reader.NodeType != XmlNodeType.Element) { continue; } switch (reader.Name) { case "CppProjectPath": { project.CppProjectPath = reader.ReadElementContentAsString(); } break; case "CProjectPath": { project.CProjectPath = reader.ReadElementContentAsString(); } break; case "CsProjectPath": { project.CsProjectPath = reader.ReadElementContentAsString(); } break; case "CppCliProjectPath": { project.CppCliProjectPath = reader.ReadElementContentAsString(); } break; case "Header": { ReadHeaderDefinition(project, reader); } break; case "NamespaceName": { reader.Read(); project.NamespaceName = reader.Value; } break; case "SourceRootFolder": { string sourceRootFolder = reader.GetAttribute("Path"); project.SourceRootFolders.Add(sourceRootFolder); } break; case "ReplaceMapping": case "ScriptedMapping": { ReadSymbolMapping(project, reader); } break; } } }
static IEnumerable <ClassDefinition> ReadClassDefinition(WrapperProject project, XmlReader reader, HeaderDefinition header, ClassDefinition parent = null) { string className = reader.GetAttribute("Name"); ClassDefinition @class; string classType = reader.Name; switch (classType) { case "Class": @class = new ClassDefinition(className, header, parent); break; case "ClassTemplate": @class = new ClassTemplateDefinition(className, header, parent); break; case "Enum": @class = new EnumDefinition(className, header, parent); break; default: throw new NotImplementedException(); } string namespaceName = reader.GetAttribute("Namespace"); if (namespaceName != null) { @class.NamespaceName = namespaceName; } if ("true".Equals(reader.GetAttribute("IsExcluded"))) { @class.IsExcluded = true; } if ("true".Equals(reader.GetAttribute("HasPreventDelete"))) { @class.HasPreventDelete = true; } if ("true".Equals(reader.GetAttribute("MarshalAsStruct"))) { @class.MarshalAsStruct = true; } if (reader.IsEmptyElement) { yield return(@class); yield break; } while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "Class": case "ClassTemplate": case "Enum": var classes = ReadClassDefinition(project, reader, header, @class); foreach (var c in classes) { yield return(c); } break; case "Method": ReadMethodDefinition(reader, @class); break; case "TemplateParameter": (@class as ClassTemplateDefinition).TemplateParameters .Add(reader.ReadElementContentAsString()); break; } } else if (reader.NodeType == XmlNodeType.EndElement) { break; } } yield return(@class); }
static void ReadClassDefinition(WrapperProject project, XmlReader reader, HeaderDefinition header, ClassDefinition parent = null) { string className = reader.GetAttribute("Name"); ClassDefinition @class; string classType = reader.Name; switch (classType) { case "Class": @class = new ClassDefinition(className, header, parent); break; case "ClassTemplate": @class = new ClassTemplateDefinition(className, header, parent); break; case "Enum": @class = new EnumDefinition(className, header, parent); break; default: throw new NotImplementedException(); } string namespaceName = reader.GetAttribute("Namespace"); if (namespaceName != null) { @class.NamespaceName = namespaceName; } if ("true".Equals(reader.GetAttribute("IsExcluded"))) { @class.IsExcluded = true; } if ("true".Equals(reader.GetAttribute("HasPreventDelete"))) { @class.HasPreventDelete = true; } project.ClassDefinitions.Add(@class.FullyQualifiedName, @class); if (reader.IsEmptyElement) { return; } while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "Class": case "ClassTemplate": case "Enum": { ReadClassDefinition(project, reader, header, @class); } break; case "Method": { ReadMethodDefinition(reader, @class); } break; } } else if (reader.NodeType == XmlNodeType.EndElement) { break; } } }
static void ReadProject(WrapperProject project, XmlReader reader) { while (reader.Read()) { if (reader.NodeType != XmlNodeType.Element) { continue; } switch (reader.Name) { case "CppProjectPath": { project.CppProjectPath = reader.ReadElementContentAsString(); } break; case "CProjectPath": { project.CProjectPath = reader.ReadElementContentAsString(); } break; case "CsProjectPath": { project.CsProjectPath = reader.ReadElementContentAsString(); } break; case "CppCliProjectPath": { project.CppCliProjectPath = reader.ReadElementContentAsString(); } break; case "Header": { ReadHeaderDefinition(project, reader); } break; case "NamespaceName": { reader.Read(); project.NamespaceName = reader.Value; } break; case "SourceRootFolder": { string sourceRootFolder = reader.GetAttribute("Path"); project.SourceRootFolders.Add(sourceRootFolder); } break; case "ReplaceMapping": case "ScriptedMapping": { ReadSymbolMapping(project, reader); } break; } } }
static void ReadSymbolMapping(WrapperProject project, XmlReader reader) { string mappingType = reader.Name; string mappingName = reader.GetAttribute("Name"); var replacements = new Dictionary <string, string>(); string scriptBody = null; if (reader.IsEmptyElement) { return; } while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "Replacement": { string replace = reader.GetAttribute("Replace"); string with = reader.GetAttribute("With"); replacements.Add(replace, with); } break; case "ScriptBody": { scriptBody = reader.ReadElementContentAsString(); } break; } } else if (reader.NodeType == XmlNodeType.EndElement) { break; } } ISymbolMapping mapping; switch (mappingType) { case "ScriptedMapping": { mapping = new ScriptedMapping(mappingName, scriptBody); } break; case "ReplaceMapping": { mapping = new ReplaceMapping(mappingName); } break; default: Console.WriteLine("Unknown mapping!"); return; } if (mapping is ReplaceMapping) { var replaceMapping = mapping as ReplaceMapping; foreach (var replacement in replacements) { replaceMapping.Replacements.Add(replacement.Key, replacement.Value); } } switch (mapping.Name) { case "NameMapping": project.ClassNameMapping = mapping; project.HeaderNameMapping = mapping; break; case "MethodNameMapping": project.MethodNameMapping = mapping; break; case "ParameterNameMapping": project.ParameterNameMapping = mapping; break; } }
public static void Write(WrapperProject project) { using (var writer = XmlWriter.Create(project.ProjectPath, new XmlWriterSettings() { Indent = true })) { writer.WriteStartElement("Project"); if (project.ClassNameMapping != null) { WriteMapping(writer, project.ClassNameMapping); } if (project.MethodNameMapping != null) { WriteMapping(writer, project.MethodNameMapping); } if (project.ParameterNameMapping != null) { WriteMapping(writer, project.ParameterNameMapping); } writer.WriteStartElement("NamespaceName"); writer.WriteString(project.NamespaceName); writer.WriteEndElement(); foreach (string sourceRootFolder in project.SourceRootFolders) { string sourceRootFolderCanonical = sourceRootFolder.Replace('\\', '/'); writer.WriteStartElement("SourceRootFolder"); string sourceRootFolderRelative = MakeRelativePath(project.ProjectPath, sourceRootFolder); sourceRootFolderRelative = sourceRootFolderRelative.Replace('\\', '/'); writer.WriteAttributeString("Path", sourceRootFolderRelative); foreach (var header in project.HeaderDefinitions) { if (!header.Key.StartsWith(sourceRootFolderCanonical)) { continue; } writer.WriteStartElement("HeaderDefinition"); string headerRelativePath = MakeRelativePath(sourceRootFolder, header.Key); headerRelativePath = headerRelativePath.Replace('\\', '/'); writer.WriteAttributeString("Path", headerRelativePath); if (header.Value.IsExcluded) { writer.WriteAttributeString("IsExcluded", "true"); } else { foreach (var @class in header.Value.Classes) { WriteClassDefinition(writer, @class); } } writer.WriteEndElement(); } writer.WriteEndElement(); } } }
static IEnumerable<ClassDefinition> ReadClassDefinition(WrapperProject project, XmlReader reader, HeaderDefinition header, ClassDefinition parent = null) { string className = reader.GetAttribute("Name"); ClassDefinition @class; string classType = reader.Name; switch (classType) { case "Class": @class = new ClassDefinition(className, header, parent); break; case "ClassTemplate": @class = new ClassTemplateDefinition(className, header, parent); break; case "Enum": @class = new EnumDefinition(className, header, parent); break; default: throw new NotImplementedException(); } string namespaceName = reader.GetAttribute("Namespace"); if (namespaceName != null) { @class.NamespaceName = namespaceName; } if ("true".Equals(reader.GetAttribute("IsExcluded"))) @class.IsExcluded = true; if ("true".Equals(reader.GetAttribute("HasPreventDelete"))) @class.HasPreventDelete = true; if ("true".Equals(reader.GetAttribute("MarshalAsStruct"))) @class.MarshalAsStruct = true; if (reader.IsEmptyElement) { yield return @class; yield break; } while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "Class": case "ClassTemplate": case "Enum": var classes = ReadClassDefinition(project, reader, header, @class); foreach (var c in classes) { yield return c; } break; case "Method": ReadMethodDefinition(reader, @class); break; case "TemplateParameter": (@class as ClassTemplateDefinition).TemplateParameters .Add(reader.ReadElementContentAsString()); break; } } else if (reader.NodeType == XmlNodeType.EndElement) { break; } } yield return @class; }