Changeset 1419 for branches/New Persistence Exploration/Persistence/Persistence/Default/Decomposers/ArrayDecomposer.cs
- Timestamp:
- 03/25/09 17:16:32 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/New Persistence Exploration/Persistence/Persistence/Default/Decomposers/ArrayDecomposer.cs
r1405 r1419 3 3 using HeuristicLab.Persistence.Core; 4 4 using HeuristicLab.Persistence.Interfaces; 5 using System.Collections.Generic; 5 6 6 7 namespace HeuristicLab.Persistence.Default.Decomposers { … … 13 14 } 14 15 15 public IEnumerable DeCompose(object array) {16 public IEnumerable<Tag> DeCompose(object array) { 16 17 Array a = (Array)array; 17 yield return a.Rank;18 yield return new Tag("rank", a.Rank); 18 19 for (int i = 0; i < a.Rank; i++) { 19 yield return a.GetLength(i);20 yield return new Tag("length_" + i, a.GetLength(i)); 20 21 } 21 22 foreach (object o in (Array)array) { 22 yield return o;23 yield return new Tag(null, o); 23 24 } 24 25 } 25 26 26 public object Compose(IEnumerable elements, Type t) { 27 IEnumerator e = elements.GetEnumerator(); 27 public object CreateInstance(Type t) { 28 return null; 29 } 30 31 public object Populate(object instance, IEnumerable<Tag> elements, Type t) { 32 IEnumerator<Tag> e = elements.GetEnumerator(); 28 33 e.MoveNext(); 29 int rank = (int)e.Current ;34 int rank = (int)e.Current.Value; 30 35 int[] lengths = new int[rank]; 31 36 for (int i = 0; i < rank; i++) { 32 37 e.MoveNext(); 33 lengths[i] = (int)e.Current ;38 lengths[i] = (int)e.Current.Value; 34 39 } 35 40 Array a = Array.CreateInstance(t.GetElementType(), lengths); 36 41 int[] positions = new int[rank]; 37 42 while (e.MoveNext()) { 38 a.SetValue(e.Current , positions);43 a.SetValue(e.Current.Value, positions); 39 44 positions[0] += 1; 40 45 for (int i = 0; i < rank-1; i++) {
Note: See TracChangeset
for help on using the changeset viewer.