C# 클래스 Mono.CSharp.LocalTemporary

An Expression to hold a temporary value.
The LocalTemporary class is used to hold temporary values of a given type to "simulate" the expression semantics. The local variable is never captured. The local temporary is used to alter the normal flow of code generation basically it creates a local variable, and its emit instruction generates code to access this value, return its address or save its value. If `is_address' is true, then the value that we store is the address to the real value, and not the value itself. This is needed for a value type, because otherwise you just end up making a copy of the value on the stack and modifying it. You really need a pointer to the origional value so that you can modify it in that location. This Does not happen with a class because a class is a pointer -- so you always get the indirection.
상속: Mono.CSharp.Expression, IMemoryLocation, IAssignMethod
파일 보기 프로젝트 열기: runefs/Marvin 1 사용 예제들

공개 메소드들

메소드 설명
AddressOf ( EmitContext ec, AddressOp mode ) : void
ContainsEmitWithAwait ( ) : bool
CreateExpressionTree ( ResolveContext ec ) : Mono.CSharp.Expression
DoResolveLValue ( ResolveContext ec, Mono.CSharp.Expression right_side ) : Mono.CSharp.Expression
Emit ( EmitContext ec ) : void
Emit ( EmitContext ec, bool leave_copy ) : void
EmitAssign ( EmitContext ec, Mono.CSharp.Expression source, bool leave_copy, bool isCompound ) : void
LocalTemporary ( LocalBuilder b, System.TypeSpec t ) : System
LocalTemporary ( System.TypeSpec t ) : System
Release ( EmitContext ec ) : void
Store ( EmitContext ec ) : void

보호된 메소드들

메소드 설명
DoResolve ( ResolveContext ec ) : Mono.CSharp.Expression

메소드 상세

AddressOf() 공개 메소드

public AddressOf ( EmitContext ec, AddressOp mode ) : void
ec EmitContext
mode AddressOp
리턴 void

ContainsEmitWithAwait() 공개 메소드

public ContainsEmitWithAwait ( ) : bool
리턴 bool

CreateExpressionTree() 공개 메소드

public CreateExpressionTree ( ResolveContext ec ) : Mono.CSharp.Expression
ec ResolveContext
리턴 Mono.CSharp.Expression

DoResolve() 보호된 메소드

protected DoResolve ( ResolveContext ec ) : Mono.CSharp.Expression
ec ResolveContext
리턴 Mono.CSharp.Expression

DoResolveLValue() 공개 메소드

public DoResolveLValue ( ResolveContext ec, Mono.CSharp.Expression right_side ) : Mono.CSharp.Expression
ec ResolveContext
right_side Mono.CSharp.Expression
리턴 Mono.CSharp.Expression

Emit() 공개 메소드

public Emit ( EmitContext ec ) : void
ec EmitContext
리턴 void

Emit() 공개 메소드

public Emit ( EmitContext ec, bool leave_copy ) : void
ec EmitContext
leave_copy bool
리턴 void

EmitAssign() 공개 메소드

public EmitAssign ( EmitContext ec, Mono.CSharp.Expression source, bool leave_copy, bool isCompound ) : void
ec EmitContext
source Mono.CSharp.Expression
leave_copy bool
isCompound bool
리턴 void

LocalTemporary() 공개 메소드

public LocalTemporary ( LocalBuilder b, System.TypeSpec t ) : System
b System.Reflection.Emit.LocalBuilder
t System.TypeSpec
리턴 System

LocalTemporary() 공개 메소드

public LocalTemporary ( System.TypeSpec t ) : System
t System.TypeSpec
리턴 System

Release() 공개 메소드

public Release ( EmitContext ec ) : void
ec EmitContext
리턴 void

Store() 공개 메소드

public Store ( EmitContext ec ) : void
ec EmitContext
리턴 void