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]);
        }
示例#2
0
 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);
 }