Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/27/09 14:45:44 (15 years ago)
Author:
epitzer
Message:

Migrate HL.Data-3.3 to new persistence library. (#603)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Data/3.3/DoubleMatrixData.cs

    r1529 r1669  
    6666
    6767    /// <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 the
    74     /// 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 local
    97     /// 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>
    11868    /// The string representation of the matrix.
    11969    /// </summary>
Note: See TracChangeset for help on using the changeset viewer.