Index: lutinmatrix/doc/Serializable.rst diff -u /dev/null lutinmatrix/doc/Serializable.rst:1.1 --- /dev/null Mon Jan 23 13:50:10 2006 +++ lutinmatrix/doc/Serializable.rst Mon Jan 23 13:50:05 2006 @@ -0,0 +1,72 @@ +============================= +La serialization des matrices +============================= + +Les matrices sont seriablisable si les éléments de la matrice les sémantiques +de la matrice le sont. + +Les matrices on un numero serialVersionUID qui ne change jamais. Mais elles +ont en plus un matrixVersionUID qui varie lorsque les champs changes. De +cette façon on peut modifier la lecture du flux en fonction de +matrixVersionUID. La valeur de matrixVersionUID est la première chose que +l'on ecrit dans le flux. + +Il faut aussi faire le meme travail de serialisation sur BasicMatrix et +DimensionConverter. + +Serialisation +============= + +Dans MatrixNDImpl et SubMatrix + +ecriture +- matrixVersionUID (long) +- nom (String) +- defaultValue (double) +- dimensions (int[]) +- dimNames (String[]) +- semantics (List[]) + +pour MatrixNDImpl +ecriture +- matrix (BasicMatrix) + +pour SubMatrix +ecriture +- matrix (MatrixND) +- converter (DimensionConverter) + +Deserialisation +=============== + +Dans MatrixNDImpl et SubMatrix + +lecture +- matrixVersionUID +La suite de la lecture peut-etre conditionné a la valeur de matrixVersionUID +- nom +- defaultValue (double) +- dimensions (int[]) +- dimNames (String[]) +- semantics (List[]) + +pour MatrixNDImpl +lecture +- matrix (BasicMatrix) + +pour SubMatrix +lecture +- matrix (MatrixND) +- converter (DimensionConverter) +... + +Il faut ensuite recrer une factory, un dimHelper. + +La factory est recreer en fonction du type de Vector utilisé (FloatVector, +FloatBigVector, ...). + +Pour MatrixNDImpl: matrix.data.getClass() +Pour SubMatrix: [matrix]*.matrix.data.getClass() + +Pour SubMatrix il faut peut-etre passé plusieurs MatrixND avant d'arriver a +la BasicMatrix sur lequel on peut prendre le vector.