10 #ifndef EIGEN_FIXEDSIZEVECTOR_H 11 #define EIGEN_FIXEDSIZEVECTOR_H 34 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
36 : reserve_(n), size_(0),
37 data_(static_cast<T*>(internal::aligned_malloc(n *
sizeof(
T)))) {
38 for (
size_t i = 0; i < n; ++i) {
new (&data_[i])
T; }
43 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
44 MaxSizeVector(
size_t n,
const T&
init)
45 : reserve_(n), size_(n),
46 data_(static_cast<T*>(internal::aligned_malloc(n *
sizeof(
T)))) {
47 for (
size_t i = 0; i < n; ++i) {
new (&data_[i])
T(init); }
50 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
52 for (
size_t i = 0; i < size_; ++i) {
55 internal::aligned_free(data_);
58 void resize(
size_t n) {
59 eigen_assert(n <= reserve_);
60 for (
size_t i = size_; i < n; ++i) {
63 for (
size_t i = n; i < size_; ++i) {
70 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
71 void push_back(
const T& t) {
72 eigen_assert(size_ < reserve_);
76 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
77 const T& operator[] (
size_t i)
const {
78 eigen_assert(i < size_);
82 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
83 T& operator[] (
size_t i) {
84 eigen_assert(i < size_);
88 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
90 eigen_assert(size_ > 0);
91 return data_[size_ - 1];
94 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
95 const T& back()
const {
96 eigen_assert(size_ > 0);
97 return data_[size_ - 1];
100 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
105 eigen_assert(size_ > 0);
109 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
110 size_t size()
const {
return size_; }
112 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
113 bool empty()
const {
return size_ == 0; }
115 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
116 T* data() {
return data_; }
118 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
119 const T* data()
const {
return data_; }
121 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
122 T* begin() {
return data_; }
124 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
125 T* end() {
return data_ + size_; }
127 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
128 const T* begin()
const {
return data_; }
130 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
131 const T* end()
const {
return data_ + size_; }
141 #endif // EIGEN_FIXEDSIZEVECTOR_H Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:85
Definition: TutorialInplaceLU.cpp:2
The MaxSizeVector class.
Definition: MaxSizeVector.h:31