Skip to content
Snippets Groups Projects
Commit 51d8b21d authored by Tomáš Oberhuber's avatar Tomáš Oberhuber
Browse files

Added type traits ViewTypeGetter and IsStatic.

parent 494c1111
No related branches found
No related tags found
1 merge request!34Runge kutta
......@@ -14,6 +14,7 @@
#include <vector>
#include <TNL/File.h>
#include <TNL/TypeTraits.h>
#include <TNL/Containers/ArrayView.h>
namespace TNL {
......@@ -619,6 +620,19 @@ template< typename Value, typename Device, typename Index >
File& operator>>( File&& file, Array< Value, Device, Index >& array );
} // namespace Containers
template< typename Value, typename Device, typename Index >
struct ViewTypeGetter< Containers::Array< Value, Device, Index > >
{
using Type = Containers::ArrayView< Value, Device, Index >;
};
template< typename Value_, typename Device, typename Index >
struct IsStatic< Containers::Array< Value_, Device, Index > >
{
static constexpr bool Value = false;
};
} // namespace TNL
#include <TNL/Containers/Array.hpp>
......@@ -473,6 +473,14 @@ template< typename Value, typename Device, typename Index >
File& operator>>( File&& file, ArrayView< Value, Device, Index > view );
} // namespace Containers
template< typename Value_, typename Device, typename Index >
struct IsStatic< Containers::ArrayView< Value_, Device, Index > >
{
static constexpr bool Value = false;
};
} // namespace TNL
#include <TNL/Containers/ArrayView.hpp>
......@@ -12,6 +12,7 @@
#include <TNL/String.h>
#include <TNL/File.h>
#include <TNL/TypeTraits.h>
namespace TNL {
namespace Containers {
......@@ -556,6 +557,13 @@ template< int Size, typename Value >
std::ostream& operator << ( std::ostream& str, const StaticArray< Size, Value >& a );
} // namespace Containers
template< int Size, typename Value_ >
struct IsStatic< Containers::StaticArray< Size, Value_ > >
{
static constexpr bool Value = true;
};
} // namespace TNL
#include <TNL/Containers/StaticArray_impl.h>
......
......@@ -742,4 +742,11 @@ Real TriangleArea( const StaticVector< 3, Real >& a,
}
} // namespace Containers
template< int Size, typename Real >
struct IsStatic< Containers::StaticVector< Size, Real > >
{
static constexpr bool Value = true;
};
} // namespace TNL
......@@ -10,6 +10,7 @@
#pragma once
#include <TNL/TypeTraits.h>
#include <TNL/Containers/Array.h>
#include <TNL/Containers/VectorView.h>
......@@ -327,6 +328,20 @@ public:
};
} // namespace Containers
template< typename Real, typename Device, typename Index >
struct ViewTypeGetter< Containers::Vector< Real, Device, Index > >
{
using Type = Containers::VectorView< Real, Device, Index >;
};
template< typename Real, typename Device, typename Index >
struct IsStatic< Containers::Vector< Real, Device, Index > >
{
static constexpr bool Value = false;
};
} // namespace TNL
#include <TNL/Containers/Vector.hpp>
......@@ -214,6 +214,13 @@ public:
};
} // namespace Containers
template< typename Real, typename Device, typename Index >
struct IsStatic< Containers::VectorView< Real, Device, Index > >
{
static constexpr bool Value = false;
};
} // namespace TNL
#include <TNL/Containers/VectorView.hpp>
......
......@@ -8,12 +8,21 @@
/* See Copyright Notice in tnl/Copyright */
#pragma once
#include <type_traits>
namespace TNL {
template< typename T >
struct ViewType
struct ViewTypeGetter
{
using Type = T;
};
} //namespace TNL
\ No newline at end of file
template< typename T >
struct IsStatic
{
static constexpr bool Value = std::is_arithmetic< T >::value;
};
} //namespace TNL
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment