31 #ifndef ETL_MEMORY_INCLUDED
32 #define ETL_MEMORY_INCLUDED
63 #if ETL_CPP11_SUPPORTED && ETL_USING_STL
66 return reinterpret_cast<T*
>(&
const_cast<char&
>(
reinterpret_cast<const volatile char&
>(t)));
76 template <
typename TOutputIterator,
typename T>
80 etl::fill(o_begin, o_end, value);
90 template <
typename TOutputIterator,
typename T>
94 typedef typename etl::iterator_traits<TOutputIterator>::value_type value_type;
96 while (o_begin != o_end)
98 ::new (
static_cast<void*
>(
etl::addressof(*o_begin))) value_type(value);
111 template <
typename TOutputIterator,
typename T,
typename TCounter>
113 uninitialized_fill(TOutputIterator o_begin, TOutputIterator o_end,
const T& value, TCounter& count)
115 count += int32_t(etl::distance(o_begin, o_end));
117 etl::fill(o_begin, o_end, value);
128 template <
typename TOutputIterator,
typename T,
typename TCounter>
130 uninitialized_fill(TOutputIterator o_begin, TOutputIterator o_end,
const T& value, TCounter& count)
132 count += int32_t(etl::distance(o_begin, o_end));
145 template <
typename TOutputIterator,
typename T>
159 template <
typename TOutputIterator,
typename T,
typename TCounter>
160 TOutputIterator
uninitialized_fill(TOutputIterator o_begin, TOutputIterator o_end,
const T& value, TCounter& count)
162 count += int32_t(etl::distance(o_begin, o_end));
170 #if ETL_NOT_USING_STL || ETL_CPP11_NOT_SUPPORTED
176 template <
typename TOutputIterator,
typename TSize,
typename T>
188 template <
typename TOutputIterator,
typename TSize,
typename T,
typename TCounter>
201 template <
typename TOutputIterator,
typename TSize,
typename T>
213 template <
typename TOutputIterator,
typename TSize,
typename T,
typename TCounter>
214 TOutputIterator
uninitialized_fill_n(TOutputIterator o_begin, TSize n,
const T& value, TCounter& count)
222 #if ETL_NOT_USING_STL
228 template <
typename TInputIterator,
typename TOutputIterator>
230 uninitialized_copy(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin)
232 return etl::copy(i_begin, i_end, o_begin);
240 template <
typename TInputIterator,
typename TOutputIterator>
242 uninitialized_copy(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin)
244 typedef typename etl::iterator_traits<TOutputIterator>::value_type value_type;
246 TOutputIterator o_end = o_begin;
248 while (i_begin != i_end)
250 ::new (
static_cast<void*
>(
etl::addressof(*o_end))) value_type(*i_begin);
264 template <
typename TInputIterator,
typename TOutputIterator,
typename TCounter>
266 uninitialized_copy(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin, TCounter& count)
268 TOutputIterator o_end = etl::copy(i_begin, i_end, o_begin);
269 count += int32_t(etl::distance(i_begin, i_end));
280 template <
typename TInputIterator,
typename TOutputIterator,
typename TCounter>
282 uninitialized_copy(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin, TCounter& count)
286 count += int32_t(etl::distance(i_begin, i_end));
296 template <
typename TInputIterator,
typename TOutputIterator>
297 TOutputIterator
uninitialized_copy(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin)
308 template <
typename TInputIterator,
typename TOutputIterator,
typename TCounter>
309 TOutputIterator
uninitialized_copy(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin, TCounter& count)
311 count += int32_t(etl::distance(i_begin, i_end));
317 #if ETL_NOT_USING_STL || ETL_CPP11_NOT_SUPPORTED
323 template <
typename TInputIterator,
typename TSize,
typename TOutputIterator>
335 template <
typename TInputIterator,
typename TSize,
typename TOutputIterator,
typename TCounter>
336 TOutputIterator
uninitialized_copy_n(TInputIterator i_begin, TSize n, TOutputIterator o_begin, TCounter& count)
348 template <
typename TInputIterator,
typename TSize,
typename TOutputIterator>
360 template <
typename TInputIterator,
typename TSize,
typename TOutputIterator,
typename TCounter>
361 TOutputIterator
uninitialized_copy_n(TInputIterator i_begin, TSize n, TOutputIterator o_begin, TCounter& count)
369 #if ETL_CPP11_SUPPORTED
370 #if ETL_NOT_USING_STL || ETL_CPP17_NOT_SUPPORTED
376 template <
typename TInputIterator,
typename TOutputIterator>
378 uninitialized_move(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin)
380 return etl::move(i_begin, i_end, o_begin);
388 template <
typename TInputIterator,
typename TOutputIterator>
390 uninitialized_move(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin)
392 typedef typename etl::iterator_traits<TOutputIterator>::value_type value_type;
394 TOutputIterator o_end = o_begin;
396 while (i_begin != i_end)
398 ::new (
static_cast<void*
>(
etl::addressof(*o_end))) value_type(etl::move(*i_begin));
412 template <
typename TInputIterator,
typename TOutputIterator,
typename TCounter>
414 uninitialized_move(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin, TCounter& count)
416 TOutputIterator o_end = etl::move(i_begin, i_end, o_begin);
417 count += int32_t(etl::distance(i_begin, i_end));
428 template <
typename TInputIterator,
typename TOutputIterator,
typename TCounter>
430 uninitialized_move(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin, TCounter& count)
434 count += int32_t(etl::distance(i_begin, i_end));
444 template <
typename TInputIterator,
typename TOutputIterator>
445 TOutputIterator
uninitialized_move(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin)
456 template <
typename TInputIterator,
typename TOutputIterator,
typename TCounter>
457 TOutputIterator
uninitialized_move(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin, TCounter& count)
459 count += int32_t(etl::distance(i_begin, i_end));
471 template <
typename TInputIterator,
typename TOutputIterator>
472 TOutputIterator
uninitialized_move(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin)
484 template <
typename TInputIterator,
typename TOutputIterator,
typename TCounter>
485 TOutputIterator
uninitialized_move(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin, TCounter& count)
487 count += int32_t(etl::distance(i_begin, i_end));
494 #if ETL_CPP11_SUPPORTED
495 #if ETL_NOT_USING_STL || ETL_CPP17_NOT_SUPPORTED
501 template <
typename TInputIterator,
typename TSize,
typename TOutputIterator>
505 return etl::move(i_begin, i_begin + n, o_begin);
513 template <
typename TInputIterator,
typename TSize,
typename TOutputIterator>
517 typedef typename etl::iterator_traits<TOutputIterator>::value_type value_type;
519 TOutputIterator o_end = o_begin;
523 ::new (
static_cast<void*
>(
etl::addressof(*o_end))) value_type(etl::move(*i_begin));
537 template <
typename TInputIterator,
typename TSize,
typename TOutputIterator,
typename TCounter>
541 TOutputIterator o_end = etl::move(i_begin, i_begin + n, o_begin);
542 count += TCounter(n);
553 template <
typename TInputIterator,
typename TSize,
typename TOutputIterator,
typename TCounter>
559 count += TCounter(n);
569 template <
typename TInputIterator,
typename TSize,
typename TOutputIterator>
581 template <
typename TInputIterator,
typename TSize,
typename TOutputIterator,
typename TCounter>
582 TOutputIterator
uninitialized_move_n(TInputIterator i_begin, TSize n, TOutputIterator o_begin, TCounter& count)
584 count += TCounter(n);
596 template <
typename TInputIterator,
typename TSize,
typename TOutputIterator>
600 #if ETL_CPP11_SUPPORTED
613 template <
typename TInputIterator,
typename TSize,
typename TOutputIterator,
typename TCounter>
614 TOutputIterator
uninitialized_move_n(TInputIterator i_begin, TSize n, TOutputIterator o_begin, TCounter& count)
616 count += TCounter(n);
619 #if ETL_CPP11_SUPPORTED
627 #if ETL_NOT_USING_STL || ETL_CPP17_NOT_SUPPORTED
633 template <
typename TOutputIterator>
645 template <
typename TOutputIterator>
650 typedef typename etl::iterator_traits<TOutputIterator>::value_type value_type;
652 while (o_begin != o_end)
665 template <
typename TOutputIterator,
typename TCounter>
669 count = int32_t(etl::distance(o_begin, o_end));
678 template <
typename TOutputIterator,
typename TCounter>
682 count += int32_t(etl::distance(o_begin, o_end));
692 template <
typename TOutputIterator>
705 template <
typename TOutputIterator,
typename TCounter>
709 count = int32_t(etl::distance(o_begin, o_end));
715 #if ETL_NOT_USING_STL || ETL_CPP17_NOT_SUPPORTED
721 template <
typename TOutputIterator,
typename TSize>
725 TOutputIterator o_end = o_begin + n;
734 template <
typename TOutputIterator,
typename TSize>
738 TOutputIterator o_end = o_begin + n;
751 template <
typename TOutputIterator,
typename TSize,
typename TCounter>
755 TOutputIterator o_end = o_begin + n;
768 template <
typename TOutputIterator,
typename TSize,
typename TCounter>
772 TOutputIterator o_end = o_begin + n;
786 template <
typename TOutputIterator,
typename TSize>
798 template <
typename TOutputIterator,
typename TSize,
typename TCounter>
807 #if ETL_NOT_USING_STL || ETL_CPP17_NOT_SUPPORTED
813 template <
typename TOutputIterator>
817 typedef typename etl::iterator_traits<TOutputIterator>::value_type value_type;
819 etl::fill(o_begin, o_end, value_type());
827 template <
typename TOutputIterator>
831 typedef typename etl::iterator_traits<TOutputIterator>::value_type value_type;
833 while (o_begin != o_end)
835 ::new (
static_cast<void*
>(
etl::addressof(*o_begin))) value_type();
846 template <
typename TOutputIterator,
typename TCounter>
849 count += int32_t(etl::distance(o_begin, o_end));
859 template <
typename TOutputIterator>
871 template <
typename TOutputIterator,
typename TCounter>
874 count += int32_t(etl::distance(o_begin, o_end));
881 #if ETL_NOT_USING_STL || ETL_CPP17_NOT_SUPPORTED
887 template <
typename TOutputIterator,
typename TSize>
890 TOutputIterator o_end = o_begin + n;
903 template <
typename TOutputIterator,
typename TSize,
typename TCounter>
906 TOutputIterator o_end = o_begin + n;
920 template <
typename TOutputIterator,
typename TSize>
932 template <
typename TOutputIterator,
typename TSize,
typename TCounter>
941 #if ETL_NOT_USING_STL || ETL_CPP17_NOT_SUPPORTED
947 template <
typename T>
958 template <
typename T>
971 template <
typename T,
typename TCounter>
984 template <
typename T,
typename TCounter>
997 template <
typename T>
1009 template <
typename T,
typename TCounter>
1017 #if ETL_NOT_USING_STL || ETL_CPP17_NOT_SUPPORTED
1023 template <
typename TIterator>
1034 template <
typename TIterator>
1038 while (i_begin != i_end)
1051 template <
typename TIterator,
typename TCounter>
1053 destroy(TIterator i_begin, TIterator i_end, TCounter& count)
1055 count -= int32_t(etl::distance(i_begin, i_end));
1064 template <
typename TIterator,
typename TCounter>
1066 destroy(TIterator i_begin, TIterator i_end, TCounter& count)
1068 count -= int32_t(etl::distance(i_begin, i_end));
1070 while (i_begin != i_end)
1082 template <
typename TIterator>
1083 void destroy(TIterator i_begin, TIterator i_end)
1094 template <
typename TIterator,
typename TCounter>
1095 void destroy(TIterator i_begin, TIterator i_end, TCounter& count)
1097 count -= int32_t(etl::distance(i_begin, i_end));
1103 #if ETL_NOT_USING_STL || ETL_CPP17_NOT_SUPPORTED
1109 template <
typename TIterator,
typename TSize>
1121 template <
typename TIterator,
typename TSize>
1141 template <
typename TIterator,
typename TSize,
typename TCounter>
1155 template <
typename TIterator,
typename TSize,
typename TCounter>
1176 template <
typename TIterator,
typename TSize>
1177 TIterator
destroy_n(TIterator i_begin, TSize n)
1188 template <
typename TIterator,
typename TSize,
typename TCounter>
1189 TIterator
destroy_n(TIterator i_begin, TSize n, TCounter& count)
1203 template <
typename T>
1206 void operator()(T* p)
const
1218 template <
typename T>
1222 void operator()(U* p)
const
1234 template <
typename T,
typename TDeleter = etl::default_delete<T> >
1239 typedef T element_type;
1241 typedef T& reference;
1250 ETL_CONSTEXPR
explicit unique_ptr(pointer p_) ETL_NOEXCEPT
1255 #if ETL_CPP11_SUPPORTED
1266 typename etl::add_lvalue_reference<const TDeleter>::type>::type deleter_) ETL_NOEXCEPT
1272 #if ETL_CPP11_SUPPORTED
1274 unique_ptr(pointer p_,
typename etl::remove_reference<TDeleter>::type&& deleter_) ETL_NOEXCEPT
1276 , deleter(etl::move(deleter_))
1288 ETL_CONSTEXPR pointer get()
const ETL_NOEXCEPT
1294 TDeleter& get_deleter() ETL_NOEXCEPT
1300 const TDeleter& get_deleter()
const ETL_NOEXCEPT
1306 pointer release() ETL_NOEXCEPT
1315 void reset(pointer p_ = pointer()) ETL_NOEXCEPT
1333 ETL_CONSTEXPR
operator bool()
const ETL_NOEXCEPT
1335 return (p != ETL_NULLPTR);
1338 #if ETL_CPP11_SUPPORTED && ETL_USING_STL
1340 unique_ptr& operator =(std::nullptr_t) ETL_NOEXCEPT
1356 #if ETL_CPP11_SUPPORTED
1360 reset(p_.release());
1367 ETL_CONSTEXPR reference operator *()
const
1373 ETL_CONSTEXPR pointer operator ->()
const ETL_NOEXCEPT
1379 ETL_CONSTEXPR reference operator [](
size_t i)
const
1401 template<
typename T,
typename TDeleter>
1406 typedef T element_type;
1408 typedef T& reference;
1417 ETL_CONSTEXPR
explicit unique_ptr(pointer p_) ETL_NOEXCEPT
1422 #if ETL_CPP11_SUPPORTED
1437 ETL_CONSTEXPR pointer get()
const ETL_NOEXCEPT
1443 TDeleter& get_deleter() ETL_NOEXCEPT
1449 const TDeleter& get_deleter()
const ETL_NOEXCEPT
1455 pointer release() ETL_NOEXCEPT
1463 void reset(pointer p_) ETL_NOEXCEPT
1481 ETL_CONSTEXPR
operator bool()
const ETL_NOEXCEPT
1483 return (p != ETL_NULLPTR);
1486 #if ETL_CPP11_SUPPORTED
1490 reset(p_.release());
1497 ETL_CONSTEXPR reference operator *()
const
1503 ETL_CONSTEXPR pointer operator ->()
const ETL_NOEXCEPT
1509 ETL_CONSTEXPR reference operator [](
size_t i)
const
1529 template<
typename T1,
typename D1,
typename T2,
typename D2>
1532 return lhs.get() == rhs.get();
1536 template<
typename T1,
typename D1,
typename T2,
typename D2>
1539 return reinterpret_cast<char*
>(lhs.get()) <
reinterpret_cast<char*
>(rhs.get());
1543 template<
typename T1,
typename D1,
typename T2,
typename D2>
1546 return !(rhs < lhs);
1550 template<
typename T1,
typename D1,
typename T2,
typename D2>
1557 template<
typename T1,
typename D1,
typename T2,
typename D2>
1560 return !(lhs < rhs);
1569 template <
typename T>
1579 template <
typename T,
typename TCounter>
1590 template <
typename T>
1601 template <
typename T,
typename TCounter>
1613 template <
typename T>
1623 template <
typename T,
typename TCounter>
1634 template <
typename T>
1640 #if ETL_CPP11_SUPPORTED
1645 template <
typename T>
1648 ::new (p) T(etl::move(value));
1656 template <
typename T,
typename TCounter>
1667 template <
typename T>
1671 return *
reinterpret_cast<T*
>(p);
1678 template <
typename T,
typename TCounter>
1683 return *
reinterpret_cast<T*
>(p);
1690 template <
typename T>
1694 return *
reinterpret_cast<T*
>(p);
1697 #if ETL_CPP11_SUPPORTED
1702 template <
typename T>
1705 ::new (p) T(etl::move(other));
1706 return *
reinterpret_cast<T*
>(p);
1714 template <
typename T,
typename TCounter>
1719 return *
reinterpret_cast<T*
>(p);
1726 template <
typename T,
typename TParameter>
1730 return *
reinterpret_cast<T*
>(p);
1733 #if ETL_CPP11_SUPPORTED
1738 template <
typename T,
typename TParameter>
1741 ::new (p) T(etl::move(value));
1742 return *
reinterpret_cast<T*
>(p);
1750 template <
typename T,
typename TParameter,
typename TCounter>
1755 return *
reinterpret_cast<T*
>(p);
1763 template <
typename T>
1766 void create_copy_at(
void* p)
1768 new (p) T(
static_cast<const T&
>(*
this));
1771 template <
typename TCounter>
1772 void create_copy_at(
void* p, TCounter& count)
1774 new (p) T(
static_cast<const T&
>(*
this));
1778 T& make_copy_at(
void* p)
1780 new (p) T(
static_cast<const T&
>(*
this));
1781 return *
reinterpret_cast<T*
>(p);
1784 template <
typename TCounter>
1785 T& make_copy_at(
void* p, TCounter& count)
1787 new (p) T(
static_cast<const T&
>(*
this));
1789 return *
reinterpret_cast<T*
>(p);
1813 template <
typename T>
1816 memory_clear(
reinterpret_cast<volatile char*
>(&
object),
sizeof(T));
1826 template <
typename T>
1839 template <
typename T>
1842 const size_t n =
static_cast<size_t>(etl::distance(
begin,
end));
1869 template <
typename T>
1872 memory_set(
reinterpret_cast<volatile char*
>(&
object),
sizeof(T), value);
1883 template <
typename T>
1886 memory_set(
reinterpret_cast<volatile char*
>(
begin), n *
sizeof(T), value);
1897 template <
typename T>
1900 const size_t n =
static_cast<size_t>(etl::distance(
begin,
end));
1912 template <
typename T>
1925 template <
size_t OBJECT_SIZE_,
size_t N_OBJECTS_,
size_t ALIGNMENT_>
1930 static ETL_CONSTANT
size_t OBJECT_SIZE = OBJECT_SIZE_;
1931 static ETL_CONSTANT
size_t N_OBJECTS = N_OBJECTS_;
1932 static ETL_CONSTANT
size_t ALIGNMENT = ALIGNMENT_;
1935 template <
typename T>
1939 return *
reinterpret_cast<T*
>(raw);
1943 template <
typename T>
1944 operator const T& ()
const
1947 return *
reinterpret_cast<const T*
>(raw);
1951 template <
typename T>
1955 return reinterpret_cast<T*
>(raw);
1959 template <
typename T>
1960 operator const T* ()
const
1963 return reinterpret_cast<const T*
>(raw);
1966 #if ETL_CPP11_SUPPORTED && !defined(ETL_COMPILER_ARM5) && !defined(ETL_UNINITIALIZED_BUFFER_FORCE_CPP03)
1967 alignas(ALIGNMENT)
char raw[OBJECT_SIZE * N_OBJECTS];
1971 char raw[OBJECT_SIZE * N_OBJECTS];
1972 typename etl::type_with_alignment<ALIGNMENT>::type etl_alignment_type;
1981 template <
typename T,
size_t N_OBJECTS_>
1986 typedef T value_type;
1987 typedef T& reference;
1988 typedef const T& const_reference;
1990 typedef const T* const_pointer;
1991 typedef T* iterator;
1992 typedef const T* const_iterator;
1994 static ETL_CONSTANT
size_t OBJECT_SIZE =
sizeof(T);
1995 static ETL_CONSTANT
size_t N_OBJECTS = N_OBJECTS_;
2001 return ((T*)this->raw)[i];
2007 return ((T*)this->raw)[i];
2013 return *
reinterpret_cast<T*
>(raw);
2017 operator const T& ()
const
2019 return *
reinterpret_cast<const T*
>(raw);
2026 return reinterpret_cast<T*
>(raw);
2030 operator const T* ()
const
2032 return reinterpret_cast<const T*
>(raw);
2037 return reinterpret_cast<const T*
>(raw);
2040 const T* begin()
const
2042 return reinterpret_cast<const T*
>(raw);
2047 return reinterpret_cast<const T*
>(raw + (
sizeof(T) * N_OBJECTS));
2050 const T* end()
const
2052 return reinterpret_cast<const T*
>(raw + (
sizeof(T) * N_OBJECTS));
2055 #if ETL_CPP11_SUPPORTED && !defined(ETL_COMPILER_ARM5) && !defined(ETL_UNINITIALIZED_BUFFER_FORCE_CPP03)
2056 alignas(ALIGNMENT)
char raw[
sizeof(T) * N_OBJECTS];
2060 char raw[
sizeof(T) * N_OBJECTS];
2061 typename etl::type_with_alignment<ALIGNMENT>::type etl_alignment_type;
2066 #if ETL_CPP14_SUPPORTED
2067 template <
typename T,
size_t N_OBJECTS>
2068 using uninitialized_buffer_of_v =
typename uninitialized_buffer_of<T, N_OBJECTS>::buffer;
T & operator[](int i)
Index operator.
Definition: memory.h:1999
Definition: memory.h:1927
Definition: memory.h:1983
ETL_CONSTEXPR TContainer::iterator begin(TContainer &container)
Definition: container.h:49
ETL_CONSTEXPR TContainer::iterator end(TContainer &container)
Definition: container.h:99
Definition: memory.h:1236
TOutputIterator uninitialized_value_construct_n(TOutputIterator o_begin, TSize n, TCounter &count)
Definition: memory.h:904
TOutputIterator uninitialized_fill(TOutputIterator o_begin, TOutputIterator o_end, const T &value)
Definition: memory.h:146
TOutputIterator uninitialized_fill(TOutputIterator o_begin, TOutputIterator o_end, const T &value, TCounter &count)
Definition: memory.h:160
etl::enable_if< etl::is_trivially_constructible< typename etl::iterator_traits< TOutputIterator >::value_type >::value, void >::type uninitialized_value_construct(TOutputIterator o_begin, TOutputIterator o_end)
Definition: memory.h:815
TOutputIterator uninitialized_fill_n(TOutputIterator o_begin, TSize n, const T &value, TCounter &count)
Definition: memory.h:189
void memory_set_range(volatile T *begin, size_t n, const char value)
Definition: memory.h:1884
TOutputIterator uninitialized_value_construct_n(TOutputIterator o_begin, TSize n)
Definition: memory.h:888
void create_copy_at(T *p, const T &value)
Definition: memory.h:1635
etl::enable_if< etl::is_trivially_destructible< T >::value, void >::type destroy_at(T *)
Definition: memory.h:949
etl::enable_if< etl::is_trivially_constructible< typename etl::iterator_traits< TOutputIterator >::value_type >::value, TOutputIterator >::type uninitialized_default_construct_n(TOutputIterator o_begin, TSize n)
Definition: memory.h:723
TOutputIterator uninitialized_copy(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin, TCounter &count)
Definition: memory.h:309
etl::enable_if< etl::is_trivially_destructible< typename etl::iterator_traits< TIterator >::value_type >::value, TIterator >::type destroy_n(TIterator i_begin, TSize n)
Definition: memory.h:1111
void create_value_at(T *p)
Definition: memory.h:1614
T & make_default_at(T *p)
Definition: memory.h:1668
void memory_clear_range(volatile T *begin, size_t n)
Definition: memory.h:1827
void memory_set(volatile char *p, size_t n, char value)
Definition: memory.h:1854
TOutputIterator uninitialized_move_n(TInputIterator i_begin, TSize n, TOutputIterator o_begin)
Definition: memory.h:597
TOutputIterator uninitialized_copy_n(TInputIterator i_begin, TSize n, TOutputIterator o_begin)
Definition: memory.h:324
etl::enable_if< etl::is_trivially_destructible< typename etl::iterator_traits< TIterator >::value_type >::value, void >::type destroy(TIterator, TIterator)
Definition: memory.h:1025
etl::enable_if< etl::is_trivially_constructible< T >::value, void >::type create_default_at(T *)
Definition: memory.h:1571
TOutputIterator uninitialized_move(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin)
Definition: memory.h:472
TOutputIterator uninitialized_move(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin, TCounter &count)
Definition: memory.h:485
etl::enable_if< etl::is_trivially_constructible< typename etl::iterator_traits< TOutputIterator >::value_type >::value, void >::type uninitialized_default_construct(TOutputIterator, TOutputIterator)
Definition: memory.h:635
T & make_value_at(T *p, const TParameter &value)
Definition: memory.h:1727
void memory_clear(volatile char *p, size_t n)
Definition: memory.h:1799
TOutputIterator uninitialized_copy(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin)
Definition: memory.h:297
T & make_copy_at(T *p, const T &other)
Definition: memory.h:1691
TOutputIterator uninitialized_fill_n(TOutputIterator o_begin, TSize n, const T &value)
Definition: memory.h:177
void uninitialized_value_construct(TOutputIterator o_begin, TOutputIterator o_end, TCounter &count)
Definition: memory.h:847
T * addressof(T &t)
Definition: memory.h:61
TOutputIterator uninitialized_copy_n(TInputIterator i_begin, TSize n, TOutputIterator o_begin, TCounter &count)
Definition: memory.h:336
Definition: memory.h:1765
Definition: memory.h:1205
Definition: memory.h:1914
add_rvalue_reference
Definition: type_traits_generator.h:1348
conditional
Definition: type_traits_generator.h:1202
enable_if
Definition: type_traits_generator.h:1228
is_reference
Definition: type_traits_generator.h:1051
is_same
Definition: type_traits_generator.h:981
Definition: absolute.h:37
void swap(etl::array< T, SIZE > &lhs, etl::array< T, SIZE > &rhs)
Template deduction guides.
Definition: array.h:570
etl::enable_if<!etl::is_trivially_constructible< typename etl::iterator_traits< TOutputIterator >::value_type >::value, TOutputIterator >::type uninitialized_default_construct_n(TOutputIterator o_begin, TSize n, TCounter &count)
Definition: memory.h:770
etl::enable_if<!etl::is_trivially_constructible< typename etl::iterator_traits< TOutputIterator >::value_type >::value, void >::type uninitialized_default_construct(TOutputIterator o_begin, TOutputIterator o_end, TCounter &count)
Definition: memory.h:680
etl::enable_if<!etl::is_trivially_destructible< typename etl::iterator_traits< TIterator >::value_type >::value, void >::type destroy(TIterator i_begin, TIterator i_end, TCounter &count)
Definition: memory.h:1066
etl::enable_if<!etl::is_trivially_destructible< typename etl::iterator_traits< TIterator >::value_type >::value, TIterator >::type destroy_n(TIterator i_begin, TSize n, TCounter &count)
Definition: memory.h:1157
etl::enable_if<!etl::is_trivially_destructible< T >::value, void >::type destroy_at(T *p, TCounter &count)
Definition: memory.h:986