Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
        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;
        }