forked from OctaForge/libostd
array fixes
parent
64810e4006
commit
f919983e03
15
octa/array.h
15
octa/array.h
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#include "octa/algorithm.h"
|
||||||
#include "octa/range.h"
|
#include "octa/range.h"
|
||||||
|
|
||||||
namespace octa {
|
namespace octa {
|
||||||
|
@ -32,8 +33,8 @@ namespace octa {
|
||||||
T &first() { return p_buf[0]; }
|
T &first() { return p_buf[0]; }
|
||||||
const T &first() const { return p_buf[0]; }
|
const T &first() const { return p_buf[0]; }
|
||||||
|
|
||||||
T &last() { return p_buf[N - 1]; }
|
T &last() { return p_buf[(N > 0) ? (N - 1) : 0]; }
|
||||||
const T &last() const { return p_buf[N - 1]; }
|
const T &last() const { return p_buf[(N > 0) ? (N - 1) : 0]; }
|
||||||
|
|
||||||
size_t length() const { return N; }
|
size_t length() const { return N; }
|
||||||
|
|
||||||
|
@ -48,10 +49,6 @@ namespace octa {
|
||||||
T *get() { return p_buf; }
|
T *get() { return p_buf; }
|
||||||
const T *get() const { return p_buf; }
|
const T *get() const { return p_buf; }
|
||||||
|
|
||||||
void swap(Array &v)(swap(declval<T &>(), declval<T &>())) {
|
|
||||||
swap(p_buf, v.p_buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
RangeType each() {
|
RangeType each() {
|
||||||
return PointerRange<T>(p_buf, p_buf + N);
|
return PointerRange<T>(p_buf, p_buf + N);
|
||||||
}
|
}
|
||||||
|
@ -59,7 +56,11 @@ namespace octa {
|
||||||
return PointerRange<const T>(p_buf, p_buf + N);
|
return PointerRange<const T>(p_buf, p_buf + N);
|
||||||
}
|
}
|
||||||
|
|
||||||
T p_buf[N];
|
void swap(Array &v) {
|
||||||
|
swap_ranges(each(), v.each());
|
||||||
|
}
|
||||||
|
|
||||||
|
T p_buf[(N > 0) ? N : 1];
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T, size_t N>
|
template<typename T, size_t N>
|
||||||
|
|
Loading…
Reference in New Issue