User story #268
Updated by Ivan Herrero over 9 years ago
Implement the TypeConversion engine based on the previous MARTe implementation and on the prototype available in the branch Configuration_prototype.
This engine is responsible of the deserialisation of the types stored in the ConfigurationDatabase (scalars, vectors and matrices). Each deserialised item is then type converted using the ScalarTypeConversion.
Note that this work does NOT include the ScalarTypeConversion work (see #269)
h1. Source code files modified
* Source/Core/BareMetal/L0Types/Vector.h
* Source/Core/BareMetal/L0Types/Matrix.h
* Source/Core/BareMetal/L4Configuration/AnyObject.h
* Source/Core/BareMetal/L4Configuration/AnyObject.cpp
* Source/Core/BareMetal/L4Configuration/TypeConversion.h
* Source/Core/BareMetal/L4Configuration/TypeConversion.cpp
* Source/Core/BareMetal/L4Configuration/ConfigurationDatabase.h
* Source/Core/BareMetal/L4Configuration/ConfigurationDatabase.cpp
* Source/Core/BareMetal/L4Configuration/FloatToInteger.cpp
* Source/Core/BareMetal/L4Configuration/IntegerToFloat.cpp
* Source/Core/BareMetal/L4Configuration/StringToFloat.cpp
* Source/Core/BareMetal/L4Configuration/StringToInteger.cpp
* Test/Core/BareMetal/L0Types/VectorTest.h
* Test/Core/BareMetal/L0Types/VectorTest.cpp
* Test/Core/BareMetal/L0Types/MatrixTest.h
* Test/Core/BareMetal/L0Types/MatrixTest.cpp
* Test/Core/BareMetal/L4Configuration/AnyObjectTest.h
* Test/Core/BareMetal/L4Configuration/AnyObjectTest.cpp
* Test/Core/BareMetal/L4Configuration/TypeConversionTest.h
* Test/Core/BareMetal/L4Configuration/TypeConversionTest.cpp
* Test/Core/BareMetal/L4Configuration/ConfigurationDatabaseTest.h
* Test/Core/BareMetal/L4Configuration/ConfigurationDatabaseTest.cpp
* Test/GTest/AnyObjectGTest.cpp
* Test/GTest/TypeConversionGTest.cpp
* Test/GTest/ConfigurationDatabaseGTest.cpp
h1. Architecture & design review
*Date of the review:* 10/11/2015
*Person who did the review:* André Neto
*Version of architecture & design document:* N/A. As per the original MARTe implementation. The interface was prototyped in a dedicated branch and discussed in a technical meeting.
*Result of review:* N/A
*List of non-conformities:* N/A
h1. Code and documentation review
*Date of the review:* 25/11/2015 [on commit 8c35328]
*Person who did the review:* Ivan Herrero
*Result of review:* PASS
*List of non-conformities:* N/A
*Comments:*
* The Vector and Matrix classes implementation use the standard new and delete operators.
* On Vector and Matrix classes, the dataPointer member could be declared as a T* instead of a void*, so it will be unnecessary to use reinterpret_cast<T*> on code.
* On Vector and Matrix class, some functions could be non-members, like Product, Transpose, and so on.
* The Some methods on Matrix class, like Determinant and Inverse of the Matrix class Inverse, are declared as inline, but they are so big that it is useless.
* The methods Determinant and Inverse of the Matrix class are defined with concrete types (Matrix<float32> and Matrix<float64>), because they make sense only for floats, but then they are not generic implementations.
h1. Unit test review
*Date of the review:* 25/11/2015 [on commit 8c35328]
*Person who did the review:* Ivan Herrero
*Result of coverage tests review:* PASS
*Result of functional tests review:* PASS
*Result of review:* PASS
*List of non-conformities:* N/A
This engine is responsible of the deserialisation of the types stored in the ConfigurationDatabase (scalars, vectors and matrices). Each deserialised item is then type converted using the ScalarTypeConversion.
Note that this work does NOT include the ScalarTypeConversion work (see #269)
h1. Source code files modified
* Source/Core/BareMetal/L0Types/Vector.h
* Source/Core/BareMetal/L0Types/Matrix.h
* Source/Core/BareMetal/L4Configuration/AnyObject.h
* Source/Core/BareMetal/L4Configuration/AnyObject.cpp
* Source/Core/BareMetal/L4Configuration/TypeConversion.h
* Source/Core/BareMetal/L4Configuration/TypeConversion.cpp
* Source/Core/BareMetal/L4Configuration/ConfigurationDatabase.h
* Source/Core/BareMetal/L4Configuration/ConfigurationDatabase.cpp
* Source/Core/BareMetal/L4Configuration/FloatToInteger.cpp
* Source/Core/BareMetal/L4Configuration/IntegerToFloat.cpp
* Source/Core/BareMetal/L4Configuration/StringToFloat.cpp
* Source/Core/BareMetal/L4Configuration/StringToInteger.cpp
* Test/Core/BareMetal/L0Types/VectorTest.h
* Test/Core/BareMetal/L0Types/VectorTest.cpp
* Test/Core/BareMetal/L0Types/MatrixTest.h
* Test/Core/BareMetal/L0Types/MatrixTest.cpp
* Test/Core/BareMetal/L4Configuration/AnyObjectTest.h
* Test/Core/BareMetal/L4Configuration/AnyObjectTest.cpp
* Test/Core/BareMetal/L4Configuration/TypeConversionTest.h
* Test/Core/BareMetal/L4Configuration/TypeConversionTest.cpp
* Test/Core/BareMetal/L4Configuration/ConfigurationDatabaseTest.h
* Test/Core/BareMetal/L4Configuration/ConfigurationDatabaseTest.cpp
* Test/GTest/AnyObjectGTest.cpp
* Test/GTest/TypeConversionGTest.cpp
* Test/GTest/ConfigurationDatabaseGTest.cpp
h1. Architecture & design review
*Date of the review:* 10/11/2015
*Person who did the review:* André Neto
*Version of architecture & design document:* N/A. As per the original MARTe implementation. The interface was prototyped in a dedicated branch and discussed in a technical meeting.
*Result of review:* N/A
*List of non-conformities:* N/A
h1. Code and documentation review
*Date of the review:* 25/11/2015 [on commit 8c35328]
*Person who did the review:* Ivan Herrero
*Result of review:* PASS
*List of non-conformities:* N/A
*Comments:*
* The Vector and Matrix classes implementation use the standard new and delete operators.
* On Vector and Matrix classes, the dataPointer member could be declared as a T* instead of a void*, so it will be unnecessary to use reinterpret_cast<T*> on code.
* On Vector and Matrix class, some functions could be non-members, like Product, Transpose, and so on.
* The Some methods on Matrix class, like Determinant and Inverse of the Matrix class Inverse, are declared as inline, but they are so big that it is useless.
* The methods Determinant and Inverse of the Matrix class are defined with concrete types (Matrix<float32> and Matrix<float64>), because they make sense only for floats, but then they are not generic implementations.
h1. Unit test review
*Date of the review:* 25/11/2015 [on commit 8c35328]
*Person who did the review:* Ivan Herrero
*Result of coverage tests review:* PASS
*Result of functional tests review:* PASS
*Result of review:* PASS
*List of non-conformities:* N/A