]> git.tdb.fi Git - libs/math.git/commitdiff
Move some simple function definitions inside the class declarations
authorMikko Rasa <tdb@tdb.fi>
Tue, 14 May 2013 18:53:05 +0000 (21:53 +0300)
committerMikko Rasa <tdb@tdb.fi>
Tue, 14 May 2013 18:53:05 +0000 (21:53 +0300)
source/linal/matrix.h
source/linal/squarematrix.h
source/linal/vector.h
source/linal/vector3.h

index 94a6e0991b2d13502e2f998107d5e26f5831ad04..ff73165d02c703c0efe263b27f23a522c54b7383 100644 (file)
@@ -25,10 +25,10 @@ public:
        static Matrix from_columns(const Vector<T, M> *);
        static Matrix from_rows(const Vector<T, N> *);
 
-       T &element(unsigned, unsigned);
-       const T &element(unsigned, unsigned) const;
-       T &operator()(unsigned, unsigned);
-       const T &operator()(unsigned, unsigned) const;
+       T &element(unsigned i, unsigned j) { return data[i+M*j]; }
+       const T &element(unsigned i, unsigned j) const { return data[i+M*j]; }
+       T &operator()(unsigned i, unsigned j) { return element(i, j); }
+       const T &operator()(unsigned i, unsigned j) const { return element(i, j); }
 
        Matrix &operator*=(T);
        Matrix &operator/=(T);
@@ -77,30 +77,6 @@ inline Matrix<T, M, N> Matrix<T, M, N>::from_rows(const Vector<T, N> *v)
                        m(i, j) = v[i][j];
 }
 
-template<typename T, unsigned M, unsigned N>
-inline T &Matrix<T, M, N>::element(unsigned i, unsigned j)
-{
-       return data[i+M*j];
-}
-
-template<typename T, unsigned M, unsigned N>
-inline const T &Matrix<T, M, N>::element(unsigned i, unsigned j) const
-{
-       return data[i+M*j];
-}
-
-template<typename T, unsigned M, unsigned N>
-inline T &Matrix<T, M, N>::operator()(unsigned i, unsigned j)
-{
-       return element(i, j);
-}
-
-template<typename T, unsigned M, unsigned N>
-inline const T &Matrix<T, M, N>::operator()(unsigned i, unsigned j) const
-{
-       return element(i, j);
-}
-
 template<typename T, unsigned M, unsigned N>
 inline Matrix<T, M, N> &Matrix<T, M, N>::operator*=(T s)
 {
index 4cdc9e88f7288654d4dcbae9d2ec006517bfb734..94157b0f3b92f2e2de9ebbf49e927d17bf8a9ae8 100644 (file)
@@ -19,9 +19,9 @@ class SquareMatrix: public Matrix<T, S, S>
 {
 public:
        SquareMatrix() { }
-       SquareMatrix(const T *);
+       SquareMatrix(const T *d): Matrix<T, S, S>(d) { }
        template<typename U>
-       SquareMatrix(const Matrix<U, S, S> &);
+       SquareMatrix(const Matrix<U, S, S> &m): Matrix<T, S, S>(m) { }
 
        static SquareMatrix identity();
 
@@ -30,17 +30,6 @@ public:
        SquareMatrix &invert();
 };
 
-template<typename T, unsigned S>
-SquareMatrix<T, S>::SquareMatrix(const T *d):
-       Matrix<T, S, S>(d)
-{ }
-
-template<typename T, unsigned S>
-template<typename U>
-SquareMatrix<T, S>::SquareMatrix(const Matrix<U, S, S> &m):
-       Matrix<T, S, S>(m)
-{ }
-
 template<typename T, unsigned S>
 inline SquareMatrix<T, S> SquareMatrix<T, S>::identity()
 {
index 1a79bd8dc5a58513aff6b7881a739e34a858f1a0..392e3a12772dcdc6e3b9f12dba937c7d38779e29 100644 (file)
@@ -22,8 +22,8 @@ public:
        template<typename U>
        Vector(const Vector<U, N> &v);
 
-       T &operator[](unsigned i);
-       const T &operator[](unsigned i) const;
+       T &operator[](unsigned i) { return data[i]; }
+       const T &operator[](unsigned i) const { return data[i]; }
 
        Vector &operator*=(T);
        Vector &operator/=(T);
@@ -54,18 +54,6 @@ inline Vector<T, N>::Vector(const Vector<U, N> &v)
        std::copy(v.data, v.data+N, data);
 }
 
-template<typename T, unsigned N>
-T &Vector<T, N>::operator[](unsigned i)
-{
-       return data[i];
-}
-
-template<typename T, unsigned N>
-const T &Vector<T, N>::operator[](unsigned i) const
-{
-       return data[i];
-}
-
 template<typename T, unsigned N>
 inline Vector<T, N> &Vector<T, N>::operator*=(T s)
 {
index 0197dbc9775bef46f87923f41e70756058926b43..4a623cafef1443cd194c38efd30351c0ac055c40 100644 (file)
@@ -14,17 +14,12 @@ class Vector3: public Vector<T, 3>
 {
 public:
        Vector3() { }
-       Vector3(const T *);
+       Vector3(const T *d): Vector<T, 3>(d) { }
        Vector3(T, T, T);
        template<typename U>
-       Vector3(const Vector<U, 3> &);
+       Vector3(const Vector<U, 3> &v): Vector<T, 3>(v) { }
 };
 
-template<typename T>
-inline Vector3<T>::Vector3(const T *d):
-       Vector<T, 3>(d)
-{ }
-
 template<typename T>
 inline Vector3<T>::Vector3(T x, T y, T z)
 {
@@ -33,12 +28,6 @@ inline Vector3<T>::Vector3(T x, T y, T z)
        this->data[2] = z;
 }
 
-template<typename T>
-template<typename U>
-inline Vector3<T>::Vector3(const Vector<U, 3> &v):
-       Vector<T, 3>(v)
-{ }
-
 template<typename T>
 inline T dot(const Vector<T, 3> &v1, const Vector<T, 3> &v2)
 {