14template <
typename T, fl::size INLINED_SIZE>
class FixedVector;
16template <
typename T>
class vector;
18template <
typename T, fl::size INLINED_SIZE>
class VectorN;
23template <
typename T, fl::size N>
class array;
29template <
typename T, fl::size Extent = dynamic_extent>
class span;
111 template <fl::size INLINED_SIZE>
115 template <fl::size INLINED_SIZE>
124 template<
typename U, fl::size INLINED_SIZE>
128 template<
typename U, fl::size INLINED_SIZE>
137 template <fl::size INLINED_SIZE>
141 template <fl::size INLINED_SIZE>
149 template<
typename Container>
158 template<
typename Container>
168 template <fl::size N>
172 template <fl::size N>
177 template <
typename U, fl::size N>
181 template <
typename U, fl::size N>
187 template <fl::size ARRAYSIZE>
192 template <
typename U, fl::size ARRAYSIZE>
197 template <
typename U, fl::size ARRAYSIZE>
202 template <
typename Iterator>
295 template<fl::size Offset, fl::size Count = dynamic_extent>
307 for (fl::size i = 0; i <
mSize; ++i) {
345 if (
mSize != other.mSize)
return false;
346 for (fl::size i = 0; i <
mSize; ++i) {
347 if (!(
mData[i] == other.mData[i]))
return false;
353 return !(*
this == other);
357 fl::size min_size =
mSize < other.mSize ?
mSize : other.mSize;
358 for (fl::size i = 0; i < min_size; ++i) {
359 if (
mData[i] < other.mData[i])
return true;
360 if (other.mData[i] <
mData[i])
return false;
362 return mSize < other.mSize;
366 return !(other < *
this);
370 return other < *
this;
374 return !(*
this < other);
385template <
typename T, fl::size Extent>
class span {
401 static constexpr fl::size
extent = Extent;
488 template<fl::size Offset, fl::size Count = dynamic_extent>
491 return span<T, Extent - Offset>(
mData + Offset, Extent - Offset);
514 for (fl::size i = 0; i < Extent; ++i) {
515 if (!(
mData[i] == other.mData[i]))
return false;
521 return !(*
this == other);
525 for (fl::size i = 0; i < Extent; ++i) {
526 if (
mData[i] < other.mData[i])
return true;
527 if (other.mData[i] <
mData[i])
return false;
533 return !(other < *
this);
537 return other < *
this;
541 return !(*
this < other);
551template<
typename T, fl::size Extent>
560 return span<const fl::u8, Extent * sizeof(T)>(
567template<
typename T, fl::size Extent>
576 return span<fl::u8, Extent * sizeof(T)>(
588 i32 bottomLeftX, i32 bottomLeftY, i32 topRightX,
T & operator()(i32 x, i32 y) FL_NOEXCEPT
MatrixSlice(const MatrixSlice &other) FL_NOEXCEPT=default
vec2< i32 > getLocalCoord(i32 x_world, i32 y_world) const FL_NOEXCEPT
const T & at(i32 x, i32 y) const FL_NOEXCEPT
vec2< i32 > getParentCoord(i32 x_local, i32 y_local) const FL_NOEXCEPT
MatrixSlice() FL_NOEXCEPT=default
MatrixSlice & operator=(const MatrixSlice &other) FL_NOEXCEPT=default
T * operator[](i32 row) FL_NOEXCEPT
T & at(i32 x, i32 y) FL_NOEXCEPT
A fixed-size array implementation similar to std::array.
static constexpr bool value
static yes test(decltype(&C::data)) FL_NOEXCEPT
static no test(...) FL_NOEXCEPT
static yes test(decltype(&C::size)) FL_NOEXCEPT
static constexpr bool value
static no test(...) FL_NOEXCEPT
typename fl::remove_cv< T >::type value_type
span(fl::initializer_list< value_type > init) FL_NOEXCEPT=delete
reverse_iterator rbegin() FL_NOEXCEPT
span< T, dynamic_extent > slice(fl::size start, fl::size end) const FL_NOEXCEPT
span(const VectorN< T, INLINED_SIZE > &vector) FL_NOEXCEPT
const T * const_reverse_iterator
const T * data() const FL_NOEXCEPT
bool operator<=(const span< T, dynamic_extent > &other) const FL_NOEXCEPT
const T & back() const FL_NOEXCEPT
bool operator<(const span< T, dynamic_extent > &other) const FL_NOEXCEPT
static constexpr fl::size extent
span(T(&array)[ARRAYSIZE]) FL_NOEXCEPT
fl::size length() const FL_NOEXCEPT
bool operator>=(const span< T, dynamic_extent > &other) const FL_NOEXCEPT
span(const FixedVector< T, INLINED_SIZE > &vector) FL_NOEXCEPT
bool empty() const FL_NOEXCEPT
const T & const_reference
span(const array< T, N > &arr) FL_NOEXCEPT
const T & front() const FL_NOEXCEPT
span< T, dynamic_extent > subspan(fl::size offset, fl::size count=dynamic_extent) const FL_NOEXCEPT
span(T *data, fl::size size) FL_NOEXCEPT
const T & operator[](fl::size index) const FL_NOEXCEPT
const_reverse_iterator rbegin() const FL_NOEXCEPT
span< T, Count > subspan() const FL_NOEXCEPT
span(const FixedVector< U, INLINED_SIZE > &vector) FL_NOEXCEPT
const_iterator begin() const FL_NOEXCEPT
span(const fl::vector< T > &vector) FL_NOEXCEPT
fl::size size_bytes() const FL_NOEXCEPT
span(const fl::vector< U > &vector) FL_NOEXCEPT
fl::size find(const T &value) const FL_NOEXCEPT
span(fl::vector< T > &vector) FL_NOEXCEPT
span(array< T, N > &arr) FL_NOEXCEPT
span(const array< U, N > &arr) FL_NOEXCEPT
const_iterator cbegin() const FL_NOEXCEPT
span< T, N > last() const FL_NOEXCEPT
span(U(&array)[ARRAYSIZE]) FL_NOEXCEPT
span< T, dynamic_extent > slice(fl::size start) const FL_NOEXCEPT
bool pop_front() FL_NOEXCEPT
bool operator==(const span< T, dynamic_extent > &other) const FL_NOEXCEPT
bool pop_back() FL_NOEXCEPT
span< T, dynamic_extent > last(fl::size count) const FL_NOEXCEPT
span< T, dynamic_extent > first(fl::size count) const FL_NOEXCEPT
iterator end() FL_NOEXCEPT
span(Container &c, typename fl::enable_if< has_data_and_size< Container >::value &&!fl::is_same< typename fl::decay< Container >::type, span< T, dynamic_extent > >::value &&!fl::is_base_of< span< T, dynamic_extent >, Container >::value >::type *=nullptr) FL_NOEXCEPT
const_reverse_iterator crbegin() const FL_NOEXCEPT
iterator begin() FL_NOEXCEPT
span(const span &other) FL_NOEXCEPT
span(array< U, N > &arr) FL_NOEXCEPT
span(const U(&array)[ARRAYSIZE]) FL_NOEXCEPT
span & operator=(const span &other) FL_NOEXCEPT
const_iterator cend() const FL_NOEXCEPT
span< T, N > first() const FL_NOEXCEPT
span(const Container &c, typename fl::enable_if< has_data_and_size< Container >::value &&!fl::is_same< typename fl::decay< Container >::type, span< T, dynamic_extent > >::value &&!fl::is_base_of< span< T, dynamic_extent >, Container >::value >::type *=nullptr) FL_NOEXCEPT
span(const VectorN< U, INLINED_SIZE > &vector) FL_NOEXCEPT
span(VectorN< T, INLINED_SIZE > &vector) FL_NOEXCEPT
const_reverse_iterator rend() const FL_NOEXCEPT
bool operator>(const span< T, dynamic_extent > &other) const FL_NOEXCEPT
const_reverse_iterator crend() const FL_NOEXCEPT
span(FixedVector< T, INLINED_SIZE > &vector) FL_NOEXCEPT
reverse_iterator rend() FL_NOEXCEPT
T & operator[](fl::size index) FL_NOEXCEPT
const_iterator end() const FL_NOEXCEPT
fl::size size() const FL_NOEXCEPT
span(Iterator begin, Iterator end) FL_NOEXCEPT
bool operator!=(const span< T, dynamic_extent > &other) const FL_NOEXCEPT
const_iterator end() const FL_NOEXCEPT
const_reverse_iterator rbegin() const FL_NOEXCEPT
bool operator==(const span< T, Extent > &other) const FL_NOEXCEPT
bool operator>=(const span< T, Extent > &other) const FL_NOEXCEPT
bool operator<=(const span< T, Extent > &other) const FL_NOEXCEPT
constexpr bool empty() const FL_NOEXCEPT
iterator begin() FL_NOEXCEPT
const_iterator cbegin() const FL_NOEXCEPT
const T * data() const FL_NOEXCEPT
const T & front() const FL_NOEXCEPT
const_reverse_iterator crbegin() const FL_NOEXCEPT
span & operator=(const span &other) FL_NOEXCEPT
span(const span &other) FL_NOEXCEPT
const T & const_reference
const T * const_reverse_iterator
reverse_iterator rend() FL_NOEXCEPT
const_reverse_iterator rend() const FL_NOEXCEPT
const_reverse_iterator crend() const FL_NOEXCEPT
span< T, dynamic_extent > subspan(fl::size offset, fl::size count=dynamic_extent) const FL_NOEXCEPT
span(T(&array)[Extent]) FL_NOEXCEPT
span< T, N > first() const FL_NOEXCEPT
constexpr fl::size length() const FL_NOEXCEPT
const T & back() const FL_NOEXCEPT
const_iterator cend() const FL_NOEXCEPT
bool operator<(const span< T, Extent > &other) const FL_NOEXCEPT
const T & operator[](fl::size index) const FL_NOEXCEPT
const_iterator begin() const FL_NOEXCEPT
constexpr fl::size size_bytes() const FL_NOEXCEPT
iterator end() FL_NOEXCEPT
span< T, dynamic_extent > first(fl::size count) const FL_NOEXCEPT
T & operator[](fl::size index) FL_NOEXCEPT
bool operator>(const span< T, Extent > &other) const FL_NOEXCEPT
span< T, dynamic_extent > last(fl::size count) const FL_NOEXCEPT
bool operator!=(const span< T, Extent > &other) const FL_NOEXCEPT
span< T, Count > subspan() const FL_NOEXCEPT
static constexpr fl::size extent
span(T *data, fl::size size) FL_NOEXCEPT
constexpr fl::size size() const FL_NOEXCEPT
span< T, N > last() const FL_NOEXCEPT
reverse_iterator rbegin() FL_NOEXCEPT
typename fl::remove_cv< T >::type value_type
fl::size size() const FL_NOEXCEPT
#define constexpr
Declares that it is possible to evaluate a value at compile time, introduced in C++11.
fl::UISlider offset("Offset", 0.0f, 0.0f, 1.0f, 0.01f)
span< const fl::u8,(Extent==dynamic_extent) ? dynamic_extent :(Extent *sizeof(T))> as_bytes(const span< T, Extent > &s) FL_NOEXCEPT
constexpr int type_rank< T >::value
VectorN< T, INLINED_SIZE > InlinedVector
void init(Context &ctx, int w, int h)
constexpr fl::size dynamic_extent
To bit_cast(const From &from) FL_NOEXCEPT
span< fl::u8,(Extent==dynamic_extent) ? dynamic_extent :(Extent *sizeof(T))> as_writable_bytes(span< T, Extent > &s) FL_NOEXCEPT
constexpr enable_if< is_fixed_point< T >::value, T >::type clamp(T x, T lo, T hi) FL_NOEXCEPT
Base definition for an LED controller.
typename conditional< is_array< U >::value, typename remove_extent< U >::type *, typename conditional< is_function< U >::value, typename add_pointer< U >::type, typename remove_cv< U >::type >::type >::type type
static constexpr bool value