UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
WebJSFunction.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
6#include "Containers/Map.h"
8#include "CoreMinimal.h"
9#include "HAL/Platform.h"
11#include "Misc/Guid.h"
12#include "Templates/EnableIf.h"
13#include "Templates/IsPointer.h"
15#include "UObject/Class.h"
16#include "UObject/NameTypes.h"
18
19#include "WebJSFunction.generated.h"
20
21class FWebJSScripting;
22class UObject;
23class UStruct;
24
26{
27
29 {
30 virtual ~IStructWrapper() {};
31 virtual UStruct* GetTypeInfo() = 0;
32 virtual const void* GetData() = 0;
33 virtual IStructWrapper* Clone() = 0;
34 };
35
36 template <typename T> struct FStructWrapper
37 : public IStructWrapper
38 {
44 {}
45 virtual UStruct* GetTypeInfo() override
46 {
47 return T::StaticStruct();
48 }
49 virtual const void* GetData() override
50 {
51 return &StructValue;
52 }
53 virtual IStructWrapper* Clone() override
54 {
56 }
57 };
58
71 FWebJSParam(const FString& Value) : Tag(PTYPE_STRING), StringValue(new FString(Value)) {}
72 FWebJSParam(const FText& Value) : Tag(PTYPE_STRING), StringValue(new FString(Value.ToString())) {}
73 FWebJSParam(const FName& Value) : Tag(PTYPE_STRING), StringValue(new FString(Value.ToString())) {}
76 template <typename T> FWebJSParam(const T& Value,
77 typename TEnableIf<!TIsPointer<T>::Value, UStruct>::Type* InTypeInfo=T::StaticStruct())
80 {}
81 template <typename T> FWebJSParam(const TArray<T>& Value)
83 {
85 ArrayValue->Reserve(Value.Num());
86 for(T Item : Value)
87 {
89 }
90 }
91 template <typename T> FWebJSParam(const TMap<FString, T>& Value)
92 : Tag(PTYPE_MAP)
93 {
95 MapValue->Reserve(Value.Num());
96 for(const auto& Pair : Value)
97 {
98 MapValue->Add(Pair.Key, FWebJSParam(Pair.Value));
99 }
100 }
101 template <typename K, typename T> FWebJSParam(const TMap<K, T>& Value)
102 : Tag(PTYPE_MAP)
103 {
105 MapValue->Reserve(Value.Num());
106 for(const auto& Pair : Value)
107 {
108 MapValue->Add(Pair.Key.ToString(), FWebJSParam(Pair.Value));
109 }
110 }
114
116 union
117 {
122 const FString* StringValue;
126 };
127
128};
129
130class FWebJSScripting;
131
133USTRUCT()
135{
139
140 bool IsValid() const
141 {
142 return ScriptingPtr.IsValid();
143 }
144
145
146protected:
151
152 WEBBROWSER_API void Invoke(int32 ArgCount, FWebJSParam Arguments[], bool bIsError = false) const;
153
154private:
155
156 TWeakPtr<FWebJSScripting> ScriptingPtr;
157 FGuid CallbackId;
158};
159
160
166USTRUCT()
169{
171
175
179
180 template<typename ...ArgTypes> void operator()(ArgTypes... Args) const
181 {
182 FWebJSParam ArgArray[sizeof...(Args)] = {FWebJSParam(Args)...};
183 Invoke(sizeof...(Args), ArgArray);
184 }
185};
186
196USTRUCT()
199{
201
205
209
214 void Success() const
215 {
216 Invoke(0, nullptr, false);
217 }
218
223 template<typename T>
224 void Success(T Arg) const
225 {
226 FWebJSParam ArgArray[1] = {FWebJSParam(Arg)};
227 Invoke(1, ArgArray, false);
228 }
229
234 template<typename T>
235 void Failure(T Arg) const
236 {
237 FWebJSParam ArgArray[1] = {FWebJSParam(Arg)};
238 Invoke(1, ArgArray, true);
239 }
240
241
242};
FPlatformTypes::int16 int16
A 16-bit signed integer.
Definition Platform.h:1123
FPlatformTypes::int8 int8
An 8-bit signed integer.
Definition Platform.h:1121
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
AUTORTFM_INFER UE_FORCEINLINE_HINT constexpr auto Invoke(FuncType &&Func, ArgTypes &&... Args) -> decltype(((FuncType &&) Func)((ArgTypes &&) Args...))
Definition Invoke.h:44
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition NameTypes.h:617
Definition Text.h:385
Definition WebJSScripting.h:17
Definition Array.h:670
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
Definition EnableIf.h:20
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition SharedPointer.h:1295
Definition Object.h:95
Definition Class.h:480
Definition Guid.h:109
Definition WebJSFunction.h:135
bool IsValid() const
Definition WebJSFunction.h:140
FWebJSCallbackBase(TSharedPtr< FWebJSScripting > InScripting, const FGuid &InCallbackId)
Definition WebJSFunction.h:147
Definition WebJSFunction.h:169
void operator()(ArgTypes... Args) const
Definition WebJSFunction.h:180
FWebJSFunction(TSharedPtr< FWebJSScripting > InScripting, const FGuid &InFunctionId)
Definition WebJSFunction.h:176
Definition WebJSFunction.h:38
virtual IStructWrapper * Clone() override
Definition WebJSFunction.h:53
virtual UStruct * GetTypeInfo() override
Definition WebJSFunction.h:45
virtual ~FStructWrapper()
Definition WebJSFunction.h:43
virtual const void * GetData() override
Definition WebJSFunction.h:49
FStructWrapper(const T &InValue)
Definition WebJSFunction.h:40
T StructValue
Definition WebJSFunction.h:39
Definition WebJSFunction.h:29
virtual IStructWrapper * Clone()=0
virtual const void * GetData()=0
virtual UStruct * GetTypeInfo()=0
virtual ~IStructWrapper()
Definition WebJSFunction.h:30
Definition WebJSFunction.h:26
FWebJSParam(int32 Value)
Definition WebJSFunction.h:63
bool BoolValue
Definition WebJSFunction.h:118
FWebJSParam(uint64 Value)
Definition WebJSFunction.h:68
UObject * ObjectValue
Definition WebJSFunction.h:121
FWebJSParam(uint32 Value)
Definition WebJSFunction.h:66
FWebJSParam(const FName &Value)
Definition WebJSFunction.h:73
IStructWrapper * StructValue
Definition WebJSFunction.h:123
FWebJSParam(const FString &Value)
Definition WebJSFunction.h:71
TMap< FString, FWebJSParam > * MapValue
Definition WebJSFunction.h:125
FWebJSParam(bool Value)
Definition WebJSFunction.h:60
int32 IntValue
Definition WebJSFunction.h:120
FWebJSParam(int64 Value)
Definition WebJSFunction.h:67
FWebJSParam()
Definition WebJSFunction.h:59
FWebJSParam(double Value)
Definition WebJSFunction.h:69
FWebJSParam(UObject *Value)
Definition WebJSFunction.h:75
double DoubleValue
Definition WebJSFunction.h:119
FWebJSParam(int8 Value)
Definition WebJSFunction.h:61
enum FWebJSParam::@2456 Tag
FWebJSParam(const TArray< T > &Value)
Definition WebJSFunction.h:81
FWebJSParam(uint8 Value)
Definition WebJSFunction.h:64
FWebJSParam(const FText &Value)
Definition WebJSFunction.h:72
const FString * StringValue
Definition WebJSFunction.h:122
FWebJSParam(const TMap< K, T > &Value)
Definition WebJSFunction.h:101
FWebJSParam(float Value)
Definition WebJSFunction.h:70
WEBBROWSER_API ~FWebJSParam()
Definition WebJSFunction.cpp:31
TArray< FWebJSParam > * ArrayValue
Definition WebJSFunction.h:124
FWebJSParam(const T &Value, typename TEnableIf<!TIsPointer< T >::Value, UStruct >::Type *InTypeInfo=T::StaticStruct())
Definition WebJSFunction.h:76
FWebJSParam(uint16 Value)
Definition WebJSFunction.h:65
FWebJSParam(const TCHAR *Value)
Definition WebJSFunction.h:74
FWebJSParam(const TMap< FString, T > &Value)
Definition WebJSFunction.h:91
@ PTYPE_OBJECT
Definition WebJSFunction.h:115
@ PTYPE_MAP
Definition WebJSFunction.h:115
@ PTYPE_DOUBLE
Definition WebJSFunction.h:115
@ PTYPE_STRING
Definition WebJSFunction.h:115
@ PTYPE_BOOL
Definition WebJSFunction.h:115
@ PTYPE_STRUCT
Definition WebJSFunction.h:115
@ PTYPE_INT
Definition WebJSFunction.h:115
@ PTYPE_ARRAY
Definition WebJSFunction.h:115
@ PTYPE_NULL
Definition WebJSFunction.h:115
FWebJSParam(int16 Value)
Definition WebJSFunction.h:62
Definition WebJSFunction.h:199
void Success(T Arg) const
Definition WebJSFunction.h:224
void Failure(T Arg) const
Definition WebJSFunction.h:235
FWebJSResponse(TSharedPtr< FWebJSScripting > InScripting, const FGuid &InCallbackId)
Definition WebJSFunction.h:206
void Success() const
Definition WebJSFunction.h:214
Definition IsPointer.h:12