Files
UnrealEngineUWP/Engine/Source/Runtime/FieldNotification/Public/FieldNotificationVariant.h
fredrik lindh d58ad605bd Add support for allowing targets to opt into using the engine metadata API even in runtime by defining WITH_METADATA in a project target file.
#rb Devin.Doucette, Markus.Breyer, Steve.Robb
#tests Tested with and without WITH_METADATA in client/editor, for both uncooked and cooked.
[RN] Add support for allowing targets to opt into using the engine metadata API even in runtime by defining WITH_METADATA in a project target file.
[FYI] michal.staniszewski, Bartlomiej.Miszkurka

[CL 34704464 by fredrik lindh in ue5-main branch]
2024-06-27 07:18:36 -04:00

71 lines
1.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "UObject/Class.h"
#include "UObject/Field.h"
#include "UObject/UnrealType.h"
namespace UE::FieldNotification
{
struct FFieldVariant : private ::FFieldVariant
{
public:
FFieldVariant() = default;
explicit FFieldVariant(const FProperty* InProperty)
: ::FFieldVariant(InProperty)
{
}
explicit FFieldVariant(const UFunction* InFunction)
: ::FFieldVariant(InFunction)
{
}
public:
using ::FFieldVariant::IsValid;
using ::FFieldVariant::GetOwnerClass;
using ::FFieldVariant::GetFName;
using ::FFieldVariant::operator bool;
using ::FFieldVariant::operator ==;
using ::FFieldVariant::operator !=;
#if WITH_METADATA
using ::FFieldVariant::HasMetaData;
#endif // WITH_METADATA
inline bool IsProperty() const
{
return IsValid() && !IsUObject();
}
inline bool IsFunction() const
{
return IsValid() && IsUObject();
}
inline FProperty* GetProperty()
{
return IsProperty() ? static_cast<FProperty*>(ToFieldUnsafe()) : nullptr;
}
inline const FProperty* GetProperty() const
{
return IsProperty() ? static_cast<const FProperty*>(ToFieldUnsafe()) : nullptr;
}
inline UFunction* GetFunction()
{
return IsFunction() ? static_cast<UFunction*>(ToUObjectUnsafe()) : nullptr;
}
inline const UFunction* GetFunction() const
{
return IsFunction() ? static_cast<const UFunction*>(ToUObjectUnsafe()) : nullptr;
}
};
} //namespace