UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FilteredDefinitionRange.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2// uLang Compiler Public API
3
4#pragma once
5
8
9namespace uLang
10{
11class CDefinition;
12
14template<typename FilterClass>
16{
17public:
18
21 {
22 public:
24 : _Current(Current)
25 , _End(End)
26 {
27 FindNext();
28 }
29
30 friend bool operator==(const Iterator& Lhs, const Iterator& Rhs)
31 {
32 return Lhs._Current == Rhs._Current
33 && Lhs._End == Rhs._End;
34 }
35
36 friend bool operator!=(const Iterator& Lhs, const Iterator& Rhs)
37 {
38 return Lhs._Current != Rhs._Current
39 || Lhs._End != Rhs._End;
40 }
41
43 {
44 if (_Current != _End)
45 {
46 ++_Current;
47 FindNext();
48 }
49 return *this;
50 }
51
53 {
54 ULANG_ASSERTF(_Current != _End && (*_Current)->IsA<FilterClass>(), "Invalid iterator state");
55 return _Current->As<FilterClass>();
56 }
57
58 ULANG_FORCEINLINE const FilterClass* operator->() const
59 {
60 ULANG_ASSERTF(_Current != _End && (*_Current)->IsA<FilterClass>(), "Invalid iterator state");
61 return _Current->As<FilterClass>().Get();
62 }
63
64 private:
65 const TSRef<CDefinition>* _Current;
66 const TSRef<CDefinition>* _End;
67
68 void FindNext()
69 {
70 while (_Current != _End && !(*_Current)->IsA<FilterClass>())
71 {
72 ++_Current;
73 }
74 }
75 };
76
79
80 Iterator begin() const { return Iterator(_Begin, _End); }
81 Iterator end() const { return Iterator(_End, _End); }
82
83private:
84 const TSRef<CDefinition>* _Begin;
85 const TSRef<CDefinition>* _End;
86};
87
88}
#define ULANG_FORCEINLINE
Definition Common.h:188
#define ULANG_ASSERTF(expr, format,...)
Definition Common.h:290
An iterator in a filtered definition range.
Definition FilteredDefinitionRange.h:21
Iterator(const TSRef< CDefinition > *Current, const TSRef< CDefinition > *End)
Definition FilteredDefinitionRange.h:23
friend bool operator!=(const Iterator &Lhs, const Iterator &Rhs)
Definition FilteredDefinitionRange.h:36
Iterator & operator++()
Definition FilteredDefinitionRange.h:42
ULANG_FORCEINLINE const FilterClass * operator->() const
Definition FilteredDefinitionRange.h:58
ULANG_FORCEINLINE const TSRef< FilterClass > & operator*() const
Definition FilteredDefinitionRange.h:52
friend bool operator==(const Iterator &Lhs, const Iterator &Rhs)
Definition FilteredDefinitionRange.h:30
Filters a range of definitions to only include definitions of the kind corresponding to FilterClass.
Definition FilteredDefinitionRange.h:16
Iterator end() const
Definition FilteredDefinitionRange.h:81
Iterator begin() const
Definition FilteredDefinitionRange.h:80
TFilteredDefinitionRange(const TSRef< CDefinition > *Begin, const TSRef< CDefinition > *End)
Definition FilteredDefinitionRange.h:77
Definition SharedPointer.h:77
Definition VVMEngineEnvironment.h:23