[17263] | 1 | using System;
|
---|
| 2 | using System.Collections.Generic;
|
---|
| 3 | using System.Linq;
|
---|
| 4 | using System.Text;
|
---|
| 5 | using System.Threading.Tasks;
|
---|
| 6 | using HeuristicLab.Core;
|
---|
| 7 | using HeuristicLab.Data;
|
---|
| 8 | using Newtonsoft.Json.Linq;
|
---|
| 9 |
|
---|
[17284] | 10 | namespace 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 | }
|
---|