[17263] | 1 | using System;
|
---|
| 2 | using HeuristicLab.Core;
|
---|
| 3 | using HeuristicLab.Data;
|
---|
| 4 |
|
---|
[17284] | 5 | namespace 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 | }
|
---|