Fix related return values of assignment operators 36/23336/2
authorRamasamy <ram.kannan@samsung.com>
Tue, 24 Jun 2014 03:33:01 +0000 (09:03 +0530)
committerRamasamy <ram.kannan@samsung.com>
Fri, 27 Jun 2014 11:19:20 +0000 (16:49 +0530)
 - Added return value for assignment operators that was missing
 - Cleanup of code

signed-off-by: Ramasamy <ram.kannan@samsung.com>
Change-Id: I584a56146c371ec2d398899f3a96f3101153e756

src/sensor_fusion/standalone/util/euler_angles.cpp
src/sensor_fusion/standalone/util/matrix.cpp
src/sensor_fusion/standalone/util/quaternion.cpp
src/sensor_fusion/standalone/util/sensor_data.cpp
src/sensor_fusion/standalone/util/test/matrix_test/matrix_main.cpp
src/sensor_fusion/standalone/util/test/vector_test/vector_main.cpp
src/sensor_fusion/standalone/util/vector.cpp

index 00f9439..4241788 100644 (file)
@@ -60,6 +60,8 @@ template <typename TYPE>
 euler_angles<TYPE> euler_angles<TYPE>::operator =(const euler_angles<TYPE>& e)
 {
        m_ang = e.m_ang;
+
+       return *this;
 }
 
 template <typename T>
index b6841ac..4c30d84 100755 (executable)
@@ -72,9 +72,12 @@ matrix<TYPE>::matrix(const int rows, const int cols, TYPE *mat_data)
 template <typename TYPE>
 matrix<TYPE>::~matrix()
 {
-       for (int i = 0; i < m_rows; i++)
-               delete[] m_mat[i];
-       delete[] m_mat;
+       if (m_mat != NULL)
+       {
+               for (int i = 0; i < m_rows; i++)
+                       delete[] m_mat[i];
+               delete[] m_mat;
+       }
 }
 
 template <typename TYPE>
@@ -85,16 +88,31 @@ matrix<TYPE> matrix<TYPE>::operator =(const matrix<TYPE>& m)
                return *this;
        }
 
-       for (int i = 0; i < m_rows; i++)
-               delete[] m_mat[i];
-       delete[] m_mat;
+       if (m_mat == NULL)
+       {
+               m_rows = m.m_rows;
+               m_cols = m.m_cols;
+               m_mat = new TYPE *[m_rows];
 
-       m_rows = m.m_rows;
-       m_cols = m.m_cols;
-       m_mat = new TYPE *[m_rows];
+               for (int i = 0; i < m_rows; i++)
+                       m_mat[i] = new TYPE [m_cols];
+       }
+       else
+       {
+               if ((m_rows != m.m_rows) || (m_cols != m.m_cols))
+               {
+                       for (int i = 0; i < m_rows; i++)
+                               delete[] m_mat[i];
+                       delete[] m_mat;
 
-       for (int i = 0; i < m_rows; i++)
-               m_mat[i] = new TYPE [m_cols];
+                       m_rows = m.m_rows;
+                       m_cols = m.m_cols;
+                       m_mat = new TYPE *[m_rows];
+
+                       for (int i = 0; i < m_rows; i++)
+                               m_mat[i] = new TYPE [m_cols];
+               }
+       }
 
        for (int p = 0; p < m_rows; p++)
                for (int q = 0; q < m_cols; q++)
index d226828..37e8ac6 100755 (executable)
@@ -58,6 +58,8 @@ template <typename TYPE>
 quaternion<TYPE> quaternion<TYPE>::operator =(const quaternion<TYPE>& q)
 {
        m_quat = q.m_quat;
+
+       return *this;
 }
 
 template <typename T>
index ed00cee..4276631 100644 (file)
@@ -58,6 +58,8 @@ template <typename TYPE>
 sensor_data<TYPE> sensor_data<TYPE>::operator =(const sensor_data<TYPE>& s)
 {
        m_data = s.m_data;
+
+       return *this;
 }
 
 template <typename T>
index f7cbf80..3fc2fd6 100644 (file)
@@ -92,11 +92,11 @@ int main()
        float x = 4.0;
        float x1 = -2.5;
        cout<< "\n\n\nScalar subtraction\n";
-       m3 = m11 - x;
+       m13 = m11 - x;
        m6 = m10 - x1;
        cout<< "\nNumber Subtracted:" << x;
        cout<< "\n\n" << m11;
-       cout<< "\nResult:\n\n" << m3;
+       cout<< "\nResult:\n\n" << m13;
        cout<< "\nNumber Subtracted:" << x1;
        cout<< "\n\n" << m10;
        cout<< "\nResult:\n\n" << m6;
@@ -137,4 +137,10 @@ int main()
        cout << "\n\nm1:\n\n" << m1;
        cout << "\n\n\nm6 != m1 :";
        cout << (m6 != m1);
+
+
+       cout<< "\n\nAssignment\n";
+       m3 = m12;
+       cout<< "Input \n" << m12;
+       cout<< "\nOutput:\n" << m3 << endl;
 }
index 6ec31b8..8e46ab2 100644 (file)
@@ -147,5 +147,10 @@ int main()
        cout << "\n\nv15:\n\n" << v15;
        cout << "\n\n\nv15 != v15 :";
        cout << (v15 != v15);
+
+       cout<< "\n\nAssignment\n";
+       v3 = v1;
+       cout<< "Input \n" << v1;
+       cout<< "\nOutput:\n" << v3 << endl;
 }
 
index e234319..3a572fc 100644 (file)
@@ -58,7 +58,8 @@ vector<TYPE>::vector(const vector<TYPE>& v)
 template <typename TYPE>
 vector<TYPE>::~vector()
 {
-       delete[] m_vec;
+       if (m_vec != NULL)
+               delete[] m_vec;
 }
 
 template <typename TYPE>
@@ -69,13 +70,27 @@ vector<TYPE> vector<TYPE>::operator =(const vector<TYPE>& v)
                return *this;
        }
 
-       delete[] m_vec;
-       m_size = v.m_size;
-       m_vec = new TYPE [m_size];
+       if (m_vec == NULL)
+       {
+               m_size = v.m_size;
+               m_vec = new TYPE [m_size];
+       }
+       else
+       {
+               if (m_size != v.m_size)
+               {
+                       delete[] m_vec;
+
+                       m_size = v.m_size;
+                       m_vec = new TYPE [m_size];
+               }
+       }
+
 
        for (int q = 0; q < m_size; q++)
                m_vec[q] = v.m_vec[q];
 
+
        return *this;
 }