Free cookie consent management tool by TermsFeed Policy Generator

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

Last change on this file since 18043 was 18043, checked in by dpiringe, 3 years ago

#3026

  • code cleanup
File size: 3.9 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) {
14      IntArray arr = item as IntArray;
[17477]15      IntArrayJsonItem intArrayItem = data as IntArrayJsonItem;
[17417]16      bool resizeTmp = arr.Resizable;
17      arr.Resizable = true;
[17477]18      arr.Length = intArrayItem.Value.Length;
19      for (int i = 0; i < intArrayItem.Value.Length; ++i)
20        arr[i] = intArrayItem.Value[i];
[17417]21      arr.Resizable = resizeTmp;
22    }
23
24    public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
25      new IntArrayJsonItem() {
[17477]26        Name = value.ItemName,
[17433]27        Description = value.ItemDescription,
[17420]28        Value = ((IntArray)value).CloneAsArray(),
[17473]29        Minimum = int.MinValue,
30        Maximum = int.MaxValue
[17417]31      };
[17394]32  }
33
[17417]34  public class DoubleArrayConverter : BaseConverter {
[17394]35    public override int Priority => 1;
[17417]36
[17828]37    public override bool CanConvertType(Type t) =>
[17843]38      typeof(DoubleArray).IsAssignableFrom(t);
[17828]39
[17417]40    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
41      DoubleArray arr = item as DoubleArray;
[17477]42      DoubleArrayJsonItem doubleArrayItem = data as DoubleArrayJsonItem;
[17417]43      bool resizeTmp = arr.Resizable;
44      arr.Resizable = true;
[17477]45      arr.Length = doubleArrayItem.Value.Length;
46      for (int i = 0; i < doubleArrayItem.Value.Length; ++i)
47        arr[i] = doubleArrayItem.Value[i];
[17417]48      arr.Resizable = resizeTmp;
49    }
50
51    public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
52      new DoubleArrayJsonItem() {
[17477]53        Name = value.ItemName,
[17433]54        Description = value.ItemDescription,
[17420]55        Value = ((DoubleArray)value).CloneAsArray(),
[17473]56        Minimum = double.MinValue,
57        Maximum = double.MaxValue
[17417]58      };
[17394]59  }
60
[17417]61  public class PercentArrayConverter : BaseConverter {
[17394]62    public override int Priority => 2;
[17417]63
[17828]64    public override bool CanConvertType(Type t) =>
[17843]65      typeof(PercentArray).IsAssignableFrom(t);
[17828]66
[17417]67    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
68      PercentArray arr = item as PercentArray;
[17477]69      DoubleArrayJsonItem doubleArrayItem = data as DoubleArrayJsonItem;
[17417]70      bool resizeTmp = arr.Resizable;
71      arr.Resizable = true;
[17477]72      arr.Length = doubleArrayItem.Value.Length;
73      for (int i = 0; i < doubleArrayItem.Value.Length; ++i)
74        arr[i] = doubleArrayItem.Value[i];
[17417]75      arr.Resizable = resizeTmp;
76    }
77
78    public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
79      new DoubleArrayJsonItem() {
[17477]80        Name = value.ItemName,
[17433]81        Description = value.ItemDescription,
[17420]82        Value = ((PercentArray)value).CloneAsArray(),
[17473]83        Minimum = 0.0d,
84        Maximum = 1.0d
[17417]85      };
[17394]86  }
87
[17417]88  public class BoolArrayConverter : BaseConverter {
[17394]89    public override int Priority => 1;
90
[17828]91    public override bool CanConvertType(Type t) =>
[17843]92      typeof(BoolArray).IsAssignableFrom(t);
[17828]93
[17417]94    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
95      BoolArray arr = item as BoolArray;
[17477]96      BoolArrayJsonItem boolArrayItem = data as BoolArrayJsonItem;
[17417]97      bool resizeTmp = arr.Resizable;
98      arr.Resizable = true;
[17477]99      arr.Length = boolArrayItem.Value.Length;
100      for(int i = 0; i < boolArrayItem.Value.Length; ++i)
101        arr[i] = boolArrayItem.Value[i];
[17417]102      arr.Resizable = resizeTmp;
103    }
[17263]104
[17407]105    public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
[17417]106      new BoolArrayJsonItem() {
[17473]107        Name = value.ItemName,
[17433]108        Description = value.ItemDescription,
[17473]109        Value = ((BoolArray)value).CloneAsArray()
[17407]110      };
[17263]111  }
112}
Note: See TracBrowser for help on using the repository browser.