You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#preflight 64513fbb4d593c0b42b03cc8 #rb phil.popp [CL 25320519 by charlie huguenard in ue5-main branch]
58 lines
990 B
C++
58 lines
990 B
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "MetasoundDataReference.h"
|
|
#include "Templates/UniquePtr.h"
|
|
|
|
namespace Metasound
|
|
{
|
|
class IOutputStorage
|
|
{
|
|
public:
|
|
virtual ~IOutputStorage() = default;
|
|
|
|
virtual FName GetDataTypeName() const = 0;
|
|
|
|
virtual TUniquePtr<IOutputStorage> Clone() const = 0;
|
|
};
|
|
|
|
template<typename DataType>
|
|
class TOutputStorage final : public IOutputStorage
|
|
{
|
|
public:
|
|
explicit TOutputStorage(const DataType& InData)
|
|
: Data(InData)
|
|
{}
|
|
|
|
virtual FName GetDataTypeName() const override
|
|
{
|
|
static FName TypeName = GetMetasoundDataTypeName<DataType>();
|
|
return TypeName;
|
|
}
|
|
|
|
virtual TUniquePtr<IOutputStorage> Clone() const override
|
|
{
|
|
return MakeUnique<TOutputStorage<DataType>>(Data);
|
|
}
|
|
|
|
void Set(const DataType& Value)
|
|
{
|
|
Data = Value;
|
|
}
|
|
|
|
void Set(DataType&& Value)
|
|
{
|
|
Data = MoveTemp(Value);
|
|
}
|
|
|
|
const DataType& Get() const
|
|
{
|
|
return Data;
|
|
}
|
|
|
|
private:
|
|
DataType Data;
|
|
};
|
|
}
|