Здравствуйте, VladD2, Вы писали:
VD>Этот компонент должен иметь внятный и компактный интерфейс, а так же скрывать все детали вроде увеличения размера стека.
Нужно что-то типа такого?
| Скрытый текст |
| public class CompilerManager
{
_options : CompilationOptions;
public ManagerClass : ManagerClass;
Run():void
{
def thread = System.Threading.Thread(
fun()
{
unless(this.ManagerClass==null) this.ManagerClass.Run()
},
10*1024*1024*System.IntPtr.Size);
thread.Start();
thread.Join();
}
public this()
{
_options = CompilationOptions();
_options.LibraryPaths = [Environment.GetEnvironmentVariable("Nemerle")];
this.ManagerClass = ManagerClass(_options);
}
public MacrosToLoad : list[string]
{
get { _options.MacrosToLoad }
set { _options.MacrosToLoad = value}
}
public LibraryPaths : list[string]
{
get { _options.LibraryPaths }
set { _options.LibraryPaths = value }
}
public ReferencedLibraries : list[string]
{
get { _options.ReferencedLibraries }
set { _options.ReferencedLibraries = value }
}
public Compile(sources : list[string],targetIsExe:bool=false) : Assembly
{
Compile(sources,null,targetIsExe);
}
public Compile(sources : list[string],outputFile : string) : Assembly
{
Compile(sources,outputFile,if(System.IO.Path.GetExtension(outputFile) == "exe") true else false);
}
public Compile(sources : list[string],outputFile : string,targetIsExe : bool) : Assembly
{
_options.Sources = sources;
_options.TargetIsWinexe= targetIsExe;
_options.TargetIsLibrary = !targetIsExe;
if(!string.IsNullOrEmpty(outputFile))
{
_options.CompileToMemory = false;
_options.OutputFileName = outputFile;
}
else
{
_options.CompileToMemory = true;
}
Run();
this.ManagerClass.GeneratedAssembly
}
}
|
| |