/// <summary> /// Used by the builder. /// </summary> public TransientModule(int id, EvalKinds kind, TransientCompilationUnit /*!*/ unit, TransientAssembly /*!*/ scriptAssembly, TransientModule containingModule, string sourcePath) : base(unit, scriptAssembly) { Debug.Assert(unit != null && scriptAssembly != null); this.id = id; this.sourcePath = sourcePath; this.kind = kind; this.containingModule = containingModule; }
internal TransientModuleBuilder(int id, EvalKinds kind, TransientCompilationUnit/*!*/ compilationUnit, TransientAssemblyBuilder/*!*/ assemblyBuilder, TransientModule containingModule, string sourcePath) : base(id, kind, compilationUnit, assemblyBuilder.TransientAssembly, containingModule, sourcePath) { this.assemblyBuilder = assemblyBuilder; if (!compilationUnit.IsDynamic) { this.globalBuilder = assemblyBuilder.RealModuleBuilder.DefineType(MakeName("<Global>", true), TypeAttributes.SpecialName | TypeAttributes.Class | TypeAttributes.Public); } else { this.globalBuilder = null; } }
internal TransientModuleBuilder /*!*/ DefineModule(TransientAssemblyBuilder /*!*/ assemblyBuilder, TransientCompilationUnit /*!*/ compilationUnit, int containerId, EvalKinds kind, string sourcePath) { TransientModule container = GetModule(containerId); int new_id; rwLock.EnterWriteLock(); try { // reserve slot in the module list: new_id = modules.Count; modules.Add(null); } finally { rwLock.ExitWriteLock(); } return(new TransientModuleBuilder(new_id, kind, compilationUnit, assemblyBuilder, container, sourcePath)); }
/// <summary> /// Used by the builder. /// </summary> public TransientModule(int id, EvalKinds kind, TransientCompilationUnit/*!*/ unit, TransientAssembly/*!*/ scriptAssembly, TransientModule containingModule, string sourcePath) : base(unit, scriptAssembly) { Debug.Assert(unit != null && scriptAssembly != null); this.id = id; this.sourcePath = sourcePath; this.kind = kind; this.containingModule = containingModule; }
public ClientSourceCodeUnit(TransientCompilationUnit/*!*/ compilationUnit, string/*!*/ code, PhpSourceFile/*!*/ sourceFile, Encoding/*!*/ encoding, int line, int column) : base(compilationUnit, code, sourceFile, encoding, line, column) { this.initialState = Lexer.LexicalStates.INITIAL; }
public ClientSourceCodeUnit(TransientCompilationUnit /*!*/ compilationUnit, string /*!*/ code, PhpSourceFile /*!*/ sourceFile, Encoding /*!*/ encoding, int line, int column) : base(compilationUnit, code, sourceFile, encoding, line, column) { this.initialState = Lexer.LexicalStates.INITIAL; }
public TransientModuleBuilder/*!*/ DefineModule(TransientCompilationUnit/*!*/ compilationUnit, bool debuggable, int containerId, EvalKinds kind, string sourcePath) { InitializeRealAssembly(debuggable); Debug.Assert(this.debuggable == debuggable); return TransientAssembly.DefineModule(this, compilationUnit, containerId, kind, sourcePath); }
/// <summary> /// The argument <paramref name="completeSource" /> determines whether the source code /// is complete PHP script file, which is a case in dynamic include in Silverlight /// </summary> public TransientCompilationUnit Build(string/*!*/ sourceCode, SourceCodeDescriptor descriptor, EvalKinds kind, CompilationContext/*!*/ context, ScriptContext/*!*/ scriptContext, DTypeDesc referringType, NamingContext namingContext, bool completeSource) { PhpSourceFile source_file = new PhpSourceFile(context.Config.Compiler.SourceRoot, RelativePath.ParseCanonical(descriptor.ContainingSourcePath)); Encoding encoding = context.Config.Globalization.PageEncoding; TransientCompilationUnit result = new TransientCompilationUnit (sourceCode, source_file, encoding, namingContext, descriptor.Line, descriptor.Column, completeSource); if (!result.PreCompile(context, scriptContext, descriptor, kind, referringType)) return null; DefineGlobalType(((TransientModuleBuilder)result.ModuleBuilder).AssemblyBuilder.RealModuleBuilder); if (!result.Compile(context, kind)) return null; BakeGlobals(); result.PostCompile(descriptor); return result; }