Example #1
0
 public override Expression ReadAddr(Addressable addr)
 {
     if (addr is InstanceField instanceField)
     {
         var fieldName    = FieldTranslator.GetFieldName(instanceField.Field);
         var instanceName = instanceField.Instance.Name;
         if (Settings.SplitFieldsEnabled())
         {
             return(ReadFieldExpression.From(instanceField));
         }
         else
         {
             return(ReadHeapExpression.From(instanceField));
         }
     }
     else if (addr is StaticField staticField)
     {
         return(ReadFieldExpression.From(staticField));
     }
     else if (addr is DotNetVariable v)
     {
         return(BoogieVariable.FromDotNetVariable(v.Var));
     }
     else
     {
         throw new NotImplementedException();
     }
 }
Example #2
0
 public override Expression ReadInstanceField(InstanceFieldAccess instanceFieldAccess)
 {
     if (!Settings.SplitFieldsEnabled())
     {
         return(ReadFieldExpression.From(new InstanceField(instanceFieldAccess)));
     }
     else
     {
         return(dispatcher.ReadAddr(dispatcher.AddressOf(instanceFieldAccess)));
     }
 }