public override void EmitStore(ILGenerator gen, IList<FieldBuilder> fields, Expression value) { gen.Emit(OpCodes.Ldarg_0); // Emit the code to generate the value for the given expression value.Emit(gen); // Convert booleans (which are used internally for Booleans) to doubles // which is how they are stored in TIBasic. Plus it needs to be negated. if (value.GetBasicType() == BasicType.Boolean) { gen.Emit(OpCodes.Conv_R8); gen.Emit(OpCodes.Neg); } gen.Emit(OpCodes.Stfld, fields[symbolIndex]); }
public override void EmitStore(ILGenerator gen, IList<FieldBuilder> fields, Expression value) { this.location.EmitLoad(gen, fields); foreach (Expression expr in exprs) { expr.Emit(gen); gen.Emit(OpCodes.Conv_I4); } value.Emit(gen); if (value.GetBasicType() == BasicType.Boolean) { gen.Emit(OpCodes.Conv_R8); gen.Emit(OpCodes.Neg); } gen.Emit(OpCodes.Call, setMethod); }