Free cookie consent management tool by TermsFeed Policy Generator

source: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/TypeTransformer/MultiCheckedOperatorTransformer.cs @ 17269

Last change on this file since 17269 was 17269, checked in by dpiringe, 5 years ago

#3026

  • deleted IItemExtensions.cs
  • fixed a bug in GetInterfaceDistance in TypeExtensions.cs -> generic types were ignored
  • lots of code clean ups
  • added new transformers: ParameterizedItemTransformer, MultiCheckedOperatorTransformer
File size: 1.2 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Threading.Tasks;
6using HeuristicLab.Core;
7
8namespace HeuristicLab.Manufacture {
9  public class MultiCheckedOperatorTransformer : ParameterizedItemTransformer {
10    public override ParameterData ExtractData(IItem value) {
11      ParameterData data = base.ExtractData(value);
12
13      data.Operators = new List<ParameterData>();
14      dynamic val = value.Cast<dynamic>();
15      foreach (var op in val.Operators) {
16        data.Operators.Add(new ParameterData() {
17          Name = op.Name,
18          Default = val.Operators.ItemChecked(op),
19          Range = new object[] { false, true }
20        });
21      }
22      return data;
23    }
24
25    public override void InjectData(IItem item, ParameterData data) {
26      base.InjectData(item, data);
27
28      dynamic val = item.Cast<dynamic>();
29      foreach (var op in val.Operators) {
30        val.Operators.SetItemCheckedState(op, GetOperatorState(op.Name, data));
31      }
32    }
33
34    private bool GetOperatorState(string name, ParameterData data) {
35      foreach(var op in data.Operators) {
36        if (op.Name == name) return op.Default.Cast<bool>();
37      }
38      return false;
39    }
40  }
41}
Note: See TracBrowser for help on using the repository browser.