Loading src/Examples/Containers/ArrayExample.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ void arrayExample() /*** * You may also assign value to all array elements ... */ a2 = 0; a2 = 0.0; /*** * ... or assign STL list and vector. Loading src/TNL/Containers/Algorithms/ArrayAssignment.h +18 −20 Original line number Diff line number Diff line Loading @@ -10,50 +10,48 @@ #pragma once #include <TNL/Containers/ArrayOperations.h> #include <TNL/Containers/Algorithms/ArrayOperations.h> namespace TNL { namespace Containers { namespace Algorithms { template< typename Array, typename T, bool isArray = TNL::IsArray< T > > struct ArraysAsignment {}; /** * \brief Specialization for array-array assignment */ template< typename Array, typename T > struct ArraysAsignment< Array, T, true > struct ArrayAssignment { void assign( Array& a, T& t ) static void assign( Array& a, const T& t, const typename T::ValueType* ) { a.setSize( t.getSize() ); ArrayOperations< typename Array::DeviceType, typename T::DeviceType >:: /*a.setSize( t.getSize() ); ArrayOperations< typename Array::DeviceType, typename T::DeviceType >::template copyMemory< typename Array::ValueType, typename T::ValueType, typename T::IndexType > ( a.getData(), t.getData(), t.getSize() ); ( a.getData(), t.getData(), t.getSize() );*/ }; static void assign( Array& a, const T& t, const void* ) { }; }; /** * \brief Specialization for array-value assignment */ template< typename Array, /*template< typename Array, typename T > struct ArraysAsignment< Array, T, false > struct ArrayAssignment< Array, T, void > { void assign( Array& a, T& t ) static void assign( Array& a, const T& t ) { ArrayOperations< typename Array::DeviceType >:: ArrayOperations< typename Array::DeviceType >::template setMemory< typename Array::ValueType, typename Array::IndexType > ( a.getData(), ( typename Array::ValueType ) t, t.getSize() ); }; }; };*/ } // namespace Algorithms Loading src/TNL/Containers/Array.h +1 −28 Original line number Diff line number Diff line Loading @@ -106,7 +106,7 @@ class Array : public Object * \param array is an array to be copied. */ // Deep copy does not work because of EllpackIndexMultiMap - TODO: Fix it //Array( const Array& array ); explicit Array( const Array& array ); /** * \brief Bind constructor . Loading Loading @@ -533,38 +533,11 @@ class Array : public Object mutable int* referenceCounter = nullptr; }; template< typename Array, typename Data, bool isArray = TNL::isArray< Data >::value > struct ArrayAssignment {}; template< typename Array, typename Data > struct ArrayAssignment< Array, Data, true > { static void assign( Array& a, const Data& d ); }; template< typename Array, typename Data > struct ArrayAssignment< Array, Data, false > { static void assign( Array& a, const Data& d ); }; template< typename Value, typename Device, typename Index > std::ostream& operator << ( std::ostream& str, const Array< Value, Device, Index >& v ); } // namespace Containers template< typename Value, typename Device, typename Index > struct IsArray< Containers::Array< Value, Device, Index > > { static constexpr bool value = true; }; } // namespace TNL #include <TNL/Containers/Array.hpp> src/TNL/Containers/Array.hpp +2 −25 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #include <TNL/param-types.h> #include <TNL/Containers/Algorithms/ArrayOperations.h> #include <TNL/Containers/Algorithms/ArrayIO.h> #include <TNL/Containers/Algorithms/ArrayAssignment.h> #include <TNL/Containers/Array.h> #include <TNL/Exceptions/ArrayWrongSize.h> Loading Loading @@ -493,7 +494,7 @@ Array< Value, Device, Index >& Array< Value, Device, Index >:: operator = ( const T& data ) { ArrayAssignment< ThisType, T >::assign( *this, data ); Algorithms::ArrayAssignment< ThisType, T >::assign( *this, data ); return ( *this ); } Loading Loading @@ -699,30 +700,6 @@ std::ostream& operator << ( std::ostream& str, const Array< Value, Device, Index return str; } template< typename Array, typename Data > void ArrayAssignment< Array, Data, true >:: assign( Array& array, const Data& data ) { if( array.getSize() != data.getSize() ) array.setLike( data ); if( array.getSize() > 0 ) Algorithms::ArrayOperations< typename Array::DeviceType, typename Data::DeviceType >:: copyMemory( array.getData(), data.getData(), data.getSize() ); }; template< typename Array, typename Data > void ArrayAssignment< Array, Data, false >:: assign( Array& array, const Data& data ) { array.setValue( data ); }; } // namespace Containers } // namespace TNL src/TNL/Containers/ArrayView.h +0 −10 Original line number Diff line number Diff line Loading @@ -155,16 +155,6 @@ template< typename Value, typename Device, typename Index > std::ostream& operator<<( std::ostream& str, const ArrayView< Value, Device, Index >& v ); } // namespace Containers template< typename Value, typename Device, typename Index > struct isArray< Containers::ArrayView< Value, Device, Index > > { static constexpr bool value = true; }; } // namespace TNL #include <TNL/Containers/ArrayView_impl.h> Loading
src/Examples/Containers/ArrayExample.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ void arrayExample() /*** * You may also assign value to all array elements ... */ a2 = 0; a2 = 0.0; /*** * ... or assign STL list and vector. Loading
src/TNL/Containers/Algorithms/ArrayAssignment.h +18 −20 Original line number Diff line number Diff line Loading @@ -10,50 +10,48 @@ #pragma once #include <TNL/Containers/ArrayOperations.h> #include <TNL/Containers/Algorithms/ArrayOperations.h> namespace TNL { namespace Containers { namespace Algorithms { template< typename Array, typename T, bool isArray = TNL::IsArray< T > > struct ArraysAsignment {}; /** * \brief Specialization for array-array assignment */ template< typename Array, typename T > struct ArraysAsignment< Array, T, true > struct ArrayAssignment { void assign( Array& a, T& t ) static void assign( Array& a, const T& t, const typename T::ValueType* ) { a.setSize( t.getSize() ); ArrayOperations< typename Array::DeviceType, typename T::DeviceType >:: /*a.setSize( t.getSize() ); ArrayOperations< typename Array::DeviceType, typename T::DeviceType >::template copyMemory< typename Array::ValueType, typename T::ValueType, typename T::IndexType > ( a.getData(), t.getData(), t.getSize() ); ( a.getData(), t.getData(), t.getSize() );*/ }; static void assign( Array& a, const T& t, const void* ) { }; }; /** * \brief Specialization for array-value assignment */ template< typename Array, /*template< typename Array, typename T > struct ArraysAsignment< Array, T, false > struct ArrayAssignment< Array, T, void > { void assign( Array& a, T& t ) static void assign( Array& a, const T& t ) { ArrayOperations< typename Array::DeviceType >:: ArrayOperations< typename Array::DeviceType >::template setMemory< typename Array::ValueType, typename Array::IndexType > ( a.getData(), ( typename Array::ValueType ) t, t.getSize() ); }; }; };*/ } // namespace Algorithms Loading
src/TNL/Containers/Array.h +1 −28 Original line number Diff line number Diff line Loading @@ -106,7 +106,7 @@ class Array : public Object * \param array is an array to be copied. */ // Deep copy does not work because of EllpackIndexMultiMap - TODO: Fix it //Array( const Array& array ); explicit Array( const Array& array ); /** * \brief Bind constructor . Loading Loading @@ -533,38 +533,11 @@ class Array : public Object mutable int* referenceCounter = nullptr; }; template< typename Array, typename Data, bool isArray = TNL::isArray< Data >::value > struct ArrayAssignment {}; template< typename Array, typename Data > struct ArrayAssignment< Array, Data, true > { static void assign( Array& a, const Data& d ); }; template< typename Array, typename Data > struct ArrayAssignment< Array, Data, false > { static void assign( Array& a, const Data& d ); }; template< typename Value, typename Device, typename Index > std::ostream& operator << ( std::ostream& str, const Array< Value, Device, Index >& v ); } // namespace Containers template< typename Value, typename Device, typename Index > struct IsArray< Containers::Array< Value, Device, Index > > { static constexpr bool value = true; }; } // namespace TNL #include <TNL/Containers/Array.hpp>
src/TNL/Containers/Array.hpp +2 −25 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #include <TNL/param-types.h> #include <TNL/Containers/Algorithms/ArrayOperations.h> #include <TNL/Containers/Algorithms/ArrayIO.h> #include <TNL/Containers/Algorithms/ArrayAssignment.h> #include <TNL/Containers/Array.h> #include <TNL/Exceptions/ArrayWrongSize.h> Loading Loading @@ -493,7 +494,7 @@ Array< Value, Device, Index >& Array< Value, Device, Index >:: operator = ( const T& data ) { ArrayAssignment< ThisType, T >::assign( *this, data ); Algorithms::ArrayAssignment< ThisType, T >::assign( *this, data ); return ( *this ); } Loading Loading @@ -699,30 +700,6 @@ std::ostream& operator << ( std::ostream& str, const Array< Value, Device, Index return str; } template< typename Array, typename Data > void ArrayAssignment< Array, Data, true >:: assign( Array& array, const Data& data ) { if( array.getSize() != data.getSize() ) array.setLike( data ); if( array.getSize() > 0 ) Algorithms::ArrayOperations< typename Array::DeviceType, typename Data::DeviceType >:: copyMemory( array.getData(), data.getData(), data.getSize() ); }; template< typename Array, typename Data > void ArrayAssignment< Array, Data, false >:: assign( Array& array, const Data& data ) { array.setValue( data ); }; } // namespace Containers } // namespace TNL
src/TNL/Containers/ArrayView.h +0 −10 Original line number Diff line number Diff line Loading @@ -155,16 +155,6 @@ template< typename Value, typename Device, typename Index > std::ostream& operator<<( std::ostream& str, const ArrayView< Value, Device, Index >& v ); } // namespace Containers template< typename Value, typename Device, typename Index > struct isArray< Containers::ArrayView< Value, Device, Index > > { static constexpr bool value = true; }; } // namespace TNL #include <TNL/Containers/ArrayView_impl.h>