private static Dictionary <string, string> GenerateFiles(ProjectConfig config, PastelContext context) { Dictionary <string, string> output = new Dictionary <string, string>(); if (context.UsesClassDefinitions) { Dictionary <string, string> classDefinitions = context.GetCodeForClasses(); foreach (string className in classDefinitions.Keys.OrderBy(k => k)) { string classCode = classDefinitions[className]; if (context.ClassDefinitionsInSeparateFiles) { GenerateClassImplementation(config, className, classCode); } else { output["class_def:" + className] = classCode; } } if (!context.ClassDefinitionsInSeparateFiles) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); foreach (string key in output.Keys.Where(k => k.StartsWith("class_def:")).OrderBy(k => k)) { sb.Append(output[key]); sb.Append("\n\n"); } string code = sb.ToString().Trim(); if (code.Length > 0) { string classOutputDir = System.IO.Path.GetDirectoryName(config.OutputFileFunctions); string path = System.IO.Path.Combine(classOutputDir, "Classes" + LanguageUtil.GetFileExtension(config.Language)); System.IO.File.WriteAllText(path, code + "\n"); } } } if (context.UsesStructDefinitions) { Dictionary <string, string> structDefinitions = context.GetCodeForStructs(); string[] structOrder = structDefinitions.Keys.OrderBy(k => k.ToLower()).ToArray(); if (context.HasStructsInSeparateFiles) { foreach (string structName in structOrder) { GenerateStructImplementation(config, structName, structDefinitions[structName]); } } else { GenerateStructBundleImplementation(config, structOrder, structDefinitions); } if (context.UsesStructDeclarations) { Dictionary <string, string> structDeclarations = structOrder.ToDictionary(k => context.GetCodeForStructDeclaration(k)); foreach (string structName in structOrder) { output["struct_decl:" + structName] = structDeclarations[structName]; } } } if (context.UsesFunctionDeclarations) { string funcDeclarations = context.GetCodeForFunctionDeclarations(); throw new NotImplementedException(); } GenerateFunctionImplementation(config, context.GetCodeForFunctions()); return(output); }