/// <summary> /// Generates the platform-agnostic IDL file from the given UTinyProject. /// </summary> public static void GenerateIDL(UTinyProject project, FileInfo destination) { var writer = new UTinyCodeWriter { CodeStyle = CodeStyle.CSharp }; writer.Line("using UTiny;"); var mainModule = project.Module.Dereference(project.Registry); foreach (var dep in mainModule.EnumerateDependencies()) { if (dep.Equals(mainModule)) { continue; } writer.Line($"using {dep.Name};"); } project.Visit(new GenerateIDLVisitor { Writer = writer }); File.WriteAllText(destination.FullName, writer.ToString(), Encoding.UTF8); }
/// <summary> /// Generates the platform-agnostic IDL file from the given UTinyProject. /// </summary> public static void GenerateIDL(UTinyProject project, FileInfo destination) { var writer = new UTinyCodeWriter { CodeStyle = CodeStyle.CSharp }; writer.Line("using UTiny;"); writer.Line("using UTiny.Shared;"); var mainModule = project.Module.Dereference(project.Registry); foreach (var dep in mainModule.EnumerateDependencies()) { if (dep.Equals(mainModule)) { continue; } if (dep.Name == "UTiny.Core") // Hack: The Core module does not actually generate a Core namespace, but Core namespace is the UTiny/ut namespace. { continue; } if (dep.IsRuntimeIncluded) { writer.Line($"using {dep.Name};"); // Core namespaces are of form "UTiny.Core2D". } else { writer.Line($"using {dep.Namespace.Replace("UTiny.", "ut.")};"); // Runtime generated namespaces are of form "ut.tween". } } project.Visit(new GenerateIDLVisitor { Writer = writer }); File.WriteAllText(destination.FullName, writer.ToString(), Encoding.UTF8); }