Changeset 1669 for trunk/sources/HeuristicLab.Data/3.3/DoubleMatrixData.cs
- Timestamp:
- 04/27/09 14:45:44 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Data/3.3/DoubleMatrixData.cs
r1529 r1669 66 66 67 67 /// <summary> 68 /// Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.69 /// </summary>70 /// <remarks>The dimensions of the matrix are saved as attributes (<c>Dimension1</c>,<c>Dimension2</c>),71 /// formatted according to the local culture info and its number format.<br/>72 /// The elements of the matrix are saved as string in the node's inner text,73 /// each element separated by a semicolon, all line by line, formatted according to the74 /// local number format.</remarks>75 /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>76 /// <param name="document">The <see cref="XmlDocument"/> where the data is saved.</param>77 /// <param name="persistedObjects">A dictionary of all already persisted objects. (Needed to avoid cycles.)</param>78 /// <returns>The saved <see cref="XmlNode"/>.</returns>79 public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid,IStorable> persistedObjects) {80 XmlNode node = base.GetXmlNode(name, document, persistedObjects);81 XmlAttribute dim1 = document.CreateAttribute("Dimension1");82 dim1.Value = Data.GetLength(0).ToString(CultureInfo.InvariantCulture.NumberFormat);83 node.Attributes.Append(dim1);84 XmlAttribute dim2 = document.CreateAttribute("Dimension2");85 dim2.Value = Data.GetLength(1).ToString(CultureInfo.InvariantCulture.NumberFormat);86 node.Attributes.Append(dim2);87 node.InnerText = ToString(CultureInfo.InvariantCulture.NumberFormat);88 return node;89 }90 /// <summary>91 /// Loads the persisted matrix from the specified <paramref name="node"/>.92 /// </summary>93 /// <remarks>The dimensions of the matrix must be saved as Attributes (<c>Dimension1</c>, <c>Dimension2</c>),94 /// formatted in the local number format. <br/>95 /// The elements of the matrix must be saved in the node's inner text as string,96 /// each element separated by a semicolon, line by line, formatted according to the local97 /// culture info and its number format (see <see cref="GetXmlNode"/>).</remarks>98 /// <exception cref="System.FormatException">Thrown when a saved element cannot be parsed as a double value.</exception>99 /// <param name="node">The <see cref="XmlNode"/> where the instance is saved.</param>100 /// <param name="restoredObjects">The dictionary of all already restored objects. (Needed to avoid cycles.)</param>101 public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) {102 base.Populate(node, restoredObjects);103 int dim1 = int.Parse(node.Attributes["Dimension1"].Value, CultureInfo.InvariantCulture.NumberFormat);104 int dim2 = int.Parse(node.Attributes["Dimension2"].Value, CultureInfo.InvariantCulture.NumberFormat);105 string[] tokens = node.InnerText.Split(';');106 double[,] data = new double[dim1, dim2];107 for (int i = 0; i < dim1; i++) {108 for (int j = 0; j < dim2; j++) {109 if(double.TryParse(tokens[i * dim2 + j], NumberStyles.Float, CultureInfo.InvariantCulture.NumberFormat, out data[i, j])==false) {110 throw new FormatException("Can't parse " + tokens[i * dim2 + j] + " as double value.");111 }112 }113 }114 Data = data;115 }116 117 /// <summary>118 68 /// The string representation of the matrix. 119 69 /// </summary>
Note: See TracChangeset
for help on using the changeset viewer.