Commit 74ac0d38 authored by Tomáš Jakubec's avatar Tomáš Jakubec
Browse files

Refactor:

- consolelogger.h to only detect whether begin member function exists
- refactor of coordinates from pointer to std::array
parent 7a3fc697
Loading
Loading
Loading
Loading
+15 −10
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@
#include <iostream>
#include <initializer_list>
#include "InlineArrayOperations.h"

#include <array>


template <unsigned int Dim, typename Real = double>
@@ -13,7 +13,7 @@ class Vector {
    /**
     * @brief coordinates
     */
    Real coordinates[Dim] = {};
    std::array<Real, Dim> coordinates = {};

public:
    Vector(){}
@@ -27,6 +27,11 @@ public:
        coordinates[pos] = coord;
    }


    std::array<Real, Dim>& getCoordinates() {
        return coordinates;
    }

    Real& operator[](unsigned int pos){
        return coordinates[pos];
    }
@@ -38,7 +43,7 @@ public:
    Real normEukleid();

    inline Real sumOfSquares() {
        return  inlineScalarProduct<Dim, Real>::computation(coordinates, coordinates);
        return  inlineScalarProduct<Dim, Real>::computation(coordinates.data(), coordinates.data());
    }

    Vector<Dim, Real> operator-(const Vector<Dim, Real>&) const;
