LCOV - code coverage report
Current view: top level - Core - Utilities.hxx (source / functions) Hit Total Coverage
Test: coverage.info.cleaned Lines: 13 13 100.0 %
Date: 2021-02-18 20:07:22 Functions: 52 106 49.1 %

          Line data    Source code
       1             : /**
       2             :  * \file Utilities.hxx
       3             :  */
       4             : 
       5             : #include "Utilities.h"
       6             : #include <ATK/Core/TypeTraits.h>
       7             : 
       8             : #include <gsl/gsl>
       9             : 
      10             : #include <cstring>
      11             : 
      12             : namespace ATK
      13             : {
      14             : namespace Utilities
      15             : {
      16             :   template<typename DataType>
      17        4627 :   void convert_to_array(const DataType* input_array, DataType* output_array, gsl::index size, gsl::index offset, gsl::index ports)
      18             :   {
      19        4627 :     if(ports == 1)
      20             :     {
      21        4621 :       memcpy(reinterpret_cast<void*>(output_array), reinterpret_cast<const void*>(input_array + offset), size * sizeof(DataType));
      22             :     }
      23             :     else
      24             :     {
      25        6150 :       for(gsl::index i = 0; i < size; ++i)
      26             :       {
      27        6144 :         output_array[i] = input_array[i * ports + offset];
      28             :       }
      29             :     }
      30        4627 :   }
      31             :   
      32             :   template<typename DataType1, typename DataType2>
      33         156 :   typename std::enable_if<!std::is_same<DataType1, DataType2>::value>::type convert_to_array(const DataType1* input_array, DataType2* output_array, gsl::index size, gsl::index offset, gsl::index ports)
      34             :   {
      35     9576747 :     for(gsl::index i = 0; i < size; ++i)
      36             :     {
      37     9576598 :       output_array[i] = ATK::TypeTraits<DataType2>::from_double(ATK::TypeTraits<DataType1>::to_double(input_array[i * ports + offset]));
      38             :     }
      39         156 :   }
      40             : }
      41             : 
      42             :   template<typename DataType1, typename DataType2>
      43        4783 :   void ConversionUtilities<DataType1, DataType2>::convert_array(const DataType1* input_array, DataType2* output_array, gsl::index size, gsl::index offset, gsl::index ports)
      44             :   {
      45        4783 :     Utilities::convert_to_array(input_array, output_array, size, offset, ports);
      46        4783 :   }
      47             : }

Generated by: LCOV version TK-3.3.0-4-gdba42eea