Free cookie consent management tool by TermsFeed Policy Generator

source: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeArrayConverter.cs @ 18077

Last change on this file since 18077 was 18077, checked in by dpiringe, 2 years ago

#3026

  • added the dockerhub readme file
  • fixed a bug which caused changed values (changed by events) to be overwritten with wrong values
File size: 4.1 KB
RevLine 
[17263]1using System;
2using HeuristicLab.Core;
3using HeuristicLab.Data;
4
[17284]5namespace HeuristicLab.JsonInterface {
[17394]6
[17417]7  public class IntArrayConverter : BaseConverter {
[17394]8    public override int Priority => 1;
[17417]9
[17828]10    public override bool CanConvertType(Type t) =>
[17843]11      typeof(IntArray).IsAssignableFrom(t);
[17828]12
[17417]13    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
[18077]14      if(data.Active) {
15        IntArray arr = item as IntArray;
16        IntArrayJsonItem intArrayItem = data as IntArrayJsonItem;
17        bool resizeTmp = arr.Resizable;
18        arr.Resizable = true;
19        arr.Length = intArrayItem.Value.Length;
20        for (int i = 0; i < intArrayItem.Value.Length; ++i)
21          arr[i] = intArrayItem.Value[i];
22        arr.Resizable = resizeTmp;
23      }
[17417]24    }
25
26    public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
27      new IntArrayJsonItem() {
[17477]28        Name = value.ItemName,
[17433]29        Description = value.ItemDescription,
[17420]30        Value = ((IntArray)value).CloneAsArray(),
[17473]31        Minimum = int.MinValue,
32        Maximum = int.MaxValue
[17417]33      };
[17394]34  }
35
[17417]36  public class DoubleArrayConverter : BaseConverter {
[17394]37    public override int Priority => 1;
[17417]38
[17828]39    public override bool CanConvertType(Type t) =>
[17843]40      typeof(DoubleArray).IsAssignableFrom(t);
[17828]41
[17417]42    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
[18077]43      if(data.Active) {
44        DoubleArray arr = item as DoubleArray;
45        DoubleArrayJsonItem doubleArrayItem = data as DoubleArrayJsonItem;
46        bool resizeTmp = arr.Resizable;
47        arr.Resizable = true;
48        arr.Length = doubleArrayItem.Value.Length;
49        for (int i = 0; i < doubleArrayItem.Value.Length; ++i)
50          arr[i] = doubleArrayItem.Value[i];
51        arr.Resizable = resizeTmp;
52      }
[17417]53    }
54
55    public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
56      new DoubleArrayJsonItem() {
[17477]57        Name = value.ItemName,
[17433]58        Description = value.ItemDescription,
[17420]59        Value = ((DoubleArray)value).CloneAsArray(),
[17473]60        Minimum = double.MinValue,
61        Maximum = double.MaxValue
[17417]62      };
[17394]63  }
64
[17417]65  public class PercentArrayConverter : BaseConverter {
[17394]66    public override int Priority => 2;
[17417]67
[17828]68    public override bool CanConvertType(Type t) =>
[17843]69      typeof(PercentArray).IsAssignableFrom(t);
[17828]70
[17417]71    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
[18077]72      if(data.Active) {
73        PercentArray arr = item as PercentArray;
74        DoubleArrayJsonItem doubleArrayItem = data as DoubleArrayJsonItem;
75        bool resizeTmp = arr.Resizable;
76        arr.Resizable = true;
77        arr.Length = doubleArrayItem.Value.Length;
78        for (int i = 0; i < doubleArrayItem.Value.Length; ++i)
79          arr[i] = doubleArrayItem.Value[i];
80        arr.Resizable = resizeTmp;
81      }
[17417]82    }
83
84    public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
85      new DoubleArrayJsonItem() {
[17477]86        Name = value.ItemName,
[17433]87        Description = value.ItemDescription,
[17420]88        Value = ((PercentArray)value).CloneAsArray(),
[17473]89        Minimum = 0.0d,
90        Maximum = 1.0d
[17417]91      };
[17394]92  }
93
[17417]94  public class BoolArrayConverter : BaseConverter {
[17394]95    public override int Priority => 1;
96
[17828]97    public override bool CanConvertType(Type t) =>
[17843]98      typeof(BoolArray).IsAssignableFrom(t);
[17828]99
[17417]100    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
[18077]101      if(data.Active) {
102        BoolArray arr = item as BoolArray;
103        BoolArrayJsonItem boolArrayItem = data as BoolArrayJsonItem;
104        bool resizeTmp = arr.Resizable;
105        arr.Resizable = true;
106        arr.Length = boolArrayItem.Value.Length;
107        for (int i = 0; i < boolArrayItem.Value.Length; ++i)
108          arr[i] = boolArrayItem.Value[i];
109        arr.Resizable = resizeTmp;
110      }
[17417]111    }
[17263]112
[17407]113    public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
[17417]114      new BoolArrayJsonItem() {
[17473]115        Name = value.ItemName,
[17433]116        Description = value.ItemDescription,
[17473]117        Value = ((BoolArray)value).CloneAsArray()
[17407]118      };
[17263]119  }
120}
Note: See TracBrowser for help on using the repository browser.