Navigation
API > API/Runtime > API/Runtime/CoreOnline
This set of classes enables building nested TVariant structures using shared pointers to TArrays and TMaps. This can be extended to other core container types or custom types as needed. If this proves useful beyond online use cases, this could move to Core.
This allows for usage such as:
using FNestedVariant = TNestedVariant
Data->AddVariant(TEXT("MyString"), FString(TEXT("1234-5678-9000"))); Data->AddVariant(TEXT("MyInt"), 42LL); Data->AddVariant(TEXT("MyObject"), FNestedVariant::FMap::CreateVariant())->AddVariant(TEXT("MyNestedObjectDouble"), 1.0); FNestedVariant::FArrayRef& Array = Data->AddVariant(TEXT("MyArray"), FNestedVariant::FArray::CreateVariant());
Array->AddVariant(FNestedVariant::FMap::CreateVariant())->AddVariant(TEXT("MyNestedArrayObjectInt"), 100LL); Array->AddVariant(FNestedVariant::FArray::CreateVariant())->AddVariant(1.23); Array->AddVariant(4.0); Array->AddVariant(true);
FNestedVariant::FMapPtr NestedMap; if (Array->GetVariant(0, NestedMap)) { // Found nested map in array. }
double ArrayDouble; if (Array->GetVariant(2, ArrayDouble)) { ... }
int64 MyInt; if (Data->GetVariant(TEXT("MyInt"), MyInt)) { ... }
FNestedVariant::FArrayPtr NestedArray; if (Data->GetVariant(TEXT("MyArray"), NestedArray)) { bool Value; if (NestedArray->GetVariant(3, Value)) { ... } }
OnlineUtils.h has ToLogString() overrides to allow for: ToLogString(Data); Which would output: {MyString:1234-5678-9000, MyInt:42, MyObject:{MyNestedObjectDouble:1.00}, MyArray:[{MyNestedArrayObjectInt:100}, [1.23], 4.00, true]} TArray that holds a TVariant with helper functions for working with variant types.
| Name | TVariantArray |
| Type | class |
| Header File | /Engine/Source/Runtime/CoreOnline/Public/Online/NestedVariant.h |
| Include Path | #include "Online/NestedVariant.h" |
Syntax
template<typename... ValueTypes>
class TVariantArray :
public TArray< TVariant< ValueTypes... > > ,
public TSharedFromThis< TVariantArray< ValueTypes... > >
Inheritance Hierarchy
- FSharedFromThisBase → TSharedFromThis → TVariantArray
- TArray → TVariantArray
Derived Classes
Typedefs
| Name | Type | Remarks | Include Path |
|---|---|---|---|
| ArrayType | TArray< VariantType > | Online/NestedVariant.h | |
| VariantType | TVariant< ValueTypes... > | Online/NestedVariant.h |
Functions
Public
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
VariantValueType & AddVariant
(
ValueType&& Value |
Online/NestedVariant.h | ||
void AddVariantArray
(
const TArray< ValueType >& Array |
Online/NestedVariant.h | ||
bool GetVariant
(
ArrayType::SizeType Index, |
Online/NestedVariant.h | ||
bool GetVariant
(
ArrayType::SizeType Index, |
Online/NestedVariant.h | ||
bool GetVariantArray
(
TArray< ValueType >& OutValue |
Online/NestedVariant.h |
Static
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
static TSharedRef< TVariantArray< ValueTypes... > > CreateVariant() |
Online/NestedVariant.h |