@@ -119,7 +124,7 @@ Real Vector<Dim, Real>::normEukleid(){
template <unsigned int Dim, typename Real>
Vector<Dim, Real> Vector<Dim, Real>::operator -(const Vector<Dim, Real>& v) const {
    Vector<Dim, Real> res;
    inlineSubtraction<Dim, Real>::computation(res.coordinates, this->coordinates, v.coordinates);
    inlineSubtraction<Dim, Real>::computation(res.coordinates.data(), this->coordinates.data(), v.coordinates.data());
    return res;
}

@@ -127,7 +132,7 @@ Vector<Dim, Real> Vector<Dim, Real>::operator -(const Vector<Dim, Real>& v) cons
template <unsigned int Dim, typename Real>
Vector<Dim, Real> Vector<Dim, Real>::operator +(const Vector<Dim, Real>& v) const {
    Vector<Dim, Real> res;
    inlineAddition<Dim, Real>::computation(res.coordinates, this->coordinates, v.coordinates);
    inlineAddition<Dim, Real>::computation(res.coordinates.data(), this->coordinates.data(), v.coordinates.data());
    return res;
}

@@ -135,7 +140,7 @@ Vector<Dim, Real> Vector<Dim, Real>::operator +(const Vector<Dim, Real>& v) cons
template <unsigned int Dim, typename Real>
Vector<Dim, Real> Vector<Dim, Real>::operator *(const Real& x) const {
    Vector<Dim, Real> res;
    inlineMultiplication<Dim, Real>::computation(res.coordinates, this->coordinates, x);
    inlineMultiplication<Dim, Real>::computation(res.coordinates.data(), this->coordinates.data(), x);
    return res;
}

@@ -152,20 +157,20 @@ Vector<Dim, Real> Vector<Dim, Real>::operator /(const Real& x) const {
template<unsigned int Dim, typename Real>
Real Vector<Dim, Real>::operator*(const Vector &v)
{
    return inlineScalarProduct<Dim, Real>::computation(coordinates, v.coordinates);
    return inlineScalarProduct<Dim, Real>::computation(coordinates.data(), v.coordinates.data());
}

// Adds value of coordinates of another Point
template <unsigned int Dim, typename Real>
Vector<Dim, Real>& Vector<Dim, Real>::operator +=(const Vector<Dim, Real>& v){
    inlineAddition<Dim, Real>::computation(coordinates, v.coordinates);
    inlineAddition<Dim, Real>::computation(coordinates.data(), v.coordinates.data());
    return *this;
}

// Subtracts value of coordinates of another Point
template <unsigned int Dim, typename Real>
Vector<Dim, Real>& Vector<Dim, Real>::operator -=(const Vector<Dim, Real>& v){
    inlineSubtraction<Dim, Real>::computation(coordinates, v.coordinates);
    inlineSubtraction<Dim, Real>::computation(coordinates.data(), v.coordinates.data());
    return *this;
}

@@ -173,7 +178,7 @@ Vector<Dim, Real>& Vector<Dim, Real>::operator -=(const Vector<Dim, Real>& v){
// Adds value of coordinates of another Point
template <unsigned int Dim, typename Real>
Vector<Dim, Real>& Vector<Dim, Real>::operator *=(const Real& x){
    inlineMultiplication<Dim, Real>::computation(coordinates, x);
    inlineMultiplication<Dim, Real>::computation(coordinates.data(), x);
    return *this;
}

+14 −10
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@
#include <iostream>
#include <initializer_list>
#include "InlineArrayOperations.h"

#include <array>

template <unsigned int Dim, typename Real = double>
class Vertex {
@@ -12,7 +12,7 @@ class Vertex {
     * @brief coordinates<HR>
     * coordinates of the vertex in the space
     */
    Real coordinates[Dim] = {};
    std::array<Real, Dim> coordinates = {};

public:
    Vertex(){}
@@ -26,6 +26,10 @@ public:
        coordinates[pos] = coord;
    }

    std::array<Real, Dim>& getCoordinates() {
        return coordinates;
    }

    Real& operator[](unsigned int pos){
        return coordinates[pos];
    }
@@ -37,7 +41,7 @@ public:
    Real normEukleid();

    inline Real sumOfSquares() {
        return  inlineScalarProduct<Dim, Real>::computation(coordinates, coordinates);
        return  inlineScalarProduct<Dim, Real>::computation(coordinates.data(), coordinates.data());
    }

    Vertex<Dim, Real> operator-(const Vertex<Dim, Real>&) const;
@@ -105,7 +109,7 @@ Real Vertex<Dim, Real>::normEukleid(){
template <unsigned int Dim, typename Real>
Vertex<Dim, Real> Vertex<Dim, Real>::operator -(const Vertex<Dim, Real>& v) const {
    Vertex<Dim, Real> res;
    inlineSubtraction<Dim, Real>::computation(res.coordinates, this->coordinates, v.coordinates);
    inlineSubtraction<Dim, Real>::computation(res.coordinates.data(), this->coordinates.data(), v.coordinates.data());
    return res;
}

@@ -113,7 +117,7 @@ Vertex<Dim, Real> Vertex<Dim, Real>::operator -(const Vertex<Dim, Real>& v) cons
template <unsigned int Dim, typename Real>
Vertex<Dim, Real> Vertex<Dim, Real>::operator +(const Vertex<Dim, Real>& v) const {
    Vertex<Dim, Real> res;
    inlineAddition<Dim, Real>::computation(res.coordinates, this->coordinates, v.coordinates);
    inlineAddition<Dim, Real>::computation(res.coordinates.data(), this->coordinates.data(), v.coordinates.data());
    return res;
}

@@ -121,7 +125,7 @@ Vertex<Dim, Real> Vertex<Dim, Real>::operator +(const Vertex<Dim, Real>& v) cons
template <unsigned int Dim, typename Real>
Vertex<Dim, Real> Vertex<Dim, Real>::operator *(const Real& x) const {
    Vertex<Dim, Real> res;
    inlineMultiplication<Dim, Real>::computation(res.coordinates, this->coordinates, x);
    inlineMultiplication<Dim, Real>::computation(res.coordinates.data(), this->coordinates.data(), x);
    return res;
}

@@ -136,7 +140,7 @@ Vertex<Dim, Real> Vertex<Dim, Real>::operator /(const Real& x) const {
template<unsigned int Dim, typename Real>
Real Vertex<Dim, Real>::operator*(const Vertex<Dim, Real> &v)
{
    return inlineScalarProduct<Dim, Real>::computation(coordinates, v.coordinates);
    return inlineScalarProduct<Dim, Real>::computation(coordinates.data(), v.coordinates.data());
}


@@ -144,14 +148,14 @@ Real Vertex<Dim, Real>::operator*(const Vertex<Dim, Real> &v)
// Adds value of coordinates of another Point
template <unsigned int Dim, typename Real>
Vertex<Dim, Real>& Vertex<Dim, Real>::operator +=(const Vertex<Dim, Real>& v){
    inlineAddition<Dim, Real>::computation(coordinates, v.coordinates);
    inlineAddition<Dim, Real>::computation(coordinates.data(), v.coordinates.data());
    return *this;
}

// Subtracts value of coordinates of another Point
template <unsigned int Dim, typename Real>
Vertex<Dim, Real>& Vertex<Dim, Real>::operator -=(const Vertex<Dim, Real>& v){
    inlineSubtraction<Dim, Real>::computation(coordinates, v.coordinates);
    inlineSubtraction<Dim, Real>::computation(coordinates.data(), v.coordinates.data());
    return *this;
}

@@ -159,7 +163,7 @@ Vertex<Dim, Real>& Vertex<Dim, Real>::operator -=(const Vertex<Dim, Real>& v){
// Adds value of coordinates of another Point
template <unsigned int Dim, typename Real>
Vertex<Dim, Real>& Vertex<Dim, Real>::operator *=(const Real& x){
    inlineMultiplication<Dim, Real>::computation(coordinates, x);
    inlineMultiplication<Dim, Real>::computation(coordinates.data(), x);
    return *this;
}

+4 −1
Original line number Diff line number Diff line
@@ -695,6 +695,9 @@ void testDebug() {
    ConsoleLogger::writeVar(__LINE__, __FILE__, "r", r, "i", i, "c", c, "list", list, "vec", vec, "b", b, "map", m);
    ConsoleLogger::writeVar(__LINE__, __FILE__,"---", {5,4,3,2});
    DBGVAR(r, i, c, list, vec, b, m);

    Vertex<7, double> vert;
    DBGVAR(vert.getCoordinates());
}


@@ -710,6 +713,6 @@ int main()
    //testTemplate();
    //UnstructuredMesh<5, size_t, double, 6,5,4> m;
    //m.ComputeElementMeasures();
    testDebug();
    //testDebug();

}
+5 −2
Original line number Diff line number Diff line
@@ -76,8 +76,11 @@ class ConsoleLogger {

    template<typename T>
    static auto _writeWar(const T &list)
      -> typename std::enable_if<std::is_class<
             decltype(std::declval<const T&>().begin())>::value &&
      -> typename std::enable_if<
             !std::is_same<
                decltype(std::declval<const T&>().begin()),
                void
             >::value &&
             !std::is_same<T, std::string>::value
         >::type
    {