本文整理汇总了C#中Mono.CompilerServices.SymbolWriter.SourceMethodBuilder类的典型用法代码示例。如果您正苦于以下问题:C# SourceMethodBuilder类的具体用法?C# SourceMethodBuilder怎么用?C# SourceMethodBuilder使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
SourceMethodBuilder类属于Mono.CompilerServices.SymbolWriter命名空间,在下文中一共展示了SourceMethodBuilder类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ConvertSequencePoints
void ConvertSequencePoints (PdbFunction function, SourceFile file, SourceMethodBuilder builder)
{
foreach (var line in function.lines.SelectMany (lines => lines.lines))
builder.MarkSequencePoint (
(int) line.offset,
file.CompilationUnit.SourceFile,
(int) line.lineBegin,
(int) line.colBegin, line.lineBegin == 0xfeefee);
}
示例2: ConvertSequencePoints
void ConvertSequencePoints (PdbFunction function, SourceFile file, SourceMethodBuilder builder)
{
int last_line = 0;
foreach (var line in function.lines.SelectMany (lines => lines.lines)) {
// 0xfeefee is an MS convention, we can't pass it into mdb files, so we use the last non-hidden line
bool is_hidden = line.lineBegin == 0xfeefee;
builder.MarkSequencePoint (
(int) line.offset,
file.CompilationUnit.SourceFile,
is_hidden ? last_line : (int) line.lineBegin,
(int) line.colBegin, is_hidden);
if (!is_hidden)
last_line = (int) line.lineBegin;
}
}
示例3: CreateEmitContext
public override EmitContext CreateEmitContext (ILGenerator ig, SourceMethodBuilder sourceMethod)
{
EmitContext ec = new EmitContext (this, ig, ReturnType, sourceMethod);
ec.CurrentAnonymousMethod = AnonymousMethod;
return ec;
}
示例4: CreateEmitContext
public virtual EmitContext CreateEmitContext (ILGenerator ig, SourceMethodBuilder sourceMethod)
{
return new EmitContext (this, ig, MemberType, sourceMethod);
}
示例5: NotImplementedException
EmitContext IMethodData.CreateEmitContext (ILGenerator ig, SourceMethodBuilder sourceMethod)
{
throw new NotImplementedException ();
}
示例6: EmitContext
public EmitContext (IMemberContext rc, ILGenerator ig, TypeSpec return_type, SourceMethodBuilder methodSymbols)
{
this.member_context = rc;
this.ig = ig;
this.return_type = return_type;
if (rc.Module.Compiler.Settings.Checked)
flags |= Options.CheckedScope;
if (methodSymbols != null) {
this.methodSymbols = methodSymbols;
if (!rc.Module.Compiler.Settings.Optimize)
flags |= Options.AccurateDebugInfo;
} else {
flags |= Options.OmitDebugInfo;
}
#if STATIC
ig.__CleverExceptionBlockAssistance ();
#endif
}
示例7: CloseMethod
public void CloseMethod ()
{
current_method = (SourceMethodBuilder) current_method_stack.Pop ();
}
示例8: OpenMethod
public SourceMethodBuilder OpenMethod (ICompileUnit file, int ns_id, IMethodDef method)
{
SourceMethodBuilder builder = new SourceMethodBuilder (file, ns_id, method);
current_method_stack.Push (current_method);
current_method = builder;
methods.Add (current_method);
return builder;
}
示例9: CloseMethod
public void CloseMethod ()
{
if (current_method._comp_unit != null)
methods.Add (current_method);
current_method = (SourceMethodBuilder) current_method_stack.Pop ();
}
示例10: Emit
//
// Emits the code
//
public void Emit (TypeDefinition parent)
{
DefineOverride (parent);
var mc = (IMemberContext) method;
method.ParameterInfo.ApplyAttributes (mc, MethodBuilder);
ToplevelBlock block = method.Block;
if (block != null) {
BlockContext bc = new BlockContext (mc, block, method.ReturnType);
if (block.Resolve (null, bc, method)) {
debug_builder = member.Parent.CreateMethodSymbolEntry ();
EmitContext ec = method.CreateEmitContext (MethodBuilder.GetILGenerator (), debug_builder);
block.Emit (ec);
}
}
}
示例11: SourceMethod
protected SourceMethod (DeclSpace parent, MethodBase method, ICompileUnit file)
{
this.method = method;
builder = SymbolWriter.OpenMethod (file, parent.NamespaceEntry.SymbolFileID, this);
}