Free cookie consent management tool by TermsFeed Policy Generator

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

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

#3026

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