[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) {
|
---|
[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 | }
|
---|