Changeset 1566 for trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/ArrayDecomposer.cs
- Timestamp:
- 04/16/09 12:58:14 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/ArrayDecomposer.cs
r1563 r1566 5 5 6 6 namespace HeuristicLab.Persistence.Default.Decomposers { 7 7 8 8 [EmptyStorableClass] 9 9 public class ArrayDecomposer : IDecomposer { … … 20 20 Array a = (Array)obj; 21 21 yield return new Tag("rank", a.Rank); 22 for (int i = 0; i < a.Rank; i++) { 22 for (int i = 0; i < a.Rank; i++) { 23 23 yield return new Tag("length_" + i, a.GetLength(i)); 24 24 } 25 for (int i = 0; i < a.Rank; i++) { 25 for (int i = 0; i < a.Rank; i++) { 26 26 yield return new Tag("lowerBound_" + i, a.GetLowerBound(i)); 27 } 27 } 28 28 } 29 29 30 30 public IEnumerable<Tag> Decompose(object array) { 31 Array a = (Array)array; 31 Array a = (Array)array; 32 32 int[] lengths = new int[a.Rank]; 33 33 int[] lowerBounds = new int[a.Rank]; … … 67 67 lowerBounds[i] = (int)e.Current.Value; 68 68 } 69 return Array.CreateInstance(t.GetElementType(), lengths, lowerBounds); 69 return Array.CreateInstance(t.GetElementType(), lengths, lowerBounds); 70 70 } 71 71 72 public void Populate(object instance, IEnumerable<Tag> elements, Type t) { 72 public void Populate(object instance, IEnumerable<Tag> elements, Type t) { 73 73 Array a = (Array)instance; 74 74 int[] lengths = new int[a.Rank]; … … 79 79 for (int i = 0; i < a.Rank; i++) { 80 80 lowerBounds[i] = a.GetLowerBound(i); 81 } 81 } 82 82 int[] positions = (int[])lowerBounds.Clone(); 83 83 IEnumerator<Tag> e = elements.GetEnumerator(); … … 86 86 a.SetValue(e.Current.Value, currentPositions); 87 87 positions[0] += 1; 88 for (int i = 0; i < a.Rank -1; i++) {89 if (positions[i] >= lengths[i] +lowerBounds[i]) {88 for (int i = 0; i < a.Rank - 1; i++) { 89 if (positions[i] >= lengths[i] + lowerBounds[i]) { 90 90 positions[i] = lowerBounds[i]; 91 91 positions[i + 1] += 1; … … 97 97 } 98 98 } 99 99 100 100 }
Note: See TracChangeset
for help on using the changeset viewer.