4#include "Containers/Array.h"
5#include "Containers/Map.h"
6#include "Containers/UnrealString.h"
8#include "Delegates/Delegate.h"
9#include "Internationalization/Text.h"
10#include "Misc/ExpressionParser.h"
11#include "Misc/ExpressionParserTypes.h"
12#include "Misc/Optional.h"
13#include "Misc/TextFilterUtils.h"
14#include "Templates/UnrealTemplate.h"
15#include "UObject/NameTypes.h"
64 return TextFilterUtils::TestBasicStringExpression(TestString, InValue, InTextComparisonMode);
110 String = Other.String;
118 String = MoveTemp(Other.String);
131 if (String.IsEmpty())
137 const bool bMatched = InContext->TestBasicStringExpression(String, TextComparisonMode);
143 const bool bMatched = InContext->TestComplexExpression(InKey.AsName(), String, InComparisonOperation, TextComparisonMode);
164#define DEFINE_TEXT_EXPRESSION_OPERATOR_NODE(TYPE, MONIKER_COUNT, ...)
165 namespace TextFilterExpressionParser
169 static constexpr int32 MonikerCount = MONIKER_COUNT;
170 static const TCHAR* Monikers[MonikerCount];
172 } DEFINE_EXPRESSION_NODE_TYPE
173 (TextFilterExpressionParser::TYPE, __VA_ARGS__)
192#undef DEFINE_TEXT_EXPRESSION_OPERATOR_NODE
#define DECLARE_DELEGATE_RetVal_OneParam(ReturnValueType, DelegateName, Param1Type)
ETextFilterExpressionEvaluatorMode
ETextFilterExpressionType
#define DEFINE_EXPRESSION_NODE_TYPE(TYPE,...)
#define DEFINE_TEXT_EXPRESSION_OPERATOR_NODE(TYPE, MONIKER_COUNT,...)
ETextFilterTextComparisonMode
ETextFilterComparisonOperation
FBasicStringFilterExpressionContext(const FString &InTestString)
FBasicStringFilterExpressionContext(FString &&InTestString)
virtual bool TestComplexExpression(const FName &InKey, const FTextFilterString &InValue, const ETextFilterComparisonOperation InComparisonOperation, const ETextFilterTextComparisonMode InTextComparisonMode) const override
virtual bool TestBasicStringExpression(const FTextFilterString &InValue, const ETextFilterTextComparisonMode InTextComparisonMode) const override
TArray< FExpressionToken > ExpressionTokens
FTextFilterExpressionEvaluator(const ETextFilterExpressionEvaluatorMode InMode)
FText GetFilterErrorText() const
FTextFilterExpressionEvaluator & operator=(const FTextFilterExpressionEvaluator &Other)
const TArray< FExpressionToken > & GetFilterExpressionTokens() const
virtual bool EvaluateCompiledExpression(const ExpressionParser::CompileResultType &InCompiledResult, const ITextFilterExpressionContext &InContext, FText *OutErrorText) const
virtual ~FTextFilterExpressionEvaluator()
bool SetFilterText(const FText &InFilterText)
FExpressionGrammar Grammar
TMap< FString, FTokenFunctionHandler > TokenFunctionHandlers
FText GetFilterText() const
ETextFilterExpressionEvaluatorMode ExpressionEvaluatorMode
TOptional< ExpressionParser::CompileResultType > CompiledFilter
virtual void ConstructExpressionParser()
ETextFilterExpressionType GetFilterType() const
ETextFilterExpressionType FilterType
TOptional< TextFilterExpressionParser::FTextToken > CompiledFilterSingleBasicStringTextToken
TOperatorJumpTable< ITextFilterExpressionContext > JumpTable
void AddFunctionTokenCallback(FString InFunctionName, FTokenFunctionHandler InCallback)
FTokenDefinitions TokenDefinitions
bool TestTextFilter(const ITextFilterExpressionContext &InContext) const
FTextFilterExpressionEvaluator(const FTextFilterExpressionEvaluator &Other)
virtual bool TestBasicStringExpression(const FTextFilterString &InValue, const ETextFilterTextComparisonMode InTextComparisonMode) const =0
virtual ~ITextFilterExpressionContext()
virtual bool TestComplexExpression(const FName &InKey, const FTextFilterString &InValue, const ETextFilterComparisonOperation InComparisonOperation, const ETextFilterTextComparisonMode InTextComparisonMode) const =0
bool EvaluateAsComplexExpression(const ITextFilterExpressionContext *InContext, const FTextFilterString &InKey, const ETextFilterComparisonOperation InComparisonOperation) const
ETextFilterTextComparisonMode GetTextComparisonMode() const
EInvertResult InvertResult
bool EvaluateAsBasicStringExpression(const ITextFilterExpressionContext *InContext) const
FTextToken(FTextToken &&Other)
FTextToken & operator=(FTextToken &&Other)
ETextFilterTextComparisonMode TextComparisonMode
FTextToken(FTextFilterString InString, ETextFilterTextComparisonMode InTextComparisonMode, const EInvertResult InInvertResult)
const FTextFilterString & GetString() const
FTextToken & operator=(const FTextToken &Other)
FTextToken(const FTextToken &Other)
TValueOrError< TArray< FCompiledToken >, FExpressionError > CompileResultType
FGuid(uint32 InA, uint32 InB, uint32 InC, uint32 InD)