3#ifndef pRC_CORE_CONTAINER_DEQUE_H
4#define pRC_CORE_CONTAINER_DEQUE_H
13 template<
class T, Size N>
28 constexpr auto size()
const
55 return move(*
this)[mSize -
position - 1];
60 return move(*
this)[mSize -
position - 1];
65 return operator[](mSize -
position - 1);
70 return operator[](mSize -
position - 1);
80 template<
class R, If<IsConvertible<R, T>> = 0>
88 template<
class R, If<IsConvertible<R, T>> = 0>
132 template<
class R, If<IsConvertible<R, T>> = 0>
140 template<
class R, If<IsConvertible<R, T>> = 0>
187 return move(mData)[getIndex(
position)];
190 constexpr decltype(
auto)
operator[](
Index const position)
const &&
192 return move(mData)[getIndex(
position)];
200 constexpr decltype(
auto)
operator[](
Index const position)
const &
217 return (mNext + N - 1 -
position) % N;
225 constexpr auto updatePushFront()
229 mSize =
min(mSize + 1, N);
230 mNext = (mNext + 1) % N;
234 constexpr auto updatePopFront()
247 mNext = (mNext - 1) % N;
251 constexpr auto updatePushBack()
257 mNext = (mNext - 1) % N;
259 mSize =
min(mSize + 1, N);
263 constexpr auto updatePopBack()
constexpr auto pushBack(T &&element) &&
Definition deque.hpp:148
constexpr auto & emplaceBack(Args &&...args) &
Definition deque.hpp:171
constexpr auto & pushFront(T &&element) &
Definition deque.hpp:103
constexpr auto pushFront(R const &element) &&
Definition deque.hpp:81
constexpr auto size() const
Definition deque.hpp:28
constexpr auto & pushBack(R const &element) &
Definition deque.hpp:141
constexpr Deque & operator=(Deque const &) &=default
constexpr decltype(auto) front(Index const position=0) const &
Definition deque.hpp:48
constexpr Deque(Deque &&)=default
constexpr Deque()=default
constexpr auto & emplaceFront(Args &&...args) &
Definition deque.hpp:119
Constant< Size, N > Space
Definition deque.hpp:18
constexpr auto & pushBack(T &&element) &
Definition deque.hpp:155
constexpr decltype(auto) front(Index const position=0) &&
Definition deque.hpp:33
constexpr auto pushBack(R const &element) &&
Definition deque.hpp:133
constexpr decltype(auto) front(Index const position=0) &
Definition deque.hpp:43
constexpr auto emplaceBack(Args &&...args) &&
Definition deque.hpp:163
T Type
Definition deque.hpp:17
constexpr Deque(Deque const &)=default
constexpr decltype(auto) back(Index const position=0) const &&
Definition deque.hpp:58
constexpr auto & clear() &
Definition deque.hpp:73
constexpr auto emplaceFront(Args &&...args) &&
Definition deque.hpp:111
constexpr decltype(auto) back(Index const position=0) &
Definition deque.hpp:63
constexpr auto & popFront() &
Definition deque.hpp:126
constexpr auto pushFront(T &&element) &&
Definition deque.hpp:96
constexpr Deque & operator=(Deque &&) &=default
constexpr decltype(auto) back(Index const position=0) const &
Definition deque.hpp:68
constexpr auto & popBack() &
Definition deque.hpp:178
constexpr auto & pushFront(R const &element) &
Definition deque.hpp:89
constexpr decltype(auto) back(Index const position=0) &&
Definition deque.hpp:53
constexpr decltype(auto) front(Index const position=0) const &&
Definition deque.hpp:38
static void error(Xs &&...args)
Definition log.hpp:14
Definition cholesky.hpp:18
CommonArray< Allocation::Stack, T, Ns... > StackArray
Definition type_traits.hpp:52
static constexpr X min(X &&a)
Definition min.hpp:13
std::is_constructible< T, Args... > IsConstructible
Definition type_traits.hpp:143
std::enable_if_t< B{}, int > If
Definition type_traits.hpp:68
std::size_t Size
Definition type_traits.hpp:20
std::integral_constant< T, V > Constant
Definition type_traits.hpp:34
static constexpr Conditional< IsSatisfied< C >, RemoveConstReference< X >, X > copy(X &&a)
Definition copy.hpp:13
constexpr auto cDebugLevel
Definition config.hpp:46
Size Index
Definition type_traits.hpp:21
#define BEGIN_IGNORE_DIAGNOSTIC_GCC(warning)
Definition pragma.hpp:42
#define END_IGNORE_DIAGNOSTIC_GCC
Definition pragma.hpp:43