internal PERWAPI.PEFile GenerateCode(Field CurrentRubyClass) { CodeGenContext context = new CodeGenContext(); context.CurrentRubyClass = CurrentRubyClass; string name = "Eval_" + System.Guid.NewGuid().ToString("N"); context.CreateAssembly("./", name + ".dll", name, false); GenerateClassForMethod(context); return context.Assembly; }
internal PERWAPI.PEFile GenerateCode(string fullFileName, string dll_or_exe, List<KeyValuePair<string, object>> runtime_options, bool GUI) { System.IO.FileInfo file = new System.IO.FileInfo(File.WindowsPath(fullFileName)); string fileName; // BBTAG: try using absolute path //fileName = File.fileNameToClassName(fullFileName); if (file.Extension == ".rb") fileName = file.Name.Substring(0, file.Name.Length - 3); else fileName = file.Name; CodeGenContext context = new CodeGenContext(); //rifraf context.CreateAssembly(file.DirectoryName, fileName + dll_or_exe, fileName, GUI); context.CreateAssembly(file.DirectoryName, File.stripExtension(fullFileName) + dll_or_exe, fullFileName, GUI); //rifraf ClassDef mainClass = GenerateClassForFile(context, fileName, false, new List<SOURCEFILE>()); ClassDef mainClass = GenerateClassForFile(context, File.stripExtension(fullFileName), false, new List<SOURCEFILE>()); SuperclassPostPass(context, new List<PERWAPI.ReferenceScope>()); if (dll_or_exe == ".exe") { MethodDef Options = GenerateOptionsMethod(context, runtime_options); GenerateMainMethod(context, mainClass, Options, new List<SOURCEFILE>()); } return context.Assembly; }
internal static PERWAPI.PEFile GenerateCode(List<SOURCEFILE> files, List<PERWAPI.ReferenceScope> peFiles, string outfile, List<KeyValuePair<string, object>> options, bool GUI) { CodeGenContext context = new CodeGenContext(); context.peFiles = peFiles; System.IO.FileInfo file = new System.IO.FileInfo(outfile); string basename = file.Name.Substring(0, file.Name.Length - file.Extension.Length); context.CreateAssembly(file.DirectoryName, file.Name, basename, GUI); for (int i = 1; i < files.Count; i++) files[i].GenerateClassForFile(context, File.stripExtension(files[i].location.file), file.Extension == ".dll", files); ClassDef mainClass = files[0].GenerateClassForFile(context, File.stripExtension(files[0].location.file), file.Extension == ".dll", files); //? ClassDef mainClass = files[0].GenerateClassForFile(context, File.stripExtension(files[0].location.file), file.Extension == ".dll", files); SuperclassPostPass(context, peFiles); if (file.Extension == ".exe") { MethodDef Options = GenerateOptionsMethod(context, options); GenerateMainMethod(context, mainClass, Options, files); } return context.Assembly; }