77#include "CoreMinimal.h"
79#include "Containers/BasicArray.h"
80#include "Containers/Deque.h"
81#include "Containers/LruCache.h"
82#include "Containers/MRUArray.h"
83#include "Containers/PagedArray.h"
84#include "Containers/RingBuffer.h"
94template <
typename T,
typename A>
auto begin(TArray<T, A>& r) -> T* {
return r.GetData(); }
95template <
typename T,
typename A>
auto begin(TArray<T, A>
const& r) ->
const T* {
return r.GetData(); }
96template <
typename T,
typename A>
auto end (TArray<T, A>& r) -> T* {
return r.GetData() + r.Num(); }
97template <
typename T,
typename A>
auto end (TArray<T, A>
const& r) ->
const T* {
return r.GetData() + r.Num(); }
98template <
typename T,
typename A>
size_t size(TArray<T, A>
const& r) {
return static_cast<size_t>(r.Num()); }
101template <
typename T,
typename A>
auto begin(TArrayView<T, A>& r) -> T* {
return r.GetData(); }
102template <
typename T,
typename A>
auto begin(TArrayView<T, A>
const& r) ->
const T* {
return r.GetData(); }
103template <
typename T,
typename A>
auto end (TArrayView<T, A>& r) -> T* {
return r.GetData() + r.Num(); }
104template <
typename T,
typename A>
auto end (TArrayView<T, A>
const& r) ->
const T* {
return r.GetData() + r.Num(); }
105template <
typename T,
typename A>
size_t size(TArrayView<T, A>
const& r) {
return static_cast<size_t>(r.Num()); }
108template <
typename T, u
int32 N, u
int32 A>
auto begin(TStaticArray<T, N, A>& r) -> T* {
return r.GetData(); }
109template <
typename T, u
int32 N, u
int32 A>
auto begin(TStaticArray<T, N, A>
const& r) ->
const T* {
return r.GetData(); }
110template <
typename T, u
int32 N, u
int32 A>
auto end (TStaticArray<T, N, A>& r) -> T* {
return r.GetData() + r.Num(); }
111template <
typename T, u
int32 N, u
int32 A>
auto end (TStaticArray<T, N, A>
const& r) ->
const T* {
return r.GetData() + r.Num(); }
112template <
typename T, u
int32 N, u
int32 A>
size_t size(TStaticArray<T, N, A>
const& r) {
return static_cast<size_t>(r.Num()); }
122template <
typename T,
typename A>
size_t size(TIndirectArray<T, A>
const& r) {
return static_cast<size_t>(r.Num()); }
129template <
typename T,
typename K,
typename A>
size_t size(TSet<T, K, A>
const& r) {
return static_cast<size_t>(r.Num()); }
141 template <
typename K,
typename V,
typename A,
typename F>
142 static auto GetPairs(TMapBase<K, V, A, F>& map) -> TSet<TPair<K, V>, F, A>&
142 static auto GetPairs(TMapBase<K, V, A, F>& map) -> TSet<TPair<K, V>, F, A>& {
…}
147 template <
typename K,
typename V,
typename A,
typename F>
148 static auto GetPairs(TMapBase<K, V, A, F>
const& map) -> TSet<TPair<K, V>, F, A>
const&
148 static auto GetPairs(TMapBase<K, V, A, F>
const& map) -> TSet<TPair<K, V>, F, A>
const& {
…}
154using FMapPairsAccess = TMapBase<FMapPairsAccessTag, FMapPairsAccessTag, FMapPairsAccessTag, FMapPairsAccessTag>;
161template<
typename K,
typename V,
typename A,
typename F>
size_t size(TMap<K, V, A, F>
const& map) {
return static_cast<size_t>(map.Num()); }
167template<
typename K,
typename V,
typename A,
typename F>
size_t size(TMultiMap<K, V, A, F>
const& map) {
return static_cast<size_t>(map.Num()); }
170template <
typename CharType>
auto begin(TStringView<CharType>
const&
string) ->
const CharType* {
return string.GetData(); }
171template <
typename CharType>
auto end (TStringView<CharType>
const&
string) ->
const CharType* {
return string.GetData() +
string.Len(); }
172template <
typename CharType>
size_t size(TStringView<CharType>
const&
string) {
return static_cast<size_t>(
string.Len()); }
174FORCEINLINE
auto begin(FString&
string) ->
const TCHAR* {
return *string; }
175FORCEINLINE
auto begin(FString
const&
string) ->
const TCHAR* {
return *string; }
176FORCEINLINE
auto end (FString&
string) ->
const TCHAR* {
return *
string +
string.Len(); }
177FORCEINLINE
auto end (FString
const&
string) ->
const TCHAR* {
return *
string +
string.Len(); }
180FORCEINLINE
size_t size(FString
const&
string) {
return static_cast<size_t>(
string.Len()); }
183template <
typename T>
auto begin(TBasicArray<T>& r) -> T* {
return r.begin(); }
184template <
typename T>
auto begin(TBasicArray<T>
const& r) ->
const T* {
return r.begin(); }
185template <
typename T>
auto end (TBasicArray<T>& r) -> T* {
return r.end(); }
186template <
typename T>
auto end (TBasicArray<T>
const& r) ->
const T* {
return r.end(); }
187template <
typename T>
size_t size(TBasicArray<T>
const& r) {
return static_cast<size_t>(r.Num()); }
194template <
typename A>
size_t size(TBitArray<A>
const& r) {
return static_cast<size_t>(r.Num()); }
201template <
typename T, u
int32 C,
typename A>
size_t size(TChunkedArray<T, C, A>
const& r) {
return static_cast<size_t>(r.Num()); }
208template <
typename T,
typename A>
size_t size(TDeque<T, A>
const& r) {
return static_cast<size_t>(r.Num()); }
211template <
typename T, u
int32 A>
auto begin(TResourceArray<T, A>& r) -> T* {
return r.GetData(); }
212template <
typename T, u
int32 A>
auto begin(TResourceArray<T, A>
const& r) ->
const T* {
return r.GetData(); }
213template <
typename T, u
int32 A>
auto end (TResourceArray<T, A>& r) -> T* {
return r.GetData() + r.Num(); }
214template <
typename T, u
int32 A>
auto end (TResourceArray<T, A>
const& r) ->
const T* {
return r.GetData() + r.Num(); }
215template <
typename T, u
int32 A>
size_t size(TResourceArray<T, A>
const& r) {
return static_cast<size_t>(r.Num()); }
229template <
typename K,
typename V,
typename C>
size_t size(TLruCache<K, V, C>
const& r) {
return static_cast<size_t>(r.Num()); }
232template <
typename T,
typename A>
auto begin(TMRUArray<T, A>& r) -> T* {
return r.GetData(); }
233template <
typename T,
typename A>
auto begin(TMRUArray<T, A>
const& r) ->
const T* {
return r.GetData(); }
234template <
typename T,
typename A>
auto end (TMRUArray<T, A>& r) -> T* {
return r.GetData() + r.Num(); }
235template <
typename T,
typename A>
auto end (TMRUArray<T, A>
const& r) ->
const T* {
return r.GetData() + r.Num(); }
236template <
typename T,
typename A>
size_t size(TMRUArray<T, A>
const& r) {
return static_cast<size_t>(r.Num()); }
243template <
typename T,
int32 P,
typename A>
size_t size(TPagedArray<T, P, A>
const& r) {
return static_cast<size_t>(r.Num()); }
250template <
typename T,
typename A>
size_t size(TRingBuffer<T, A>
const& r) {
return static_cast<size_t>(r.Num()); }
257template <
typename K,
typename V,
typename A,
typename S>
size_t size(TSortedMap<K, V, A, S>
const& r) {
return static_cast<size_t>(r.Num()); }
264template <
typename T,
typename A>
size_t size(TSparseArray<T, A>
const& r) {
return static_cast<size_t>(r.Num()); }
auto end(TArray< T, A > &r) -> T *
size_t size(TArray< T, A > const &r)
auto begin(TArray< T, A > &r) -> T *
static auto GetPairs(TMapBase< K, V, A, F > const &map) -> TSet< TPair< K, V >, F, A > const &
static auto GetPairs(TMapBase< K, V, A, F > &map) -> TSet< TPair< K, V >, F, A > &
Extra settings for TExtendedIterator wrapper.
Allows range-v3 and std::ranges to iterate over temporary string objects and keep the string alive du...
Unreal's own iterators are not STL compliant (they are only compatible with range-for loops) so they ...