Sacado Package Browser (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Sacado_StaticArrayTraits.hpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // Sacado Package
4 //
5 // Copyright 2006 NTESS and the Sacado contributors.
6 // SPDX-License-Identifier: LGPL-2.1-or-later
7 // *****************************************************************************
8 // @HEADER
9 
10 #ifndef SACADO_STATICARRAYTRAITS_HPP
11 #define SACADO_STATICARRAYTRAITS_HPP
12 
13 #include <cstring>
14 
15 #include "Sacado_Traits.hpp"
16 
17 namespace Sacado {
18 
23  struct ss_array {
24 
27  static void copy(const T* src, T* dest, int sz) {
28  for (int i=0; i<sz; ++i)
29  *(dest++) = *(src++);
30  }
31 
34  static void zero(T* dest, int sz) {
35  for (int i=0; i<sz; ++i)
36  *(dest++) = T(0.);
37  }
38  };
39 
44  template <typename T>
45  struct ss_array<T,true> {
46 
49  static void copy(const T* src, T* dest, int sz) {
50  if (sz > 0)
51 #if defined( __CUDACC__) || defined(__HIPCC__ )
52  for (int i=0; i<sz; ++i)
53  dest[i] = src[i];
54 #else
55  std::memcpy(dest,src,sz*sizeof(T));
56 #endif
57  }
58 
61  static void zero(T* dest, int sz) {
62  if (sz > 0)
63 #if defined(__CUDACC__ ) || defined(__HIPCC__ )
64  for (int i=0; i<sz; ++i)
65  dest[i] = T(0.);
66 #else
67  std::memset(dest,0,sz*sizeof(T));
68 #endif
69  }
70 
71  };
72 
73 } // namespace Sacado
74 
75 #endif // SACAD0_STATICARRAYTRAITS_HPP
static SACADO_INLINE_FUNCTION void copy(const T *src, T *dest, int sz)
Copy array from src to dest of length sz.
expr true
static SACADO_INLINE_FUNCTION void copy(const T *src, T *dest, int sz)
Copy array from src to dest of length sz.
#define T
Definition: Sacado_rad.hpp:553
static SACADO_INLINE_FUNCTION void zero(T *dest, int sz)
Zero out array dest of length sz.
int value
static SACADO_INLINE_FUNCTION void zero(T *dest, int sz)
Zero out array dest of length sz.
#define SACADO_INLINE_FUNCTION
Static array allocation class that works for any type.