Program Listing for File array.h¶
↰ Return to documentation for file (src/functional/array.h
)
#pragma once
#include "functional/defs.h"
namespace marian {
namespace functional {
template <typename T, size_t N>
struct Array {
typedef T value_type;
T data_[N];
HOST_DEVICE_INLINE const T* data() const { return data_; }
HOST_DEVICE_INLINE T* data() { return data_; }
HOST_DEVICE_INLINE constexpr static size_t size() { return N; }
HOST_DEVICE_INLINE T& operator[](size_t i) { return data_[i]; }
HOST_DEVICE_INLINE const T& operator[](size_t i) const { return data_[i]; }
HOST_DEVICE_INLINE T* begin() { return data_; }
HOST_DEVICE_INLINE const T* begin() const { return data_; }
HOST_DEVICE_INLINE T* end() { return data_ + N; }
HOST_DEVICE_INLINE const T* end() const { return data_ + N; }
HOST_DEVICE_INLINE void fill(T val) {
for(int i = 0; i < N; ++i)
data_[i] = val;
}
HOST_DEVICE_INLINE T& back() { return data_[N - 1]; }
HOST_DEVICE_INLINE const T& back() const { return data_[N - 1]; }
HOST_DEVICE_INLINE bool operator==(const Array<T, N>& other) {
for(int i = 0; i < N; ++i)
if(data_[i] != other[i])
return false;
return true;
}
};
} // namespace functional
} // namespace marian