public Operand AssignValue(Operand left, object right) { var operand = new AssignValueOperand(this.TypeLambda, this.IL, left, right); operand.WriteEmit(this); return operand; }
public Operand Assign(Operand left, Operand right) { var operand = new AssignOperand(this.TypeLambda, this.IL, left, right); operand.WriteEmit(this); return operand; }
public AssignValueOperand(ITypeLambda typeLambda, ILGenerator ilGenerator, Operand left, object right) : base(typeLambda, ilGenerator) { this.typeLambda = typeLambda; this.left = left; this.right = right; }
/// <summary> /// Emit Byte 코드를 씁니다. /// </summary> /// <param name="codeLambda"> 구현부 코드에 쓸 <see cref="ICodeLambda"/> 인터페이스를 구현하는 객체입니다. </param> /// <param name="operand"> The operand. </param> public virtual void WriteEmit(ICodeLambda codeLambda, Operand operand) { throw new NotSupportedException(); }
public ICodeLambda Call(Operand operand) { operand.WriteEmit(this); return this; }
public Operand AssignValueToProperty(Operand left) { throw new NotImplementedException(); }
public ICodeLambda Return(Operand operand) { operand.ReadEmit(this); this.IL.Emit(OpCodes.Ret); return this; }